美文网首页
03.Android本地人脸识别打卡原理及实现笔记

03.Android本地人脸识别打卡原理及实现笔记

作者: 小小秤 | 来源:发表于2021-03-11 11:57 被阅读0次

    0.背景

    其实在安卓端实现本地人脸识别借助第三方的平台的SDK很容易实现,本文主要阐述不借助第三方SDK实现10人以内的本地人脸识别本地打卡系统的实现过程笔记。

    1.开发的整体过程

    程序员撸代码,面向对象,面向百度、面向github、面向CSDN等等,一顿狂搜获取关于人脸识别的知识点。自己总结的思维导图如下所示

    图1.人脸识别的整体学习过程
    人脸识别涉及到的知识点比较多,单单从图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,学无止境。

    相关文章

      网友评论

          本文标题:03.Android本地人脸识别打卡原理及实现笔记

          本文链接:https://www.haomeiwen.com/subject/huerqltx.html