第一次写博客,希望各位大神们不吝赐教,欢迎批评指正~
1.论文简介
●单任务学习:输入一个pose给出一个ID,通过训练得到模型,每个pose照片和ID得到一种映射关系,没有体现出同一个人之间的关联性,也没有区分开不同人之间的区别性;
●多任务学习:给出一个人的多角度照片,一起训练一个人的多张不同pose照片,这样得到的特征就融合了一个人的多pose的特征,同时也把不同ID特征很好的区分开;
●现在解决人脸识别效果的普遍方法是:
提升基于三维模型的人脸对齐矫正问题
大量的训练样本
设计新的损失函数
●为什么多任务学习能够提升人脸识别效果?
答:人脸识别不是一个孤立的身份识别过程,在人脸识别过程中姿态、表情、光照都是影响识别效果的关键,实际上,人脸自然环境下的变化比较大,单任务学习不能将这些相关变量进行关联,多任务能够提取这些特征并将它们结合到一起,多任务学习(MTL)旨在同时学习几个任务,以提升主要任务或所有任务的性能。
●论文提出的创新点
①提出了multi-task Convolutional Neural Network (CNN) ,将身份识别作为主要任务,将pose, illumination, and expression(PIE)估计作为侧面任务。
②提出动态权重方案(dynamic-weighting scheme)为每一个侧面任务合理自动赋予损失权重。侧面任务是作为正则化项来约束身份特征学习中的变动。
③提出pose-directed multi-task CNN :通过将不同姿态(poses)的人脸进行分组,学习不同姿态下的具体身份特征。
④第一个使用整体的Multi-PIE数据集进行训练,并在Multi-PIE, LFW, CFP , and IJB-A 上比较效果。
2.准备工作
1.人脸识别
文章主要处理姿势变化和MTL相关的面部识别方法,以往的方法都是单任务学习,对于不同姿态分别学习不同的模型。本文利用侧面任务标签来学习多种情况下的身份特征,利用PIE估计作为侧面任务解决身份识别过程中PIE变化对人脸识别的影响问题。
2.Multi-Task Learning
提出假设:在MTL过程中不同的任务共享相同特征
在MTL中决定不同任务的损失权重:
主任务权重为1,其他侧面任务权重是0-1,,N是侧面任务的数量,k是搜索值得数量,每个任务单独优化,计算量将是kn,如果将所有侧面任务的权重看成一个整体则计算量为K,让CNN去学习如何给每个侧面任务分配权重。
3.Multi-PIE数据集
337个人的不同姿态、表情、光照的人脸图像,共750k+人脸图像。
- 提出方法
1.Multi-Task CNN(m-CNN)
选择网络:CASIA-Net
原始网络:
修改:
①采用BN算法,加速训练过程;
②删掉对比损失函数层,简化损失函数;
③全连接层的维度根据不同的任务作出调整;
网络由五部分组成,每一部分都是由两个卷积层、一个池化层组成,每一个卷积层之后使用BN和Relu,conv52之后没有加ReLU,pool5之后的dropout layer参数为0.4;
其中,N个训练图片和对应的label,D={Ii,yi}(i=1..N),yi是一个向量,包含{yid,yil,yie,yip}分别代表身份、光照、表情、姿态标签。
●θ和W更新过程如下:
输出特征: