仅仅在几年前,程序员要开发一款人脸识别应用,就必须精通算法的编写。但现在,随着成熟算法的对外开放,越来越多开发者只需专注于开发垂直行业的产品即可。
由调查机构发布的《中国AI产业地图研究》中也有一组有趣的数据,目前中国的AI企业中,有近8成集中在应用层,其中AI行业解决方案占比高达40.7%,从上下班的人脸识别考勤,到金融App的人脸身份核验,再到医院和政务大厅的人脸识别取号,以及车站的人脸核验检票……
目前市面上既有OpenCV等开源算法库,很多芯片厂商的产品也自带简单算法,同时专业算法大厂也会开放相关技术,如提供免费、离线人脸识别SDK的虹软视觉开放平台等。对于开发者而言,面对多种算法,如何进一步了解算法性能至关重要。因此,本文将从算法原理、应用场景、关键指标一一进行介绍。
一.人脸识别算法原理简述
在介绍关键性能指标之前,我们需要厘清人脸识别的技术原理。
所谓人脸识别(Face Recognition),是对图像中的人脸进行检测、识别和跟踪。当前的人脸识别,通常是利用卷积神经网络(CNN)对海量的人脸图片进行学习,然后对输入图像提取出对应的人脸特征值。
人脸特征值是面部特征所组成的信息集。人类记忆和辨别一张脸,主要是靠肉眼可见的特征,譬如国字脸、双眼皮、黑眼睛、蓝色头发、塌鼻梁……但人工智能不同,主要是利用卷积神经网络(CNN)对海量的人脸图片进行学习。它们能够抽象出人类难以理解的面部特征,因而在识别能力上超越人类。
人脸特征值是一组空间向量,也是人脸比对的依据。同一张脸不同照片提取出的特征值,在特征空间里距离很近,不同人的脸在特征空间里相距较远。换言之,距离近的就有更大可能是同一个人。
另外需要注意,人脸识别和人脸检测并非同一技术。人脸检测是人脸识别完整流程中的一个环节。在用摄像头采集含有人脸的图像或视频流后,首先就需要用人脸检测技术自动检测、提取当中的人脸,随后才能进入人脸图像预处理及最核心的人脸特征提取环节。
在实际商业落地中,人脸检测也可独立于人脸识别进行使用,典型应用如近期在海内外大热的AI测温机,只在检测到人脸时**测温模块,从而降低产品长期运行的损耗与能耗,该过程就无需对人脸进行识别。
二.了解这些指标,你也能评价算法
在理想状态下,人脸识别准确率越高越好,但算法在产品化时会受到逆光、暗光、强光、识别角度等诸多实际因素的影响。因此,脱离使用场景单独考量算法的识别准确率参考价值不大。
1.人脸识别关键指标:
多数情况下,我们以基于FAR(错误接受率,又称误识率,即把某人误识为其他人的概率)和FRR(错误拒绝率率,即本人注册在底库中,但比对相似度达到不预定的值)的DET曲线作为评判参考。
(1)错误拒绝率(FAR)
相似度值范围内等分为若干档,得到若干个不同的阈值 S,计算不同阈值 S 的 FRR 如下:FRR(S) = 同人比对相似度中低于阈值S的数量 / 同一人比对总数 × 100%;
(2)错误接受率(FRR)
相似度值范围内等分为若干档,得到若干个不同的阈值 S,计算不同阈值 S 的 FAR 如下:FAR(S) = 非同人比对相似度中不低于阈值S的数量 / 非同人比对总数 ×100%;
理想状况下,FAR和FRR都越低越好,但两个指标是一个跷跷板,一个指标的降低通常意味着另一个指标会升高,所以需要实现两者间的平衡。一般认为在FAR达到市场正常水准时,FRR越低,该人脸识别算法性能就越好。
目前,市场上大部分场景会根据自身安全性要求,制定不同标准。比如在门禁场景下,要求FAR低于十万分之一,此时FRR越低,算法效果越好。以下图为例,算法1效果就好于算法2。
2.人脸检测关键指标:
评价一款人脸检测算法,也有检测率、误报率、FPS、IOU四个指标。
一般情况下,我们同样希望检测率越高越好,误报率越低越完美,但这两者需要一个最优的平衡,我们可以用ROC曲线解决这一问题。
(1)True Positive:检测出来确实是人脸,但实际上仍然是人脸的
(2)False Positive:检测出来是人脸,但实际上是背景的
(3)False Negative:检测出来是背景,但实际上是人脸的
(4)True Negatives:检测出来是背景,实际上就是背景的
3.除了算法模型本身,我们也还可以从工程和应用等角度提升整体人脸识别效果。
应用角度:研发质量模型,对检测到的人脸质量进行评价,质量较差则不识别,如虹软视觉开放平台的FQ(人脸图像质量检测算法)
工程角度:施加场景限制,比如刷脸解锁,人脸闸机,会场签到时,都要求用户在良好的光照条件下正对摄像头,以避免采集到质量差的图片。