06-人脸识别-MTCNN的感性认识(转载)

找到一个总结很好的blog。python

具体训练的过程会在后续的随笔中给出。git

 

转载自:github

https://blog.csdn.net/lff1208/article/details/77328357算法

 

如下是内容:网络

论文连接:架构

https://kpzhang93.github.io/MTCNN_face_detection_alignment/框架

 

本文是根据本身的理解翻译的若有错误,还请见谅,评论提出,立马修改。性能

摘要:因为姿式、光照或遮挡等缘由,在非强迫环境下的人脸识别和对齐是一项具备挑战性的问题。最近的研究显示,深度学习算法能够很好的解决上述的两个问题。在这篇文章中,咱们利用检测和校准之间固有的相关性在深度级联的多任务框架下来提高它们的性能。尤为是,咱们利用三层级联架构结合精心设计的卷神经网络算法,来对人脸进行检测和关键点的粗略定位。另外,咱们建议使用一种新的在线采集样本策略来改善算法的性能。咱们的方法与最早进的人脸检测算法FDDB和WIDER FACE进行对比,具备更高的精度。同时,与AFLW人脸对齐算法比较,实时性能良好。学习

关键字:人脸检测、人脸对齐、级联卷积神经网络测试

1、介绍

    人脸检测和对齐是不少基于人脸的应用不可缺乏的一部分,如人脸识别、人脸行为分析等。然而,视觉变化对于人脸的影响,加之姿式变化和极端光照的影响,使得在现实世界中对人脸检测和对齐的任务变的极具挑战。

    Viola和Jones提出的级联人脸检测器,是利用Harr-Like特征结合AdaBoost去实现高性能的实时训练。然而,至关多的研究显示,该算法在应对大量视觉影响的人脸图片检测时性能极具降低。而且目前讯在的DPM算法也具备必定的缺陷,因此须要新的方法来解决人脸检测和对齐。最近,CNN在视觉方面取得了很好的效果,如图像分类、人脸识别等。受到启发研究人员开始将CNN用于人脸检测,提出一些算法。同时吸引人脸对齐的研究者对此产生兴趣,也提出了一下相关算法。然而,大多数之前的脸部检测和脸部对齐方法忽略了这二者之间的固有相关性任务。 虽然现有的几个算法试图共同解决他们,但在这些算法中仍然有局限性。

    另外一方面,目前的训练样本度分类器的性能提高有必定的阻碍,须要设计一种用于人脸检测的在线样本用于对算法的训练,已达到自适应的训练状态。

    在本文中,我么们提出新的级联架构来整合多任务卷积神经网络学习的问题。该算法有三个阶段组成:第一阶段,浅层的CNN快速产生候选窗体;第二阶段,经过更复杂的CNN精炼候选窗体,丢弃大量的重叠窗体;第三阶段,使用更增强大的CNN,实现候选窗体去留,同时显示五个面部关键点定位。

2、具体方法实现

A、整体架构

本算法的总体流程如图1 所示:

                                                                          图1级联卷积神经网络

Stage 1:采用全卷积神经网络,即P-Net,去得到候选窗体和边界回归向量。同时,候选窗体根据边界框进行校准。而后,利用NMS方法去除重叠窗体。

                                                                     

stage 2:R-Net,将通过P-Net肯定的包含候选窗体的图片在R-Net网络中 训练,网络最后选用全链接的方式进行训练。利用边界框向量微调候选窗体,再利用NMS去除重叠窗体。

                                                 

stage 3:O-Net,网络结构比R-Net多一层卷积,功能与R-Net做用同样,只是在去除重叠候选窗口的同时,显示五我的脸关键点定位。

                                 

B、CNN网络结构(CNN结构图上面显示)

多个CNN被设计为人脸检测器,但其性能可能受到如下状况的限制:

(1)卷积层中的滤波器缺少多样性,限制他们的识别能力;

(2)对比多类识别检测和分类任务,人脸检测是一个二进制的分类问题,所以须要较少许的滤波器,咱们将5*5的滤波大小改成3*3的滤波大小去减小计算,同时增长深度来提升性能。相比以前的算法有了更好的效果,缩短了训练时间。结果如表1所示。

                                               

C、训练

    本算法从三个方面对CNN检测器进行训练:人脸分类、边界框回归、地标定位(关键点定位)。

具体能够参考博文http://blog.csdn.net/qq_14845119/article/details/52680940

 

添加一些新的资料:

github的代码:https://github.com/kpzhang93/MTCNN_face_detection_alignment

论文和代码

源代码是MATLAB版的

训练模型,须要使用caffe,这就比较尴尬了,这个框架用的少,须要花点时间咯。

 

这是python的源代码:

https://github.com/pangyupo/mxnet_mtcnn_face_detection

做者说改了语言以及对caffe的依赖,

 

但这也不是我测试使用的版本。

https://github.com/ShyBigBoy/face-detection-mtcnn

这个版本对于训练样本的读入方式改为读 xxx.npy 文件了。

相关文章
相关标签/搜索