低分辨率人脸识别--蒸馏法《Low-resolution Face Recognition in the Wild via Selective Knowledge Distillation》

如何处理模糊图像/小图像的识别?

这个问题在各类图像识别和分类任务小图像和模糊图像都是个难点。这篇文章给了个很好的思路---蒸馏法!原因是网络直接去学习模糊图像是找不到attention位置的,但是如果用训练好的网络做教师,那么学生网络更容易注意到attention的位置。

1、简介

识别人脸分辨率32*32,推理性能:0.15MB 内存, cpu每秒418张人脸,gpu上每秒9433张。

低分辨率人脸识别模型现在主要有两大类,一类是hallucination类,另一类是embedding,其中前者的方法有Jian[9, Simultaneous hallucination and recognition of low-resolution faces based on singular value decomposition]发现同一个人脸图像在不同分辨率下的奇异值有线性关系,所以先对人脸特征进行svd分解得到高分辨率和低分辨率图像之间的映射关系;embedding方法直接得到低分辨率图像的特征, Ren[12]提出了kernel方法来将不同分辨率的人脸图像映射到无穷子空间,总结,embedding方法就是将高分辨率人脸的知识迁移到低分辨率上;

可以通过图像蜕化策略 增强数据集。

2、本文方法

2.1 蒸馏策略

教师模型使用训练好的vggface或者vggface2,教师模型的训练数据未知。

学生网络的目的是识别低分辨率的人脸,人脸输入大小是32*32;学生网络学习的是大模型的1*1*D层,D等于教师模型的输出人脸特征,mimic层可以用来和教师网络的特征层近似,mimic层一般需要上千的神经元,但是人脸特征不要这么高的维度,所以在mimic层之后会有idenetity层,可以是256或者128等用于进行人脸特征表示,indentity之后才接softmax。

由于并不是训练集中所有的人脸都是对蒸馏有意义的,所以从教师stream里选择最具有代表性的人脸,这些有代表性的人脸具有小的类间相似度,和大的类内相似度,(就是某个人的某张照片和别人长得很像,但是和自己的其他照片并不像)。为了达到这个目的,将蒸馏问题作为一个图上的前向推理过程,其中节点代表人脸,边代表关系,但是直接建模图中节点和边太多,所以作者选择了每个人脸类别的中心节点,下面公式中f代表每个人脸向量,u代表该人的中心向量,u的计算就是该类别人脸所有特征的平均

 

选择最优代表性的人脸使用下面的优化目标

上面公式中的a为长度为所有人脸数的向量,值为1代表该人脸特征为代表性的,其他为0;d(fi,uc)代表当前人脸特征和别的人脸中心cos距离,所以公式前半部分表示选择最具有代表性的人脸和其他类的人脸距离很小, 后半部分的权重参数是个负数,所以第二项代表同一类的两个人脸向量d(fi,fj)要越大越好;综上上面公式说明最具有代表性的人脸选择准则:和别的人脸中心距离近,并且和自己同类的人脸距离远。

上面公式可以用graph-cut算法求解,可以直接在教师网络得出的训练集的人脸特征中挖掘得到有代表性的人脸。

所以蒸馏法中学生网络主要做这几件事:

1)通过对有代表性的人脸和教师网络回归来训练学生网络;

2)从低分辨率的人脸中挖掘未知的人脸线索,所以学生网络的训练使用如下的目标损失:

 上面公式中第一项是分类损失,是基于所有低分辨率人脸,第二项是蒸馏损失,但是只是学生网络到mimic层的结果和教师网络蒸馏。

2.2  学生网络结构

学生网络的设计受到yolo9000网络的启发,具体结构如何如下:

 3、训练数据选择-注意事项

这些噪声样本中有遮挡,侧脸,光线等问题,教师网络学习的并不好,所以这些样本需要被舍弃掉,所以本文的方法在找到有代表性的人脸的同时还会舍弃掉一些不好的训练样本,避免教师网络对学生网络产生误导。下图的这些就是训练的时候需要舍弃的。

4. 实验结果

c: 只有人脸类别监督,没有蒸馏。

s: 只有选择性蒸馏,没有人脸类别监督。

sc: 选择性蒸馏+人脸监督。

dc: 直接蒸馏+人脸监督。

 

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部