仅仅在几年前,程序员要开发一款人脸识别应用,就必须精通算法的编写。但现在,随着成熟算法的对外开放,越来越多开发者只需专注于开发垂直行业的产品即可。

由调查机构发布的《中国AI产业地图研究》中也有一组有趣的数据,目前中国的AI企业中,有近8成集中在应用层,其中AI行业解决方案占比高达40.7%,从上下班的人脸识别考勤,到金融App的人脸身份核验,再到医院和政务大厅的人脸识别取号,以及车站的人脸核验检票……

目前市面上既有OpenCV等开源算法库,很多芯片厂商的产品也自带简单算法,同时专业算法大厂也会开放相关技术,如提供免费、离线人脸识别SDK的虹软视觉开放平台等。对于开发者而言,面对多种算法,如何进一步了解算法性能至关重要。因此,本文将从算法原理、应用场景、关键指标一一进行介绍。

人脸识别算法原理简述

在介绍关键性能指标之前,我们需要厘清人脸识别的技术原理。

所谓人脸识别(Face Recognition),是对图像中的人脸进行检测、识别和跟踪。当前的人脸识别,通常是利用卷积神经网络(CNN)对海量的人脸图片进行学习,然后对输入图像提取出对应的人脸特征值。

人脸特征值是面部特征所组成的信息集。人类记忆和辨别一张脸,主要是靠肉眼可见的特征,譬如国字脸、双眼皮、黑眼睛、蓝色头发、塌鼻梁……但人工智能不同,主要是利用卷积神经网络(CNN)对海量的人脸图片进行学习。它们能够抽象出人类难以理解的面部特征,因而在识别能力上超越人类。

人脸特征值是一组空间向量,也是人脸比对的依据。同一张脸不同照片提取出的特征值,在特征空间里距离很近,不同人的脸在特征空间里相距较远。换言之,距离近的就有更大可能是同一个人。

另外需要注意,人脸识别和人脸检测并非同一技术。人脸检测是人脸识别完整流程中的一个环节。在用摄像头采集含有人脸的图像或视频流后,首先就需要用人脸检测技术自动检测、提取当中的人脸,随后才能进入人脸图像预处理及最核心的人脸特征提取环节。

在实际商业落地中,人脸检测也可独立于人脸识别进行使用,典型应用如近期在海内外大热的AI测温机,只在检测到人脸时激活测温模块,从而降低产品长期运行的损耗与能耗,该过程就无需对人脸进行识别。

【了解这些指标,你也能评价算法】

在理想状态下,人脸识别准确率越高越好,但算法在产品化时会受到逆光、暗光、强光、识别角度等诸多实际因素的影响。因此,脱离使用场景单独考量算法的识别准确率参考价值不大。

那么我们又该如何合理且有效的判断一款算法呢?业内知名免费算法平台——虹软视觉开放平台推出的《从零学习人脸识别》系列技术公开课中,对算法测试的关键指标进行了详细介绍。感兴趣的开发者朋友可以点击以下链接,进一步详细了解。

《从零学习人脸识别:人脸识别算法介绍》

https://ai.arcsoft.com.cn/course/video-26.html

《从零学习人脸识别:人脸检测算法介绍》

https://ai.arcsoft.com.cn/course/video-25.html

人脸识别关键指标:

多数情况下,我们以基于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。

人脸检测关键指标:

评价一款人脸检测算法,也有检测率、误报率、FPS、IOU四个指标。

一般情况下,我们同样希望检测率越高越好,误报率越低越完美,但这两者需要一个最优的平衡,我们可以用ROC曲线解决这一问题。

(1)True Positive:检测出来确实是人脸,但实际上仍然是人脸的

(2)False Positive:检测出来是人脸,但实际上是背景的

(3)False Negative:检测出来是背景,但实际上是人脸的

(4)True Negatives:检测出来是背景,实际上就是背景的

除了算法模型本身,我们也还可以从工程和应用等角度提升整体人脸识别效果。

应用角度:研发质量模型,对检测到的人脸质量进行评价,质量较差则不识别,如虹软视觉开放平台的FQ(人脸图像质量检测算法)

工程角度:施加场景限制,比如刷脸解锁,人脸闸机,会场签到时,都要求用户在良好的光照条件下正对摄像头,以避免采集到质量差的图片。

相关产品在虹软人脸识别开放平台了解喔

AI大厂算法测试心得:人脸识别关键指标有哪些?的更多相关文章

  1. MP算法、OMP算法及其在人脸识别的应用

    主要内容: 1.MP算法 2.OMP算法 3.OMP算法的matlab实现 4.OMP在压缩感知和人脸识别的应用 一.MP(Matching Pursuits)与OMP(Orthogonal Matc ...

  2. 简述Apache的ab测试主要有那些关键指标

    一.ab的原理 ab是apachebench命令的缩写. ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问.它的测试目标是基于URL的,因此,它既可以用来测试ap ...

  3. OpenCV人脸识别LBPH算法源码分析

    1 背景及理论基础 人脸识别是指将一个需要识别的人脸和人脸库中的某个人脸对应起来(类似于指纹识别),目的是完成识别功能,该术语需要和人脸检测进行区分,人脸检测是在一张图片中把人脸定位出来,完成的是搜寻 ...

  4. 基于机器学习人脸识别face recognition具体的算法和原理

    引自:http://blog.csdn.net/eclipsesy/article/details/78388468?utm_source=debugrun&utm_medium=referr ...

  5. 【第1篇】人工智能(AI)语音测试原理和实践---宣传

    ​前言 本文主要介绍作者关于人工智能(AI)语音测试的各方面知识点和实战技术. 本书共分为9章,第1.2章详细介绍人工智能(AI)语音测试各种知识点和人工智能(AI)语音交互原理:第3.4章介绍人工智 ...

  6. 基于node.js人脸识别之人脸对比

    基于node.js人脸识别之人脸对比 Node.js简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O ...

  7. AI人脸识别的测试重点

    最常见的 AI应用就是人脸识别,因此这篇文章从人脸识别的架构和核心上,来讲讲测试的重点. 测试之前需要先了解人脸识别的整个流程,红色标识代表的是对应AI架构中的各个阶段 首先是人脸采集. 安装拍照摄像 ...

  8. 【AI图像识别一】人脸识别测试探索

    ****************************************************************************** 本文主要介绍AI能力平台的人脸识别技术的测 ...

  9. AI人脸识别SDK接入 — 参数优化篇(虹软)

    引言 使用了虹软公司免费的人脸识别算法,感觉还是很不错的,当然,如果是初次接触的话会对一些接口的参数有些疑问的.这里分享一下我对一些参数的验证结果(这里以windows版本为例,linux.andro ...

随机推荐

  1. Vue 封装axios(四种请求)及相关介绍(十三)

    Vue 封装axios(四种请求)及相关介绍 首先axios是基于promise的http库 promise是什么? 1.主要用于异步计算 2.可以将异步操作队列化,按照期望的顺序执行,返回符合预期的 ...

  2. 洛谷 P5683 【[CSPJX2019]道路拆除】

    先用做的暴力,因为n最多才3000嘛,但是后来发现时间复杂度不止\(O\)(\({n}^2\)),然后就放弃了. 讲讲我的暴力+错误思路吧: 把1到s1和s2的最短路算出来,用SPFA,然后用DFS求 ...

  3. 六.url配置

    1.Django 如何处理一个请求 (1). django 加载 ROOT_URLCONF(settings.py中配置的) 指定的模块,并寻找可用的urlpatterns变量.它是 django.c ...

  4. css定义变量_css原生变量的使用和兼容 附带还有更高性能,文件更高压缩率的好处

    在开发中,css样式有一些属性往往需要重复使用,为了避免代码冗余,降低维护成本.我们需要使用CSS预编译工具[Sass/Less/Stylus],随着这些工具的流行,CSS变量也开始规范制定,目前很多 ...

  5. 常用API - Scanner、Random、ArrayList

    API 概述 API(Application Programming Interface),应用程序编程接口. Java API是一本程序员的 字典 ,是JDK中提供给我们使用的类的说明文档. 这些类 ...

  6. MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序

    MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序   What's Index ? 索引就是帮助RDBMS高效获取数据的数据结构. 索引可以让我们避免一行一行进行全表扫描.它的 ...

  7. 3W字干货深入分析基于Micrometer和Prometheus实现度量和监控的方案

    前提 最近线上的项目使用了spring-actuator做度量统计收集,使用Prometheus进行数据收集,Grafana进行数据展示,用于监控生成环境机器的性能指标和业务数据指标.一般,我们叫这样 ...

  8. kubernetes系列(十三) - 存储之Volume

    1. Volume简介 1.1 k8s的volume和docker的volume区别 1.2 kubernetes支持的volume类型 2. 重点的volume类型 2.1 emptyDir 2.1 ...

  9. python分块读取大数据,避免内存不足

  10. SSTI(模板注入)

    SSTI 一. 什么是SSTI 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. ...