注:本文选自人脸图像资深工程师言有三出版的新书《深度学习之人脸图像处理:核心算法与案例实战》(机械工业出版社出版)的6.2节,略有改动。经授权刊登于此。
人脸识别本质上是一个人脸验证和匹配问题,其中最重要的就是框架和优化目标,本节集中讨论这两个主要问题。
度量学习
度量学习即Metrix Learning,这一类方法以Siamese网络[2]、Triplet网络[3]为代表。
1.Siamese网络与Contrastive loss
Siamese网络结构如图6.2所示,输入两张图分别进入两个网络提取特征,这两个网络通常共享权重,使用的损失函数是Contrastive loss。
图6.2 Siamese网络结构
Contrastive loss的表达式如下:
式中,d就是两个特征向量的距离;y是标签,如果两张输入图匹配(即是同一个人脸),y就是1,否则y就是0。
可以看出,如果输入匹配的两幅图,则d越小损失越小;如果不匹配,则要在margin参数的控制下,d越大损失越小,即实现了同时让类内距离尽可能小、类间距离尽可能大的效果。
2.Triplet网络与Triplet loss及其改进
Triplet网络相比Siamese网络增加了一幅输入图像,它输入3幅图像,包括一个Anchor样本,一个正样本,一个负样本,使用Triplet loss进行优化,结构如图6.3所示。
输入3个样本可以是一个正例+两个负例,或者一个负例+两个正例,Triplet loss的目标是要让属于同一个人的人脸在特征空间中尽可能地“近”,而与其他人脸尽可能地“远”。如果输入是两个正样本和一个负样本,则负