【FaceNet学习】论文阅读

论文地址:FaceNet:A Unified Embedding for Face Recognition and Clustering

摘要

本文提出FaceNet算法,它直接学习从人脸图像到一个欧几里德空间的映射,这其中的距离则对应于人脸的相似程度。

这种映射关系也可以称之为嵌入(embedding),即将原特征映射到一个新的特征空间,新的特征就被看作是一种嵌入。

在LFW(Labeled Faces in the Wild)数据集上,准确率达99.63%

简介

人脸验证 face verification (is this the same person)
人脸识别 face recognition(who is this person)
人脸聚类 face clustering (find common people among these faces)

只要生成了上文所说的嵌入,那么以上三种任务就会变得简单明了

人脸验证–对两个嵌入间的距离进行阈值判断
人脸识别–K-NN分类问题
人脸聚类–使用k-means等聚类问题

【FaceNet学习】论文阅读_第1张图片
姿态和光照是人脸识别中长期存在的一个问题,上图显示了在不同姿势和光照的组合下,相同的和不同的人脸之间的 FaceNet的输出距离。可见,阈值为1.1可以正确地判断身份是否相同。

模型结构

在这里插入图片描述
可见,网络由批处理输入层和深度CNN组成,然后经过L2正则化后得到人脸嵌入,紧接着的就是三元组损失。

Triplet Loss

三元组(Triplet)即由Anchor(A),Negative(N),Positive(P)组成。
【FaceNet学习】论文阅读_第2张图片

三元组损失(Triplet Loss)
使Anchor(A)和Positive(P)之间的距离最小,
使Anchor(A)和Positive(P)之间的距离最大。

即在学习过程中,A、P的欧式距离逐渐减小,A、N的欧式距离增大,使类间距离大于类内距离。
【FaceNet学习】论文阅读_第3张图片
上式中,第一个二范数表示类内距离,第二个二范数表示类间距离,α是一个常量。学习过程就是使用梯度下降法使Loss不断下降,即对应于类内距离不断下降,类间距离不断提升。

需要注意的是,生成所有可能的三元组会产生许多满足约束的三元组,但是这些三元组对训练没有帮助,收敛速度较慢,所以选择适合训练的三元组是一个非常重要的问题。

三元组的选择

在给定anchor的条件下,我们会选择
hard positive——
在这里插入图片描述
和hard negative——
在这里插入图片描述
但是,选择‘the hardest negatives’会导致局部最小值的问题,甚至会导致模型崩溃。

为了缓解上述问题,我们可以使用下面的做法(semi-hard):
在这里插入图片描述

深度卷积神经网络

Tabel 1. NN1.——Zeiler&Fergus
【FaceNet学习】论文阅读_第4张图片
Tabel 2. NN2.(基于GoogLeNet style Inception models)
【FaceNet学习】论文阅读_第5张图片

实验

1.不同的网络配置下的VAL(validation rate)
【FaceNet学习】论文阅读_第6张图片
2.不同的训练数据集的大小
【FaceNet学习】论文阅读_第7张图片
3.不同嵌入层特征维度下的VAL(validation rate)
【FaceNet学习】论文阅读_第8张图片
4.不同的图像质量下的VAL(validation rate)
【FaceNet学习】论文阅读_第9张图片
5.错误情况
【FaceNet学习】论文阅读_第10张图片
6.人脸聚类
【FaceNet学习】论文阅读_第11张图片

以上图片均出自论文。

学习记录,不足之处还请指出。

你可能感兴趣的:(人脸识别)