论文笔记 | FaceNet: A Unified Embedding for Face Recognition and Clustering

出处:CVPR 2015
论文:https://arxiv.org/abs/1503.03832
代码:https://github.com/davidsandberg/facenet

摘要:
  在本文中,提出了FaceNet,它直接学习从 face images 到 compact Euclidean 欧几里德空间的映射,其中距离直接对应于人脸相似度。一旦生成了这个空间,使用FaceNet嵌入作为特征向量的标准技术可以轻松实现人脸识别,验证和聚类等任务。
  该方法使用深度卷积网络直接得到embedding,没有用传统的bottleneck层。为了训练,使用 novel online triplet mining 方法生成的 roughly aligned matching / non-matching人脸图像的三元组。还介绍了 harmonic embeddings 和 harmonic triplet loss 的概念,它描述了不同版本的面嵌入(由不同的网络产生),它们彼此兼容并允许彼此之间的直接比较。

1. 介绍

verification:is this the same person (thresholding)
recognition: who is this person (K-NN classification)
clustering : find common people among these faces (k-means or agglomerative clustering)
本文直接使用 squared L2 距离来判断脸部的similarity。
 
下图展示的是人脸验证,得到2张人脸的相似度,小于阈值1.1即判定为同一个人。
论文笔记 | FaceNet: A Unified Embedding for Face Recognition and Clustering

2. 相关工作

文章主要完成了FaceNet这样一个用于学习人脸图像特征的模型,主要有以下几点:

  • 直接用CNN网络进行端到端的训练;
  • 使用了triplet loss,并提出了比较好的triplet 样本挖掘方法;
  • 仅仅用128字节的大小表示人脸就达到state-of-art 水平

3.方法

3.1 模型结构

论文笔记 | FaceNet: A Unified Embedding for Face Recognition and Clustering
如上图所示即为模型的整体结构。
  • 假设我们先不管中间DEEP ARCHITECTURE的具体结构,还是将其作为一个黑盒子f(x)。
  • 输入人脸图像数据x,通过深度CNN之后就会得到一个f(x),再对其做L2归一化(L2范数归一化就是特征向量中每个元素均除以向量的L2范数)之后就可以得到对这张人脸的表示embedding。
  • 然后用triplet loss(anchor, positive, negative)方法对这整个模型进行端到端的训练。

3.2 Triplet Loss

论文笔记 | FaceNet: A Unified Embedding for Face Recognition and Clustering
我们用(Xa,Xp,Xn)来表示一组数据,对于任意一组数据,我们都希望(anchor,positive)之间的距离+margin < (anchor,negative)之间的距离;

论文笔记 | FaceNet: A Unified Embedding for Face Recognition and Clustering
根据上面的式(1), (2),我们可以得到如下的损失函数:
论文笔记 | FaceNet: A Unified Embedding for Face Recognition and Clustering
生成所有可能的三元组将导致许多容易满足的三元组(即满足方程(1)中的约束)。 这些三元组不会对训练有所贡献,导致收敛速度变慢,因此选择活跃的硬三元组至关重要。

3.3 Triplet Selection

hard triplet 指的就是那些比较难判断的sample,体现在anchor与正样本的距离较大,anchor与负样本的距离较小;能够训练网络模型识别的难度,所以用数学表示,即我们希望能够找到这样的postive与negative:
       论文笔记 | FaceNet: A Unified Embedding for Face Recognition and Clustering          论文笔记 | FaceNet: A Unified Embedding for Face Recognition and Clustering
对于每一个anchor,都想选择一个hard triplet是有难处的;首先在所有的训练集合内是选择最难的positive与negative是不现实的,需要耗费大量的时间与计算;其次这样选出来的很可能是错误标记或者是不良成像的图像,反而会导致training的过程并不好;所以可以采用两种策略去解决这个问题:

  • 每n步线下生成:用最近一次训练好的网络在训练集的自己种选择argmax的positive以及argmin的negative
  • 线上生成:在mini-batch中选择hard positive/nagative

在本文中,作者采用线上生成策略。先保证每个minibatch中每个identity都有40张positive人脸图像,再随机将neagtive faces放到minibatch中。所以共有 PK 个三元组triplets

论文笔记 | FaceNet: A Unified Embedding for Face Recognition and Clustering