zoukankan      html  css  js  c++  java
  • AI大厂算法测试心得:人脸识别关键指标有哪些?

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

    由调查机构发布的《中国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(人脸图像质量检测算法)

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

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

  • 相关阅读:
    有人向我反馈了一个bug
    java.lang.ClassNotFoundException: org.springframework.core.SpringProperties
    Maven pom文件提示Missing artifact org.springframework:spring-context-support:jar:3.2.2.RELEASE:compile
    在业务逻辑中如何进行数据库的事务管理。
    about to fork child process, waiting until server is ready for connections. forked process: 2676 ERROR: child process failed, exited with error number 100
    tomcat底层原理实现
    springmvc 动态代理 JDK实现与模拟JDK纯手写实现。
    纯手写SpringMVC架构,用注解实现springmvc过程
    数据库连接池原理 与实现(动脑学院Jack老师课后自己的练习有感)
    定时器中实现数据库表数据移动的功能,Exception in thread "Timer-0" isExist java.lang.NullPointerException定时器中线程报错。
  • 原文地址:https://www.cnblogs.com/ccLqqy/p/13389316.html
Copyright © 2011-2022 走看看