专栏首页磐创AI技术团队的专栏深度学习之视频人脸识别系列三:人脸表征

深度学习之视频人脸识别系列三:人脸表征

作者 | 东田应子

编辑 | 安可

出品 | 磐创AI技术团队

【磐创AI导读】本文是深度学习之视频人脸识别系列的第三篇文章,介绍人脸表征相关算法和论文综述。在本系列第一篇文章里我们介绍了人脸识别领域的一些基本概念,分析了深度学习在人脸识别的基本流程,并总结了近年来科研领域的研究进展,最后分析了静态数据与视频动态数据在人脸识别技术上的差异;在第二篇文章中介绍了人脸检测与对齐的相关算法。欢迎大家关注我们的公众号:磐创AI

一、人脸表征

把人脸图像通过神经网络,得到一个特定维数的特征向量,该向量可以很好地表征人脸数据,使得不同人脸的两个特征向量距离尽可能大,同一张人脸的两个特征向量尽可能小,这样就可以通过特征向量来进行人脸识别。

二、论文综述

1. DeepFace:

2014年论文DeepFace: Closing the Gap toHuman-Level Performance in Face Verification提出了DeepFace算法,第一个真正将大数据和深度学习神经网络结合应用于人脸识别与验证。在该人脸识别模型中分为四个阶段:人脸检测 => 人脸对齐 => 人脸表征 => 人脸分类,在LFW数据集中可以达到97.00%的准确率。

(1)人脸检测与对齐:该模型使用3D模型来将人脸对齐,该方法过于繁琐,在实际应用中很少使用,经过3D对齐以后,形成的图像都是152×152的图像,具体步骤如下图。

分为如下几步:

a. 人脸检测,使用6个基点 b. 二维剪切,将人脸部分裁剪出来 c. 67个基点,然后Delaunay三角化,在轮廓处添加三角形来避免不连续 d. 将三角化后的人脸转换成3D形状 e. 三角化后的人脸变为有深度的3D三角网 f. 将三角网做偏转,使人脸的正面朝前。 g. 最后放正的人脸 h. 一个新角度的人脸(在论文中没有用到)

(2)人脸表征:人脸表征使用了5个卷积层和1个最大池化层、1个全连接层,如下图所示。前三层的目的在于提取低层次的特征,为了网络保留更多图像信息只使用了一层池化层;后面三层都是使用参数不共享的卷积核,因为主要是因为人脸不同的区域的特征是不一样的,具有很大的区分性,比如鼻子和眼睛所表示的特征是不一样的,但是使用参数不共享的卷积核也增加了模型计算量以及需要更多的训练数据。最后输出的4096维向量进行L2归一化。

a. Conv:32个11×11×3的卷积核

b. max-pooling: 3×3, stride=2

c. Conv: 16个9×9的卷积核

d. Local-Conv: 16个9×9的卷积核,Local的意思是卷积核的参数不共享

e. Local-Conv: 16个7×7的卷积核,参数不共享

f. Local-Conv: 16个5×5的卷积核,参数不共享

g. Fully-connected: 4096维

h. Softmax: 4030维

(3)分类:论文介绍了两种方法进行分类,加权的卡方距离和使用Siamese网络结构,设f1和f2为特征向量,上一个步骤的输出,则有:

①加权卡方距离:计算公式如下,加权参数由线性SVM计算得到:

②Siamese网络:网络结构是成对进行训练,得到的特征表示再使用如下公式进行计算距离:

2. DeepID1:

DeepID1 是2014年Deep LearningFace Representation from Predicting 10,000 Classes一文提出的,是DeepID三部曲的第一篇。DeepID1 使用softmax多分类训练,主要思想第一个是数据集的增大,包括训练集使用celebface,包含87628张图片,5436个人脸,增大了训练集;使用多尺寸输入,通过5个landmarks将每张人脸划分成10regions,每张图片提取60patches=10regions*3scales*2(RGB orgray),第二个是网络结构,DeepID提取的人脸特征就是一个由连接第三层与第四层组成的全连接层特征,如下图所示,每个patches经过这个cnn网络,第四层的特征更加全局化(global),第三层的特征更加细节,因此DeepID连接了两者,以求同时包含全局,细节信息。

60个patches使用60个CNN,每个CNN提取2*160=320维特征(与水平翻转一起输入),总网络模型如下图所示,最后分别使用联合贝叶斯算法与神经网络进行分类,并比较结果。

模型最终以CelebFaces+中202,599图像作为训练集, patch数提升为100(10r*10s*2) ,特征数提升为100*160*2=32000 然后使用PCA降为150维 ,使用联合贝叶斯算法进行验证, 最终在LFW上达到97.20%的验证准确率。

3. DeepID2:

DeepID2是Deep Learning Face Representationby Joint Identification-Verification一文提出的,对DeepID1进行了进一步的改进,提出了contrastive loss,在分类任务,我们需要的是减少类内差距(同一人脸),增加类间差距(不同人脸),softmax loss分类的监督信号可以增大类间差距,但是却对类内差距影响不大,所以DeepID2加入了另一个loss,contrastive loss,从而增加验证的监督信号,就可以减少类内差距。

网络结构类似DeepID1,不同之处在于使用了两种不同的损失函数,网络结构如下图所示。

损失函数:

①分类信号,Softmax loss。

②验证信号,contrastiveloss,使用l2范数距离表示,m为阈值不参与训练,括号内的θve={m},该损失函数可以让类间的距离给定一个限制margin,即m大小的距离。

两loss的组合方式: 首先使用2个输入,计算Softmax loss和contrastive loss,总损失为二者通过λ加权求和,通过总损失来执行梯度下降更新卷积参数,通过Softmax loss来更新softmax层的参数。

整个模型使用celebrate+数据集训练,每张图片使用了21 facial landmarks,分成200patches(20regions*5scales*2RGB&Gray),水平翻转后变为400patches,使用了200个卷积神经网络,提取400(200*2)个Deepid2特征,使用贪婪算法降为25个Deepid2特征,使用PCA将25*160Deepid2特征降为180维,最后使用联合贝叶斯算法进行验证,最终在LFW上得到的最终准确率是98.97%,使用7组25个Deepid2特征,SVM融合可得到准确率为99.15% 。DeepID2在2014 年是人脸领域非常有影响力的工作,也掀起了在人脸领域引进 MetricLearning 的浪潮。

4. DeepID2+:

DeepID2+源于论文Deeply learned facerepresentations are sparse, selective, and robust,DeepID2+是对DeepID2的改进。①卷积层在原来基础上再增加128维,第四层全连接层从160增加到512,训练数据增加了CelebFaces+ dataset,WDRef等,有12000个人脸的大约290,000张图片; ②每个卷积层的后面都加了一个512为的全连接层,并添加contrastive loss监督信号,而不仅在第四层全连接层上有 。网络结构如下图所示。

最终在LFW数据集上准确率为99.47%。

5. DeepID3:

DeepID3源于2015年的Deepid3:Face recognition with very deep neural networks论文,该论文探究了复杂神经网络对人脸识别的作用。论文研究VGG与GoogleNet用于人脸识别的效果,论文在VGG和GooLeNet的基础上进行构建合适的结构,使得方便人脸识别。结果发现DeepID3的结果和DeepID2+相当,可能是由于数据集的瓶颈,需要更大的数据才能有更好的提升,两个网络结构如下图所示。

网络输出使用PCA降维到300维的向量,使用联合贝叶斯算法进行验证,最终在LFW上得到的最终准确率是99.53%。

6. FaceNet:

FaceNet由论文Facenet: A unified embedding forface recognition and clustering提出,这篇 2015 年来自 Google 的 论文同样具有非常大的影响力,不仅仅成功应用了 TripletLoss 在 benchmark 上取得state-of-art 的结果,更因为他们提出了一个绝大部分人脸问题的统一解决框架,即:识别、验证、搜索等问题都可以放到特征空间里做,需要专注解决的仅仅是如何将人脸更好的映射到特征空间。FaceNet在DeepID的基础上,将 ContrastiveLoss 改进为 Triplet Loss,去掉softmaxloss。FaceNet实验了ZFNet类型网络和Inception类型网络,最终Inception类型网络效果更好,网络结构如下图所示。

FaceNet没有使用PCA降维,而是在网络中直接训练输出128维的向量,用全连接层来完成降维,最后的128维的向量经过Triplet Loss。

Triplet Loss输入不再是 Image Pair,而是三张图片(Triplet),分别为 Anchor Face(xa),Negative Face(xn)和 Positive Face(xp)。Anchor 与 Positive Face 为同一人,与 Negative Face 为不同人,在特征空间里 Anchor 与 Positive 的距离要小于 Anchor 与 Negative 的距离,且相差超过一个 Margin Alpha。

loss的目标为:

总loss公式为:

Contrastive Loss与Triplet Loss的比较, Contrastive Loss目标是减少类内差距(两个蓝点),增加类间差距(蓝点与红点);Triplet Loss则是输入三张图片,Anchor 与 Positive 的距离要小于 Anchor 与 Negative 的距离,且相差超过一个 Margin Alpha,即Triplet Loss同时约束了两个距离。

最后FaceNet在LFW数据集上达到了99.63%的准确率。

基于 ContrastiveLoss 和 Triplet Loss 的 MetricLearning 符合人的认知规律,在实际应用中也取得了不错的效果,但同时也有很多问题,由于ContrastiveLoss 和 Triplet Loss 的训练样本都基于pair 或者 triplet 的,可能的样本数是 O(N2) 或者 O (N3) 的,所以模型需要很久的计算才能拟合并且训练集需要足够大。

三、总结

本期文章主要介绍人脸表征相关算法和论文综述,主要是2014年到2016年的研究成果, ContrastiveLoss 和 Triplet Loss在实际应用中也取得了很好的效果,但是也有很多问题,由于Contrastive Loss 和 Triplet Loss 的训练样本都基于 pair 或者 triplet 的,可能的样本数是 O (N2) 或者 O (N3) 的,所以模型需要很久的计算才能拟合并且训练集要足够大,所以在之后的人脸识别研究中,大部分在于loss函数的研究,这部分将会在下一期给大家介绍。

参考文献:

【1】 Taigman Y, Yang M, Ranzato M A, et al.Deepface: Closing the gap to human-level performance in faceverification[C]//Proceedings of the IEEE conference on computer vision andpattern recognition. 2014: 1701-1708.

【2】Sun Y, Wang X, Tang X. Deep learning facerepresentation from predicting 10,000 classes[C]//Proceedings of the IEEEconference on computer vision and pattern recognition. 2014: 1891-1898.

【3】Sun Y, Chen Y, Wang X, et al. Deeplearning face representation by joint identification-verification[C]//Advancesin neural information processing systems. 2014: 1988-1996.

【4】Sun Y, Liang D, Wang X, et al. Deepid3:Face recognition with very deep neural networks[J]. arXiv preprintarXiv:1502.00873, 2015.

【5】Simonyan K, Zisserman A. Very deepconvolutional networks for large-scale image recognition[J]. arXiv preprintarXiv:1409.1556, 2014.

【6】Szegedy C, Liu W, Jia Y, et al. Goingdeeper with convolutions[C]//Proceedings of the IEEE conference on computervision and pattern recognition. 2015: 1-9.

【7】Sun Y, Wang X, Tang X. Deeply learned facerepresentations are sparse, selective, and robust[C]//Proceedings of the IEEEconference on computer vision and pattern recognition. 2015: 2892-2900.

【8】Schroff F, Kalenichenko D, Philbin J.Facenet: A unified embedding for face recognition andclustering[C]//Proceedings of the IEEE conference on computer vision andpattern recognition. 2015: 815-823.

本文分享自微信公众号 - 磐创AI(xunixs),作者:东田应子

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深度学习之视频人脸识别系列二:人脸检测与对齐

    人脸检测解决的问题为给定一张图片,输出图片中人脸的位置,即使用方框框住人脸,输出方框的左上角坐标和右下角坐标或者左上角坐标和长宽。算法难点包括:人脸大小差异、人...

    磐创AI
  • 人脸检测与识别的趋势和分析

    看上图是不是想到10年12月7日那次历史性的詹韦连线,时隔8年我们有一次看到,但不是那个自信张开双手抛开,而是选择回头,可能这个画面,以后再也看不到了。希望我们...

    磐创AI
  • 深度学习之视频人脸识别系列(一):简介

    磐创AI
  • 浅出深度学习系列-说说“人脸识别”

    们生存的这个星球上,居住着70多亿人。每个人的面孔组成部分相同,它们之间的大体位置关系也是固定的,并且每张脸的大小差异也不大。然而,它们居然就形成了那么复杂的模...

    数据猿
  • 人脸识别(二)——训练分类器

    上一篇简单整理了下人脸识别的相关基础知识,这一篇将着重介绍利用pencv(2.4.9)已有的模型进行分类器训练。 一、关于ORL人脸数据库 ORL是一个40个...

    小小詹同学
  • [深度应用]·基于卷积神经网络人脸识别的原理及应用开发(转)

    这里简单讲下OpenFace中实现人脸识别的pipeline,这个pipeline可以看做是使用深度卷积网络处理人脸问题的一个基本框架,很有学习价值,它的结构如...

    小宋是呢
  • 一篇文章搞懂人脸识别的十个概念

    人脸技术基本概念介绍 1. 人脸检测   “人脸检测(Face Detection)”是检测出图像中人脸所在位置的一项技术。   人脸检测算法的输入是一张图片,...

    小莹莹
  • 人脸识别(二)——训练分类器

    这是关于人脸的第②篇原创!(源码在第三篇) 上一篇简单整理了下人脸识别的相关基础知识,这一篇将着重介绍利用pencv(2.4.9)已有的模型进行分类器训练。 ...

    小小詹同学
  • 【星球知识卡片】人脸属性编辑都有哪些核心知识点,如何长期进行学习

    大家好,欢迎来到我们的星球知识小卡片专栏,本期给大家分享人脸属性编辑的核心技术点。

    用户1508658
  • 不止面部识别,一切关于人脸AI的资源都能在这里下载

    人脸AI技术如今无处不在。不仅手机上有面部识别、换脸、美颜等应用,去年GAN在合成人脸图片上也取得了重大突破。

    量子位

扫码关注云+社区

领取腾讯云代金券