人脸识别“FaceNet: A Unified Embedding for Face Recognition and Clustering”

作者认为用于训练的三元组很重要,使用经过筛选的三元组数据训练,在LFW上识别率达到了99.63%。使用深度卷积网学习图像的欧式嵌入。

方法描述:
使用了两个网络Zeiler&Fergus,Inception网络。这个系统的架构如下:
人脸识别“FaceNet: A Unified Embedding for Face Recognition and Clustering”_第1张图片

将三元组损失用于识别,认证和聚类任务。学习一个embedding 函数 f(x) 将图像x映射到特征空间 Rd ,使得同一人脸间的平方距离最小。

1.三元组损失
同一人间的距离小,不同人间的距离大:
这里写图片描述
损失函数是为了最小化:
这里写图片描述

损失函数学习的结果如下:
人脸识别“FaceNet: A Unified Embedding for Face Recognition and Clustering”_第2张图片

这里的关键是选择hard的三元组,让模型快速收敛,原则是,给定 xai ,选择hard正样本,最大化 ||f(xai)f(xpi)||22 ,选择hard负样本,最小化 ||f(xai)f(xni)||22 。这有可能导致误标记或质量较差的图像主宰hard的正样本和负样本。

作者介绍了两个方法避免这种情况,
 Generate triplets offline every n steps, using the most recent network checkpoint and computing the argmin and argmax on a subset of the data.
 Generate triplets online. This can be done by selecting the hard positive/negative exemplars from within a mini-batch.

为了避免选择最难的负样本,选择满足如下条件的semi-hard负样本,这些负样本落在margin α 的内部:
这里写图片描述

深度卷积网
作者使用了两个网络,分别分析FLOPS和网络参数对结果的影响,两个网络一个大一个小,分别用在数据中心和移动手机上,第一个ZF的网络深度为22层,有140百万个参数,每幅图像需要16亿次浮点运算。第二个网络是GoogleNet的Inception模型,参数和浮点运算次数小很多。

FLOPS与准确率之间的关系:
人脸识别“FaceNet: A Unified Embedding for Face Recognition and Clustering”_第3张图片

你可能感兴趣的:(深度学习,人脸识别)