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.


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

这里写图片描述

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

这里写图片描述

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

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

这里写图片描述

hard positive定义:

这里写图片描述

hard negtive定义:

这里写图片描述

上面的α表示margin ,

这里写图片描述

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

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


损失函数:

这里写图片描述

其中 xi 表示输入样本,f(x)表示通过网络后嵌入空间的向量。 xia 表示anchor样本; xip表示positive 样本; xin表示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)。

这里写图片描述

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

展开阅读全文

没有更多推荐了,返回首页