您的位置:首页 > 其它

Improving Multiview Face Detection with Multi-Task Deep Convolutional Neural Networks 基于深度学习的人脸检测算法

2015-08-15 21:03 609 查看
Improving Multiview Face Detection with Multi-Task Deep Convolutional Neural Networks

概述:这是一篇基于深度卷积神经网络的人脸检测论文,达到了很好的效果,同时速度相比起其他深度学习系的方法也有所提高。

算法流程:

1. 作者先使用几个级联的 Multiview detector来对输入图片进行初步鉴别,以此来剔除掉大量的非人脸图片。




2. 接着再将通过第一步的图片进行一些pre-processed,然后输入到作者自己训练的一个DCNN里面去,得到最终的结果(包括是否是face,face pose,face landmarks)。



算法具体实现过程:
1. 构造训练集(略,有兴趣的读者请自行阅读论文)。

2. 使用boosting-based的集成学习方法(参考 C. Zhang and Z. Zhang. Winner-take-all multiple category boosting for multi-view face detection. In ECCV Workshop on Face Detection: Where are we, and what next, 2009. 1, 2),训练得到级联多视角人脸检测model。事实上,其他多视角人脸检测model也是可以应用到这里的,因此我就不特地讲解这个boosting-based算法了。特别注意的是,我们应该慎重地选择该级联检测器的阈值,以达到True
Positive Rate和False Positive Rate的平衡。

3. 图像预处理,第一步使用standard histogram equalization来增强图像的对比度,第二步使用一个线性变换来再次修改图片光强,该线性变换如下:
ax+by+c=I
其中(x,y)代表像素坐标,使用最小二乘法来计算获得参数a,b,c,进而用I-ax-by-c来作为该坐标点新的光强。
第三步再进行归一化处理,至此图像预处理完成。
其主要效果是增强对比度以及移除阴影(或者说使得阴影更加容易辨识)。

4. 训练DCNN

作者构建的DCNN结构如图所示:



其中各个卷积层我就不解释了,使用的池化手段是最大池化。
值得注意的是,作者的模型的输出包括三者:face/non-face,face pose,facial landmarks

针对输出的不同,在训练过程中使用的loss函数也是不通的,如下:

1. face/non-face输出2个值,其loss函数为交叉熵函数:



2. face pose输出5个值,分别代表不同的脸部朝向,loss函数也是交叉熵函数:



3. facial landmark输出14个值,分别对应7个landmarks的坐标,其loss函数是一个weighted mean square error:




结合三者,总的loss函数为三者的线性组合:



训练细节以及参数我在此就不一一贴出,有兴趣的读者请自行学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: