论文总字数:23711字
摘 要
由于硬件性能的提升,大规模使用互联网产生的大量数据以及新方法的提出,使得人脸检测技术的速度以及准确率,检测率都有了大幅度的提升。然而,在低功耗的人脸检测设备上进行人脸检测依然是一项比较具有挑战性的任务。目前,人们对在低功耗的设备上进行人脸检测的需求越来越强。
本文设计和实现了低功耗下的人脸检测系统。本系统使用dlib库进行人脸检测工作,并通过人脸追踪器和背景减法来减小检测区域加快检测速度。本系统是运行在Android上,并使用了JNI框架来使得C 程序能运行在Android系统上。本文给出了该系统的需求,系统的设计和实现,同时讨论了当前系统存在的一些不足。经测试和实际使用表明,该系统可以较好地满足在低功耗设备上进行人脸检测的需求。
关键词:人脸检测,低功耗,Android
Abstract
Thanks to the improvement of hardware performance, large-scale use of large amounts of data generated by the Internet and the introduction of new methods have resulted in a significant increase in the speed, accuracy, and detection rate of face detection technology. However, face detection on low-power dissipation devices is still a challenging task. People are increasingly demanding face detection on devices with low power consumption.
This paper designs and implements a low-power face detection system. The system uses the dlib library for face detection work, and uses the face tracker and background subtraction to reduce the detection area to speed up detection. This system runs on Android and uses the JNI framework to make C programs run on Android. This paper presents the requirements of the system, the design and implementation of the system, and discusses some deficiencies in the current system. Tested and actual use shows that the system can better meet the needs of face detection on low-power devices.
KEY WORDS: face detection, low-power dissipation, Android,
目 录
摘要 I
Abstract II
第一章 绪论 1
1.1 选题背景 1
1.2 研究现状及发展趋势 2
1.3 研究的目的、内容和意义 2
1.4 本文的结构 3
第二章 相关技术简介 2
2.1 Android操作系统 2
2.2 Opencv视觉库 2
2.3 Dlib库 3
2.4 HOG算法 3
2.5 匈牙利算法 4
2.6 JNI框架 4
2.7 MyOkhttp库 5
第三章 系统设计 7
3.1 系统需求分析 7
3.1.1 系统功能性需求 7
3.1.2 系统非功能性需求 7
3.2 检测算法设计 7
3.2.1 Opencv动态检测算法-背景减法 7
3.2.2 Opencv动态检测算法-帧间差分法 8
3.2.3 Opencv动态检测算法选择-根据场景选取算法 9
3.2.4 dlib人脸追踪器 9
3.2.5 检测算法流程 9
3.3 系统总体设计 11
3.3.1 Java端调用C 方法的途径 11
3.3.2 Java端流程设计 11
3.3.3 C 端流程设计 12
3.3.4 用于在各线程之间以及Java端和C 端之间传输数据的类 12
第四章 系统实现 14
4.1 系统Java端实现 14
4.1.1 初始化部分 14
4.1.2 获取视频帧 14
4.1.3 检测线程 14
4.1.4 detectResultHandler处理检测结果 16
4.1.5 在前端显示检测结果 17
4.1.6 检测结果发往后端 17
4.2 系统C 端实现 17
4.2.1 使用人脸追踪器结合dlib进行检测 17
4.2.2 使用背景法结合dlib进行检测 18
4.2.3 dlib检测全部区域 19
第五章 应用测试 20
5.1 测试目的 20
5.2 测试问题 20
5.3 实验对象 20
5.4 实验环境 20
5.5 实验方法 20
5.6 实验结果 21
第六章 结论 22
6.1 论文总结: 22
6.2 未来方向: 22
致谢 23
参考文献 24
绪论
选题背景
人脸检测是一种在任意数字图像中找到人脸的位置和大小的计算机技术。人脸检测可以被理解为是一种特殊的物体检测,即在输如图像中找出所有和输入物体具有相似形体的物体。人脸检测技术是计算机视觉领域中重要的一项技术,既体现了计算机视觉的最新成果,又是很多计算机视觉的相关领域的基础,如人脸识别、无人驾驶等。自进入二十一世纪以来,由于硬件性能的提升,大规模使用互联网产生的大量数据以及新方法的提出,使得人脸检测技术的速度以及准确率,检测率都有了大幅度的提升。因此人脸检测技术从单纯的实验领域开始逐渐走向应用[1]。
然而,在低功耗的人脸检测设备上进行人脸检测依然是一项比较具有挑战性的任务。进入新世纪后,的确有很多开创性的人脸检测算法被提出,然而部分早期检测算法都是基于人脸在约束条件下进行的人脸检测,即图片的背景要求要比较简单,人脸的数目较少,而且人在被检测时要正向面对摄像头并立正站直,而在实际应用中是肯定无法满足这些约束条件的[1]。随着人脸识别,人脸跟踪技术被大范围地应用,产业界对人脸检测的正确率与检测率的要求越来越高。即使在人脸有一定的左右以及上下偏转,光线有一定的曝光,背景比较多变复杂,人在运动中导致人脸模糊,甚至人脸有一定的遮挡和化妆等恶劣情况下,人脸检测也需保证其准确率和检测率。基于计算性能的提升,大量图像数据的积累,新的方法被提出。很多鲁棒性强的特征提取方法被提出并应用于人脸检测技术中去,更多的人脸检测数据被发布,这大大提升了人脸检测的准确率与检测率[1]。然而新的方法要处理大量的数据,不少方法使用到了深度学习的技术,这大大增加了人脸检测所需的计算性能,而在低功耗的设备上例如手机,平板,树莓派这些设备的性能并不能像台式计算机那么强,因此很多在台式计算机上效果很好的人脸检测算法在低功耗设备上即使能够使用,也会花费大量的时间以至于无法在实际场合中使用。我们在RK3288上进行过测试,使用HOG算法的dlib人脸检测直接运行在1.8GHz的RK3288上时,检测600*800的一帧画面需要1.5s的时间。而为了正常使用,平均检测速度应至少高于3帧/s的速度,即每帧约需330ms,否则就会导致检测到的人脸区域与当前实际人脸区域的差别过大,获取的检测结果也就失去了时效性。而使用Haar算法的Opencv人脸检测运行在RK3288时,检测速度很快,大约100ms每帧,但是检测率和准确率都很低,尤其是遇到光线略微复杂的情况时,检测率和准确率都低于50%,这种情况下已经失去了人脸检测的意义。目前低功耗下的人脸检测遇到的很多问题就如上两种情况,一种在保证了正确率和检测率的情况下,检测速度无法满足需求,一种是提升了检测速度,但在现实使用中检测率和准确率较低。
而近些年来,人们对在低功耗的设备上进行人脸检测的需求越来越强。例如商场监控过去常常是由保安人员人或配置比较高的设备来进行检测,这都需要花费大量的资金。而如果能在价格低廉的低功耗设备上进行人脸检测,商场能节省一大笔资金。同样,目前许多公司在打卡时也有用价格低廉的设备来进行人脸检测获取人脸图片来进行识别的需求。可见,低功耗下的人脸检测将是一个非常前景的应用,值得我们对其进行深入的探讨。
剩余内容已隐藏,请支付后下载全文,论文总字数:23711字
该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;