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α=1.1时,可以很好的区分不同图片中人物的身份。
损失函数:
其中 xixi 表示输入样本,f(x)f(x)表示通过网络后嵌入空间的向量。 xaixia 表示anchor样本; xpixip表示positive 样本; xnixin表示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)=0f(x)=0)。
为了防止这种现象,选择semi-hard Anchor-Negtive 对,如式(3)所示。称它semi是因为所选Negtive样本到Anchor的距离 比 Positive样本到Anchor的距离大(所以也就没那么hard); 称它hard是因为Anchor-Negtive 比 Anchor-Positive的距离大不了多少。这些负样本在 margin αα 之内。