基于Android的人脸识别系统开发
来源:用户上传
作者:赵娟
[摘 要] 人脸识别是公共安全领域的研究重点。通过人脸识别技术进行人脸跟踪、人脸检测、人脸比对来比较人脸的视觉特征信息从而进行身份鉴别。随着移动互联网的快速发展,移动终端人脸识别应用日益广泛。文章主要探讨人脸识别在Android系统中的实现以及用户安全登录,包括人脸检测、特征提取和特征识别。
[关键词] 人脸识别;系统开发;Android
1 背 景
随着互联网的发展,人脸识别技术被广泛地应用于各种领域。基于Android的人脸识别具有非常广阔的发展前景,本文基于Android,重点研究人脸识别技术应用,并对应用开发的关键技術进行阐述,最后介绍了实现Android系统人脸识别应用的功能模块。
对于人脸识别技术,目前的算法分为2种。一种是在线人脸识别,比如face++、百度AI等,通过传递人脸图片给服务器处理返回接口。这种方式的优点是:服务器算法强大、识别准确率高、支持大规模人脸识别数据。比如,能支持10万人对比。这种方式的缺点是:慢、需要良好网络环境的支持。相机预览帧率一般都在30 fps 以上,一般用户使用网络处理一张图片都需要至少1 s以上,那么如果需要在手机上实时展示处理结果几乎不太可能。另外一种是离线人脸识别, 人脸对比算法在本地,人脸数据也在本地,完全是离线环境也能够正常运行。随着Android手机运算性能的提高,算法已经足够高效,处理一张人脸图片可以在100 ms以内,对于应用,完全的离线人脸签到考勤适合小公司,类似以前那种指纹机,需要通过SD卡导出,但是一般安卓手机都有网络,实际上可以通过网络同步方式同步到服务器。这种方式的优点是: 识别快、体验好、无网络也可以正常使用。所以在Android环境下,综合考虑使用离线人脸识别,较适合当今的技术发展。
目前,人脸识别已应用在安全认证、预警防控、刑事侦查等各个方面。在国内,人脸识别的应用大都还停留在PC机上,基于移动设备的研究很少。而且,随着移动信息安全意识的提高,在移动终端上进行人脸识别具有广阔的发展前景,设计实现基于Android的人脸识别系统,可更好地满足移动终端的电子签到、人员识别与警务需求。本文选择基于face++的人脸识别算法实现人脸特征提取、特征识别与检测。
2 系统实现
2.1 系统功能实现
开发基于Android的人脸识别系统,包括系统开发工具的选择、开发环境的搭建以及系统各功能模块的实现,为以后进一步研究基于Android平台人脸检测和识别算法奠定基础。系统实现过程分为以下几个阶段。系统经过开发之后,实现的功能见表1。
2.2 系统数据库的实现
对于本系统而言,首先需要建立一个存放用户信息的数据库。在实现系统识别功能之前,需要导入进行签到、识别的全体用户信息。因为本系统采用Android开发平台,一般可以从关系数据库导入到嵌入式SQLite中,便于系统对这些数据进行后期处理和调用、比对,用户信息包括三部分内容,即身份信息、图像信息和签到信息。身份信息是指用户的基本身份数据,如身份证号、性别、住址等;图像信息则指用户的人脸图像数据,包括人脸样本信息、照片等此种越多越好,有利于进行比对识别;签到信息包括签到时间、签到地点等,可以采用地理定位进行地图实名制签到等。这些用户信息结合在一起,形成一个完整的用户信息。对于不同的应用,可对实体属性进行相应的增删。比如说,如果该系统应用于校园中,以学生为用户,则其属性可以添加学号、导师姓名等,其主键也可进行灵活调整。
2.3 系统人脸识别的实现
图像处理方法有很多,可根据需要,有选择地使用相应的方法。通常使用的方法有肤色提取。肤色提取是指对脸部区域的颜色提取。在确定脸部区域上,获取则比较准确,成功率达到95%以上,并且速度快,工作量小。由于图像在不同环境中受到不同光线的影响,其亮度就变得或暗或亮。对图像的亮度进行调整,主要采取的措施是对图像进行光线的补偿。
高斯平滑:在图像的采集过程中,由于各种因素的影响,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等,这些都会影响图像的质量,因此需要将图片进行平滑操作以此来消除噪声。
对比度增强:将所要处理的区域和周围图像区域进一步拉开,使其对比度更加明显,主要通过像素的聚集来实现,如表2所示。
现在有很多人脸识别的技术可以使用,但笔者认为还是离线端的SDK比较实用。推荐其效率比OpenCV要高,检测速度很快,20 ms左右就可以检测出来;获取特征点(人脸比对)的效率也很高,基本上在200 ms左右。
目前在笔者的应用内主要使用了 Face++ 的人脸检测功能,本文和大家分享一下其集成过程和一些使用心得。Face++ 的集成过程非常简单,在官方文档上有说明支持的系统为 5.0 及以上系统,但其实在 4.4 系统上也可以运行。Face++的优势除了多角度检测之外,其每次检测并不独立,即这一次的检测结果会指导下一次的检测,所以Face++在检测到人脸之后,识别的时间会大幅减少。而 Seeta FD 的检测每次都是独立的,所以在无人脸的情况下,Seeta 的检测速度要快于Face++, 但是检测到人脸之后,因为应用整体的计算量增加,导致 Seeta 的检测速度降低的非常明显,大大慢于Face++。
本系统采用Android开发平台和人脸识别技术。Android系统具有以下特征:Android开放的平台允许任何移动终端厂商加入到Android联盟中,Android技术不受运营商的制约,Android平台提供给第三方十分广泛、自由的环境。
2.4 系统特征
在此系统开发过程中,人脸识别技术较其他的技术比较具有以下特征:
(1)通过使用最大类间方差法(OTSU)自适应调整阈值,使肤色分割更为精确,并仅对分割后的区域采用Adaboost算法进行人脸检测。这种自适应肤色分割与Adaboost相结合的人脸检测方法,更加细化了人脸预估位置,对Android平台摄像头采集过程中存在的光照、阴影等影响具有很好的抗干扰能力。
(2)对Shearlet变换得到多尺度多方向的人脸特征进行编码融合,并将融合后的尺度图像进行分块加权级联,可以显著提高人脸识别效果。
(3)Shearlet自适应加权融合特征的稀疏表征人脸识别算法利用加权融合的Shearlet特征构造字典,对光照、表情、姿态以及局部形变等影响拥有较好的改观性。
4 总 结
目前,我国从事人脸识别行业的单位越来越多,如北京奥运会实名制入场票证系统将人脸识别技术推向新的高度,为人脸识别技术的应用打下了坚实基础。各大火车站、高铁安检区域人脸识别系统开始招标,如郑州客运中心站安检区域已安装使用身份识别的高科技人脸识别安检系统。人脸识别相关的研究已经取得很大的进展。
主要参考文献
[1]王成浩,李鑫宇,李丽娟.Android开发技术的学习及应用研究[J].信息与电脑:理论版,2019(3):89-90.
转载注明来源:https://www.xzbu.com/3/view-15273048.htm