人脸识别工作流程
人脸识别背景:
简单来讲,人脸识别这个问题,就是给定两个人脸,然后判定他们是不是同一个人,这是它最原始的定义。它有很多应用场景,比如银行柜台、海关、手机解锁、酒店入住、网吧认证,会查身份证跟你是不是同一个人。这个应用的主要特点是,在大多数场景下都需要你先提供一个证件,然后跟自己的人脸做比对。手机解锁可能是个例外,但也要求你提前注册一张人脸,然后再进行比对。这是最原始的形式,由用户直接提供需要对比的两个人脸。这也是最简单的形式,相当于做一个二分类。
注:1:1
进一步来讲,如果想要去做人的搜索呢?比如我们有一个大小为 N 的人脸库,有一张待检索的图片,让我们判断这个人有没有在这个人脸库中出现过。这种情况下,要回答的就有 N 个问题了,分别是:这个人脸是不是库中的人脸1、是不是人脸2,一直到是不是人脸N。如果这 N 个问题回答都是“否”的话,就意味着这个人不在人脸库里面。不在人脸库是一个很难的问题,等于 N 个问题都得回答对,然后才能真正确认它并不这个人脸库里。
实际使用时一般是静态的搜索,比如有一个公安的民警,他从视频或者图片里找到目标人物,把他的脸框出来,然后提交到系统里,在库里面做搜索。然后系统会返回,比如 Top K,K 一般是几十或者100这个量级的数字,会按照相似度把这些人脸排出来,然后人工验证到底哪些是对的。如果 Top 1 就是对的那最好,一般如果能够排到 Top 10 就算是不错的结果,但在 100 名以后的话,这个结果很难对使用的人有帮助了。如果允许TopK的话,这个底库是可以做到比较大的,因为并没有要求一定放到 Top 1。
注:1:N
当然,在安防或者其他应用场景里有更难的任务,就是人脸的 N : N 搜索,这种情况下我们会有大量的摄像头,每一个都在实时抓拍,有非常多待确认的抓拍人脸,同时库也是相对比较大的。举个例子,在安防领域,假设我们有 100 个摄像头,然后每个摄像头每天抓拍 1 万个人,那么总的搜索次数就是 100 万次。假设这一天有 10 个嫌疑人被摄像头抓拍到,假设我们需要在一个 10 万大小的底库里面去搜索他们。我们有一个算法,这个算法这一天总报警 100 次,警察每一个都去确认,最后抓到了 9 个嫌疑人,这看起来还不错,因为总共出现了 10 个人,抓到了 9 个,召回率是 90%。那我们来看看误报率,100 次报警,对了 9 次,错了 91 次,误报率就是91 除以 100万×10万,大概算下来是 10亿分之0.91,约为 10亿分之1 的误报率。
这个指标在现在的人脸识别算法里还算比较不错的了,但是在公安民警看来没有那么理想,因为他们出警了 100次,只抓到了 9 个人,他们非常想出警 10 次就抓到 9 个人,这样成本就会低很多。那我们来看一下出警 10 次抓到 9 个人的误报率是多少呢?看起来少了一个数量级,但实际上要求误报率要提高两个数量级,因为这个时候误报的次数只有 1 次,1 除以 100万×10万,就是已经到了千亿分之一,这个就非常难达到。即使有一个千亿分之一的算法也只能支持 100 个摄像头的需求,在很多城市里轻轻松松就有上万个摄像头,甚至几十万个。所以算法还要在误报率方面再降低 N 个数量级,或者要求我们有更聪明的使用方式,在还有很多研究的空间。
注:N:N
人脸识别的基本流程:
人脸识别的基本流程,首先要检测到人脸,检测到之后一般会做关键点的定位,把他的眼睛、鼻子、嘴角等信息都定位出来,利用这个信息对人脸做个矫正,把它变换到比较正情形,便于后面模型分析或者处理时各个部分更好的对齐。最终会提取得到一个人脸的描述特征,通常是一个 100 多维到几百维的特征表达,然后我们用不同人脸特征之间的相似度或者距离,相似度是越高越好,距离是越小越好,去刻画两个人之间的关系,再卡一个域值,来判断这两个人是否为一个人。这次我们讲人脸识别主要就是最后的人脸特征提取的部分。
影响人脸识别的重要因素:
这里我标红了“模型测评”,评测是件非常难的事,我们针对不同的应用场景做了十几个不同类型的评测 ,因为评测做的不好的话,会影响模型设计,让你判断不清楚哪个模型好、哪个模型差。
大规模人脸评测平台介绍:
之所以要做这个事情有几个原因:
第一,学术界曾经有很多非常有名的测试集,比如 LFW 有 6000 对人脸 1:1 认证。但现在有很多算法都可以达到 99% 以上甚至 99.8% 的好成绩,所以这个效果已经不能很好的衡量算法的好坏了,可能两个同样在 LFW 上达到 99.8% 的算法,换一个数据集时结果会差很多。
第二,MegaFace 在学术界也是非常有名的。它的测试条件是在 100 万干扰项中找到目标人脸,一开始的时候大家觉得这是个很难的问题,但随着学术界几年的研究,排行榜的第一名已经超过 98.9% 了,看起来也有一定的饱和趋势。这里面一开始是有些噪音的,后来被一些研究人员发现之后做了些清理,就发现这个测试集没有想象得那么难。另外,它提供的正样本人脸对的比较有限,正样本每个人的变化并不是特别的大,导致这个问题可能并没有一开始大家预想的那么难。
于是,我们想办法去扩充做一个更大规模的训练集,希望做更客观的评测,帮助在人脸方面做研究的同行们有一个未来几年还可以继续用的测试平台。我们做了两件事情,第一个是做一个比较大的人脸训练集,第二个是做比较大的人脸测试集。训练集大概是有 18 万人,共有 680 万张图片左右,测试集大概有 187 万的人脸。
lfw数据集是为了研究 非限制环境下的人脸识别问题而建立。
LFW 人脸数据库是由美国马萨诸塞州立大学阿默斯特分校计算机视觉实验室整理完成的数据库,主要用来研究非受限情况下的人脸识别问题。LFW 数据库主要是从互联网上搜集图像,而不是实验室,一共含有13000 多张人脸图像,每张图像都被标识出对应的人的名字。
lfw数据集标签意义:
LFW数据集主要测试人脸识别的准确率,该数据库从中随机选择了6000对人脸组成了人脸辨识图片对,其中3000对属于同一个人2张人脸照片,3000对属于不同的人每人1张人脸照片。测试过程LFW给出一对照片。
询问测试中的系统两张照片是不是同一个人,系统给出“是”或“否”的答案。通过6000对人脸测试结果的系统答案与真实答案的比值可以得到人脸识别准确率。 这个集合被广泛应用于评价 算法的性能。
可以看出,在LFW 数据库中人脸的光照条件、姿态多种多样,有的人脸还存在部分遮挡的情况,因此识别难度较大。 LFW 数据库性能测评已经成为人脸识别算法性能的一个重要指标。
欢迎分享,转载请注明来源:优选云