当前位置:回答三>生活百科>谷歌人脸识别系统FaceNet解析

谷歌人脸识别系统FaceNet解析

2024-08-22 01:16:22 编辑:join 浏览量:548

谷歌人脸识别系统FaceNet解析

论文笔记:

简介:

近年来,人脸识别技术取得了飞速的进展,但是人脸验证和识别在自然条件中应用仍然存在困难。本文中,作者开发了一个新的人脸识别系统:FaceNet,可以直接将人脸图像映射到欧几里得空间,空间距离的长度代表了人脸图像的相似性。只要该映射空间生成,人脸识别,验证和聚类等任务就可以轻松完成。文章的方法是基于深度卷积神经网络。FaceNet在LFW数据集上,准确率为0.9963,在YouTube Faces DB数据集上,准确率为0.9512。

1,前言

FaceNet是一个通用的系统,可以用于人脸验证(是否是同一人?),识别(这个人是谁?)和聚类(寻找类似的人?)。FaceNet采用的方法是通过卷积神经网络学习将图像映射到欧几里得空间。空间距离直接和图片相似度相关:同一个人的不同图像在空间距离很小,不同人的图像在空间中有较大的距离。只要该映射确定下来,相关的人脸识别任务就变得很简单。

当前存在的基于深度神经网络的人脸识别模型使用了分类层(classification layer):中间层为人脸图像的向量映射,然后以分类层作为输出层。这类方法的弊端是不直接和效率低。

与当前方法不同,FaceNet直接使用基于triplets的LMNN(最大边界近邻分类)的loss函数训练神经网络,网络直接输出为128维度的向量空间。我们选取的triplets(三联子)包含两个匹配脸部缩略图和一个非匹配的脸部缩略图,loss函数目标是通过距离边界区分正负类,如图1-1所示。

图1-1 模型结构

脸部缩略图为紧密裁剪的脸部区域,没有使用2d,3d对齐以及放大转换等预处理。

本文中,作者探索了两类深度卷积神经网络。第一类为

,我们在网络后面加了多个1*1*d卷积层;第二类为

。模型结构的末端使用triplet loss来直接分类。triplet loss 的启发是传统loss函数趋向于将有一类特征的人脸图像映射到同一个空间。而triplet loss尝试将一个个体的人脸图像和其它人脸图像分开。下文包含以下内容:

三联子(triplets)loss

triplets筛选方法

模型结构描述

实验结果

评论

2,三联子(triplets)loss

模型的目的是将人脸图像X embedding入 d 维度的欧几里得空间

。在该向量空间内,我们希望保证单个个体的图像

和该个体的其它图像

距离近,与其它个体的图像

距离远。如图5-1所示:

图2-1 triplet loss示意图

其中,

为positive/negtive的边界。

3, triplets筛选

triplets 的选择对模型的收敛非常重要。如公式1所示,对于

,我们我们需要选择同一个体的不同图片

,使

;同时,还需要选择不同个体的图片

,使得

。在实际训练中,跨越所有训练样本来计算argmin和argmax是不现实的,还会由于错误标签图像导致训练收敛困难。实际训练中,有两种方法来进行筛选:一,每隔n步,计算子集的argmin和argmax。

二,在线生成triplets,即在每个mini-batch中进行筛选positive/negative样本。

本文中,我们采用在线生成triplets的方法。我们选择了大样本的mini-batch(1800样本/batch)来增加每个batch的样本数量。每个mini-batch中,我们对单个个体选择40张人脸图片作为正样本,随机筛选其它人脸图片作为负样本。负样本选择不当也可能导致训练过早进入局部最小。为了避免,我们采用如下公式来帮助筛选负样本:

4, 深度卷积神经网络

采用adagrad优化器,使用随机梯度下降法训练CNN模型。在cpu集群上训练了1000-2000小时。边界值

设定为0.2。总共实验了两类模型,参数如表4-1和表4-2所示。

表4-1 CNN模型1

表4-2CNN模型2

5, 实验结果

作者采用了约8million个个体的将近100million-200million张人脸缩略图。人脸缩略图通过脸部检测器紧密裁剪生成。最后,在四类数据集上评价零FaceNet:

hold-out 测试集:从训练集中分出100million图像作为测试集。

个人照片:总共包括12k个人照片。

学术数据集:我们采用了LFW数据集和Youtube Faces DB。

5.1 计算量与准确率权衡

在测试中,随着神经网络深度增加,计算量增加,准确率也增加,如表5-1和图5-1所示。

表5-1 深度神经网络结构与VAL

图5-1 计算量(FLOPS)与准确率关系

5.2 CNN模型结构对loss的影响

作者考察了不同CNN模型对结果的影响,如图5-2所示。

图5-2 网络结构对VAL的影响

5.3 图像质量对结果的影响

模型对图像质量(像素值)不敏感,即使80*80像素的图片生成的结果也可以接受,如表5-2所示。

表5-2 图像质量(像素值)对结果的影响

5.4 Embedding维度对结果的影响

作者测试了不同的embedding维度,结果如表5-3所示,发现128维度是最为合适的。

表5-3 不同输出维度对结果的影响

5.5 训练数据量对结果的影响

随着训练数据量的增加,准确率也随之增加,如表5-4所示。

表5-4 训练数据量与VAL

5.6 评价结果

FaceNet在LFW数据集上取得了99.63%

0.09的准确率;在Youtube Faces DB数据集上获得了95.12%

0.39的结果。在个人照片的数据集上,对单个个体进行embeding后聚类测试,结果如图5-3所示。

图5-3 对单个个体的不同照片进行聚类的结果

6, 评论

FaceNet是google的工作,工作量非常大,结果也很好。FaceNet是一种直接将人脸图像embedding进入欧几里得空间的方法。该模型的优点是只需要对图片进行很少量的处理(只需要裁剪脸部区域,而不需要额外预处理,比如3d对齐等),即可作为模型输入。同时,该模型在数据集上准确率非常高。未来的工作可以有几个方向:

一,分析错误的样本,进一步提高识别精度,特别是增加模型在现实场景中的识别精度。

二,以该模型为基础,将其用于现实应用开发中。(预告:后续文章中,我将对使用FaceNet进行人脸识别的项目源码进行解析,敬请关注)

三,减少模型大小,减少对cpu计算量的消耗,以及减少训练时间(作者在cpu集群上需要1000-2000小时的训练。)

标签:人脸识别,FaceNet,谷歌

版权声明:文章由 回答三 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.huidasan.com/life/225116.html
热门文章