Deep Convolutional Network Cascade for Facial Point Detection(DCNN)

前言:知识是令人敬畏的,对知识的理解是逐步深入的,我 难免对篇论文理解有偏差,不妥之处,请给予指正。
言归正传:主要的思想体现是由粗到细,逐步优化
脸部对齐的发展是过程是传统方法,回归方法,深度方法,3D方法,传统的方法例如AAM,ASM等,回归的方法例如SDM,ESR,ERT,LBF,CCL等(我看过的),回归的方法的特征选择选择范围可基于整个人脸也可基于局部,比如LBF就是论文中提到的基为每一个关键点训练一个被称为component detector的分类器,是基于局部信息的。回归的方法优点是方法简单,训练速度块,缺点是对大姿态变化,遮挡对齐效果欠佳;在训练时对初始值的选择敏感,如果初始化的值处理不好,容易陷入局部最优。
相对于回归的方法,该篇深度方法的优势是预测的精度高,精度的提升主要依靠:1.整张脸的上下文信息都被利用到了,相应的是高质量的特征被利用。2.关键点的形状约束已经被隐含编码了,避免了局部优化方法带来的缺点。网络的后两级被训练用于局部优化初试预测值。
检测效果展示:
Deep Convolutional Network Cascade for Facial Point Detection(DCNN)
从效果中可以看到对局部遮挡和模糊也有很好的定位效果。

论文主要介绍了定位模型的三级结构,三级级联的结构间实现的功能是使定位由粗到细,逐步细化。
三级网络结构
完整的架构图,包括Level 1, level 2, level 3 三级网络组成, 逐渐提高定位精度
Deep Convolutional Network Cascade for Facial Point Detection(DCNN)
结构细节:
第一级网络是深度卷积网络,具有四个卷积级,绝对值正切函数享权重局部共享。 第二级和第三级的网络共享一个共同的浅层结构,第二级输入的是由第一级粗定位的基础上以定位点为中心裁剪的图像块。第三级的输入是以第二级精定位点为中心的图像块。 由于它们旨在提取局部特征,因此不需要深层结构和局部共享权重。 网络结构的细节见下表。
Deep Convolutional Network Cascade for Facial Point Detection(DCNN)
各级输入的图像大小,第一级是以边界框为基础(边界框的生成是由人脸检测器提供,第二级第三级的输入是以上一级的输出的关键点为中心,进行裁剪得到。)
Deep Convolutional Network Cascade for Facial Point Detection(DCNN)
Level 1:
这一级由三个子网络组成,其中
F1: 输入整个人脸区域,输出lefteye, righteye, nose, leftmouth, rightmouth 共5个特征点坐标(10维)
EN1: 输入人脸上部区域(不包括mouth),输入lefteye, righteye, nose共3个特征点坐标
NM1: 输入人脸下部区域(不包括eye),输出nose,leftmouth,rightmouth共3个特征点坐标
三个网络的输出取平均值作为Level 1的最终输出,Level中的网络结构一样,如下图所示:
F1层网络结构:
Deep Convolutional Network Cascade for Facial Point Detection(DCNN)
为什么选择三个不同区域对同一个目标做训练?
一般图像识别中,如果一个简单特征出现在一处,我们假设它在其他地方也会出现,所以整张图送入CNN学习有用的全局特征。但是这种假设对于布局固定的目标就不再合适了,比如眼睛和嘴巴,嘴巴和眼睛对应的简单特征很相似(比如轮廓), 但复杂特征差异很大,把他们隔离开有助于让低层次的网络学习到的简单特征,对目标更具有针对性,有利于高级特征的学习优化。 文中的EN1和NM1鼓励网络学习local feature,而不是鼓励学习global feature
Level 2:
Level 2由10个子网络组成,以level1输出的特征点的邻域区域为输入,输出精定位。10个自网络,两两一组,负责对一个特征点的精定位,比如LE21和LE22是计算lefteye的位置. 一组内的两个子网络的区别是视野区域不同,比如 LE21截取的区域的尺寸是人脸框的0.16,而LE22截取的区域的尺寸是人脸框尺寸的0.18。
Level 3:
Level 3 和 Level 2很相似, 最大的区别是每个网路输入的视野区域更加小了。

训练:
第一级,训练和边界相关的小块,通过小的变换和旋转增强数据。在接下来的级中,我们训练以ground truth 位置随机变换得到的位置为中心的小块,第二级在水平和竖直最大的shift为0.05,第三级为0.02,这个距离是以bounding box的大小为基准。参数通过随机初始化和随机梯度下降法得到。