人脸识别已经成为成为计算机视觉领域最热门的应用之一,很多刚入门的 AI 新手都或多或少接触过人脸识别,但纸上得来终觉浅,在实际应用中,往往会遇到各种各样的问题,比如如何保证不同环境下人脸识别的准确率,极端环境下如何进行人脸识别等等。
在本次公开课中,张德兵将为大家带来海量数据下的分布式训练探索,极端条件下人脸识别的测试,工业界一线的实战经验等诸多一手知识。
免费报名地址:https://edu.youkuaiyun.com/huiyiCourse/detail/791
作者简介:张德兵,格灵深瞳首席科学家和算法部负责人。
作者 | 张德兵
编辑 | 阿司匹林
出品 | 人工智能头条(公众号ID:AI_Thinker)
人脸识别已经成为成为计算机视觉领域最热门的应用之一,很多刚入门的 AI 新手都或多或少接触过人脸识别的相关知识,但是纸上得来终觉浅,在实际应用中,往往会遇到各种各样的问题,比如如何保证不同环境下人脸识别的准确率,极端环境下如何进行人脸识别等等。
为了帮大家解惑,我们特意邀请到了格灵深瞳首席科学家和算法部负责人——张德兵,为大家带来主题为“一亿 ID 的人脸识别训练和万亿人脸对(Trillion Pairs)的人脸识别评测”的公开课。
本期的公开课主要包含以下 4 个方面的内容:
- 人脸识别背景介绍
- 人脸识别前沿算法简介
- 分布式人脸识别训练
- 大规模人脸检测平台介绍
一、人脸识别背景介绍
简单来讲,人脸识别这个问题,就是给定两个人脸,然后判定他们是不是同一个人,这是它最原始的定义。它有很多应用场景,比如银行柜台、海关、手机解锁、酒店入住、网吧认证,会查身份证跟你是不是同一个人。这个应用的主要特点是,在大多数场景下都需要你先提供一个证件,然后跟自己的人脸做比对。手机解锁可能是个例外,但也要求你提前注册一张人脸,然后再进行比对。这是最原始的形式,由用户直接提供需要对比的两个人脸。这也是最简单的形式,相当于做一个二分类。
进一步来讲,如果想要去做人的搜索呢?比如我们有一个大小为 N 的人脸库,有一张待检索的图片,让我们判断这个人有没有在这个人脸库中出现过。这种情况下,要回答的就有 N 个问题了,分别是:这个人脸是不是库中的人脸 1、是不是人脸 2,一直到是不是人脸 N。如果这 N 个问题回答都是“否”的话,就意味着这个人不在人脸库里面。不在人脸库是一个很难的问题,等于 N 个问题都得回答对,然后才能真正确认它并不这个人脸库里。
实际使用时一般是静态的搜索,比如有一个公安的民警,他从视频或者图片里找到目标人物,把他的脸框出来,然后提交到系统里,在库里面做搜索。然后系统会返回,比如 Top K,K 一般是几十或者 100 这个量级的数字,会按照相似度把这些人脸排出来,然后人工验证到底哪些是对的。如果 Top 1 就是对的那最好,一般如果能够排到 Top 10 就算是不错的结果,但在 100 名以后的话,这个结果很难对使用的人有帮助了。如果允许 Top K 的话,这个底库是可以做到比较大的,因为并没有要求一定放到 Top 1。
公安评测时,在各个省公安的环境上做评测,底库一般都比较大,到千万的量级甚至到亿的量级,这也是因为最近几年深度学习发展的非常快。最早期时只能做静态检索,而且结果还不太好,随着深度学习算法的发展,现在很多公司的算法都越来越好了,评测的时候也会很难区分各个厂家的算法到底谁好谁坏,所以测试本身这个问题越来越难,用来检索图片的质量也越来越苛刻,实际应用中很多问题也很苛刻,比如嫌疑人在摄像头里出现距离比较远,有侧面的,或者帽子遮挡,戴眼镜等现象。
给大家举个例子,下面是我在互联网上找到的明星的照片,在真实场景里 query 的质量跟这个差不多,有的时候比这些更难一点。现在主流人脸算法解决这种问题时,当底库是千万量级时,top1 是召回率还是很高的,百分之八九十的问题不是很大,甚至还会更高一些。
当然,在安防或者其他应用场景里有更难的任务,就是人脸的 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 个数量级,或者要求我们有更聪明的使用方式,在还有很多研究的空间。
还有一类应用是人脸虚拟 ID 的聚类,虚拟 ID 就是我们不知道每个人的证件信息,只有大量的摄像头抓拍结果,我们想根据这些人脸的图像特征和出现的时间、空间等先验信息进行聚类,这样可以挖掘用户的轨迹和行为习惯。这些信息在很多场景下非常有用,最简单的是人脸相册的聚类,这个应用很简单,因为你只需要在一个人的相册里做聚类就可以了,库很小。但在安防、零售等场景都是城市级的数据,这个做好的话可以带来很有价值的信息,比如谁跟谁

本文探讨了人脸识别的最新算法,包括 DeepID、FaceNet 和 ArcFace 等,并介绍了分布式人脸识别训练方法,以及大规模人脸评测平台。在实际应用中,面临如极端环境、大规模数据和误报率等问题,文章提供了工业级解决方案。
最低0.47元/天 解锁文章
1528





