人脸识别论文笔记 Reconstruction-Based Disentanglement for Pose-invariant Face Recognition

一篇做pose-invariant人脸识别的paper:

Reconstruction-Based Disentanglement for Pose-invariant Face Recognition.Xi Peng, Xiang Yu, Kihyuk Sohn, Dimitris N. Metaxas and Manmohan Chandraker

因为里面还有用3D model来做二维人脸图像render的工作,所以顺便看了这篇比较老的文章:A Morphable Model For The Synthesis Of 3D Faces. Volker Blanz Thomas Vetter

Motivation

     工作是为了解决pose variant face recognition的,怎么能在比较大的pose下把人脸识别做好,目前大部分的人脸识别工作没有显示的来解决pose的问题,指望通过训练数据里涵盖足够多的大pose数据来做,也有deepface这样的工作做了基于2D人脸恢复成3D再转正的尝试,不过我们之前也尝试复现过这个结果,恢复出来的正面2D人脸效果并不好。所以作者提出了三个新的思路,一是因为把侧面的转正之后还是会有信息损失,所以选择了通过正面的2D恢复3D再投影生成不同pose的2D人脸图像;二是在训练人脸识别模型的时候做多个监督信息的训练,把pose、属性和识别放在一起训,希望在一个基础feature上进一步得到分别表示pose、landmark和identity的feature;三是通过把pose分支学到的feature与正面人脸的identity feature拼接在一起去重建基础feature,这样来保证不同pose的人脸图片学到的identity feature是相似的。

基本原理     

   首先是第一步,从一个2D正面人脸恢复3D再投射成一个2D带pose的人脸,这里面主要是用了3D morphable model来恢复3D人脸shape。之前没太了解过相关的技术所以看起来还是比较费劲的,大致的原理是有一些扫描得到的三维人脸数据,要想求一个没见过的2D人脸上的shape在真实三维空间里的坐标,方法是基于已有的三维数据对新来的这个人脸三维shape做重建,重建的方式在已有三维数据的shape上做PCA,也就是求得一组基(这篇paper里基的个数是66)作为重建的向量。那么每个新来的人脸作为输入经过一个神经网络学习一组参数(包括旋转、平移、缩放以及每个基的weight)来生成这个待预测人脸的3D shape,监督信息是利用这个shape在正面的投影参数下把原始图像投影回2D使得L2 loss尽量的小(这个地方其实paper里没有提,是在第二篇paper里看到的,貌似也有方法是用投影回来的landmark位置的L2 Loss做监督信息,欢迎大家讨论)。有了这个shape之后把原始人脸投影成不同的pose,为了更好的重建,还对identity和expression求了不同的基。具体的过程就是figure 2 中的图a部分,sRT分别是缩放、旋转和平移,两个alpha分别是identity和expression的系数向量,实现的时候其实还加了个pose的基,分别是30维、29维和7维,一共66维。

人脸识别论文笔记 Reconstruction-Based Disentanglement for Pose-invariant Face Recognition_第1张图片

       第二步就比较好理解了,就是正常的多分类加landmark加pose joint learning学习feature,为了第三步做了处理是先得到一个rich feature,然后分别用一个小网络从rich feature得到identity和non-identity的feature,每个feature再叠加一个小网络用分别的loss去做训练。一些人可能会觉得这样不就算是用不同任务得到不同的feature了吗,为什么还需要第三步?因为这样分开训练只能说这个feature有相当的表达能力可以完成identity和non-identity的任务,但是不能保证identity的feature里不包含non-identity的信息,也不能保证non-identity的feature里不包含identity的信息。因此我们还需要一个方式来尽量使得两个feature之间不冗余。

       第三步如figure4,fix住得到rich feature的底层网络,训练的时候输入一个pair,同一个人的正面和非正面人脸图像,把正面人脸图片的identity和non-identity feature用一个网络做重构,要求其能重构原始的rich feature;同时把正面人脸图像的non-identity feature和侧面人脸的identity feature用一个网络做重构正面人脸的rich feature,最小化这两个重构误差,最终的loss如公式3,这个过程里学习的是得到identity和non-identity的网络参数以及重构的网络参数。

       人脸识别论文笔记 Reconstruction-Based Disentanglement for Pose-invariant Face Recognition_第2张图片

       其实这个地方也可以理解为是基于feature的GAN,通过一个G网络生成一个rich feature,使得难以区分它和原始的rich feature。另外在重构的时候感觉应该也可以加上两项对侧面人脸rich feature的重构,不知道为什么作者没有这样做,其初衷还是为了让侧面的feature更像正面的,从实际情况来分析估计侧面人脸的feature特性不会很好,重构出这个feature可能会导致结果变差。

实验结果

     在multipie、300wlp和CFP上做了对比实验,从数据上看效果还是非常好的,在比较大的pose条件下识别率也足够高,不过这些data set上report的结果不太多而且没有官方的网站统计结果,不太清楚是否有其他人的结果更好。
人脸识别论文笔记 Reconstruction-Based Disentanglement for Pose-invariant Face Recognition_第3张图片人脸识别论文笔记 Reconstruction-Based Disentanglement for Pose-invariant Face Recognition_第4张图片
    同时还对比了不同的训练策略的效果,其中看上去加了N-pair loss的提升其实更明显。。。
人脸识别论文笔记 Reconstruction-Based Disentanglement for Pose-invariant Face Recognition_第5张图片

整体总结:

     是个很精巧的工作,估计比较难复现结果,最后的对比实验其实有点自我削弱了,看上去N-pair loss对整个效果提升更明显,设计的比较复杂的SR和L2 loss的差别也没有多少,不过基于重构和pose augment的思路还是比较直观的。但是只在损失函数上做监督,并未在底层feature的网络结构上做调整来使得侧面人脸可以得到更好的feature,还是应该不会很好的解决pose的问题。

你可能感兴趣的:(人脸识别论文笔记 Reconstruction-Based Disentanglement for Pose-invariant Face Recognition)