siamese 网络, 是05年Yann Lecun提出来的。 ,它的特点是它接收两个图片作为输入,而不是一张图片作为输入。
文献资料:
摘抄自caffe github的issue697
Siamese nets are supervised models for metric learning [1].
[1] S. Chopra, R. Hadsell, and Y. LeCun. Learning a similarity metric discriminatively, with application to face verification. In Computer Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society Conference on, volume 1, pages 539–546. IEEE, 2005. http://yann.lecun.com/exdb/publis/pdf/chopra-05.pdf
Speaking of metric learning, I remember that @norouzi had proposed and open sourced a method that learned a Hamming distance metric to distinguish similar and dissimilar images [2].
[2] Mohammad Norouzi, David J. Fleet, Ruslan Salakhutdinov, Hamming Distance Metric Learning, Neural Information Processing Systems (NIPS), 2012.
其中有一篇文章和这个网络差不多
文章:《 Learning Deep Face Representation 》
人脸的表示,易于实施, 叫做Pyramid CNN ,采用了greedy-filter-and-down-sample 的操作,使得训练非常快,而且高效,并且PyramidCNN可以和多尺度人脸特征结合。97.3% 的LFW。
传统的人脸表示特征方法:
而文章中,作者采用深度神经网络,DCNN来提取特征,其网络结构图:
注意文章的基本的网络结构不是传统上的CNN结构,而是“Siamese”网络【2005 Lecun 组的一篇文章。】,它的特点是它接收两个图片作为输入,而不是一张图片作为输入。
网络的主要特点:它们是由多个金字塔组成,分为不同个level级别的特征,每一个level的网络由两部分组成,一部分是共享的层,它由它的前一个level的网络层组成;另一部分是一个非共享层,在每一层中训练只需要训练非共享层就可以,而共享层是由前一个level的的网络层共享过来,每一个神经网络中,非共享层用来进行数据的预处理,比如卷积下采样等。(由于网络的共享层,使得每一个level的训练速度不会随着网络层数的增多而急剧提高的训练时间,说白了也就是说每次只需要训练网络的最后一层就可以了,前面的层可以保持固定。)
采用金字塔的原因在于:1.加快网络的训练速度;2. 可以提取多尺度人脸结构特征;
注意每一个level有多个神经网络,分别对应于每个输入图像的patch。每个网络的训练目标函数都是下面的损失函数;
网络训练的损失函数表示为
其表示的意思就是同一个人的距离要相互接近,而非同一个人的表示要相互远离。利用这个损失函数来进行网络的训练。
训练方法:
最终的特征:它由所有的level所有的patch特征级联而成,而patch的选择则依赖于人脸特征点的检测和aligment。最终形成的特征其实是过完全的,也就是说有很多的冗余,但是很多文章都表明这种冗余性对于识别来说具有重要性。应该来说每一个level的所有的patch特征连接起来之后的向量就是一个人脸在这个level的特征了,多个level的特征再连接起来就形成了多尺度的特征表示。
文章还说了,Pyramid CNN方法提取的特征可以很稀疏,最少可以在8d,而在这么低纬度的特征下,其识别率还不低。通过相同的维度特征的情况下进行识别率比较:其中LBP特征是通过了PCA降维到相对应的维度。
可以看出,Pyramid CNN提取的特征,在维度低的情况下的识别率明显好于LBP,并且随着维度的降低它的识别率也不会像LBP那样子明显的下降。
新的评判标准:因为在LFW数据库上面的识别率已经达到了99%以上了,所以作者他自己提出了一个新的评判标准,在人脸verification中,正确的匹配可能会比错误的匹配少(在安全接入方面,希望false positive 要尽可能的小,已防止非法进入)。新的评判标准就是在固定一个错误的接受率(false positive rate FPR )阈值下,评判各个算法的性能,如识别率等。