AI产品经理:H5移动端与PC端,使用人脸识别功能的产品设计

一、需求了解及产品调研

作为PM,了解需求背景和需求详情是第一要务,这样才能使产品逻辑和业务要求保持一致,并尽可能保证前端后台角色操作的便捷和体验。收到需求后第一时间与风控总监进行详细沟通,了解到急切想要加入人脸识别的原因在于——公司目前开展的借款业务,都是进行线上借款合同的签约。

目前我们的用户注册模块只有手机号码验证,法律上没法确定是客户自身的行为,导致业务进行中的借款合同有被认定为无效的法律风险,所以必须使用人脸识别来确认注册的用户确实是本人。

对需求了解透彻后,开始进入产品研发过程。首先必须对于实现需求最重要的应用——人脸识别技术进行深入梳理,确定需求所要使用的应用是人脸识别技术中的人脸核身,随后对几款优秀的人脸核身产品进行了体验和调研。

关于人脸识别技术和应用的梳理见文章:

一、技术流程详解

技术流程:

1、人脸采集

人脸采集主要关注以下因素——

1)图像大小:人脸图像过小会影响识别效果,人脸图像过大会影响识别速度。非专业人脸识别摄像头常见规定的最小识别人脸像素为60*60或100*100以上。在规定的图像大小内,算法更容易提升准确率和召回率。图像大小反映在实际应用场景就是人脸离摄像头的距离。

2)图像分辨率:越低的图像分辨率越难识别。图像大小综合图像分辨率,直接影响摄像头识别距离。现4K摄像头看清人脸的最远距离是10米,7K摄像头是20米。

3)光照环境:过曝或过暗的光照环境都会影响人脸识别效果。可以从摄像头自带的功能补光或滤光平衡光照影响,也可以利用算法模型优化图像光线。

4)模糊程度:实际场景主要着力解决运动模糊,人脸相对于摄像头的移动经常会产生运动模糊。部分摄像头有抗模糊的功能,而在成本有限的情况下,考虑通过算法模型优化此问题。

5)遮挡程度:五官无遮挡、脸部边缘清晰的图像为最佳。而在实际场景中,很多人脸都会被帽子、眼镜、口罩等遮挡物遮挡,这部分数据需要根据算法要求决定是否留用训练。

6)采集角度:人脸相对于摄像头角度为正脸最佳。但实际场景中往往很难抓拍正脸。因此算法模型需训练包含左右侧人脸、上下侧人脸的数据。工业施工上摄像头安置的角度,需满足人脸与摄像头构成的角度在算法识别范围内的要求。

2、人脸检测(Face Detection)

人脸位置检测:

目的是在图像中准确标定出人脸的位置和大小。

人脸关键点检测(人脸对齐):

目的是自动估计人脸图片上脸部特征点的坐标

一般可以使用Openface中的Dlib模型实现人脸检测,利用OpenCV库对数据进行处理。最近人脸检测算法模型的流派包括三类及其之间的组合:viola-jones框架(性能一般速度尚可,适合移动端、嵌入式上使用),dpm(速度较慢),cnn(性能不错)。

人脸检测关注以下指标:

  • 检测率:识别正确的人脸/图中所有的人脸。检测率越高,代表检测模型效果越好。
  • 误检率:识别错误的人脸/识别出来的人脸。误检率越低,代表检测模型效果越好。
  • 漏检率:未识别出来的人脸/图中所有的人脸。漏检率越低,代表检测模型效果越好。
  • 速度:从采集图像完成到人脸检测完成的时间。时间约短,检测模型效果越好。

举一个实际例子说明:

在摄像头某张抓拍图像中,一共有7张人脸,算法检测出4张人脸,其中3张是真实人脸,1张是把路标误识为人脸。

在这个实际案例中:检测率=3/7 误检率=1/4 漏检率=(7-3)/7

3、图像预处理

图像预处理的目的是消除图像中无关的信息,尽可能去除或者减少光照、成像系统、外部环境等对图像的干扰,使它具有的特征能够在图像中明显地表现出来。主要过程包括人脸图像的光线补偿、灰度变换、直方图均衡化、归一化、几何校正、滤波以及锐化等。

1)灰度化:将彩色图像转化为灰色图像的过程。

2)直方图均衡化:直方图描述了一副图像的灰度级内容。直方图均衡化主要目的是为了提高对比度和灰度色调的变化,使图像更加清晰。

3)归一化:通过一系列变换,将待处理的原始图像转换成相应的唯一标准形式(该标准形式图像对平移、旋转、缩放等仿射变换具有不变特性),使得图像可以抵抗几何变化的攻击。例如用放大缩小图像、减少图片由于光照不均匀造成的干扰等。

4)中值滤波:将图片进行平滑操作以消除噪声。

预处理的效果直接影响到人脸识别率。可以通过不同方法,相同算法、相同训练模式评估模型效果,选择最佳的预处理方式。

4、人脸特征提取及人脸识别方法

传统的人脸识别模型一般都是在SVM等分类器分类后,通过CNN提取特征。

但随着深度学习的发展,人脸识别有更多端到端的框架选择。这里简单介绍一下三种近两年基于深度学习人脸识别的方法:Deep face、Deep ID、FaceNet

1)Deep face

a.Deep face 与其他方法最大的不同在于,DeepFace在训练神经网络前,使用了基于3D模型人脸对齐的方法。

b.使用深度神经网络学习特征

c.该模型在LFW数据集上取得了0.9735准确率

2)DeepID

DeepID有三代:DeepID、DeepID2、DeepID2+

DeepID2+对遮挡有很好的鲁棒性

有两种方式对人脸进行多种尺度的遮挡,第一种是从下往上进行遮挡,从10%-70%。第二种是不同大小的黑块随机放,黑块的大小从10×10到70×70。

结论是:遮挡在20%以内,块大小在30*30以下,Deep2+的输出向量的验证正确率几乎不变。

3)FaceNet

直接将人脸图像映射到欧几里得空间,空间的距离代表了人脸图像的相似性。该方法基于深度卷积神经网络。FaceNet得到人脸最终表示后不用像DeepID那样需要再训练模型进行分类,直接计算距离,效率很高。

它在LFW数据集上使用了两种模式:

  1. 直接取LFW图片的中间部分进行训练,
  2. 使用额外的人脸对齐工具,准确率为0.9963,超过DeepID。

当然基于深度学习的人脸识别方法还有很多种,比如baidu的方法等等。对这块有兴趣的朋友可以看看这篇文章:《基于深度学习的人脸识别技术综述

5、人脸匹配与识别

将提取的人脸特征数据与数据库中储存的特征模板进行搜索匹配,设定一个最佳的相似度阈值,当相似度超过该阈值,则输出匹配后的结果。

最佳相似度阈值的决定需要考虑到输出结果的正确率和数量。假设1000张样本图片里,共600张正样本。相似度为0.9的图片一共100张,其中正样本为99张。虽然0.9阈值的正确率很高,为99/100;但是0.9阈值正确输出的数量确很少,只有99/600。这样很容易发生漏识的情况。

有的同学可能很快就通过这个场景联想到精确率和召回率的概念,是的,这也是需要应用精确率和召回率的实际评估场景之一。这里再解释一下精确率和召回率:

  • 精确率(precision):识别为正确的样本数/识别出来的样本数=99/100
  • 召回率(recall):识别为正确的样本数/所有样本中正确的数=99/600

(图by@mousever

只有当选择的阈值实现:a.阈值以上结果的精确率极高;b.阈值以上结果的召回率极高。这个阈值才是在该算法模型下最佳阈值。

除精确率和召回率值得关注外,误报率(False Alarm)也是非常重要的指标。家用家用机器人/摄像头,可能会常开人脸检测,误报会非常影响用户体验(比如,没有异常情况但频繁报警提示)。因此误报率会是这类场景的重要指标。

另外在这一个识别的步骤中,产品还需要确定具体输出的需求点是人脸认证还是人脸识别——

1)人脸认证:一对一的匹配过程,解决“这是否为某人”的问题。系统需先找出已储存的对象信息,再将待认证的信息与前者对比核对,从而判定接受或拒绝待认证的身份。

常见的应用场景:例如移动支付认证、安全性身份核对等。

产品在系统设计的逻辑上,需要先考虑调取已储存对象信息的先验条件。通过界面/语音的提示,使得待认证者预先知道自己正处于被核对的过程中,且已预先了解拟核对对象的身份。

2)人脸比对:一对多的匹配过程,解决“这是谁”的问题。系统将待识别人脸图像的特征值与数据库中存储的所有已知身份的对象的特征值进行比较,来确定待识别者的身份。

常见的应用场景:人脸开门、人脸检索等。

产品在本需求的设计上,需要考虑系统的实时性和架构方案的不同对产品逻辑的影响。例如人脸开门常见架构是跨互联网和局域网的,人脸检索常见架构是在某一个局域网(互联网)下的。

a.人脸开门等跨网方案需要关注的因素

  • 远程算法更新:远程算法更新必然会造成本地局域网功能暂时性无法使用。因此远程算法更新的频率、时间、更新效果都需要产品在更新前精确评估。
  • 增删改人脸数据与本地数据的同步:本地局域网和互联网是无法直接交互的,因此用户在互联网一旦对人脸数据库进行增删改的操作,下发程序的稳定性和及时性都需要重点关注。
  • 硬件环境:本地存储空间的大小和GPU直接影响到本地识别的速度。服务器的稳定性影响到功能地正常使用。
  • 守护程序:断电等外置情况意外情况发生又被处理完善后,程序能自动恢复正常。

b.人脸检索等某一局域网(互联网)方案需要关注的因素

  • 速度:除了算法识别需要消耗一定时间外,该局域网下的网速会影响到识别结果输出的速度。
  • 数据库架构:通过检索结果关联结构化数据。
  • 阈值的可配置性:在界面设置阈值功能,从产品层面输入阈值后,改变相对应的结果输出。
  • 输出结果排序:根据相似度排序或结构化数据排序内容地抉择
  • 云服务的稳定性。

二、与人脸识别相关的其他CV内容

1、人脸表情识别(Face expression recognition 简称FER)

人脸表情识别的一般步骤:图片获取、图像预处理(主要有图片归一化、人脸检测与定位)、特征提取及表情分类。

现普遍认为人类主要有六种基本情感:愤怒(anger)、高兴(happiness)、悲伤(sadness)、惊讶(surprise)、厌恶(disgust)、恐惧(fear)。而大多数表情识别是基于这六种情感及其拓展情绪实现的,目前主要困难点是:

  • 表情的精细化程度划分:每种情绪最微弱的表现是否需要被分类。分类的界限需要产品给出评估规则。
  • 表情类别的多样化:是否还需要补充其他类别的情绪,六种情绪在一些场景下远不能变现人类的真实情绪。因此除了基本表情识别外,还有精细表情识别、混合表情识别、非基本表情识别等细致领域的研究。
  • 缺少鲁棒性

2、人脸性别识别

性别分类是一个典型的二类问题,人脸性别分类问题需要解决的两个关键问题是人脸特征提取和分类器的选择。

人脸性别识别其实仅能识别到人脸外貌更偏向于女性还是男性,很难对女生男相、男生女相进行正确判断。产品需制定合理的性别划分规则。

3、人脸年龄识别

年龄识别的难度在于单人的不同年龄段识别和多人的不同年龄段识别,人脸年龄识别常和人脸识别进行组合识别,能更正确的判断在一定年限内“是否是一个人”的问题。

识别年龄无变化的人脸用分类即可,而对年龄变化的人脸识别方法是通过年龄模拟,将测试图像和查询库中的图像变换到某一共同的年年龄,从而去除年龄不同的影响,使识别在年龄相同的人脸图像进行。

除了以上内容,还有是否戴眼镜、头发长度、肤色等等方向,产品可根据需求对算法提出不同的组合类别。值得强调的是,随着行业的深入,我们会发现单纯的人脸识别并不能满足实际应用场景的需求,比如在安防行业或者金融领域,活体技术(如何验证目前的人是真人而不是照片或视频)和防欺诈技术才是戳中用户痛点的、更本质的关键。人脸识别技术和多个技术相互结合,是现在场景中运用得比较广泛的方案。

三、补充说明

1、测试环境说明

例如:

  • CPU:Intel(R) Core(TM) i7-4790 CPU @ 3.60 GHz
  • 内存:8GB
  • 系统:Ubuntu 14.04 x86_64/Windows 7 SP1 64bit
  • GCC版本:4.8.2

注:以上测试环境是PC,也可以在手机上。

2、需要说明测试集是什么,或者图片要求(比如“图片包含人脸大小应超过96*96像素)

a.经典人脸身份识别测试集LFW(LFW benchmark http://vis-www.cs.umass.edu/lfw/ )共包含13233 张图片 5749 种不同身份;世界记录99.7%。

b.CK+一个是人脸表情数据集(CK+,Extended Cohn-Kanade Dataset, http://www.pitt.edu/~emotion/ck-spread.htm ),包含固定表情和自发表情,包含123个人的593个表情序列。每个序列的目标表情被FACS编码,同时添加了已验证的情感标签(生气、厌恶、害怕、快乐、悲伤、惊讶)。

3、需要说明“有效距离,左右角度,上下角度,速度”等参数值(范围)

注:这和“部署的灵活性”相关——由于不同客户不同场景的需求不同,所以技术方的人脸检测模块,一般可以通过调整参数得到N种亚型,以适应不同应用场景(光照、角度、有效距离、速度) 下对运算量和有效检测距离的需求。

4、需要知道的是,很多公司刷榜的数据,更多是PR效果

UCLA的@朱松纯 教授 在文章《浅谈人工智能:现状、任务、构架与统一 | 正本清源》里就提到:

咱们刷榜比打乒乓球还厉害,刷榜变成咱们AI研究的“国球”。所谓刷榜,一般是下载了人家的代码,改进、调整、搭建更大模块,这样速度快。我曾经访问一家技术很牛的中国公司(不是搞视觉的),那个公司的研发主管非常骄傲,说他们刷榜总是赢,美国一流大学都不在话下。我听得不耐烦了,我说人家就是两个学生在那里弄,你们这么大个团队在这里刷,你代码里面基本没有算法是你自己的。如果人家之前不公布代码,你们根本没法玩。很多公司就拿这种刷榜的结果宣传自己超过了世界一流水平。

四、人脸识别的现状

1、实验室效果和现实效果对比

1)实验室训练数据和实际抓拍数据

大多数情况下,实际抓拍图像质量远低于训练图像质量。由于训练数据普遍是由用户经过手机app/web采集上来的图片,所以光照、角度、模糊程度都可以由产品控制,但是实际抓拍图片质量是和实际场景中的光线、摄像头分辨率等等因素相关,照片质量比较难把握。

在上图的情况下,即使算法模型可以达到很高的精确度,但由于抓怕图片质量不好的原因,实际效果会大打折扣甚至不可用。

这种情况的解决办法是:

  • 对摄像头进行补光/滤光
  • 将摄像头固定在角度合适的位置
  • 算法在识别前进行图像预处理

2)训练时的标准和实际应用的标准

大多数情况下,实际应用的标准会远高于训练标准。例如,人脸识别实验室的标准是通过正脸数据训练出模型,能识别正确人脸就可以。而实际情况可能没有正脸数据,对训练提出了更高的要求。

3)训练效果和现实效果

大多数情况下,实际效果会远低于训练效果。现在市面上CV公司都是说自己的训练效果在99%以上(无限接近于100%),但这不等于实际应用的效果就是99%。工业上场景复杂的人脸应用(类似识别黑名单这种1:N的人脸比对)正确率在90%以上就已经是表现得很好的算法模型。

2、算法漏洞常被利用破解人脸识别系统

人脸识别常常被质疑是否安全性不够高,很多人脸识别的产品都能被破解。比如长得比较像的人可能会被误认为同一人;用录入人员的照片或者视频也能通过人脸系统。

而现在安全性能比较高的系统一般是人脸识别技术和其他生物识别技术相结合,例如人脸识别+指纹识别;人脸识别+虹膜识别等等。

以上所有内容,就是本次对人脸识别的梳理。文章参考了大量文献,也结合了本人的实战项目经验,希望能通过这样体系化的梳理让大家有所收获。也非常欢迎大家和我沟通对人脸识别的见解和看法。

附:参考文章

  1. 《人脸面部特征提取技术的研究》 http://t.cn/RTm3Xwm
  2. 《人机交互中的人脸表情识别研究进展》 http://t.cn/RTm3pLS
  3. 《基于深度学习的人脸识别技术综述》http://t.cn/RJeczWj
  4. 《人脸识别之端到端的框架(二)—DeepID》http://t.cn/RHlEVZU

二、产品设计的关键问题

在深入的需求调研基础上,结合业务性质以及和IT部门的几轮探讨,总结出产品设计的关键问题:

  1. H5移动端调用底层接口较差,无法实现复杂的交互效果,录像时无法给出页面提示;
  2. 大部分客户PC端没有摄像头,在PC端直接使用人脸核身比较困难;
  3. 由于录像时无法给出页面提示,以及受到网络、客户操作习惯等的影响,人脸识别通过率可能不高。导致一方面如客户频繁尝试人脸识别将导致接口调用成本增加,另一方面客户无法注册会影响公司业务运转。

三、关键问题的解决

对于H5移动端调用接口差的问题暂无法技术解决的条件下,先按照现有条件设计页面及流程,出具详细的操作指引由市场部同事给到客户,尽量提升客户操作的成功性。

H5移动端的参考UI图最终如下:

对于PC端没有摄像头的问题,经过一番思考后决定借鉴目前扫码登录的模式,通过PC端页面上进行二维码弹框,让客户使用手机微信扫描二维码后进入移动端人脸识别页面。

最终的参考UI图如下:

对于客户频繁尝试的问题,产品限定每个客户进行人脸识别的次数不能超过3次,如超过3次则不能进行系统注册。对于造成的客户无法注册影响业务运转,经过一番思考后,决定赋予风控角色一定的权限,既是风控角色可以对人工识别无法通过的客户进行后台操作通过,后台操作通过后前端客户可以正常完成注册流程。

这样一来保证在人脸识别产品尚未很完善的情况,不会影响业务运转和客户体验,二来赋予业务一定的自主权和灵活性。

管理后台操作页面参考UI图如下:

四、文档交付与产品开发

关键问题得到解决,对于产品细节再经过几番推敲后出具原型图和PRD文档。为确保产品上线时间,作为产品经理要催促商务人员与人脸核身功能的供应商洽谈合作,并在开发过程中与IT人员保持密切的沟通,对于细节问题随时商量出解决方案。

在开发过程中碰到的部分细节问题和产品解决方案如下:

(1)部分手机拍摄的视频文件过大

解决方案:限制上传文件的大小。

(2)视频文件要后台压缩再发供应商进行核验,压缩时间无法确定

解决方案:前端给出压缩等待页面。

人脸识别技术不但吸引了Google、Facebook、阿里、腾讯、百度等国内外互联网巨头的大量研发投入,也催生了Face++、商汤科技、Linkface、中科云从、依图等一大波明星创业公司,在视频监控、刑事侦破、互联网金融身份核验、自助通关系统等方向创造了诸多成功应用案例。本文试图梳理人脸识别技术发展,并根据作者在相关领域的实践给出一些实用方案设计,期待能对感兴趣的读者有所裨益。

一、概述

通俗地讲,任何一个的机器学习问题都可以等价于一个寻找合适变换函数的问题。

例如语音识别,就是在求取合适的变换函数,将输入的一维时序语音信号变换到语义空间;而近来引发全民关注的围棋人工智能AlphaGo则是将输入的二维布局图像变换到决策空间以决定下一步的最优走法;相应的,人脸识别也是在求取合适的变换函数,将输入的二维人脸图像变换到特征空间,从而唯一确定对应人的身份。

一直以来,人们都认为围棋的难度要远大于人脸识别,因此,当AlphaGo以绝对优势轻易打败世界冠军李世乭九段和柯洁九段时,人们更惊叹于人工智能的强大。

实际上,这一结论只是人们的基于“常识”的误解,因为从大多数人的切身体验来讲,即使经过严格训练,打败围棋世界冠军的几率也是微乎其微;相反,绝大多数普通人,即便未经过严格训练,也能轻松完成人脸识别的任务。

然而,我们不妨仔细分析一下这两者之间的难易程度:在计算机的“眼里”,围棋的棋盘不过是个19×19的矩阵,矩阵的每一个元素可能的取值都来自于一个三元组{0,1,2},分别代表无子,白子及黑子,因此输入向量可能的取值数为3361;而对于人脸识别来讲,以一幅512×512的输入图像为例,它在计算机的“眼中”是一个512x512x3维的矩阵,矩阵的每一个元素可能的取值范围为0~255,因此输入向量可能的取值数为256786432。虽然,围棋AI和人脸识别都是寻求合适的变换函数f,但后者输入空间的复杂度显然远远大于前者。

对于一个理想的变换函数f而言,为了达到最优的分类效果,在变换后的特征空间上,我们希望同类样本的类内差尽可能小,同时不同类样本的类间差尽可能大。

但是,理想是丰满的,现实却是骨感的。由于光照、表情、遮挡、姿态等诸多因素(如图1)的影响,往往导致不同人之间的差距比相同人之间差距更小,如图2。人脸识别算法发展的历史就是与这些识别影响因子斗争的历史。

图1 人脸识别的影响因素

图2 姿态导致不同人相似度比同人更高

二、人脸识别技术发展

早在20世纪50年代,认知科学家就已着手对人脸识别展开研究。20世纪60年代,人脸识别工程化应用研究正式开启。当时的方法主要利用了人脸的几何结构,通过分析人脸器官特征点及其之间的拓扑关系进行辨识。这种方法简单直观,但是一旦人脸姿态、表情发生变化,则精度严重下降。

1991年,著名的“特征脸”方法[1]第一次将主成分分析和统计特征技术引入人脸识别,在实用效果上取得了长足的进步。这一思路也在后续研究中得到进一步发扬光大,例如,Belhumer成功将Fisher判别准则应用于人脸分类,提出了基于线性判别分析的Fisherface方法[2]。

21世纪的前十年,随着机器学习理论的发展,学者们相继探索出了基于遗传算法、支持向量机(Support Vector Machine, SVM)、boosting、流形学习以及核方法等进行人脸识别。 2009年至2012年,稀疏表达(Sparse Representation)[3]因为其优美的理论和对遮挡因素的鲁棒性成为当时的研究热点。

与此同时,业界也基本达成共识:基于人工精心设计的局部描述子进行特征提取和子空间方法进行特征选择能够取得最好的识别效果。Gabor[4]及LBP[5]特征描述子是迄今为止在人脸识别领域最为成功的两种人工设计局部描述子。这期间,对各种人脸识别影响因子的针对性处理也是那一阶段的研究热点,比如人脸光照归一化、人脸姿态校正、人脸超分辨以及遮挡处理等。也是在这一阶段,研究者的关注点开始从受限场景下的人脸识别转移到非受限环境下的人脸识别。LFW人脸识别公开竞赛在此背景下开始流行,当时最好的识别系统尽管在受限的FRGC测试集上能取得99%以上的识别精度,但是在LFW上的最高精度仅仅在80%左右,距离实用看起来距离颇远。

2013年,MSRA的研究者首度尝试了10万规模的大训练数据,并基于高维LBP特征和Joint Bayesian方法[6]在LFW上获得了95.17%的精度。这一结果表明:大训练数据集对于有效提升非受限环境下的人脸识别很重要。然而,以上所有这些经典方法,都难以处理大规模数据集的训练场景。

2014年前后,随着大数据和深度学习的发展,神经网络重受瞩目,并在图像分类、手写体识别、语音识别等应用中获得了远超经典方法的结果。

香港中文大学的Sun Yi等人提出将卷积神经网络应用到人脸识别上[7],采用20万训练数据,在LFW上第一次得到超过人类水平的识别精度,这是人脸识别发展历史上的一座里程碑。

自此之后,研究者们不断改进网络结构,同时扩大训练样本规模,将LFW上的识别精度推到99.5%以上。如表1所示,我们给出了人脸识别发展过程中一些经典的方法及其在LFW上的精度,一个基本的趋势是:训练数据规模越来越大,识别精度越来越高。如果读者阅读有兴趣了解人脸识别更细节的发展历史,可以参考文献。

表2 较为正常的人脸识别训练集

表3 本文用到的测试集

表4 一种快速可靠的训练数据清洗方法

图4给出了一套行之有效的人脸识别技术方案,主要包括多patch划分、CNN特征抽取、多任务学习/多loss融合,以及特征融合模块。

图4 人脸识别技术方案

1、多patch划分主要是利用人脸不同patch之间的互补信息增强识别性能。尤其是多个patch之间的融合能有效提升遮挡情况下的识别性能。当前,在LFW评测中超过99.50%的结果大多数是由多个patch融合得到。

2、经过验证较优秀的人脸特征抽取卷积神经网络包括:Deep-ID系列、VGG-Net、ResNet、Google Inception结构。读者可以根据自己对精度及效率的需求选择合适的网络。本文以19层resnet举例。

3、多任务学习主要是利用其他相关信息提升人脸识别性能。本文以性别和种族识别为例,这两种属性都是和具体人的身份强相关的,而其他的属性如表情、年龄都没有这个特点。我们在resnet的中间层引出分支进行种族和性别的多任务学习,这样CNN网络的前几层相当于具有了种族、性别鉴别力的高层语义信息,在CNN网络的后几层我们进一步学习了身份的细化鉴别信息。同时,训练集中样本的性别和种族属性可以通过一个baseline分类器进行多数投票得到。

4、多loss融合主要是利用不同loss之间的互补特性学习出适当的人脸特征向量,使得类内差尽可能小,类间差尽可能大。当前人脸识别领域较为常用的集中loss包括:pair-wise loss、triplet loss、softmax loss、center loss等。其中triplet loss直接定义了增大类内类间差gap的优化目标,但是在具体工程实践中,其trick较多,不容易把握。而最近提出的center loss,结合softmax loss,能较好地度量特征空间中的类内、类间差,训练配置也较为方便,因此使用较为广泛。

5、通过多个patch训练得到的模型将产生多个特征向量,如何融合多特征向量进行最终的身份识别也是一个重要的技术问题。较为常用的方案包括:特征向量拼接、分数级加权融合以及决策级融合(如投票)等。

表5 数据清洗前后识别模型性能对比

表5给出了训练数据清洗前后在测试集上的性能对比结果。据此可以得到以下结论:

  1. 数据的清洗不但能加快模型训练,也能有效提升识别精度;
  2. 在西方人为主的训练集MSCeleb1M上训练得到的模型,在同样以西方人为主的测试集LFW上达到了完美的泛化性能;但是在以东方人为主的业务测试集的泛化性能则有较大的下滑;
  3. 在以东方人为主的业务训练集训练得到的模型,在东方人为主的业务测试集上性能非常好,但是在西方人为主的测试集LFW上相对MSCeleb1M有一定差距;
  4. 将业务训练集和MSCeleb1M进行合并,训练得到的模型在LFW和业务数据上都有近乎完美的性能。其中,基于三个patch融合的模型在LFW上得到了99.58%的识别精度。
  5. 由此,我们可以知道,为了达到尽可能高的实用识别性能,我们应该尽可能采用与使用环境相同的训练数据进行训练。同样的结论也出现在论文[12]中。

实际上,一个完整的人脸识别实用系统除了包括上述识别算法以外,还应该包括人脸检测,人脸关键点定位,人脸对齐等模块,在某些安全级别要求较高的应用中,为了防止照片、视频回放、3D打印模型等对识别系统的假冒攻击,还需要引入活体检测模块;为了在视频输入中取得最优的识别效果,还需要引入图像质量评估模块选择最合适的视频帧进行识别,以尽可能排除不均匀光照、大姿态、低分辨和运动模糊等因素对识别的影响。另外,也有不少研究者和公司试图通过主动的方式规避这些因素的影响:引入红外/3D摄像头。典型的实用人脸识别方案如图5所示。

图5 实用人脸识别方案流程图

四、总结

本文简单总结了人脸识别技术的发展历史,并给出了实用方案设计的参考。虽然人脸识别技术在LFW公开竞赛中取得了99%以上的精度,但是在视频监控等实用场景下的1:N识别距离真正实用还有一段路要走,尤其是在N很大的情况下。未来,我们还需要在训练数据扩充、新模型设计及度量学习等方面投入更多的精力,让大规模人脸识别早日走入实用。

参考文献 

[1]Turkand M A, Pengland A P. Eigenfaces for recognition [J]. Journal of Cognitve Neuroscience, 1991, 3(1): 71-86.

[2]Belhumeur P, Hespanha J, Kriegman D. Eigenfaces vs. fisherfaces: Recognition using class specific linear projection [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1997, 19(7): 711-720.

[3]Liu C, Wechsler. Gabor feature based classification using enhanced fisher linear model for face recognition [J]. IEEE Transactions on Image Processing, 2002, 11(4): 467-476.

[4]Ahonen T, Hadid A, Pietikäinen M. Face description with local binary patterns: Application to face recognition [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2006, 28(12): 2037-2041.

[5]Wright J, Yang A, Ganesh A, Sastry S, Ma Y. Robust face recognition via sparse representation [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2009, 31(2): 210-227.

[6]Chen D, Cao X, Wen F, Sun J. Blessing of dimensionality: high-dimensional feature and its efficient compression for face verification [C]. IEEE International Conference on Computer Vision and Pattern Recognition, 2013.

[7]Sun Y, Wang X, Tang X. Deep learning face representation by joint identification-Verification [C].

[8]Zhao W, Chellappa R, Rosenfeld A, Phillips P J. Face recognition: A literature survey [J]. ACM Computing Surveys, 2003, 35(4): 399-458.

[9]Li S Z, Jain A K. Handbook of face recognition (2nd Edition) [M]. Springer-Verlag, 2011.

[10]Wang B, Li W, Yang W, Liao Q. Illumination normalization based on Weber’s law with application to face recognition [J]. IEEE Signal Processing Letters, 2011, 18(8): 462-465.

[11]Wang Biao, Feng X, Gong L, Feng H, Hwang W, Han J. Robust Pose normalization for face recognition under varying views [C]. ICIP, 2015,

[12]Kan M. Domain Adaptation for face recognition: Targetize source domain briged by common subspace, IJCV, 2014.

结语

在IT人员和商务人员的大力配合下,该产品从需求提出到上线大概用了一周半的时间,上线以来运转效果良好,达到业务需求。

本人从事互联网保险行业产品设计多年,欢迎同行交流探讨。

文章由PM28网编辑,作者:海阁,如若转载,请注明出处:http://www.pm28.com/1514.html欢迎投稿

联系我们

在线咨询:点击这里给我发消息

邮件:403567334@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息