FaceNet

FaceNet: A Unified Embedding for Face Recognition and Clustering

Paper:

Schroff F, Kalenichenko D, Philbin J. Facenet: A unified embedding for face recognition and clustering[C]//CVPR. 2015: 815-823.


概述:论文提出了一个端到端用于人脸识别的网络

FaceNet_第1张图片

Fig. 2 中L2表示L2 normalization ,之后是嵌入空间(将原向量映射到这个空间,向量的维数可能会发生变化)。损失函数使用Triplet Loss。

FaceNet_第2张图片

Fig 3. 表示: 训练的目的是训练网络,使得嵌入空间下Anchor与Postive的距离 小于Anchor与Negtive间的距离。其中Postive与Anchor样本中的人物身份相同,Negtive与Anchor样本中的人物身份不同。

目标是训练成式(1)所示:

这里写图片描述

hard positive定义:

这里写图片描述

hard negtive定义:

这里写图片描述

上面的 α α 表示margin ,

FaceNet_第3张图片

如果两幅图片在嵌入空间的距离< α α ,那么判定为同一个人,否则不同。

α=1.1 α = 1.1 时,可以很好的区分不同图片中人物的身份。


损失函数:

FaceNet_第4张图片

其中 xi x i 表示输入样本, f(x) f ( x ) 表示通过网络后嵌入空间的向量。 xai x i a 表示anchor样本; xpi x i p 表示positive 样本; xni x i n 表示negtive 样本。


三元组的选择:

正确的三元组选择对于快速收敛至关重要。

文中考虑的是在线选择方法。

首先对于所有样本,计算hardest postive 和hardest postitive是不可能的,这是由于样本数目太大。采取的办法是对于每一个mini-batch中的样本再来考虑三元组的选择。

为了使得Anchor-Positive距离有意义,首先必须保证每个mini-batch中任何一个身份的样本必须到达一定数量(否则没有Anchor-Positive距离)。

文中的选择是:40 faces per identity in a mini-batch.

对于每一个mini-batch,不是选择hardest Anchor-Positive 对,而是将所有Anchor-Positive对用来训练。文中说在实际过程中发现,这样做的效果比选用hardest Anchor-Positive对更加稳定而且在训练的初始阶段收敛更快。

实际过程中,选择hardest Anchor-Negtive 对,会导致网络陷入局部最优(特别地,会导致模式崩溃,比如 f(x)=0 f ( x ) = 0 )。

这里写图片描述

为了防止这种现象,选择semi-hard Anchor-Negtive 对,如式(3)所示。称它semi是因为所选Negtive样本到Anchor的距离 比 Positive样本到Anchor的距离大(所以也就没那么hard); 称它hard是因为Anchor-Negtive 比 Anchor-Positive的距离大不了多少。这些负样本在 margin α α 之内。

你可能感兴趣的:(深度学习,人脸)