Paper name
Deep learning face representation by joint identification-verifications
Paper Reading Note
URL: http://www.ee.cuhk.edu.hk/~xgwang/papers/sunCWTnips14.pdf
TL;DR
DeepID2作为DeepID的改进版本,在DeepID仅基于Identification优化方式的基础上,提出了Identification-Verification的联合优化方式,在LFW数据集上取得了当时最优的效果。
Dataset/Algorithm/Model/Experiment Detail
数据集
文章使用了LFW数据集作为测试集,LFW数据集包含5749个id的13233张人脸图片数据。考虑到LFW的数据量较少,并且其中大部分的id只有一张图片,这不利于Verification的优化(Verification的优化需要利用同一id的不同人脸图片),作者使用了CelebFaces+作为训练集,CelebFaces+与LFW没有重合部分,其中8192个id的图片用于训练优化Identification,另外的1985个id的图片用于挑选特征和学习verification模型(Joint Bayesian)。
实现方式
实现方式主要包含两个步骤,人脸特征提取与基于特征的人脸验证
- 人脸特征提取
- 网络结构:DeepID2的特征提取网络依然是基于简单的卷积网络,其中layer3和layer4共同连接到DeepID2layer上,同时layer3和layer4采用了局部权值共享的卷积方式
-
训练方式:虽然网络结构相比于DeepID并没有太大的变化,但是训练方式上有较大改进,最主要区别是现在训练基于两个优化目标实现:identification与verification两个优化目标
- identification优化目标:使用传统的softmax分类8192个id,其训练目标基于优化传统的交叉熵损失,在模型训练阶段让模型学习分类这么多的id数量作者认为可以是模型学习到生成具备identity-related 的特征,也就是使不同的人生成的人脸特征具有较大的变化
- verification优化目标:
verification优化作者尝试了基于L2实现loss,如下式所示,本文的核心贡献就是这个loss函数的设计,在进行相同id的两张人脸图片验证时,希望两个feature的差别越小越好,而当不同id的两张人脸图片验证时,希望两个feature的差别要大于一个margin。
并且也同时尝试了基于L1与余弦距离实现的loss。
- identification优化目标:使用传统的softmax分类8192个id,其训练目标基于优化传统的交叉熵损失,在模型训练阶段让模型学习分类这么多的id数量作者认为可以是模型学习到生成具备identity-related 的特征,也就是使不同的人生成的人脸特征具有较大的变化
-
训练优化算法:
如下表所示,在训练过程中基于identification和verification的梯度会通过gamma超参数调节他们之间的权重比,值得注意的是下表中的优化方式都是基于SGD反向传播进行训练,但是L2的verification的loss中的m其实也是需要被训练的超参数,但是这个超参数不能通过SGD进行训练,因为模型会学出的m都是趋向于0,这样能使得loss最大程度降低,但是这无法使不同id的人脸feature增加区分度。
-
人脸验证
人脸验证阶段即基于特征提取网络提取的DeepID2特征搭配训练的Joint贝叶斯实现。如下图所示,作者会基于SDM算法跑出的21点人脸关键点提出不同的人脸patch,作者基于不同位置、不同scale、不同channel、水平翻转等可以在单个人脸上提出400个patch,然后作者基于贪婪算法在400个patch中选出25个对于人脸验证作用最大的patch进行后续验证操作,这25个patch的示意图如下,而基于这个25个patch得到的得分也都标注在相应的patch下方。
实验结果
- identification与verification的平衡性实验
这部分实验应该是本文所有实验的精华所在,作者首先是探索了使用不同的gamma值对于平衡两者的影响,根据下图可以看出加入verification后对于得分肯定是有有效果的,当gamma取0.1时两个优化目标能取得平衡的效果。
作者为了验证两个优化目标为什么在gamma为0.05时有更好的效果,使用了LDA来对inter和intra-person的variations进行分析,可以看到以下左图是不同gamma值的inter-person的variance变化,不同人的feature的variance跨度越大越利于分类,可见gamma为0.05时与0时相比并没有使inter-personal的variance降低,其中某些区域的值甚至升高了;当gamma趋于无穷大时会导致identification目标不被优化,这时不同人之间的feature的variance小,难以分开不同的id;如下右图所示为intra-person的变化图,可以看到gamma为0.05时每个id的各个图片的feature的invariance得到降低。
下图能够更明显得看出gamma对于提取的feature的影响。可以看到当gamma为0时,模型只优化identification目标,这导致每个人的不同图片直接差异较大,难以将人脸很好验证出来;而当gamma趋于无穷时,虽然能够将类内距离极大降低,但是不同的ID之间的重合度增加,难以区别出不同的id人脸。
- 不同verification的loss形式的实验对比
- 结果对比实验,可以看出DeepID2在LFW上取得了最好的效果
Thoughts
这篇文章作为DeepID的续集,依然是人脸识别领域的经典之作,最主要的创新点其实很简单,就是增加类间距离的同时缩小类内距离,这也取得了在当时SOTA的效果。文章的实验的布置方法也非常值得借鉴,以LDA对特征的variance进行分析,并基于对PCA降维后的feature可视化的方法可以让读者直观感受到verification的loss加入对于特征学习的影响。论文中作者并没有强调论述的基于贪婪算法选择人脸patch以及基于7个不同的选择出的模型进行ensemble的过程也值得在打比赛等刷精度的任务中采用。