0.背景
其实在安卓端实现本地人脸识别借助第三方的平台的SDK很容易实现,本文主要阐述不借助第三方SDK实现10人以内的本地人脸识别本地打卡系统的实现过程笔记。
1.开发的整体过程
程序员撸代码,面向对象,面向百度、面向github、面向CSDN等等,一顿狂搜获取关于人脸识别的知识点。自己总结的思维导图如下所示
人脸识别涉及到的知识点比较多,单单从图1的人脸识别研究来看就涉及到openCV,机器学习,神经网络等。具体的代码过程涉及到C/C++的NDK开发。
《OpenCV Android开发实战》作者贾志刚 这本书的一点学习笔记如图2所示
图2.《OpenCV Android开发实战》笔记
softboy的软件网盘地址https://pan.baidu.com/s/1i5oXoJ7
反编译的方法就不在这里提供了,软件里有很多好的算法,总结其活体检测的主要内容如图3:
图3.softboy人脸识别软件活体检测的学习
最后确定的实现方式是人脸识别借助《手把手教你做安卓端人脸识别应用》(https://blog.csdn.net/wgf5845201314/article/details/111213948?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-1.nonecase)
这篇文章我看的时候是不收费的,结果现在是收费的,不过第一张思维导图提供了这位写的源码github地址(https://github.com/tianmaxingkong666/android_fc_app)自行看代码总结。下面我也将给出我对源码的理解。
活体检测借助softboy的活体检测里面好的算法思维,不过采用的不同的方式进行人脸关键点检测,openCV的方式(https://blog.csdn.net/kkae8643150/article/details/96134423?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-1.nonecase)
对于人脸识别的源码理解如图4所示 图4.人脸识别源码解读
人脸的识别的源码作者除了InsightFace + Mxnet的人脸特征提取的代码打包成.so库其他的JNI层如图片转换处理,目标追踪,人脸对齐都提供源码。修改特征点的数据库存储等代码,我本地运行的程序截图如图5所示
2图5.人脸识别APP运行截图
人脸关键点检测的单张图识别结果截图如图6所示
图6.OpenCV人脸关键点检测Demo截图
通过以上可以本地的活体检测+人脸识别打卡功能
(人数较少的情况能满足)
2.后期工作及感受
(1)活体检测与人脸识别的结合
(2)程序的UI修改,识别结果的弹窗提示
(3)活体检测涉及关键点所组成的矩形框计算,帧间数据的比较
(4)UI识别结果的提示,涉及到部分长时间识别不了,和识别到结果,帧数据处理和弹窗后的线程处理
(5)感受:openCV+JNI,tensorflow+机器学习,respect softboy,学无止境。
网友评论