【论文】FaceNet: A Unified Embedding for Face Recognition and Clustering

论文题目:FaceNet: A Unified Embedding for Face Recognition and Clustering

作者:Florian Schroff、Dmitry Kalenichenko、James Philbin

会议/时间:2015

链接:原文链接

论文目标

学习一种直接的从面部图片到欧氏空间向量的映射,用于人脸识别、分类和聚类等工作。欧氏空间向量之间的距离表示图片内人脸的相似度。

相关工作

过去的人脸识别网络中往往通过人脸识别/分类等任务训练,最终将其中的某一层提取出来用作特征向量的生成。缺点在于泛化能力可能不够强,而且往往生成的特征向量长度比较大,效率较低。多数研究中对于较长的特征向量使用PCA简化。

本文思路/解决方案

通过引入triplet loss和online triplet mining method,直接学习得到特征向量,具体是对于深度神经网络的输出,经过L2Norm后得到向量,并使用Triplet loss优化。本文作者使用的两种深度网络分别来自Zeiler&Fergus Model和Szegedy’s Inception Model,将其视作黑箱并训练。

文中假设相同的人输入的数据分布在欧氏空间内的一个超平面,当给定一组triplet(包括锚anchor、正例positive、反例negative,其中anchor和positive是同一类)时,则有$$||f(x_i^a)-f(x_i^p)||^2_2+\alpha < ||f(x_i^a)-f(x_i^n)||^2_2$$,即正例的距离与反例距离的差值不小于给定的边界值$\alpha$。从而得到优化目标为$$triplet\ loss = \sum\limits_{i}^{N}\left[||f(x_i^a)-f(x_i^p)||^2_2+\alpha - ||f(x_i^a)-f(x_i^n)||^2_2 \right]_+$$。

在训练过程中,需要选择合适的数据计算损失函数,如果选择简单的triplet会导致收敛缓慢,训练效果较差。因此在训练过程中,对于每一个给定的数据$$ x_i^a $$,选择距离最大的正例($$ \arg\max_{x_i^p}||f(x_i^a)-f(x_i^p)||^2_2 $$)和距离最小的反例($$ \arg\min||f(x_i^a)-f(x_i^n)||^2 $$),称为hard取样。

在实际的训练过程中,获得满足要求的triplet是不可能的,两种可行的方法包括:offline方式(每次训练N步后计算距离并选择triplet)、online方法(在每一个batch中选择满足要求的数据)。选择后者时需要注意保证每一个batch中都必须含有正例和反例。

当在训练开始时就选择hard采样时,会导致模型进入局部最优,因此提出了semi-hard取样,即选择那些满足$$||f(x_i^a)-f(x_i^p)||^2_2 < ||f(x_i^a)-f(x_i^n)||^2_2$$的反例数据组成triplet进行训练。

总结

  1. 提出了triplet loss,便于直接训练一个图像到向量的映射。
  2. 分析了选择triplet的方式,使用semi-hard策略解决hard策略的缺点。
Lei Yang
Lei Yang
PhD candidate

My research interests include visual speech recognition and semantics segmentation.