一、概述
前面一个系列,我们对车牌识别的相关技术进行了研究,但是车牌识别相对来说还是比较简单的,后续本人会对人脸检测、人脸识别,人脸姿态估计和人眼识别做一定的学习和研究。其中人脸检测相对来说比较简单,譬如Dlib库中直接封装了现成的库函数 frontal_face_detector 供相关人员使用,但是Dlib的运行速率并不是很高,另外于仕琪老师的 libfaceDetection 库具有较高的识别率和相对较快的运行速度,具体可以从github 上获取 https://github.com/ShiqiYu/libfacedetection 。但是该库并没有提供源码分析,只有现成的lib库可以直接使用。
从学习和研究的角度来说,我们还是希望能够直接从源码中进行相关学习,因此此处我们通过Dlib库代码解读,来对人脸检测的相关技术做一定的分析。Dlib是一个机器学习的C++库,包含了许多机器学习常用的算法,并且文档和例子都非常详细。 Dlib官网地址: http://www.dlib.net 。下面我们通过一个简单的例子,来看下人脸检测是如何工作的,代码如下所示:
View Code

如上图所示,frontal_face_detector 将图像中所有的人脸都检测了出来,从代码中也可以看到,该方法的使用过程及其简单,当然人脸检测的内部逻辑是极其复杂的。
二、代码分析
下面我们一步步跟踪下代码,看看Dlib人脸检测内部究竟是如何工作的。
object_detector
本文介绍了Dlib库在人脸检测中的应用,特别是HOG(Histograms of Oriented Gradients)特征。通过Dlib的frontal_face_detector函数,我们可以简单实现人脸检测。文章深入探讨了HOG特征的提取过程,包括颜色空间归一化、梯度计算、细胞单元的梯度直方图构建和块的归一化。HOG特征由18D有符号、9D无符号和4D归一化操作组成,形成31维的fhog特征。文章旨在通过源码分析帮助读者理解Dlib中人脸检测的内部工作原理。
最低0.47元/天 解锁文章
1088

被折叠的 条评论
为什么被折叠?



