发布于2019年。
1 动机
- 深层CNN网络参数庞大,但是HFR数据集都相对较小,所以容易出现过拟合问题。
- 传统的CNN无法有效的提取模态不变的特征,将其用于跨模态人脸识别问题效果不好。
2 工作
- 通过引入MCA层,提出了互分量卷积神经网络(MC-CNN)来提取不同模态的模态无关分量,该分量可以扩展到其他跨模态任务中。
- 为单幅图像的模态不变特征提取设计了MCA损失。
- 在CASIA NIR-VIS 2.0数据集上达到99.39%,在CUHK NIR-VIS数据集上达到99.44%,在IIIT-D Sketch数据集上达到87.4%。
3 MC-CNN整体结构
- MC-CNN输入不同模态相同身份的图像对;然后使用ResNet-41网络对它们提取512×7×6的深层特征。ResNet-41网络包括四组ResBlock块,块数分别为1,2,5,10,通道数分别为64,128,256,512。最后生成两个期望d维特征向量。
- 训练过程。首先在一个庞大的VIS人脸数据集上预训练ResNet-41。然后使用先验知识训练MCA层的w,b参数,w,b参数就是FC层的参数。接着训练ResNet-41网络参数,先冻结w,b参数,用BN层和Dropout层得到两个d维特征进行损失计算,用SGD更新ResNet-41网络参数。损失函数是Softmax Loss+MCA Loss。
- 测试过程。使用模态不变的特征计算相似度,使用一个阈值来判断两幅人脸图像是否属于同一个人。
- 伪代码。
4 MCA
- MCA的目的是学习映射函数F,以便推断出两种不同模态的相互组成部分。
- 假设有两种模态,1是VIS图像,2是草图。
- M表示图像特征,一共有N组图像。
- H是两个模态共有的组成成分。
- F是将H映射到不同模态的函数。这样就可以得到不同模态的特征了。
- 通过先验知识和高斯随机噪声对函数的高阶导数建模(线性生成模型),从而MCA简化为线性生成模型。
- 第一部分用于对模态的观测。第二部分来源于生成模型。第三部分是高斯随机噪声。
- 使用EM算法来估算模型参数。通过给定的模态特征m推断出隐藏因子y。
- 第一个式子为了估计隐藏因子(互分量矢量),可以视为不同模态图像的互相组成部分。
5 MC-CNN
5.1 MCA Layer
- m为图像特征,E为输出,这样就可以将MCA Layer可以视为FC Layer。
5.2 MCA Loss
- E表示的是互分量矢量,其实也就是两个模态共有的隐藏特征。在理想情况下,就如式子1一样,完全消除了模态差异。
- 由式1就可以得到式2,MCA Loss。K是模态数,N是图像对。
5.3 比较
MCA Layer vs FC Layer: MCA Layer的W,b不使用SGD算法优化,而是使用MCA算法优化,在CNN训练中冻结这些参数。这样,就可以利用MCA来减少模态差异,同时也可以对FC层施加更强的约束,以减少过拟合。
MC-CNN vs CNN+MCA: 首先,MC-CNN以迭代的方式进行优化,即SGD和EM。而CNN+MCA只将CNN的特征作为MCA的输入。其次,直接结合MCA和CNN不能获得单一图像的模式不变深度特征。这是因为MCA将来自不同模态的相同身份的图像对作为输入,而CNN本身不能有效地提取模态不变特征。通过采用本文提出的变换和MCA损失,我们的MC-CNN可以在测试阶段为单幅图像提取模式不变的深度特征。第三,直接结合MCA和CNN的效果较差。这种观察驱使我们寻找一种更好的方法将MCA嵌入到CNN中,即MC-CNN。
Alleviate over-fitting with prior knowledge: 用先验知识缓解过拟合。与CNN相比,MCA的过拟合问题得到了缓解,部分原因是MCA使用了先验知识。
6 实验