Papaer:GridFace: Face Rectification via Learning Local Homography Transformations
论文链接: https://arxiv.org/pdf/1808.06210v1.pdf
旷视科技,ECCV-2018 paper。
STN网络用在识别网络中,主要用于做一个二次校正。
但是直接用STN学习可能会有扭曲
这篇paper的主要思想是把人脸切成不同的grid,分别做stn变换,相当于一个更细致的二次对齐的过程。
问题思考:
文章其实做的很细致。paper的初衷在于align的效果可能并不是非常好,所以这里要一个二次校正。
那么真正去思考如何提升align的过程是不是更好一些呢。而且gridface的计算量,其实是不可忽视的。那么实际应用中,其实有一个更好的align可能也能达到同样的效果。
Introduction
先看文章的整体效果,可以看到对于大角度得到了一个很好的改善。
网络结构
GridFace的网络结构如图所示,分为矫正模块和识别模块(rectification module and the recognition module):
矫正模块就是把人脸切分乘grid,然后对每个grid学习一个Homograph矩阵
识别模块做metric learning。
主要contributes:
- 减少带有局部单应变换的人脸几何变形来提升识别性能
- 引入一个人脸标准先验和一个基于近似方法的降噪自编码器来正则化人脸校正
- 各种扩展实验证明了算法的优越性
Rectification module
矫正模块结构如图:
利用STN的思想,学习一个变换矩阵H。这里主要是把原图切成了nxn的grid,每一个grid学一个H矩阵。
为了防止交点处的值映射失真,在pi和pj之间加入了一个软间隔:Deformable Constraint。
表示相邻交点对之间的一个欧氏距离
H矩阵
- H矩阵中的9个参数,表示图像平移、旋转和拉伸。
- 加上I的作用:每次网络学习一个参差,训练时候只需要学习参差。
- 9个参数的范围是不一样的,因此在实现过程中加上了left和right scale。right是映射到01之间,left scale是恢复到原图。
Recognition module
识别的loss用的是triplet loss
总体loss如下:
Experiment
SNFace中grid数量实验:
常见数据集结果:
LFW和YTF: