Multi-Task Convolutional Neural Network for Face Recognition阅读笔记

第一次写博客,希望各位大神们不吝赐教,欢迎批评指正~
1.论文简介
Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第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数据集
Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第2张图片
337个人的不同姿态、表情、光照的人脸图像,共750k+人脸图像。

  1. 提出方法
    1.Multi-Task CNN(m-CNN)
    选择网络:CASIA-Net
    原始网络:
    Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第3张图片
    修改:
    ①采用BN算法,加速训练过程;
    ②删掉对比损失函数层,简化损失函数;
    ③全连接层的维度根据不同的任务作出调整;
    网络由五部分组成,每一部分都是由两个卷积层、一个池化层组成,每一个卷积层之后使用BN和Relu,conv52之后没有加ReLU,pool5之后的dropout layer参数为0.4;
    Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第4张图片
    其中,N个训练图片和对应的label,D={Ii,yi}(i=1..N),yi是一个向量,包含{yid,yil,yie,yip}分别代表身份、光照、表情、姿态标签。
    ●θ和W更新过程如下:
    输出特征:这里写图片描述其中k,b是卷积层参数,γ、β是BN参数,f(.)代表的是输入图片到输出共享特征的非线性映射。提取的特征X是pool5层的输出,是所有任务的共享特征。
    BN参数解释:Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第5张图片
    归一化参数:
    这里写图片描述
    令 Θ = {k, b, γ, β}代表所有要学习的参数;

设全连接层的身份特征的权重矩阵这里写图片描述,偏置向量这里写图片描述
Dd是D中不同身份的人数,可用广义线性模型表示:
这里写图片描述
把Yd送到softmax层计算x属于每一个身份的概率:
这里写图片描述
预测出的身份为:
这里写图片描述
计算交叉熵损失:
这里写图片描述
然后同样计算其他的侧面任务;
这里写图片描述代表身份和PIE的权重矩阵;
M-CNN目标:
Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第6张图片
这里写图片描述代表每个任务的重要程度,如果是单任务模型,αp,l,e=0;
损失函数驱动着θ和W不断更新和学习。

2.Dynamic-Weighting Scheme
提出一个动态权重方案,在训练期间对每一个任务自动调整赋予损失权重。
(每次取取一批样品的动态权重平均值)

①为主要任务:身份识别任务损失权重为1;
②对于侧面任务而言,不是去找每一个侧面任务权重,而是找这三个侧面损失权重之和Φs=αp+αl+αe,(暴力搜索耗时)利用m-CNN学习再去分配每一个任务的权重比例,增加一个全连接层和损失层去共享特征X,这里写图片描述代表全连接层的权重矩阵和偏置项;
这里写图片描述其中这里写图片描述
计算最小loss的公式变为:
Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第7张图片
从两个方面保证损失值得减少:
1.为减少主要任务的loss,对主要训练任务(身份识别)有重要影响的侧面训练任务要有更高的权重;
2.为减少侧面任务的总体loss应该对能有效降低损失函数的侧面任务附以更高的权重。

3.pose-directed multi-task CNN (p-CNN)
作者把p-CNN比作一种divide-and-conquer scheme,“divide”就是指划分侧面任务,比如按照姿态或者光照等进行分类训练,“conquer”是表明可以利用CNN学习定制的映射函数来达到更好地识别效果。
因此考虑到提出一个新的方向来进行多任务学习CNN,再人脸识别中人脸角度是对识别效果影响最大的,所以提出将人脸训练样本按照角度进行分类,并让不同角度的样本特征按照不同的路线在网络中进行传输处理。
Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第8张图片
没有对应角度的样本时用0向量补空位,这样是为了防止下一批batch中有新的向量出现。
每个角度分类都会学习对应的一种姿态映射,导致了有三种不同的权重矩阵{Wl,Wf,Wr}:
最后,将所有组的特征合并为softmax层的输入,Wd是不考虑角度分类的身份对应的权重系数矩阵,Wl,f,r是按照三个角度方向的身份特征权重系数合矩阵。两个任务的联合损失权重:这里写图片描述,让这里写图片描述这里写图片描述 代表学习动态权重的权值矩阵和偏置向量,这里写图片描述代表不分类的身份特征动态权重和按角度分类的身份特征动态权重。
这里写图片描述
最后p-CNN loss为:
Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第9张图片
G表示类别数,本文是把角度分了三类, Ng 是第g类训练图片的数量;
这里写图片描述是要学习的动态权值(分别是不分类状态下的身份特征的权值系数矩阵和分类情况下的权值矩阵)(本文设这里写图片描述
4.Stochastic Rounting
测试阶段为防止角度判断错误而采取的办法–随机路线:
具体做法:
比如比较的两个照片人的姿态也不同。输入图片I,提取不进行角度分类的身份特征(yd ) 和各姿态具体身份特征 ({yg}Gg=1),再计算他属于每一个姿态类别的概率:
这里写图片描述
公式解释:不分类身份特征之间的距离+交叉比较每两个不同角度类别之间的距离作为最终的特征距离。

  1. 实验部分
    (1)face identification on Multi-PIE
    ①参数设置:
    训练集:200个人
    测试集:137个人,其中选择每个人得正脸照、中级光照强度、中级表情作为比对搜索库,其他样本作为测试输入样本。
    输入图片大小:100×100
    归一化:(x-127.5)/128
    动量:0.9
    权重衰减:0.0005
    所有模型训练次数:20
    每批次大小:4
    All models are trained for 20 epochs from scratch with a batch size of 4.
    初始学习速率:0.01
    学习速率下降:10th 15th 19th 每次下降0.1
    Softmax层之前的特征用于计算相似度余弦值,rank-1的识别率被看做模型精确度。对于侧面任务准确率使用所有身份类别测试结果取均值。
    ②Effects of MTL
    Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第10张图片
    Table 2. Performance comparison Multi-PIE dataset.
    Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第11张图片
    Figure 4.(a) 所有任务的能量向量排序结果(b)右下角的为左上角 (c) 特征维度变化与识别性能关系
    特征向量权值矩阵每一行能量计算这里写图片描述(共320行)
    每个能量向量的最大值代表每个维度对于不同任务的共献程度,值越大对该任务的影响越大。
    为了比较每一个特征维度对于不同任务的贡献程度,将所有任务权值矩阵合在一起:
    这里写图片描述
    计算全部的能量向量,按能量降序进行行排序,如图(b),观察可知共享特征表达会为每一个任务分配独立的维度集。
    图(c)分别使用Sd中能量最大的n个能量对应的x的向量组成子集作为学习的特征(这些能量最大的n个向量理解为对识别任务影响最大的向量组合)和这里写图片描述作为学习特征两种情况下改变输出特征维度对识别结果的影响,由图可知当输入x时,前200时精度一直增加,而后面则降低,这是因为加入了PIE,而y不受PIE的影响依旧持续增加。
    ③Dynamic-weighting scheme
    Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第12张图片
    图(a):m-CNN: dynamic weights,开始的时候表情权重最高,因为初始时表情的类别最少,所以随机猜测的概率最大,后来pose的动态权重最大,因为它最容易学习(highest accuracy in s-CNN),也对识别效果最有帮助(compare id+pos to id+exp and id+illum). 当pose后来由于姿态和光照权重的增加而减少,因为目标是减少loss,可见图(b)到11时再次下降。P-CNN也是同样的道理。

(2)face verification/identification on in-the-wild datasets: LFW, CFP, and IJB-A. We use Caffe with our modifications.
Compare to other methods:
Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第13张图片
对比c-CNN网络和论文方法修改后的网络进行识别效果的比较,改进后的网络s-CNN识别效果都高于c-CNN,p-CNN对于多角度人脸识别效果好于m-CNN。
Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第14张图片
在LFW上的测试效果不理想的原因主要是LFW数据集基本上都是正面照,而在CFP 和 IJB-A 中包含大量的多姿态人脸,所以下面有在这两个数据集上做测试:
Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第15张图片
重点看正脸与侧脸的识别结果,论文的accuracy达到了94.39%,当前最好的实验结果是91.97%,相对误差降低了30%,可以很好地说明作者的方法对于无约束多姿态人脸识别的有效性。
Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_第16张图片
s-CNN和p-CNN之间的差距显示MTL对于无约束面部识别的优点。

你可能感兴趣的:(论文研读)