您的位置:首页 > 大数据 > 人工智能

人脸特征点检测(四)——Tasks-Constrained DCN(TCDCN)

2017-09-28 22:01 831 查看
Facial Landmark Detection by Deep Multi-task Learning》原文地址及实现代码在文章链接中。

文章提出TCDCN(Tasks-Constrained Deep Convolutional Network),使用与人脸相关的属性共同来学习人脸的特征点位置,通过这种多任务的学习,来提高人脸特征点检测的鲁棒性。具体而言,就是在人脸特征点检测时候,同时进行多个任务(包括性别、是否戴眼镜、是否微笑以及脸部姿势)的学习。使用这些辅助属性可以帮助更好的定位特征点。

这种多任务学习的困难在于:不同的任务有不同的特点,有不同的收敛速度。针对这两个问题,作者给出的解决方法分别是tasks-constrained deep model和task-wise early stopping。文章所提出的方法优于当时已存在的方法,特别是能处理有严重遮挡和姿势变化的情况,而且减少了模型的复杂度。



上图展示了其他辅助属性的检测结果,人脸特征点检测这一任务可以与多个辅助任务同时进行,对比以前的CNN和Cascaded  CNN,文章具有更好的表现性

要点:

(1)对于不同的任务,具有不同的特点,文章给出的解决方法是tasks-constrained deep model

传统的多任务学习给每个任务都赋予相同的权重:



一般的多任务学习则把主任务(特征点)和其他任务(辅助属性)分开处理,如下:



而文章采用对主任务(regression)采用最小二乘法作为损失函数,对辅助任务(classification)使用交叉熵损失函数,如下:



从这个式子上可以看到,损失函数的前半部分(f为线性函数)就是特征点检测,后边部分(p为softmax函数)是不同分类任务的loss相加,最后一项是正则化项。

在训练的时候,各个任务使用相同的特征,只有在最后一级的时候才根据任务的不同做不同的处理(线性回归/分类)。

(2)不对于多任务而言,不同的任务有着不同的损失函数,学习难度也不同,因此它们的收敛速度也可能相异。现有的解决这个问题的方法是通过探索这些任务的关系来解决,比如说通过所有任务的权重协方差矩阵,但是这篇文章提出了一个更有依据的方法:task-wise early stopping

当辅助任务达到最好的表现之后,这个任务对主任务就没有什么帮助了,这个时候就可以停止这个任务。那我们如何判断这个辅助任务是否起到了它应起的作用呢,我们应该什么时候终止这个任务呢?如下式所示,前一部分表示训练误差的趋势,后一部分表示跟训练误差相比的泛化误差。如果两式乘积超过了某个阈值,则终止该任务。



文章所述,使用的是SGD(stochastic gradient descent)来更新任务的权重以及网络的过滤器,后向传播计算梯度使用的策略如下:



TCDCN所用的框架如下,输入是一个40x40的灰色图像,特征提取阶段包括4个卷积层、3个池化层和1个全连接层,过滤器的权重在空间上不是共享的,这意味着在输入map中使用的是不同的过滤器集合。选择绝对值整流的双曲正切作为激活函数;最大池化在没有重叠的区域进行,跟在四个卷积层后的全连接层生成一个特征向量,这个特征向量在估计阶段的时候被多个任务共享,其中线性回归(Linear regression)用来得出标记点位置,多个逻辑回归(logistic regression)用来处理其他多个人任务。



评估准则使用的额是均值误差和失败率来衡量,mean error通过计算landmark和the ground truths的距离,然后相对于双目距离进行标准化得出,Mean error大于10%则认为失败。

下图是Facial Landmark Detection(FLD)和用其他辅助属性进行比较的结果,很明显可以看出使用辅助属性进行特征点检测的误差和失败率比没有使用辅助属性的要低得多,而且使用的辅助属性越多,性能及越好。





还推荐一篇作者同类型的文章:《Learning Deep Representation  for Face Alignment with Auxiliary Arribute》提出用辅助属性的脸部对齐的深度表示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息