发布时间:2023-12-26 19:00
本文作者根据多年人脸识别项目经验,总结了人脸识别技术在安防、商业领域应用及产品设计细节,汇总成应用层下的人脸识别系列文章。本文为系列文章的第三篇——介绍人脸比对相关内容。全文围绕人类比对类型、人脸比对要素展开介绍。
人脸比对类型可分为四种,分别是:人脸1:1、人脸1:n、人脸1:N、人脸M:N。
人脸识别应用无非就是围绕着这四种比对方式展开,下面将依次介绍各种比对类型。
人脸1:1一般用于人证核验,可以简单理解为:证明你就是。
例如:在乘坐火车、飞机,出入境,银行办卡时,通常需要验证本人与其持有身份证是否为同一个人。
如下图,系统只需读取二代身份证中的人脸照片,与现场抓拍的本人照片做比对即可。
人脸1:1又称为静态人脸比对,同时具有配合式的特点,完成比对需要用户携带身份证并主动配合采集人脸。
人脸1:n:将一张人脸照片与人脸库中的多张人脸逐一进行比对,人脸库有多少人脸就需要比对多少次——平台采集了“我”的一张照片之后,从海量的人像数据库中找到与当前使用者人脸数据相符合的图像,并进行匹配,找出来“我是谁”。
人脸1:n又称动态人脸比对。
比对照片是从动态视频中获取的,同时具有非配合特点——整个比对过程是无感知的,不需要人为配合。这两个特性使人脸1:n能迅速落地于公安追捕逃犯,但时其难度要远高于人脸1:1 。(其通常会受到光照变化、人脸姿态的影响——比如侧脸、低头、逆光现象,会大大提升人脸漏报率。)
人脸1:n中“n”的大小(人脸库照片的数量)会影响人脸识别的准确率和比对速度,所以比对人脸库规模会设置的相对较小。
人脸1:N又称静态大库检索:即以人脸图片、人脸相似度作为检索条件,在人脸库中搜索与其相似(相似度大于设定阈值)的图片——类似于百度以图搜图。
检索过程实际就是:进行N次人脸比对,并留下比分大于阈值的结果。
人脸1:N的人脸库规模相较于人脸1:n会大很多,最高可支持亿级人脸检索,所以这里的N为大写。
人脸M:N实际就是两个人脸库进行比对。
例如:人脸库A有M个人脸,人脸库B有N个人脸。如果想查看人脸库A和B包含多少个相同的人,就需要用人脸库A中M个人脸逐一与人脸库B中N个人脸进行比对,相当于是M个人脸1:N相加的结果。
人脸M:N常用于惯犯排查、身份查重。
例如:办案人员在处理类似三抢一盗的案件中,一般来说80%的案件是惯犯所为。于是,将线索地点路人库与惯犯库进行人脸M:N比对碰撞,可快速排查嫌疑,找出侦查方向。
人工智能算法的演进必须有数据作为支撑。
使用大量标注好的数据训练模型,可将识别的准确率从70%提升到99%水平。客观、精准的数据是人工智能应用必须具备的条件。
获取人脸数据的五种方式:
人脸比对库为人脸识别提供比对模板——人脸1:n、人脸1:N、人脸M:N必须要有人脸比对库才能进行比对。
系列第二篇文章《应用层下的人脸识别(二):人脸库》详细的介绍了人脸库的建立方法。
比对阈值:人脸比对的相似度。
人脸比对结果以相似度值呈现,在人脸比对之前需要设定一个相似度的门槛值,大于这个门槛则判定两张照片可能为同一个人。
比对阈值对人脸识别的准确率、漏报率影响颇大,比对阈值设置的越高准确率就越高,漏报率也会随之升高。比对阈值没有一个固定的标准,应根据应用场景来灵活调整。
例如:刷脸支付更关注比对准确率,需要调高阈值;而公安嫌犯人脸布控要求降低漏报,就需要适当调低阈值。
人工智能的三要素是算法、算力和数据,而芯片决定了算力。
深度学习工程的两大关键环节training(训练)和inference(推测)需要大量的算力支撑,普通的CPU无法满足计算要求。
相继推出的高性能GPU、TPU、FPGA、ASIC等加速芯片,大大提升了计算速度,同时也促进了算法的发展。
GPU在人脸1:n、1:N、M:N比对中是不可或缺的,而部分人脸1:1计算量不大,可以不使用加速芯片。亿级人脸检索在GPU的加速下可以达到秒级返回结果。
人脸算法效果决定了人脸识别的上限,也是人脸比对最关键的要素。随着深度学习技术的普及,各大公司的人脸算法效果差距也越来越小。
目前主流的人脸识别算法可以分为以下四类:
2018年11月20日公布的,有工业界黄金标准之称的全球人脸识别算法测试(FRVT)结果(如下图):
排名前五的算法都被中国包揽:
【opencv】error: (-215:Assertion failed) ssize.empty() in function ‘cv::resize‘报错原因
wx.chooseMessageFile ,微信小程序上传文件word,excel
LabVIEW FPGA PCIe开发宝典-实战篇:实验63:PCIe DMA+16位8通道ADC(模拟数据采集卡)
不止Kali 和 Aircrack-ng | 无线渗透工具合集
uniapp微信小程序无法使用本地静态资源图片,背景图在真机不显示方法
SpringBoot接口 - API接口有哪些不安全的因素?如何对接口进行签名?