论文链接:https://arxiv.org/pdf/1503.03832.pdf
引用:
@article{Schroff2015FaceNet,
title={FaceNet: A Unified Embedding for Face Recognition and Clustering},
author={Schroff, Florian and Kalenichenko, Dmitry and Philbin, James},
year={2015},
}
创新
- 从人脸图像到紧凑的欧几里德空间的映射,距离直接对应于面部相似性的度量。
- 使用triplet loss三元损失函数优化嵌入本身,人脸表达仅需128个字节
- LFW 99.63% YouRube 95.12%
简介
- 学习人脸图像的欧几里得嵌入表达,两个人脸图像的欧几里得嵌入表达L2范式平方表示人脸相似度,L2距离越小,越相似
- 获取嵌入表达之后,人脸验证转变为阈值选取问题,人脸识别是KNN分类,人脸聚类可以使用经典的KMeans等方法。
-
传统方法:瓶颈层表达人脸,无法保证泛化性能,且人脸表征维度大
- FaceNet方法:使用基于LMNN(Large margin nearest neighbor)的三元损失直接训练得到紧凑的128维嵌入表达。使用两张匹配的人脸小图和一张不匹配人脸,损失通过距离间隔尽量将正例对和负例分开。其中,小图是人脸区域的紧密裁剪,不需要对齐,只有缩放和平移。
- 三元组选取是保证高性能的关键。本文受curriculum learning启发,提出了一种新的在线负样本挖掘策略,在训练时不断增加三元组的难度。为了提高聚类精度,本文还研究了正样本难例挖掘技术,鼓励单人嵌入粒度下的球形聚类
方法
相关工作:
对图像进行一些2D或3D变换预处理,深度神经网络模型特征表达,利用PCA降维,使用SVM分类等
Siamese模型进行距离度量,SVM分类
多模型融合,三元损失函数使用
本文方法:
框架:基于DNN(ZF或inception),实现端到端学习系统。
具体做法:三元损失,学习从图像到特征空间
的嵌入表达
,该特征空间中的人脸特征平方距离越小越相似
说明:没有进行三元损失的对比试验,但是分析了为什么三元损失更加适合人脸验证。主要可以概括为,使用二元对仅仅是将相同的人脸尽量映射到特征空间中的同一点,即只考虑了类内间隔;而三元损失,不仅仅是将同一人脸映射到一个流形上,并且区分不同人脸,即同时考虑类内间隔和类间间隔。
一、三元损失
嵌入表达表示为,是将输入图像
嵌入到D维欧式空间,并且我们限制
在超球上。该损失函数基于LMNN算法,保证图像预所有正例图像的距离比与所有负例图像更近。
,
最小化损失函数表达式:
其中,是正负例之间的间隔,
表示三元组数据集。
二、三元组选择
1、分析
如果我们将所有的三元组都作为训练数据,则存在大量的易分数据,这里可以参考一下SVM支持向量的思想,远离分界线的样本对模型的贡献小,还会导致收敛慢。因此,选择难例三元组是关键的步骤之一。
正负例选择的规则是,与anchor图像距离最大的正例,与其距离最小的负例,即
,
但是,上述规则在数据集中的应用存在难点:在整个数据集上计算一遍不可行,且训练效果由于误分类和图像质量可能较差。因此需要进行设置:子数据集上线下每隔n步采样,线上在mini-batch上选择。
2、具体实现
线上:(1) 取大量的mini-batch,mini-batch内部计算argmin和argmax。(2) 如一个mini-batch中同一本体40张图,随机采样负例样本加入每个minibatch。(3) 每个mini-batch中选择所有正样例对和难负例(all anchor-positive pairs and hard negitives)。说明:mini-batch中所有正样例对比选择难正样例对更鲁棒,训练开始阶段收敛速度较快。
获取难负例的问题:如果选择最难的负例,会收敛到极差的局部极小值点,导致模型崩溃。因此我们采用半-难例(semi-hard)即比正样例到anchor的距离更远但是仍然难区分(在距离内)。
总结一下三元组选择的原则:第一点就是利于收敛,第二点是更高效。
三、DNN
训练与参数:lr=0.05, =0.2,Train-time=1000-2000h,SGD,AdaGrad,ReLU
策略一:ZF-net+1*1*d,140 million paras,1.6 billion FLOPS
策略二:GoogleNet Inception models,6.6-7.5M paras,500M-1.6B FLOPS
model | input | paras | FLOPS |
NSS1 | 165*165 | 26M | 220M |
NSS2 | 140*116 | 4.2M | 20M |
NN1 | 220*220 | 145M | 1.6B |
NN2 | 224*224 | 7.5M | 1.6B |
NN3 | 160*160 | 大于NN4 | |
NN4 | 96*96 | 285M |
数据
数据集:LFW,YouTube Faces
正例对,负例对
,TA(true accepts), FA(false accepts)
,
实验
根据实际需求选择合适的网络,参考parameter number,FLOPS,VAL值选择。
图像质量、训练集大小、输入数据尺寸的影响详见表格和原文分析,不做赘述。