百度EasyEdge端计算模型生成平台产品调研一文里提出了一种“端+云”的识别方案,当本地的识别得分远超设置阈值时,可以默认识别通过;其他时候,可以结合云端结果做综合判断是否为同人。

上述方案还不是最好的产品方案,其实还是有改进空间的,我把改进后的方案放到了最后。本文站在阈值设置的角度,提出高精度人脸识别的一种产品策略,优化识别结果和识别体验。当然,商品识别也可同理可得。

识别通过与识别正确

首段的产品设计,基于这样的事实:一般情况下,人脸识别得分越高,识别正确的可能性越高。也即,识别得分越高,是同人对的概率越高。

那可否说,既然人脸识别得分越高,识别正确的可能性越高,那么,人脸识别得分越低,识别正确的可能性越低?显然这是错误的,人脸识别得分越低,只能说明非同人对的可能性高。

识别通过和识别正确有所区别,识别通过的(通过设定阈值,识别得分大于阈值)也有可能识别错误。例如,本来是非同人对,结果得分高于阈值,算法模型却错误地判断为同人对。

识别正确与否,要将识别结果(同人、非同人)与实际进行比较。识别通过与否,是将识别得分与设定的某个阈值进行比较。目前绝大多数应用场景产品设计上都采用单阈值策略。

为什么会有思维惯性,认为识别通过的,就是识别正确呢?因为观念上大家都认为算法很准确,同人对才会通过识别,所以通过的都是对的。而实际上,算法认为通过(得分高于阈值),也有可能是误识别。

算法指标与阈值选择

典型的人脸识别应用场景采用单阈值策略,这里的阈值一般由算法同学提供,根据ROC曲线确定。这就涉及到算法性能的测试和指标的表述。

在一个二分类模型中,对于所得到的连续结果,假设已确定一个阀值,比如说 0.6,大于这个值的实例划归为正类,小于这个值则划到负类中。如果减小阀值,减到0.5,固然能识别出更多的正类,也就是提高了识别出的正例占所有正例 的比类,即TPR,但同时也将更多的负实例当作了正实例,即提高了FPR。为了形象化这一变化,在此引入ROC,ROC曲线可以用于评价一个分类器。[1]

这是一个常见的算法指标:fpr=10e^-5,tpr=90%。它的意思是,万分之一误识率下,正样本通过率为90%。

其中,万分之一误识率,指的是发生1万次比对/识别,有一次错误的概率,这个错误单指负样本通过识别,为误识别。这里要区别于正样本未通过识别,也即漏识的情况,漏识又可称为拒识,是将指定人员误作其它人员。所以误识率=误识/(误识+漏识)。

有了算法1:1识别指标,就可以换算出1:N识别指标,因为1:N本质上相当于N次1:1比对。例如,某场景1:1识别准确率为百万分之一误识率下的正样本通过率为80%,转化为1:N识别准确率为,一万张注册照的人脸底库,100次1:N识别错一次的情况(这里的错误是指,将不在底库的负样本误识别为正样本),正样本的通过率为80%。

误识率降低时,正样本的通过率也会降低;误识率增加时,正样本通过率也会增加。算法的同学在接到业务需求之后,会关心调用情况,需要在误识率和正样本通过率之间寻找一个平衡点,在该点处,尽可能保证误识的概率不能太高,也要尽可能保证正样本的通过概率不能太低。

多个算法模型的感受性曲线[2]

误识率降低时,正样本的通过率也会降低。那算法工程师是如何选择阈值,尽可能保证误识的概率不能太高,也要尽可能保证正样本的通过概率不能太低?

这个问题请教了何博,何博说,

这个问题问的好,所以选择阈值没办法保证误识的概率不能太高,也要尽可能保证正样本的通过概率不能太低,这已经涉及到了算法性能的改进。阈值只能是根据场景需求,在优先保证误识率需求的情况下选择合理的阈值。毕竟同人没识别出来可以多识别几次,而识别错误则往往会造成比较大的影响,就是误识往往容易造成较大的影响,而漏识可以多识别几次,总会识别过的。

双阈值策略

前面说,一般情况下,人脸识别得分越高,识别正确的可能性越高。也即,识别得分越高,是同人对的概率越高。两个人脸的相似度分数越高,是同人的可能性越大,非同人的可能性越小。

多个识别模型级联,第一级设置一个高阈值,一个低阈值,超过高阈值认为同人,低于低阈值认为非同人,在高低阈值之间的,交给下一个识别模型。这就是分级比对思路。据说目前的指纹识别就采用这样的思路,最多的时候可以分十多级。第一级是一个快速算法,速度快,但是识别精度可能没那么高,设置个高低阈值,然后逐步交给后面复杂度高,但是精度也高的模型去处理。这样可以在很高速度的时候,也得到很高的精度。

本地识别一次,本地识别得分低,就交给云端的做法中,得分低只是非同人的概率比较高,并不意味着识别不正确,所以要设置高低阈值——高阈值表示肯定是同人,低阈值表示肯定非同人,位于中间的才能交给下一级,这样可以快速识别出大量同人非同人,只有拿不准的才交给精度更高,但是更复杂、更慢的模型。采用分级比对,就不要想着一个阈值,一个算法搞定。存在最佳阈值的概念,也即针对某场景,算法推荐的阈值,高低阈值本身就是场景相关。

欧姆定律与算法模型

欧姆定律是错误的定律,真实世界里没有哪个材料的电压和电流是成正比的。电阻根本就不是一个常数,而跟温度有关,而温度又跟电流有关,所有欧姆没有发现欧姆定律,他...发明了欧姆定律。欧姆定律只是一个模型,哲学家认为现代科学理论都是模型,牛顿力学和爱因斯坦场方程不是真理,是理想世界投射出来的影子。
模型都是错的,但有些模型很有用。
科学家关心的是模型能不能更好地反应真实世界,工程师关心的是能不能用这个模型创造出东西来。工程师思维的大道,就是先创造一个好模型,然后想办法实现这个模型。[3]

而产品经理想的是,如何用好这个模型。

现在回到本文开头的那个问题,基于双阈值设定的产品策略就很清楚了,“端+云”的识别方案,本地可以设置两个阈值,识别得分在设置阈值区间外,可以默认识别通过或不通过;在区间内,可以结合云端其它的算法模型结果做判断是否为同人,也可以直接让用户输入唯一性标识,做1:1比对。

特别鸣谢

非常感谢何博一直以来的指导和帮助。

参考文章:

[1].人脸识别评测的标准ROC曲线及其他标准 - lijiao1181491631的博客 - CSDN博客

[2].ROC曲线-阈值评价标准 - Rachel Zhang的专栏 - CSDN博客

[3].《柏拉图和技术呆子》(万维钢·精英日课S2)180-188

阈值和阀值的区别_基于双阈值设定的图像识别产品策略相关推荐

  1. ecg心率和ppg心率区别_基于ppg的心率变异性hrv分析的伪影去除

    ecg心率和ppg心率区别 Artifact removal is probably the most important and (unfortunately) most overlooked st ...

  2. 物化视图和视图的最大区别_基于catalyst的物化视图改写引擎的实现

    更新日志: 1. 2020/06/16 group by 视图的部分描述错误,已修正. 什么是物化视图 我先用我的话解释一下什么是物化视图.假设我们已经有A,B两张表,现在我创建了一张表C, C是由A ...

  3. python中构造方法和析构方法的区别_基于Python构造方法与析构方法的研究

    基于 Python 构造方法与析构方法的研究 林观德 [期刊名称] < <现代职业教育> > [年 ( 卷 ), 期] 2019(000)018 [摘要] Python 语言是 ...

  4. 文献阅读_基于双深度神经网络的轮廓线误差补偿策略研究_机械工程学报

    工程问题:在复杂曲面类零件的加工中,对五轴数控机床的加工精度要求高. 科学问题:加工精度通常由轮廓误差指标来衡量,然而传统误差降低策略(轮廓误差线估计和控制器设计)比较复杂. 解决方法:针对机床的输入 ...

  5. ocsp和ldap 区别_基于LDAP目录服务的OCSP实现模型

    基于 LDAP 目录服务的 OCSP 实现模型 徐蕾李明 [摘 要] 摘 要 提出一种基于 LDAP 目录服务的 OCSP(Online Certificate Status Protocol) 实现 ...

  6. java报价系统_基于SSM框架下的JAVA产品报价系统

    每天记录学习,每天会有好心情.*^_^* 今天和一个朋友共同完成了一个产品报价系统项目,我们在开发时选用的框架是SSM(MYECLIPSE)框架.我这个朋友知识有限,只会这个框架,哈哈,都是为了方便他 ...

  7. 证券投资深度学习_基于风险中性的深度学习选股策略

    今天我们为大家带来最新的研报内容,来自广发证券金工团队的<风险中性的深度学习选股策略>.下面让我们来一起学习吧!https://mp.weixin.qq.com/s?__biz=MzAxN ...

  8. 苹果x和xsmax有什么区别_手机资讯:Apple 认证的翻新产品是什么苹果官方翻新机和全新设备有什么区别...

    如今使用IT数码设备的小伙伴们是越来越多了,那么IT数码设备当中是有很多知识的,这些知识很多小伙伴一般都是不知道的,就好比最近就有很多小伙伴们想要知道Apple 认证的翻新产品是什么苹果官方翻新机和全 ...

  9. 货物与产品的区别_商品与一般物品和其他产品有什么区别?

    展开全部 1.定义不同. 商品是为了出售而生产的人62616964757a686964616fe4b893e5b19e31333431356665类劳动成果,是用于交换的劳动产品.一般物品指的是实体的 ...

最新文章

  1. linux虚拟终端快捷键
  2. CentOS-6.2编译Qtopia-2.2.0
  3. 【OpenYurt 深度解析】边缘网关缓存能力的优雅实现
  4. postgresql参数化查询_一个能融会贯通PostgreSQL监控的人,大概率是高手
  5. spring定时任务(@Scheduled注解)
  6. mac升级php后旧版本还在,Mac下更新自带的PHP版本
  7. 折半查找和二叉排序树的时间性能_详解二叉排序树(基础篇)
  8. 逗号后面统一加空格_十分钟搞定字幕,教你做加字幕的“快手菜”
  9. 不止鸿蒙 OS,华为的备用操作系统还有“极光”?
  10. python 自动化办公 随机生成题库文档
  11. MapGIS目录的设置
  12. 23个可以免费学习编程的网站
  13. 《电路分析基础》第11章 耦合电感电路 读书笔记
  14. 徐姗姗 20190905-3 命令行和控制台编程
  15. DTCMS 栏目调用方法
  16. 7-3 计算平均成绩 (15分)
  17. COPY NAV导航网格寻路(4) -- 生成nav网格
  18. python语法基础知识第四关第二题_Python基础语法习题二
  19. 堡垒机,ssh协议,telnet协议,b/s架构
  20. UVA10635--Prince and Princess

热门文章

  1. ina3221嵌入式linux,嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之文件系统
  2. SYBASE数据导入技巧
  3. Spring Boot基础学习笔记20:Spring Security入门
  4. 【BZOJ4198】荷马史诗,贪心之k叉哈夫曼树
  5. 3.过滤——高斯滤波器之Matlab、Octave实战、保持两个高斯直行_5
  6. 计算机怎样辅助与美工结合,环保教案:幼儿园环保美工与信息技术整合案例
  7. mysql引擎与操作系统的关系_mysql五大引擎之间的区别和优劣之分
  8. 太阳能灯_【产品中心】太阳能野营灯
  9. php实现笔记共享,[转载]利用memcached在多台服务器之间共享PHP的session数据
  10. mfc强制局部区域刷新_简述JVM内存区域划分