深度学习:原理简明教程15-深度学习:CNN人脸识别
欢迎转载,作者: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:
输入:两个图片
输出:生成两个128位的image vector进行相似度比较,如果两个是同一个人,则d很小,如果不是同一个人,则d很大
损失函数:Triplet loss
[Schroff et al.,2015, FaceNet: A unified embedding for face recognition and clustering]
解释:
1)一样图的相似度d(A,P),不一样图片相似度d(A,N)
2)损失函数由相似和不相似图片相似度差构成,要让两者相差大
3)来自1k个人的10k图片,组合出很多这样的triplet
4)如何选择triplet,尽可能让d(A,P)和d(A,N)比较接近的triplet,这样训练出来的模型识别力更强
另外一种做法:[Taigman et. al., 2014. DeepFace closing the gap to human level performance]
解释:
1)上下两个网络参数一样
2)最后到预测y^之前点不是用sigmod进行二分类,而是用distance的相似度函数进行学习
3)损失函数可能中间distance部分不同方法稍微有点区别
4)训练样本:
留言