内容纲要

欢迎转载,作者:Ling,注明出处:深度学习:原理简明教程15-深度学习:CNN人脸识别

 

本文主要讨论人脸识别问题。

主要内容参考Andrew NG。

 

人脸验证 vs 人脸识别

人脸验证:

输入:图片

输出:输出人脸是否是指定的人脸(0/1), 正确率现在可以达到99%

 

人脸识别

数据库中有K个人的人脸

输入:一个人脸

输出:该图片对应K个人中的哪个人脸或者不在数据库中

 

One-shot learning:

用于学习的人脸图片有限,每个人一般只有一张或者几张人脸图片,然后需要能够再次识别。

识别办法:有点类似word vector,通过网络得到image vector,求image vector的相似度。

[Taigman et. al., 2014. DeepFace closing the gap to human level performance]

 

Siamese Network:

dl_15_001

输入:两个图片

输出:生成两个128位的image vector进行相似度比较,如果两个是同一个人,则d很小,如果不是同一个人,则d很大

 

损失函数:Triplet loss

[Schroff et al.,2015, FaceNet: A unified embedding for face recognition and clustering]

dl_15_002

解释:

1)一样图的相似度d(A,P),不一样图片相似度d(A,N)

2)损失函数由相似和不相似图片相似度差构成,要让两者相差大

3)来自1k个人的10k图片,组合出很多这样的triplet

4)如何选择triplet,尽可能让d(A,P)和d(A,N)比较接近的triplet,这样训练出来的模型识别力更强

dl_15_003

另外一种做法:[Taigman et. al., 2014. DeepFace closing the gap to human level performance]

dl_15_004

解释:

1)上下两个网络参数一样

2)最后到预测y^之前点不是用sigmod进行二分类,而是用distance的相似度函数进行学习

3)损失函数可能中间distance部分不同方法稍微有点区别

4)训练样本:

dl_15_005