6月18日,智东西公开课联合虹软推出「人脸识别技术公开课」虹软专场。专场现已更新2期,主题分别为《人脸识别技术的商业落地及挑战》、《如何从0到1快速搭建人脸识别应用》,由虹软视觉开放平台产品总监徐科、技术总监潘海波主讲。两位讲师从人脸识别的应用领域、基本原理、商业化落地的关键点、人脸识别应用架构的基本组成、不同技术方案选型以及基于虹软人脸识别SDK的应用开发攻略等不同维度进行了深入讲解。
本文根据两场公开课的系统讲解整理而来,共计8300余字,预计读完需要15分钟,提纲如下:
一、人脸识别基本原理及应用领域
二、商业化落地中的关键点
三、从0到1快速搭建人脸识别应用
徐科:
大家好,我是虹软视觉开放平台产品负责人徐科,很荣幸能和大家一起分享关于人脸识别商用及过程中的一些挑战。我先简单介绍一下虹软公司,虹软成立于1994年,二十几年来一直深耕在计算机视觉领域,2017年对外免费开放了人脸识别算法SDK,帮助很大一批合作伙伴实现了人脸识别产品的商业化落地。
正式开始之前,我先给大家分享一个来自武汉企业的真实案例。这家公司的产品叫“大武汉旅游年卡”,消费者购买后可以在一年内无限次进入黄鹤楼等武汉的几乎所有景区。在该产品推出初期,消费者购卡时需要去武汉当地线下销售点录入指纹,进入景区时消费者需要通过指纹验证,这种模式直接导致消费者无法在线购买电子卡,大大限制了公司规模化发展。
但采用人脸识别检票后,消费者只要在线上传人脸照片,即可完成在线电子卡购买,大大提升了消费体验。企业通过产品模式的升级,年卡的销售实现了质的飞跃,在短时间内,消费者人数从原来的5万快速增长到了130万,整整提升了26倍,这个案例非常直观的体现了人脸识别技术所带来的经济效益。
一、人脸识别基本原理及应用领域
从人工智能技术演进曲线来看,人脸识别技术目前正处于爆发阶段,并即将进入部署阶段,应用价值逐步体现。同时,人脸识别在LFW、MegaFace、FRVT三大测试级上的识别准确率已经达到了99%以上,超越了人类肉眼识别的能力,随着技术的不断提升,人脸识别有望解锁更多的应用场景。
2018年是人脸识别全面应用的重要节点,人脸识别在各大场景、小场景的应用遍地开花。从应用领域看,人脸识别主要应用在了金融、安防以及考勤门禁等领域,其中考勤门禁占到了42%。
根据权威机构分析,到2020年我国人脸识别市场规模预计可达到42.8亿元,潜力巨大。
从应用场景来看,建筑工地已成为人脸识别落地的最热门的场景之一。
全国拥有海量工地,为了解决拖欠农民工工资问题、农民工大面积流动性的安全问题,2018年5月份住建部发布了《建筑工人实名制管理办法(征求意见稿)》、《全国建筑工人管理服务信息平台数据标准(征求意见稿)》,要求对进入工地的农民工进行实名制管理。
前期部分工地采用闸机+刷卡的模式,但存在冒名打卡、借用身份证、镶有芯片的安全帽张冠李戴、计算工资、工时容易发生纠纷等等问题。
采用人脸识别实名制核验后可以有效的解决这些问题,人脸识别杜绝冒名打卡、借用身份证等情况,同时人员信息登记至人脸识别系统,并在公安系统进行备案,有效防止外来人员入内,通过人脸识别记录每次通行记录,很方便的进行农民工考勤即工时登记,使工地更安全、管理更高效。
除了建筑工地,校园也是人脸识别一个非常重要的应用场景。以往,校园一卡通是师生身份的唯一标识,用来刷卡消费、进入宿舍等。但一直以来,存在卡片丢失、忘带、磨损、盗刷等一系列问题,也带来了安全隐患和极高的管理成本。
而人脸识别恰好能解决这一难题,将 “人脸”作为校园里面每个人的唯一标识,无缝切入到整个智慧校园生态,实现从“校园一卡通”到“校园一脸通”。
人脸识别门禁管理系统对学校大门、宿舍楼、实验室、图书馆等场所的每一个入口进行分别授权通行管理,并能够对进出人员进行统计记录。在学校食堂、便利店等消费场景,以“人脸”为载体进行支付,为师生提供良好的购物体验。
随着新高考的改革,智慧电子班牌是每个学校走班排课的刚需产品,通过电子班牌人脸识别进行考勤签到或签退,帮助老师、家长更高效地了解学生出勤状况。
当然除了工地、校园,还有很多的应用场景,包括社区、楼宇、景区、酒店、家居、机器人等等。
为让大家系统性的了解人脸识别的整个流程,我将针对人脸识别的基本原理、主要实现的过程及关键点展开介绍。
人脸识别大致经历了从早期几何特征的算法、到人工特征+分类器的思路、再到基于深度学习的方法的三个阶段。早期阶段识别率停留在40%、50%左右,很难做商业的应用。目前,基于深度学习的人脸识别将识别准确率大幅度提升到了人类的水平。
那人脸识别的过程是如何实现的呢?
首先用海量数据,基于深度学习卷积网络训练出人脸特征模型。在人脸识别过程中,对于前端在各种环境下采集到的人脸图像,先采用光线规整、图像增强、关键点分析、人脸对齐等进行人脸图像预处理,并检测出人脸,然后采用训练出来的特征模型进行人脸特征值的提取,并对提取出来的特征值进行比对,输出比对结果确定是否为同一个人。
当然在整个人脸识别过程中还可以加入活体检测环节,增加人脸识别的应用安全性。
在实际场景下,考虑到用户体验,一般都是在非限制条件下拍摄的人脸,在这种环境下拍摄到的人脸存在着各种大角度、暗光、强光、背光、遮挡、模糊、噪点等问题,这些低质量的图像很大程度上会影响人脸算法的识别准确率。
为了解决这个问题,除了提升算法的鲁棒性外,还可以从源头摄像头端着手提升图像采集的质量。同时需要对采集的人脸图像进行预处理,用图像增强来提升图像质量。
针对低质量的图像一般可采用暗光增强、超分辨率、去噪、去除运动模糊等方式进行图像增强。黑漆漆的图像,用了图像增强方法,就可以看到更多的细节。还有超分辨率,针对低分辨率的图像,利用脸部属性,也就是局部区域来增加恢复高分辨率面部图像的真实度。
图像增强技术是非常核心算法,涉及算法较多,目前很多算法厂家很难做到很好的提升效果。
除了图像增强,人脸的对齐也是人脸识别中的关键环节,人脸对齐需要通过人脸关键点实现,根据这些关键点对人脸做对齐校准。
所谓关键点,就是上图所示的绿色的点,通常是眼角的位置、鼻子的位置、脸的轮廓点等等。如果识别时获取的人脸比较歪,根据关键点,使用仿射变换将人脸统一“摆正”,尽量消除姿势不同带来的误差。
关键点的提取在大角度、复杂光照、遮挡等复杂条件下有较大的难度,同时对稳定性、速度要求也非常高。对于这项技术虹软还是很有发言权的,目前全球TOP5安卓智能手机品牌的主要机型都在使用虹软的美颜人脸关键点技术,这也是虹软深耕计算机视觉领域二十余年的成果。
对采集到图像做了预处理,检测到人脸后,即可做特征值的提取与比对。但在人脸识别商业化落地中,还有一个重要的环节即是活体检测,验证用户是否为真实活体本人在操作。
活体检测可有效抵御照片、视频、面具等常见的攻击手段,帮助用户甄别欺诈行为,保障用户的利益。从实现方式可分为RGB单目活体检测、IR活体检测以及采用深度信息的活体检测。
RGB单目活体检测采用普通RGB摄像头,通过分析采集到人像的破绽如:摩尔纹、成像畸形、反射率等。近红外活体检测,则基于红外成像原理,屏幕类无法成像。深度信息活体则通过3D结构光或TOF获取3D人脸信息进行活体的有效判断。
从防攻击有效性看,3D结构光优于近红外优于RGB单目,而在成本上RGB单目优于近红外优于3D结构光。在交互方式上,可分为静默式和配合式,配合式则需要结合摇头、眨眼、唇语等方式配合活体的检测,静默式相比配合式算法层面要求更高,体验更好。
通过上述介绍,大家应该对人脸识别算法有了一定认知。那如何来评价人脸识别算法的优劣呢?
评价算法关键有两个指标即FAR(认假率或误识率,把某人误识为其他人)\FRR(拒真率,本人注册在底库中,但比对相似度达到不预定的值),这两个是最主要的指标。当然也还有识别速度、活体攻击成功率、人脸检测成功率等等。
FAR和FRR我们期望都越低越好,但两个指标是一个跷跷板,一个指标的降低会意味着另一个指标会升高,所以需要平衡好一个点。
人脸识别算法一般会设定一个阈值作为评判通过与否的标准,该阈值通常用分数或者百分比来衡量。当人脸比对的相似度值大于此阈值时,则比对通过,否则比对失败。每个阈值我们都可以统计对应的FAR\FRR,不同阈值的FAR/FRR值可绘成ROC曲线(Receiver Operating Curve),我们可以通过ROC曲线选定一个合理的阈值点,一般会选取FAR/FRR走势趋于稳定的交叉点。
二、人脸识别商业落地的关键点
从人脸识别的产业链看,包含了算法提供商、硬件设备商、应用集成商,即一个人脸识别项目的落地会涉及到算法、硬件以及应用的结合,是三位一体的融合。
人脸识别算法上可根据不同的场景分为1:1模型或1:N模型,1:1人证核验主要证明你是你,通常应用于车站、机场、大型活动、机关单位、银行、酒店、网吧等人员流动频繁场所或其它重点场景的人证核验,也可用于线上开户的人员身份验证。
基于采集照与证件照进行比对,可从证件上读取证件照进行比较,也可将采集照上传至NCIIC返回比对结果。证件照为102*126像素,图片尺寸较小,人证模型会针对证件照以及人证的使用场景进行针对性的优化。
而针对于社区、楼宇、工地、学校等较大规模的人脸考勤签到、人脸通行等应用场景,则可选择1:N的模型,1:N模型主要证明你是谁。
将人脸注册至底库,采集到人脸后在注册库中查找谁是谁。1:N的模型关键问题为N的大小,从一个班级百号人刷脸签到,到一个公司千号人的刷脸打卡,再到一个学校的几万人,一个四线城市几十万人,一个一线城市的几千万人,难度是呈指数上升的,底库越大要求模型的精度及计算性能越高。
这类场景相比对人证场景,一般都是非配合的应用场景,而且跨人种、跨年龄等问题较多,对算法的鲁棒性、性能要求更高。
除了算法,第二部分是硬件产品,人脸识别需要通过硬件设备来承载,目前市面上的人脸设备主要有带屏一体化的设备,适用于一些小型化场景,安装简单,交互友好,本地离线运行;
而另一种则为网络摄像机+后端服务器的形式,适用于一些较大型、复杂环境场景,较大规模人脸库比对。而典型的人脸硬件厂品主要包含了摄像头模组、主控板、屏幕以及人体感应模块、补光模块、感应卡模块以及联动输出模块等等。
摄像头模组也是人脸识别产品的核心器件,直接影响成像质量,从而影响识别的准确率,影响人脸成像采集的主要因素是摄像头的性能指标和摄像头安装部署位置等因素。
通常情况下人像采集涉及图像大小、图像分辨率、光照环境、模糊程度、遮挡程度、采集角度等。而针对室外场景尤其需要考虑宽动态以及低照度的效果。
除了摄像头模组,CPU主控板也是人脸识别产品的另一个核心器件,设备算力直接影响了体验性,目前主控板CPU主要有以下几种计算类型:Arm架构、X86架构、FPGA架构以及专用加速芯片架构。
目前市面上产品主要基于瑞芯微、高通、海思、MTK居多。RK3288\RK3399占了较大的比例,RK3399基本可以满足前端万人1s内比对需求,但RK3399功耗相对较高。
在应用实现上,需根据实际场景选择合适的应用架构方案。针对万人级以下的场景的简单方案可选择本地离线一体化的方案,即在本地人脸注册、本地采集、本地特征提取、本地比对,完全离线运行,无需与服务端进行任何数据交互,安装简单、响应速度快。
而针对社区、楼宇、学校等稍大型的场景,则可以选择前端+服务端的方案。用户可通过APP注册人脸或通过管理端注册人脸,注册人脸后可下发特征值至对应的终端,在终端进行离线比对,也可以通过网络摄像机采集人脸后上传至服务端进行比对。相比完全离线本地化方式,该方案服务端的算力更强可支持更大人脸库,可满足5~10万级人脸库,同时可对终端设备的通行进行统一管理。
对于雪亮工程平安社区类的应用场景则需要更大规模的部署方案,则需采用多级联网平台,各平台数据汇聚,支持百万级、千万级的人脸识别,后端更多需要采用分布式集群架构,以及采用更多的GPU服务器提升算力。
人脸识别的商业化落地是算法、硬件以及应用的三位一体的融合,但在落地过程中也面临如下挑战:
1、算法,即算法的鲁棒性及性能,在实际应用场景下采集到人脸经常为非限制下捕捉到的人脸,各种角度、光照条件、模糊、噪点、遮挡等等,不同的场景下捕捉到的人脸差异很大,那这些因素都会造成人脸的无法识别或误识,识别率在很大程度上取决于算法的鲁棒性。
2、硬件的选型,人脸产品影响因素较多,包括图像的成像质量、算力、板子的稳定性、功耗以及补光辅助、联动输出等等,那如何选择合适的硬件方案与算法有更好的兼容性,以及如何缩短硬件方案的选型周期快速产品化也是一个关键的问题。
3、研发成本及周期,很多开发者前期基本都没怎么接触人脸相关的开发,在前期往往不知道怎么入手,或是在开发过程实现了功能却无法做到很好的用户体验,导致迟迟无法商用,研发成本、周期无法控制。
4、工程化落地,工程的实施上,如何通过摄像头选择、安装等规避光线的污染问题等等。
虽然人脸识别的优点显而易见,但是它在应用过程中的挑战,足以让研发实力不足的中小创企业望而却步。作为大量智能视觉算法的拥有者,虹软一直在推动人脸识别在各个领域的落地。其中,2017年推出的视觉开放平台就是一个重要途径,通过对外开放免费离线的SDK让广大开发者零门槛、低成本地使用优质算法。
目前,虹软视觉开放平台已经免费离线开放了人脸识别、人证核验、活体检测SDK,支持Android、Windows、Linux、iOS全平台。工程化上,虹软结合原有手机端上的积累,做了相应的优化,做到高性能、低功耗、低成本。帮助中小企业以最低的成本、快速实现产品的商用落地。
为了解决硬件选型问题以及研发的问题,在对外开放算法SDK的基础上,推出了硬件开发套件和软件端的应用套件。
开发套件主要满足硬件产品前期的快速方案验证及选型,配套工业级双目摄像头模组、搭载RK3399的主控板以及集成虹软人脸SDK的DEMO应用,软硬件上进行了适配调优,通过开发套件可以快速验证硬件方案的可行性,并以此基础再做相应的方案优化选型。
应用套件集成了人脸识别应用的相关基础功能,包括人脸的注册管理、人脸识别、活体识别等功能,在无需开发的情况下,接入硬件即可以满足门禁类的基本应用需求。应用套件包含了Android客户端、PC管理客户端,PC客户端可同时支持对多个Android客户端进行管理。
同时为了满足平台类的集成需求,提供了设备联网服务平台,对设备进行远程的管理,包括设备的控制、参数设置、程序的升级、人脸下发、通行数据上传等,联网服务平台提供Resuful API接口,供第三方平台无缝集成,在原有应用平台功能基础上即可快速集成人脸相关功能,包括设备管理、人脸下发及通行数据回传。联网服务平台支持私有化部署。应用套件大大缩短了研发周期,降低了研发成本。
三、从0到1快速搭建人脸识别应用
潘海波:
大家好,我是虹软开放平台技术总监潘海波。通过上面的课程,相信大家已经对人脸识别算法原理及如何产品落地有了一定的了解。那么接下来,我主要会从实战编程角度,来和大家系统性的解析如何从0到1的快速搭建人脸识别应用。
人脸识别的主要流程如上图,首先视频采集模块通过摄像头把连续的图像数据采集上来,同时输送到UI层与“人脸检测”模块;随后UI层进行预览展示,人脸检测”模块进行人脸检测;
当检测到人脸后,针对每张人脸进行特征提取,最终得到每张人脸的面部特征信息;最后一步把获取到的人脸特征信息与特征库里的人员特征信息进行比对,把最终结果展现在UI层。另外在很多使用场景下,为了确保真实性会增加活体检测的模块。
之前的课程中有讲过,1:1已及1:n的不同方案的场景,我们再来看下两种方案的具体实现流程。
在实际的项目中,属于1:1比对模式的场景其实有很多,比如人证闸机、支付宝刷脸支付、机场刷脸验票、人证核验一体机等等。这张是常见的1:1的流程图,具体流程如下:
读卡器读出注册照片、姓名、身份证号等信息,人员信息被传入到许可模块,许可模块根据事先设置的“人员黑白名单”库,判断来访人员的合法性;
当验证合法时,图像采集模块开始采集现场抓拍照片,系统分别对注册照片和抓拍照片进行人脸检测、特征提取,得到注册照片和现场照片相对应的两个特征值;
最后对这两个特征值进行比对,当置信度达到预设阈值时,即可判断为同一个人,检验通过。这个流程是简化流程,实际中的系统需要考虑现场照片核对失败后的情况,要进行多次尝试,比这个流程更复杂。基本上1:1识别模式流程都是按照这个流程进行的。
在了解1:1的比对模式后,再看1:n模式的流程图。
整个过程分成两个部分,一个是人员注册流程,另一个是人脸比对流程;注册流程目的是把公司所有员工的信息都注册到“人脸底库“中,首先通过人员注册入口把人员注册照与人员附属信息录入到系统中,人脸检测模块检测录入的注册照片,在成功检测到人脸后,对人脸进行特征提取,特征提取成功后,把人脸的特征值与相应的附属信息保存到人脸特征库内;
这个特征库内保存着一个公司的所有人员的特征信息,包含的字段有工号、注册照、姓名、注册照特征码。人脸比对流程,首先图像采集模块采集到图像数据后,传入到人脸检测模块进行人脸检测,检测成功后,做特征提取以及活体检测,当两者都成功后,把A特征值与特征底库中所有人员的特征值进行比对,得到一个最大的置信度,当置信度超过一个阈值时,则识别成功。
之前的方案分类都是按照比对模式来分类的,如果按照 “识别模块“所在的位置来划分,可以分为本地端方案与服务端方案。
可以简单理解为,本地端技术方案就是把所有的人脸识别的模块都放在设备本地实现;他优点比较明显,主要有两点:一是由于所有的识别环节都是在本地实现的,所以比对速度非常快速;二是在整个比对过程中,不依赖于网络,系统可以在无网络或弱网络环境下运行。其局限性也很明显,由于设备端的算力和存储空间有限,此方案不支持海量的人脸特征底库比对,也很难支撑对10个以上的人脸进行同时的检测与识别。
服务端方案由于借助于计算机集群,其算力和存储空间是无限制的,它可以实时处理很多个脸检测与识别,并支持海量的人脸特征底库的检索与比对。但其方案本身也是有缺点的,设备本身必须在有良好的网络环境下运行,如果运行的网络环境不好,整体效果会很差;
另外由于后台服务需要配置专门的服务器,甚至是服务器集群,整体成本开销比较大;当然在单人脸比对上,其性能赶不上本地方案。
针对上述的多种技术方案,虹软公司提供全套的而且免费的“离线人脸识别SDK”,识别引擎完全独立于网络环境运行,开发者可自主针对不同的应用场景,灵活选择各种技术方案,自主建立云服务,开发者可100%保证自身客户的数据隐私。
虹软SDK目前支持的语言包有 android(java) 、 原生java、c/c++ 、 Object C(ios),另外C#与python 等语言虽然官方没有支撑的开发包,但开发者可以在c/c++的基础上做二次封装并使用。
虹软一直致力于图像算法领域,我们的优势在于低功耗、高性能和离线授权;在技术支持方面,我们有多个沟通渠道,如官网论坛、开源应用Demo、微信技术群、开发者工单反馈等等。
大家可能会担心虹软SDK本身很复杂,不容易理解与接入,其实我们的SDK的接入成本还是非常低的。这张图展示了SDK接入的基本流程。
首先进行SDK激活,当激活成功后,需要对引擎进行初始化,引擎初始化成功后,就可以使用引擎进行人脸检测、特征提取、特征比对、人脸信息检测、年龄性别获取等操作,最后在引擎不再使用时,销毁引擎。
在具体的项目中,为了最大限度地提高并发能力,我们会使用多线程,同时由于SDK单个引擎的各个算法是非线程安全的,所以通常使用多线程多引擎来做并发。
另一个性能优化的重点是对于FaceID的使用。在视频中从检测到人脸帧开始,在连续的后续帧中,对目标人脸的运动轨迹和轮廓变化进行持续分析与跟踪,这个过程就是人脸跟踪;
在跟踪过程中,需要用唯一的编号来区分每个被跟踪的人脸,这个编号称为faceID,它有一个明显的特点,在连续的视频帧中,当一个人进入视频画面直到离开,整个过程中,其faceID是不变的;我们在设计过程中,可以通过faceID来标识同一个人,对于同一个faceID,只需做一次人脸识别,可节省设备算力。
我们简单介绍下一个典型案例,是某5A级景区的人脸验票技术方案,如上图。
景区的通行闸机分为两类,一类是山下的通道,游客在这些通道通行时,必须携带景区门卡或身份证进行刷脸通行,验证通过后,方可进入景区;另一类是山上的通道,这些通道部署在景区内部,由于游客之前在山下的通道已经核验过身份,所以这类通道只需要做人脸识别即可,不需要刷身份证或景区门卡。山下的外围通道,由于需要刷卡,所以选择1:1比对模式。
山上景区的内部通道,由于只需要刷脸比对,所以选择1:n的比对模式,另外由于景区的游客非常多,内部通道的通行闸机采用服务端比对模式,在后台我们部署两个独立的系统:票务系统和人脸识别系统。我们具体看下业务流程:
当游客通过山下的通道的时侯,会去刷身份证或景区卡,之后通行闸机上传游客的身份证或景区卡信息到票务系统;票务系统会根据游客的票务信息判断游客的合法性,并把结果反馈给通行闸机;
当游客合法时,通行闸机抓拍游客照片,并与注册照或者身份证照片进行比对,当比对成功后,打开通道,同时会把抓拍的现场照片传送给人脸识别系统。当游客来到内部通道时,通行闸机抓拍游客的现场照片并上传给人脸识别系统,后者会进行照片的1:N的比对识别,识别成功后,人脸识别系统下发指令给通行闸机,通行闸机根据指令放行,整个流程结束。
以上为两次课程的关键内容实录,「人脸识别技术公开课」虹软专场的两期课程完整回看已经在智东西公开课小程序上架。每场公开课的完整回看包括主讲环节与问答环节两部分,了解更多课程请关注智东西公开课。
北京市海淀区学清路10号院1号楼学清嘉创大厦A座