深度学习_人脸识别_FaceNet

论文地址

FaceNet解决的问题

虽然传统人脸识别技术发展很快,但是人脸验证和人脸识别在自然条件下应用依然存在很多困难。论文中作者提出了一个新的人脸识别模型:FaceNet。这个模型可以直接向人脸图片映射到欧几里得空间,空间距离的长度代表了人脸图像的相似性。只要映射空间生成,以FaceNet嵌入作为特征向量,那么人脸识别,验证和聚类等任务就可以轻松完成。

FaceNet的创新点

  1. FaceNet是一个通用系统,可以用于人脸验证(是否是同一个人?),人脸识别(这个人是谁?)和聚类(寻找类似的人)。

  2. FaceNet采用的方法是通过卷积神经网络学习将图像映射到欧几里得空间,比起之前的方法更加简单,只需要对图片进行很少量的处理(只需要裁剪脸部区域,而不需要额外预处理,比如3d对齐等)。并且空间距离直接和图片相似度相关:同一个人的不同图像在空间距离很小,不同人的图像在空间中有较大的距离。

  3. 当前存在的基于深度神经网络的人脸识别模型使用了分类层(classification layer):中间层为人脸图像的向量映射,然后以分类层作为输出层。这类方法的弊端是不直接和效率低。为此论文中提出了三元组损失用于对FaceNet区分正负类。

  4. 更好的表现效率:论文实现了当时最先进的人脸识别性能,每个人脸仅使用128维向量。

  5. FaceNet在LFW数据集上,准确率为0.9963,在YouTube Faces DB数据集上,准确率为0.9512。

FaceNet的框架流程

深度学习_人脸识别_FaceNet_第1张图片

FaceNet网络backbone

  1. Zeiler&Fergus研究中使用的神经网络。
  2. Inception网络。

模型结构的末端使用triplet loss来直接进行分类。

三元组损失(triplet loss)

深度学习_人脸识别_FaceNet_第2张图片

深度学习_人脸识别_FaceNet_第3张图片

深度学习_人脸识别_FaceNet_第4张图片

其中,a为positive/negative的边界。

triplets筛选:

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

在这里插入图片描述

Facenet训练

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

总共实验了两类模型,参数如表1和表2所示。

深度学习_人脸识别_FaceNet_第5张图片

深度学习_人脸识别_FaceNet_第6张图片

你可能感兴趣的:(#,人脸检测)