文献标识码:A
DOI:10.16157/j.issn.0258-7998.190870
中文引用格式:王静波,孟令军. 卷积神经网络人脸检测算法[J].电子技术应用,2020,46(1):34-38.
英文引用格式:Wang Jingbo,Meng Lingjun. Convolutional neural network face detection algorithm[J]. Application of Electronic Technique,2020,46(1):34-38.
0 引言
近年来,人工智能行业有着日新月异的发展,深度学习[1-2](人工神经网络)在其中扮演着至关重要的角色,人脸检测也是深度学习领域的热点,它的研究用来鉴别人的身份,可以广泛地应用于公共安全、企业办公、教育、人机交互等领域。区别于指纹、虹膜无需特定的采集装置,人脸识别系统[3]只需要具有拍照功能的设备(例如手机、相机等)就可满足要求,有着独特的优势。
目前,人脸检测落地技术已经随处可见,广为人知。例如为确保安全,悉尼板球场已全部覆盖人脸检测技术;为了避免假冒开户,工商银行在215个网点启用了人脸检测; 为了保护未成年人,人脸检测防火墙被添加到抖音中;“人脸检测”有助于救援站寻找亲属等。与此同时,互联网+[4]的时代已经来临,隐私保护越来越受到人们的重视,也更加促进人脸检测技术研究的迅速发展。
智能人脸检测系统大致的流程如图1所示。
如今,人脸检测技术主要有以下三大类:
(1)基于Harr特征的级联Adaboost[5]分类器,该方法由VIOLA P和JONES M J共同提出。最开始粗密度提取特征,将分类不明确的数据和下一阶段的数据一起进行优化训练,反复迭代获得精密度的特征提取器,然后将多个强提取器级联成更高精度的级联器,使用积分图像提取图像有效特征值。
(2)基于可变形零件模型(Deformable Parts Model)[6],将面部视为零件的组合。最开始计算每个分量的方向梯度以获得直方图,然后使用支持向量机[7](Surpport Vector Machine)训练分类器,并且分类操作可以由该分类器执行。
(3)基于神经网络的人脸检测,采用两级卷积神经网络进行人脸检测,第一级执行面部的粗略定位,第二级执行面部的精细定位。2015年,在ImageNet[8]比赛的大热下,雅虎的Sachin等人使用上述方法进行人脸检测和定位,取得了很好的效果。在人脸检测后还需进行预处理操作,目的是通过一些图像处理技术来减小噪声对图像的影响,将对比度、亮度和饱和度适当修改,达到提升准确率的效果[9]。
现实生活中拍摄存在许多不确定因素,例如相机的硬件噪声、光照和变形。为了消除外在因素的影响,需要对原始图片进行相关的预处理操作。预处理主要包括人脸图像的亮度补偿、直方图均衡化和降噪滤波。初期的预处理一般基于2D图像的简单操作,随着技术的发展逐步衍变为基于3D建模的预处理步骤[9]。
利用上述第3种方法进行一定程度的实现。本文采用数据集LFW(Labled Faces in the Wild)人脸数据集20 000多张的图像数据经过训练,并迭代5万次得出一个全连接的caffemodel,图2为部分人脸数据和非人脸数据,图3、图4为数据标注形式与训练得出的模型分类器[10],标注数据包括人脸ID、数据路径和人脸坐标位置,且该模型已被证实具有良好的分类效果。然后使用其检测人脸图像。待检测的图像数据使用训练好的caffemodel进行前向传播得到特征图,从中可以确定待检测人脸的坐标。
1 AlexNet卷积神经网络结构
一般的卷积神经网络是由卷积层、池化层、全连接层堆叠而成的[11]。卷积层是网络中提取图像高维特征的重要结构,相当于人脑局部感知:在检测图片的过程中,不是同时检测整个图像,而是对于图片中的每一个特征首先局部感知,然后更高层次对局部进行综合操作,从而得到全局信息。
激活函数ReLU对卷积层的输出结果做一次非线性映射。池化层Pool也称为欠采样或下采样,它主要用于减少特征尺寸,压缩数据和参数的数量,减小过拟合,提高模型的容错性,使模型更快更好地朝着最优的方向拟合。
AlexNet是成功应用上述操作的经典结构。它由KRIZHEVSKY A和其他人设计并在2012年ILSVRC[12-13]中赢得了冠军,它将对象分类错误率从之前的25.8%降低到16.4%,在当时达到最优水平。AlexNet可以训练更大的数据集和更深的网络。该模型分为8层,5个卷积层和3个完全连接的层[14]。图5是AlexNet网络结构图以及各层的详细参数,Caffe在构建网络时就可使用这些参数定义每一层,但是对于人脸检测,它是一种二分类任务,需要把最后一层全连接层改成所需任务的类别个数,原来的1 000修改成2。
图6为采用Caffe内置卷积函数之后的提取效果,之后还可以再进行卷积池化操作提取更高维的抽象有用信息,图中的坐标代表像素大小及变化。
2 Caffe深度学习框架
Caffe是一个清晰而高效的深度学习框架[11,15],由加州大学伯克利分校毕业的贾扬青博士撰写。Caffe是纯粹的C++/CUDA架构,有着如下的优势:
(1)模块化:Caffe从头开始设计为尽可能模块化,允许扩展新的数据格式、网络层和损失功能。
(2)表示和实现分割:无需代码编程,只需使用Protocol Buffer语言在配置文件中自定义网络模型[16]。在任何有向非循环图的形式中,Caffe支持网络架构。Caffe会根据网络大小自动调用合适的内存,避免内存过多占用,同时也可以在CPU和GPU之间自由切换。
(3)测试覆盖:在Caffe中,每个模块对应一个测试。
(4)Caffe官方有Python和MATLAB两个编译版本,本实验编译的为Python版本,最后在Python 2.7上验证实现。
(5)预训练参考模型:对于视觉项目,Caffe提供了一些仅用于学术和非商业领域的参考模型,大部分的模型都可以在caffe model zoo里找到,但其许可证不是BSD开源协议。
后来贾扬清和他在Facebook的团队研究开发了新一代框架Caffe2。2018年4月18日,Facebook开源了Caffe2。新一代框架更注重模块化,在移动端、大规模部署上表现卓越。如同TensorFlow,Caffe2使用 C++ Eigen库,支持ARM架构。
3 算法实现原理
根据AlexNet网络的输入特性,需要图像的大小为227×227的输入。但原始图像数据中的人脸尺寸有可能不是227×227,有的过大,有的过小。因此需要使用图像金字塔(Image Pyramid)进行多尺度变换,然后经过卷积神经网络的前向传播得出特征图,之后映射到原图上得到所有窗口的人脸概率值。该方法中是将概率值大于0.95的特征点反变换到原图得到对应的一块区域,即为人脸框的位置。
尽管人脸框的坐标已经得出,但会发现有许多符合要求的窗口,仅需要给出一个最有可能表征人脸的窗口,因此,有必要应用 NMS(非极大抑制)算法来消除交叉重复窗口并找到面部的最佳位置,找到人脸的最佳位置。如图7所示,NMS算法的原理大致为,假设A框与B框同为包含人脸的候选框,它们之间的交并比IOU(Intersection-over-Union)大于0.8,被视为是高度重叠的,根据它们属于人脸的概率值P(B)>P(A),将候选框A剔除。
图8为整体检测算法流程图。首先使用OpenCV读入待检测的图片,然后进行下列操作。
4 结果展示
该方法实现平台为Linux系统,版本号为Ubuntu16.04,GPU显卡型号为GTX1080。软件采用Caffe+Python 2.7+OpenCV 3.4.1。
训练中由于显存原因,batch_size设置为64,而不是普遍的128。图9为训练的结果,每经过100次记录损失值,可以看到Training Loss:0.003 01和Test Loss:0.001 39,基本满足需求,也无过拟合现象。
图10为图像数据先进行图像金字塔变换,然后每个尺度变换后的图片经过前向传播得出的特征图的热度图。图中坐标变化与图6相同,可以很简单地看到图像尺度的变化,颜色越深代表对应原图中的区域属于人脸的概率值越大。随着尺度不断变换,所有可能为人脸的位置全部得出,最后通过NMS算法得出一个最优的人脸框。
图11为不同大小、清晰度不同的人脸图像数据(图片来自网络和300W数据集,包含正脸、侧脸和多人脸)的实际检测结果,从中可以很好地检测出人脸框,说明模型具有很好的分类效果,达到检测人脸的功能。
5 结束语
本文人脸检测的实现,采用简单高效易操作的深度学习框架Caffe,构建AlexNet网络,通过大量的数据训练得出caffemodel分类器,该算法沿用传统的滑动窗口方法,利用金字塔变换和非极大值抑制等算法并使用强大的计算机视觉工具OpenCV框出人脸,整体实现了卷积神经网络的人脸检测。但是不足之处在于模型不能有效识别多人脸,图片亮度较低也不能识别,下一步拟采用更庞大的数据和优化更好的网络(如VGGNet、GoogleNet和ResNet等)进行训练,实现多人脸检测、关键点的定位和表情的检测等功能,或者尝试使用Caffe2实现移动端的人脸相关检测。
参考文献
[1] 杨丹辉,邓洲.人工智能发展的重点领域和方向[J].人民论坛,2018(2):22-24.
[2] 李卫.深度学习在图像识别中的研究及应用[D].武汉:武汉理工大学,2014.
[3] 蒋兆军,成孝刚,彭雅琴,等.基于深度学习的无人机识别算法研究[J].电子技术应用,2017,43(7):84-87.
[4] 徐贵宝.“互联网+”人工智能技术发展策略解析[J].世界电信,2016(3):71-75.
[5] VIOLA P,JONES M J.Robust real-time face detection[J].International Journal of Computer Vision,2004,57(2):137-154.
[6] 宋瑨,王世峰.基于可变形部件模型HOG特征的人形目标检测[J].应用光学,2016,37(3):380-384.
[7] 胡发焕,刘国平,胡瑢华,等.基于机器视觉和支持向量机的脐橙品质分级检测[J].北京工业大学学报,2014(11):1615-1620.
[8] RUSSAKOVSKY O,DENG J,SU H,et al.ImageNet large scale visual recognition challenge[J].International Journal of Computer Vision,2015,115(3):211-252.
[9] 魏正.基于Caffe平台深度学习的人脸识别研究与实现[D].西安:西安电子科技大学,2015.
[10] 王茜,张海仙.深度学习框架Caffe在图像分类中的应用[J].现代计算机,2016(5):72-75.
[11] Jia Yangqing,SHELHAMER E,DONAHUE J,et al.Caffe:convolutional architecture for fast feature embedding[J].arXiv:1408.5093[cs.cv],2014.
[12] KRIZHEVSKY A,SUTSKEVER I,HINTON G.ImageNet classification with deep convolutional neural networks[J].Advances in Neural Information Processing Systems,2012,25(2):1097-1105.
[13] BADAWI A A,CHAO J,LIN J,et al.The AlexNet moment for homomorphic encryption:HCNN,the first homomorphic CNN on encrypted data with GPUs[J].arXiv:1811.00778v2[cs.CR],2019.
[14] 宋婷婷,徐世许.基于全采样和L1范数降采样的卷积神经网络图像分类方法[J].软件,2018,39(2):75-80.
[15] 许少尉,陈思宇.基于深度学习的图像分类方法[J].电子技术应用,2018,44(6):122-125.
[16] 解骏,陈玮.基于卷积神经网络的人脸识别研究[J].软件导刊,2018(1):25-27.
作者信息:
王静波,孟令军
(中北大学 电子测试技术国防科技重点实验室,山西 太原030051)