百度的人脸识别

转载请注明出处 https://blog.csdn.net/Fire_Light_/article/details/79589926

原文链接:Targeting Ultimate Accuracy: Face Recognition via Deep Embedding

网络结构:

这里写图片描述

输入的是对齐好了的人脸图像,将人脸图像通过面部标记点切分为多个相互之间有重叠部分的Patch,分别输入相同结构的网络,每个网络都在不同的GPU上训练。

网络结构包含9个卷积层,某些卷积层的后面有池化层,标准化层,论文中与图中都没有详细说明,大致知道网络是什么样子的就可以了。

训练时用softmax训练,进行验证时将所有FC层的特征相接,构成一个高维的面部特征。

验证方法–Metric Learning度量学习:

通过以triplet loss 为监督信号的度量学习方法来学习一种128维的特征,用特征之间的距离来进行验证任务。

所谓度量学习,就是在特征空间中学习某种合适的距离度量方法,也就相当于去寻找特征空间中的某一子空间,将特征变换到该子空间上之后,可以很容易的度量各特征之间的距离(参考《机器学习》-周志华)。

通过这个度量学习,可以做到减小类内的l2距离,增加类间的l2距离的效果。

度量学习示意图:
这里写图片描述
关于triplet loss的详细描述可以参考我的博客:人脸识别系列(六):FaceNet

实验:

训练数据量对错误率的影响:
这里写图片描述

patch量对错误率的影响

这里写图片描述

最优结果:

使用7个patches,每个patch最终提取128维特征,然后还混合了一些其他模型一起判断(具体是哪些文中没说)

达到了LFW上99.85%的准确率

论文中还展示了所有的验证出错的图片对:
这里写图片描述

图中分为三类:
a.错误标记。

b.假阴性,由化妆、带眼镜、人物造型变化比较大或是遮挡等原因造成。

c.假阳性,五官非常相似的人。