您的位置:首页 > 其它

深度学习入门学习:Multi-view Face Detection Using Deep Convolutional Neural Networks

2016-03-05 19:36 369 查看
Multi-view Face Detection Using Deep Convolutional Neural Networks

这篇paper主要就是探讨了在多视角下的人脸检测,简称为DDFD,Deep Dense Face Dector。deep应该是说网络架构比较深,Dense应该是表达把fc层改称为fc-conv层。作者把fc层改称为fc-conv层的主要原因是可以让网络的输入图片大小随意化并且还可以产生heat-map图。很简单,原来谈到金字塔池SPP的时候,我们分析过,影响输入图片大小的最终因素是fc全连接层,这里把全连接层都干掉了,当然输入图片大小的限制就不存在了。产生的热成像图heat-map的形状大致类似人头,然后我们使用canny的non-maximal
suppression进行图像分割就可以得到人脸的bounding-box了。该paper的实现过程如下:

1)aflw数据集的处理,因为在网络深度确定的情况下,增加数据量会提高最终的结果,并且在实验中作者发现,最终的scores和在训练AlexNet时正样本的数据量成正比,所以,作者通过sample sub-window的方法增加正样本的数量,最终使得数据量都有所增加。

2)在AlexNet上fine-tuning,这里的网络架构使用AlexNet来得到网络中各个层的权重参数,我们从overFeat中知道,一个classification网络架构在训练好之后,他的网络架构依然适用于object detection,仅仅改变后面的fc层就可以达到效果。具体的做法是,先把每张图片的大小resize到227*227的大小,迭代50k次,每一训练128张图片,每次迭代是有32个正样本,96个负样本。正样本的定义是iou大于0.5,负样本的iou小于0.3,其他的中间值没有贡献价值。

3)把fc层通过reshaping的方法改成fc-conv.这个操作很重要,fc-conv可以使得不用resize图片的大小,也可以产生heat-map成像图。

4)得到heat-map之后,通过sliding window的方法得到一些可能的窗口作为bounding-box。

5)最后就是用canny的非极大值抑制的方法来图像切割。

正如paper中所谈到的,DDFD方法大幅度的减轻了计算的复杂度,并且没有使用其他的组件,例如在r-cnn中就是用了SVM来进行分类。并且DDFD可以检测到多中形状的人脸,这是其他的方法所不具有的。下面看看这两幅图:





这两幅图说明了以下几点:

1):DDFD可以检测到人脸,除了第一幅图片中那两张遮住太明显的图片,就是右上方和左边的那两幅没有检测到

2):我们的DDFD确实可行有效,他可以检测到不同形状的人脸,并且有很大的区分度。第二图表明,如果是人脸的话他的score是0.99级别的,已经快接近了1,更家尧注意的是,那些不是人脸的区域的概率就直接趋向于0.没什么大惊小怪的,我们这里用的是sigmoid嘛,要的就是这个效果。

3)具体的看第二幅图片,会发现,当人脸在进行in-plane的时候score会有所降低,这个现象在第一幅图也有显示,就是从正下方开始逆向旋转score会有所降低。作者任务这种现象出现的原因是因为搜们的数据库不够庞大而不是检测到旋转的人脸相对较困难。

paper中还提到了对于数据集的思考:由于数据集中的负样本的个数是正样本个数的100x,我们没有办法只能强制让正样本的个数占1/4,让其他的3/4的样本的个数随机的从pool中获取,但是pool中的数据集却有分布不均匀。这就表明,提升DDFD的关键就是让数据集中的样本对整个框架都有自己的贡献。数据集的获取很重要,得到适合的样本是成功的关键。

总之:DDFD可以发现不同形状和小幅度遮挡的人脸。然而由于数据集分布的不均匀对最终结果有所影响。我们可以采取更好的数据抽样方式和更加高端的数据扩张方式来提高最终的性能。代码在这里下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: