FaceNet论文翻译-程序员宅基地

技术标签: 【paper阅读】  facenet  

《FaceNet: A Unified Embedding for Face Recognition and Clustering》
Abstract

尽管最近在人脸识别领域取得了重大进展[10,14,15,17],但是大规模有效地实施面部验证和识别对当前方法提出了严峻挑战。在本文中,我们提出了一个名为FaceNet的系统,它直接学习从面部图像到紧凑欧几里德空间的映射,其中距离直接对应于面部相似性的度量。生成此空间后,可以使用FaceNet嵌入作为特征向量的标准技术轻松实现面部识别,验证和聚类等任务。

我们的方法使用深度卷积网络训练直接优化嵌入本身,而不是像以前的深度学习方法那样的中间瓶颈层。为了训练,我们使用使用新颖的在线三重挖掘方法生成大致对齐的匹配/非匹配面部补丁的三元组。我们的方法的优势是更具代表性的效率:我们使用每个面只有128个字节来获得最先进的人脸识别性能。

关于广泛使用的野外Labeled Faces(LFW)数据库的数据,我们的系统获得了99.63%的新记录准确率。在YouTube Faces上它收到95.12%。与两个数据集上的最佳公布结果[15]相比,我们的系统将错误率降低了30%。

1. Introduction

在本文中,我们提出了一个统一的面部验证系统(这是同一个人),识别(谁是这个人)和聚类(在这些面孔中寻找普通人)。我们的方法基于使用深度卷积网络学习每个图像的欧几里德嵌入。训练网络使得嵌入空间中的平方L2距离直接对应于面部相似性:同一人的面部具有小距离并且不同人的面部具有大距离。

一旦产生了这种嵌入,则上述任务变得直截了当:面部验证仅涉及对两个嵌入之间的距离进行阈值处理;识别成为k-NN分类问题;并且可以使用诸如k均值或凝聚聚类之类的现有技术来实现聚类。

先前基于深度网络的面部识别方法使用在一组已知面部身份上训练的分类层[15,17],然后采用中间瓶颈层作为用于概括超出训练中使用的身份集合的识别的表示。这种方法的缺点是它的间接性和效率低下:人们不得不希望瓶颈表现能够很好​​地概括为新面孔;并且通过使用瓶颈层,每个面的表示大小通常非常大(1000的维度)。最近的一些工作[15]使用PCA降低了这种维度,但这是一种线性转换,可以在网络的一个层中轻松学习。

与这些方法相比,FaceNet直接将其输出训练为使用基于LMNN的基于三重损耗函数的紧凑128-D嵌入[19]。我们的三元组由两个匹配的面部缩略图和一个不匹配的面部缩略图组成,并且损失旨在将正对与负对分开距离边距。缩略图是面部区域的紧密裁剪,除了缩放和平移之外,没有2D或3D对齐。

选择使用哪些三元组对于实现良好的表现非常重要,并且受课程学习的启发[1],我们提出了一种新颖的在线负样本挖掘策略,确保在网络训练时不断增加三元组的难度。为了提高聚类精度,我们还探索了难正例挖掘技术,该技术鼓励球形聚类用于嵌入单个人。

作为我们的方法可以处理的令人难以置信的可变性的说明,请参见图1。显示了来自PIE [13]的图像对,这些图像对以前被认为对于面部验证系统来说非常困难。

图1.照明和姿势不变性。姿势和照明是人脸识别中长期存在的问题。该图显示了FaceNet在不同姿势和照明组合中相同和不同人的面对之间的输出距离。距离0.0表示面相同,4.0表示相反的光谱,两个不同的身份。您可以看到1.1的阈值会正确地对每一对进行分类。

本文其余部分的概述如下:在第2节中,我们回顾了该领域的文献; 第3.1节定义了三重态损失,第3.2节描述了我们新颖的三重态选择和训练程序; 在3.3节中,我们描述了所使用的模型架构。最后在第4节和第5节中,我们提供了嵌入嵌入的一些定量结果,并定性地探索了一些聚类结果。

2. Related Work

与其他最近采用深度网络的工作[15,17]类似,我们的方法是一种纯粹的数据驱动方法,它直接从面部像素中学习它的表示。我们使用标记面的大型数据集来获得姿势,光照和其他变化条件的适当不变性,而不是使用工程特征。

在本文中,我们探讨了最近在计算机视觉社区中取得巨大成功的两种不同的深度网络架构。两者都是深度卷积网络[8,11]。第一种架构基于Zeiler&Fergus [22]模型,该模型由多个交错的卷积层,非线性激活,局部响应归一化和最大汇聚层组成。我们另外添加了几个受[9]工作启发的1×1×d卷积层。第二种架构基于Szegedy等人的Inception模型。最近被用作ImageNet 2014的获胜方法[16]。这些网络使用混合层,并行运行多个不同的卷积和池化层,并连接它们的响应。我们发现这些模型可以将参数数量减少多达20倍,并且有可能减少可比性能所需的FLOPS数量。

有大量的面部验证和识别工作。审查它超出了本文的范围,因此我们将仅简要讨论最相关的最新工作。

[15,17,23]的工作都采用了多阶段的复杂系统,它将深度卷积网络的输出与PCA相结合,用于降维,SVM用于分类。

Zhenyao等。 [23]采用深度网络将面部“扭曲”成规范的正面视图,然后学习CNN,将每个面部分类为属于已知身份。对于人脸验证,使用网络输出上的PCA和一组SVM。

Taigman等[17]提出了一种多阶段方法,将面部与一般的三维形状模型对齐。训练多级网络以执行超过四千个身份的面部识别任务。作者还试验了一个所谓的连体网络(Siamese network),他们直接优化了两个面部特征之间的L1距离。它们在LFW上的最佳性能(97.35%)源于使用不同比对和颜色通道的三个网络的集合。使用非线性SVM组合这些网络的预测距离(基于α2内核的非线性SVM预测)。

Sun等人[14,15]提出了一种紧凑且因此相对简易的计算网络。他们使用这些网络中的25个网络,每个网络都在不同的面部补丁上运行。对于他们在LFW上的最终表现(99.47%[15]),作者组合了50个响应(常规和翻转)。采用PCA和联合贝叶斯模型[2],它们有效地对应于嵌入空间中的线性变换。他们的方法不需要明确的2D / 3D对齐。通过使用分类和验证丢失的组合来训练网络。验证损失类似于我们采用的三元组损失[12,19],因为它最小化了相同身份的面部之间的L2距离,并在不同身份的面部距离之间实施了边界。主要区别在于仅比较成对图像,而三重态损失促使相对距离约束。

Wang等人研究了与此处使用的类似的损失。 [18]用于通过语义和视觉相似性对图像进行排序。

3. Method

FaceNet使用深度卷积网络。我们讨论了两种不同的核心架构:Zeiler&Fergus [22]式网络和最近的Inception [16]型网络。这些网络的细节在3.3节中描述。

鉴于模型细节,并将其视为黑盒子(见图2),我们方法中最重要的部分在于整个系统的端到端学习。为此,我们采用三元组损失,直接反映了我们想要在面部验证,识别和聚类中实现的目标。也就是说,我们努力嵌入f(x),从图像x到特征空间 R d \mathbb{R}^{d} Rd,使得相同身份的所有面之间的平方距离(与成像条件无关)很小,而来自一对不同身份的面部图像之间的平方距离很大。

图2.模型结构。我们的网络由批量输入层和深度CNN组成,然后进行L2归一化,从而实现人脸嵌入。接下来是训练期间的三联体损失。

虽然我们没有直接比较其他损失,例如使用成对的正面和负面的那个,如[14] Eq(2)。中所使用的那样。我们认为三联体损失更适合于面部验证。动机是[14]的损失鼓励一个身份的所有面孔被“投射”到一个嵌入空间中的单个点上。然而,三重态损失试图在从一个人到所有其他面部的每对面部之间强制执行边缘。这允许一个身份的面部生活在歧管上,同时仍然强制距离并因此可以与其他身份相区别。

以下部分描述了这种三重态损失以及如何有效地大规模学习它。

3.1. Triplet Loss

嵌入由f(x)∈Rd表示。它将图像x嵌入到d维欧几里德空间中。另外,我们将这种嵌入限制在d维超球面上,即 ∥ f ( x ) ∥ 2 = 1 \|f(x)\|_{2}=1 f(x)2=1. 这种损失在[19]中在最近邻分类的背景下被激发。在这里,我们希望确保特定人的图像 x i a x_{i}^{a} xia(锚)比任何其他人的任何图像 x i n x_{i}^{n} xin(负)更接近同一人的所有其他图像 x 1 p x_{1}^{p} x1p(正)。这在图3中可视化。

图3.三联体损失最小化锚和正例之间的距离,两者具有相同的身份,并最大化锚和不同身份的负例之间的距离。

因此我们想要:
∥ x 1 a − x i p ∥ 2 2 + α < ∥ x i a − x i n ∥ 2 2 , ∀ ( x t a , x i p

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/PPLLO_o/article/details/90707295

智能推荐

三、购物车案例_17(笔记)_购物车案例请求数据地址-程序员宅基地

文章浏览阅读332次。购物车_购物车案例请求数据地址

在unity中DOTween 使用方法_tween number-程序员宅基地

文章浏览阅读603次。DOTween 使用方法_tween number

DSP之TMS320F28335学习总结与笔记(二)————ADC模块_dsp2833x_adc.c-程序员宅基地

文章浏览阅读1.2w次,点赞13次,收藏138次。F28335 ADC模块ADC转换模块A/D转换器(ADC)将模拟量转换为数字量通常要经过四个步骤:采样、保持、量化和编码。采样:将一个时间上连续变化的模拟量转化为时间上离散变化的模拟量。保持:将采样结果存储起来,直到下次采样,这个过程称作保持。一般,采样器和保持电路一起总称为采样保持电路。量化:将采样电平归化为与之接近的离散数字电平,这个过程称作量化。ADC关键指标分辨率:指数字量变化一个最小量时模拟信号的变化量,定义为满刻度与2^n的比值。分辨率又称为精度,通常以数字信号的位_dsp2833x_adc.c

V-rep学习笔记:机器人路径规划2-程序员宅基地

文章浏览阅读1.8k次。   路径规划问题是机器人学研究的一个重要领域,它是指给定操作环境以及起始和目标的位置姿态,要求选择一条从起始点到目标点的路径,使运动物体(移动机器人或机械臂)能安全、无碰撞地通过所有的障碍物而达到目标位置。路径规划从研究对象上可分为关节式机械臂和移动机器人。一般来讲前者具有更多的自由度,而后者的作业范围要更大一些,这两类对象具有不同的特点,因此在研究方法上略有不同。在V-rep学习笔记:机器人路..._collision pairs

问题:U8的存货同步到本地时,报“数据库可能存在相同的编码”_数据库可能已经存在相同的编码等-程序员宅基地

文章浏览阅读1.5k次。1.环境:U8与本地某程序。跨服务器、跨数据库。2.问题:U8的存货同步到本地时,报“数据库可能存在相同的编码”。3.原因:在确认了U8程序正常、本地程序正常、U8数据库正常、本地数据库正常、链接服务器正常、触发器本身正常后,回到了问题的本身:为何原来的同步执行正常,但是现在的存货保存却异常,怀疑是最新的存货有问题。所以先停了触发器,然后用U8做了一个存货,正常保存后。启用触发器,直接用刚_数据库可能已经存在相同的编码等

EOS与ESD的区别_eos和esd的区别-程序员宅基地

文章浏览阅读7.9k次。摘要:什么是EOS?EOS与ESD的区别是什么?EOS为ELectrical Over Stress的缩写,指所有的过度电性应力。当外界电流或电压超过器件的最大规范条件时,器件性能会减弱甚至损坏。一、什么是EOS?EOS为ELectrical Over Stress的缩写,指所有的过度电性应力。当外界电流或电压超过器件的最大规范条件时,器件性能会减弱甚至损坏。EOS通常产生于:1.电源(AC/DC) 干扰、电源杂讯和过电压。2.由于测试程序切换(热切换)导致的瞬变电流..._eos和esd的区别

随便推点

https://www.byhy.net/tut/webdev/django/01/-程序员宅基地

文章浏览阅读944次。https://www.byhy.net/tut/webdev/django/01/_byhy.net

vue玩转移动端H5微信支付和支付宝支付_移动端支付宝微信支付vue项目怎么写-程序员宅基地

文章浏览阅读5.8k次,点赞13次,收藏57次。业务场景介绍:H5移动端支持微信支付 [ 微信支付分为微信内支付(JSAPI支付官方API)和微信外支付(H5支付官方API)] && 支付宝支付 [手机网站支付转 APP 支付 官方API ]订单生成逻辑:前端请求后端提交订单,后端去和微信或者支付宝对接生成订单(后续支付都是这个逻辑进行的对接)一、移动端微信支付,vue中如何玩?在移动端微信支付分为微信内支付和微信外支付。1.在订单组件中选择支付方式之后在支付页面先去判断是否是在微信内://判断是否微信 is__移动端支付宝微信支付vue项目怎么写

深度学习AI编译器-TVM简介_tvm编译器-程序员宅基地

文章浏览阅读2k次,点赞5次,收藏9次。深度学习编译器主要为解决不同框架下训练的模型部署到指定的某些设备上时所遇到的一系列复杂的问题,即将各种深度学习训练框架的模型部署到各种硬件所面临的问题;_tvm编译器

如何检测新移动硬盘--HD Tune Pro硬盘工具_怎么检测移动硬盘是不是新的-程序员宅基地

文章浏览阅读2.8w次,点赞7次,收藏22次。要想检测移动硬盘的读写速度和是否有坏道,可使用HD Tune Pro硬盘工具软件。除了硬盘传输速率、健康状况、温度、随机存取、磁盘错误扫描、文件基准检测等常见功能外,该软件还能检测硬盘的固件版本、序列号、容量、缓存以及当前的Ultra DMA模式等。此外,目前市场上主流的2.5英寸320GB移动硬盘的数据读取速度大多在30MB/s左右;写入速度稍微慢一点,一般在25MB/s左右。..._怎么检测移动硬盘是不是新的

POJ - 2096 Collecting Bugs_poj collecting bugs-程序员宅基地

文章浏览阅读184次。Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other material stuff, he collects software bugs. When Ivan gets a new program, he classifies all possible bugs into n ..._poj collecting bugs

ESP32单片机入门篇-程序员宅基地

文章浏览阅读8.8k次,点赞11次,收藏88次。ESP32单片机是一款基于改进的Tensilica LX6微架构的32位双核处理器 SoC,配备2.4 GHz Wi-Fi和蓝牙功能。由于其低功耗、高速度和广泛的应用适用性而被广泛应用。本文将介绍ESP32单片机的基本概念,开发环境,开发语言和一些注意事项,并提供一些简单的代码例程,以点亮LED灯和控制继电器为例。_esp32

推荐文章

热门文章

相关标签