人脸检测——DDFD

本文所介绍的人脸检测,主要学习和实现了ICMR-2015年雅虎实验室的文章”Multi-view Face Detection Using Deep Convolutional Neural Networks”.这是我接触和实现的第一个深度学习案例,本文除了讲解该文的算法以外,也是对我近2个月工作的总结.

学习还不够深入,有不足之处欢迎大家提出指正。

  • 此外,本文在讲解的过程中会包含全部的源代码以及训练数据。

目录


1- 构建深度学习训练数据集

AFLW原始数据集:[百度云链接——链接:http://pan.baidu.com/s/1czZXme 密码:rw3g)

尺寸归一化为224×224的正负训练样本:百度云链接——密码:zf98

深度学习需要大量的数据,否则根本无法发挥出深度神经网络的优势。雅虎的文章中为了训练一个性能优异的人脸分类器,制作了超过20W的正样本(人脸)和超过2000W的负样本(非人脸)。此外,为了有效解决遮挡、不同角度、光照的人脸检测,文章还强调训练样本中应包含大量这类的样本。这就需要应用一些特殊Data Augmentation方法,一方面扩充训练样本,另一方面改善样本的分布(即增加那些存在遮挡、倾斜、偏转等的人脸样本)。通常,我们可以采用随机平移、翻转、随机旋转、泛红泛绿等操作来完成上述扩充,但是需要注意人为的添加一些遮挡或者噪声通常是不可取的,因为深度网络很有可能学习到这些人为的“操作”。

1-1 制作训练正样本

我和原文一样,使用了AFLW数据集作为正负样本的来源。AFLW数据集中有大概2.1W张图片(基本都是高清的图片),其中标记了大概2.4W个人脸的矩形框、3维旋转角度、是否遮挡、是否戴眼镜等信息。因此,生成正样本时,我的主要操作就是将原有的矩形框进行随机的平移和旋转,如果操作之后的矩形框和原来矩形框相交面积比(IOU)大于某个阈值(如,我使用了0.64),那么就可以认为经过“采样”得到了一个新的正样本。如果原矩形框下的人脸是存在遮挡或者戴眼镜或者低头仰头的,那么“采样”的次数就会加倍。

  • 关于正样本IOU阈值,原文设定的是0.5,我觉得这不是一个很好的数值。首先,AFLW数据集中标定的矩形框也不是特别准确,如果IOU太小,很容易生成较多的弱正样本,一方面这将增加未来训练分类器的难度,另一方面实际检测的时候也会在目标周围生成许多影响我们判断的矩形框(这一点后面会再次说明)。但是,IOU阈值过大也不好,因为这将降低未来我们对缺失人脸(部分人脸)的检测率。

1-2 制作训练负样本

制作负样本时,我设定了一个新的IOU阈值为0.1,然后对整个图像进行滑动窗口,如果窗口与原人脸矩形框的相交面积比小于0.1,就认为该窗口为负样本。窗口大小和滑动步长是根据图片大小来确定的,平均下来一张图片会滑动产生200个窗口,最终被认定为负样本的大概有120左右。

  • 需要特别说明的是,AFLW数据集中存在这样的问题:一张图片中有多个人,但只标注了少数几个明显的目标;背景存在密集人群。这将导致我们滑动窗口产生的负样本中包含一些“正样本”。因此,对于负样本我们需要人工审核一遍来剔除那些“异常”。(因为我是一个人,而且还在上课,这部分剔除工作就花费了我半个月之多 T_T)

最终,我获得了352240的正样本和1600128的负样本(负样本本来有200W+,但我没有时间全部校验一遍了)。

  • 23
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 180
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 180
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值