您好、欢迎来到现金彩票网!
当前位置:双彩网 > 相似性测度 >

既要高精度也要高性能人脸识别主流算法大合集

发布时间:2019-06-04 03:01 来源:未知 编辑:admin

  在上一篇文章中,我们回顾了人脸识别算法的发展历程,介绍了人脸识别算法从传统机器学习算法到现在的深度学习算法的演进历程。接下来,我们将详细介绍一下人脸识别常见的应用方式,以及现在主流的人脸识别算法。

  为了讲清楚人脸识别算法的设计思路,有必要首先介绍人脸识别在实际场景中的主要的三种不同的应用方式。这三种方式我们会习惯的称之为:“1:1”、“1:N”,“1:n”。

  用于回答“这是否为某人”时,该人的身份是确定,人脸识别需要做的工作是确认当前的照片是否与该人的身份一致。此时会将给定的人脸图像与计算机中存储的某人的图像比较,回答给定的图像是否为该人的。通常,一个人在计算机中会存储一幅正面或多幅不同角度的图像,我们称之为注册照。而给定的人脸图像我们一般称之为验证照。

  这种应用模式适用于门禁、出入境通关、网络实名制、办证机构等应用场所,通过证件信息获取某人身份,然后根据证件使用者的照片,保证他与证件所有者是同一个人,即实名认证下的人证合一。

  因为验证场景下,通常是直接比较两幅人脸图像提取出来的两个特征的相似度,所以我们常称之为 1:1。

  在这种场景下,人员的身份信息是未知的。我们需要将给定的人脸图像与计算机中存储的 N 个人的图像逐个比较,输出 M 幅图像,这些图像的相似度按从大到小排列,再由人来确定这是谁。当然,因为现在人脸识别算法的精度非常高,所以在一些不太严谨的场合,可以直接用相似度最大的那张图像来自动判定这是谁。

  通常,一个人在计算机中会存储一幅正面或多幅不同角度的图像。为了提高辨认的速度,注册照往往会预先提取特征并将之存储在计算机中。而给定的人脸图像,我们称之为查询照。

  这种应用模式适用于人员身份的查询和核查,比对目标库通常是常住人口库、逃犯库等覆盖面非常广泛,容量非常庞大的人脸数据库,库容量 N 通常能够达到上千万、甚至上亿级别。

  因为辨认场景下,通常需要将给定的一副人脸图像与计算机中存储的 N 个人的图像比较,所以我们常称之为 1:N。

  监控场景从名字上来看就知道,人脸识别是用于监控 (watch list) 系统(目标人筛查)。而监控场景同时具有辨认和验证的特点,人脸识别算法需要回答“这是否为要找的人”。

  在这种情况下,人员的身份信息同样是未知的。我们需要将给定的人的图像与监控目标人员进行比较,确定该人是否在监控列表中,同时确定该人身份。

  为什么说它同时具有辨认和验证的特点呢?是因为它需要搜索整个监控列表,这与辨认场景是类似的;同时他需要确定该人是否在监控列表中,如果将监控列表看作 1:1 中的 1 的话,这又类似于验证场景。

  但是它又完全不同于辨认或者验证。验证场景与它的差异很明显,我们就不说了。而它与辨认场景的差异主要在于以下几点:

  (1)在辨认场景下,给定的人虽然身份信息未知,但是他肯定存在一张(或多张)注册照存储在计算机中;

  这种应用模式适用于视频监控,比对目标一般是逃犯、管控人员或者、重点关注人员等布控人员,也可是白名单和红名单等目标人员,库容量一般为几千人甚至万人级别。

  从人脸识别的三种主要应用方式可以看到,比较两张人脸的图像是否为同一个人是所有应用的基础。从这个角度来说,所有的人脸识别应用其实都是验证场景,而人脸识别算法的验证性能是衡量该算法精度高低的最直接的指标。在数据库已知的情况下,根据验证性能可以推算出该算法在三种不同场景下的精度性能。

  而比较两张人脸图像是否为同一人,主要依靠从这两张图像中分别提取到的两个特征的相似度高低来进行衡量。因此人脸识别算法的关键,就是通过训练一个特征提取模型,从人脸图像中得到一个具有鉴别能力的特征,而相似度的计算则一般采用余弦距离。

  如何更加有效的训练出一个能够提取具有鉴别力特征的模型呢?一种思路通过搜集更多的数据去提升模型的性能(从数据上挖掘),另外一种思路通过更加有效的利用数据去提升模型的性能(从模型上挖掘)。当然,实际情况往往是两种思路同时采用。

  深度学习相比传统机器学习,一个最重大的优势就是对海量数据的利用能力。虽然对于深度学习来说,不一定总是数据越多,效果越好,但是在人脸识别领域,绝大多数情况是数据越多,效果越好。如果让我选择,我肯定会选择要更多的数据。

  在吴恩达的深度学习课程中,他曾经给出一个经典的数据与深度学习模型性能的关系曲线 数据与深度学习

  因此在人脸识别行业内,大家往往会通过获取或者制造海量的人脸数据,去充分训练人脸识别模型,来获得更好的结果。

  以商汤为例,早在 2017 年的时候,他们就已经使用了多达 30 台计算机,240 个 GPU 对 10 亿个标注样本(包含 1 亿个不同的人)并行训练,总训练时间为 1 个月左右。而现在他们的数据量的累积到达了一个什么程度,可想而知。

  虽然数据规模已经到达这样一个恐怖的地步,但是人脸识别中的数据红利还远远没有殆尽,如何进一步从数据中挖掘性能红利依然是当下人脸识别研究的热点之一。因为人脸识别应用场景的特殊性,它往往要求极低错误接受率下的正确识别率,这就更是对模型的性能提出了极高的挑战。所以可以针对不同的应用场景,如商场监控、移动办公打卡、互联网身份认证等等,采集不同场景下的大量数据进行针对性的微调。采用这样的方法,我们依然能够非常有效的提升模型在特定场景下的识别性能。

  在 2016 年以前,大家的主要研究方向集中在如何设计更高效的网络去识别人脸。在这段期间出现了如 VGG、Inception 等一系列从骨干网络入手去提升模型性能的算法。但是到了 2016 年,残差网络的面世几乎可以说是终结了各种千奇百怪的骨干网络设计,顺便从事实上终结了 image net 比赛。

  后续几乎所有的深度网络都离不开残差结构的身影,相比较之前的几层,几十层的深度网络,在残差网络面前都不值一提,残差结构可以很轻松的构建几百层,一千多层的网络而不用担心梯度消失过快的问题,原因就在于残差结构的捷径(shortcut)部分。

  BN 全名是 batch normalization 即批规范化,通过规范化操作将输出信号规范化保证网络的稳定性。具体的 BN 原理非常复杂,在这里不做详细展开。我们需要知道的是,它通过对每一层的输出规范为均值和方差一致的方法,消除了网络权重参数带来的放大缩小的影响,进而解决梯度消失和爆炸的问题,或者可以理解为 BN 层将输出从饱和区拉倒了非饱和区。它带来的优点主要有:

  Dropout 层是 Hinton 在 2014 年提出来的一个神器,专门用于应对神经网络的过拟合问题。它的操作非常简单,灵感来自于繁殖中的遗传和突变,相当于是每次训练,每个神经元只有概率 p 来参与单次神经网络的训练,等效于最后的输出层乘以一个 mask 矩阵,该矩阵有百分比为 p 的元素被置 0,其余为 1。有无 Dropout,最后的分类准确率会有明显的差异。

  伴随着 DeepID 的尝试,接下来就是谷歌的 Triplet Loss(三元组损失)。三元组损失在物理意义上就是通过学习,使得同类样本的 Positive 样本更靠近 Anchor,而不同类的样本 Negative 则远离 Anchor。

  它在数学表达上也直观简单,损失函数定义为同类样本的距离减去不同类样本的距离。缩小该损失函数,就意味着缩小同类样本的距离或者增大不同类样本的距离。它的实际使用效果也非常的好,特别是用在迁移学习上面。

  接下来测度学习的应用集中在了对训练过程中的分类器的改造上面。因为分类器采用的全连接形式等效于计算余弦距离,而余弦距离衡量的是不同特征之间的夹角,但是在这种形式下 Softmax 函数并没有直接作用在角度上面,对决策边界的影响很小,所以导致优化 Softmax 函数并不能保证真正缩小类内差异。

  人脸识别在苏宁的各种应用场景下都得到了广泛的应用。最典型的应用如员工打卡和苏宁园区内部的监控,相对来说人脸数据库的规模比较小,场景比较受控,而且人员的配合度比较高。我们的算法在这上面都取得了非常高的识别精度,千万分之一 FAR 下的 FRR 在 5% 以内。

  但是,对人脸识别来说,最具有挑战性的场景还是大规模的 1:N 的人脸应用。N 的规模通常在千万级别或者亿级别,直接从绝对数字上放大了人脸识别的产生的各种错误。这种场景通常会出现在公安系统的安防场景下,其他情况下的具体应用还几乎没有。但是其实在智慧零售中也需要大规模 1:N 的人脸识别能力。

  苏宁线下门店人脸识别应用的难度又进一步增加:首先这是一个非用户配合的场景;其次苏宁有几亿会员,这个 N 是很恐怖的;再次,从业务上希望能够对用户进行分组,能够去除店员的信息,识别出 VIP 会员,还要能对新用户进行挖掘,同时要能做到黑名单的安防布控;除此之外,有几千家门店的数据推流,系统的流量也是很大的。要设计这样的解决方案是非常恐怖的。

  为此,苏宁专门成立了数据处理部门,用于获取、清洗和标注数据。除了已知常见的那些公开数据集,如 MS_celeb_1M、VggFace2、CASIA_WebFace 等。我们也利用苏宁多样化的内部场景,构建了丰富的针对不同场景的人脸数据库资源,这样训练出的模型在实际场景中有更好的区分能力。

  此外,我们也利用多种图像处理手段,以及利用对抗式生成网络生成了丰富多彩的人脸样本,进一步提高了模型精度。

  苏宁在人脸识别算法上,尤其是模型上也做出了许多的探索。美国普渡大学生物工程学教授 Eugenio Culurciello 在他的神经网络设计史中给出了一张有关不同的骨干网络在 ImageNet 上的表现的分析图。我们在它的基础上重点测试了 resnet、mobilenet 等几种骨干网络,根据速度和精度选出了最适合我们应用场景的模型。

http://niatsholat.com/xiangsixingcedu/71.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有