AIQ | 基于端 + 云和正则化方法的人脸识别技术



转载请注明 AIQ - 最专业的机器学习大数据社区  http://www.6aiq.com

AIQ 机器学习大数据 知乎专栏 点击关注

一个成熟的人脸识别系统通常由人脸检测、人脸最优照片选取、人脸对齐、特征提取、特征比对几个模块组成。

图 1 人脸识别系统核心流程

从应用场景看,人脸识别应用主要分为 1:1 和 1:N。1:1 就是判断两张照片是否为同一个人,主要用于鉴权。而 1:N 的应用,首先得注册 N 个 ID 的人脸照片,再判断一张新的人脸照片是否是某个 ID 或者不在注册 ID 中。1:1 和 1:N,其底层技术是相同的,区别在于后者的误识率会随着 N 的增大而增大,如果设置较高的相似度阈值,则会导致拒识率上升。拒识和误识二者不可兼得,所以评价人脸识别算法时常用的指标是误识率小于某个值时(例如 0.1%)的拒识率。

人脸识别最为关键的技术点就是人脸的特征提取,直到 2014 年 deepface 首次将深度学习的引入,这项技术才得到了质的突破,使得人脸识别技术真正走到了商业可用阶段。目前的研究主要集中在网络结构的改进和损失函数的改进上。随着研究的深入,目前人脸识别技术上的壁垒正在被打破,而人脸数据库的资源是业内巨头保持领先的另一个重要武器。


苏宁:前端实时算法 + 资源计算

MTCNN、RSA 等基于深度学习的方法在人脸检测的任务中展现出了惊人的效果,对于遮挡、大角度的人脸变化、极端的光照情况都能较好的应对。

不同于学术界使用更复杂的网络来提高人脸检测在困难数据集上的精度,在实际商用场景中,苏宁更关注于人脸检测算法的实时性和对计算资源的消耗。因为检测出的低质量人脸照片对后续的人脸识别工作帮助甚微,而算法的性能优化却可以让人脸识别的应用场景大大增加。

以苏宁线下门店部署的高清摄像头为例,在购物高峰时段每分钟有几百人涌入门店,需要在一个画面中检测出 20 多个人脸并进行跟踪,这对算法提出了很高挑战。

考虑到苏宁人脸应用丰富的场景,光是线下门店就有几千家,为了降低服务成本,我们采用了“端 + 云”的解决方案。人脸检测、人脸跟踪、人脸最优照片选取的逻辑放在前端进行,而人脸的建模、人脸比对的服务放在中心服务器进行。同时为了进一步降低成本,通过与摄像头硬件厂商的深度合作,可以将人脸检测、人脸跟踪、人脸最优照采集的算法逻辑放在嵌入式设备,节省服务器的同时也提高了系统的稳定性。

图 2 人脸识别服务系统架构

对于前端设备的选择,有很多因素要考虑,一个很大的误区是普通安防摄像头就可以满足人脸的采集。安防摄像头通常置于棚顶,一般距离地面都有 2.7 米以上,在行人经过最佳采集位置时很难采集到正脸,而且镜头分辨率较低,成像噪声大,即使采集到了人脸也无法满足人脸识别应用的需求。从识别的准确率考虑,通过实验发现要保证人脸识别的准确率,人脸照片中双眼瞳距之间要大于 80 个像素,这就意味着在选择摄像头时要充分考虑焦距和分辨率两个指标。

对于人脸最优照片采集,这更多的是一个工程化的工作,其对最终的产品表现也有很重要的影响。通常要考虑人脸的朝向、人脸的模糊程度、人脸的面部表情、是否存在遮挡等因素给采集的人脸图像做一个质量打分。要结合场景应用考虑算法的复杂度,比如在一些场景中,可以完整跟踪一个人的人脸轨迹,并从中选择最优的一张照片;而在一些实时性要求比较高的场景中,则要快速做出相应,一旦发现高质量的人脸照片,立即触发上传逻辑。

即使只上传人脸照片到云端,在如此多的人脸应用场景中,对网络的带宽以及响应的速度还是提出了很高的挑战。为了降低计算、带宽、存储的资源消耗,我们会对进行特征提取的人脸照片尺寸和大小进行优化。考虑到后续人脸提取的神经网络会对人脸进行归一化,我们认为人脸大小在满足比对要求时控制在 150 个像素是比较合适的。

同时对图片质量的压缩也是非常必要的。经我们测试,75% 的 jpeg 压缩率对人脸识别的性能影响可以忽略,却可以节约几倍的带宽资源。除了常用的 jpeg、png 图像编码,苏宁还使用 WebP 图像压缩格式,可以使带宽资源的占用进一步降低 20%~30%。

人脸识别背后的算法模型


softmaxLoss

其实人脸识别与 imagenet 的图像分类比赛并没有本质的区别,苏宁在早期拍照购物中累积的商品识别项目经验很多都可以用在人脸识别的项目中,比如早期的 VGG net、Inception、后来的 ResNet 这些网络结构在图像分类中取得的成功同样可以在人脸识别中复现。

图 3softmaxLoss 结构

图 3 是一个典型神经网络输出层 softmaxLoss 的结构。其 lossfunction 为

其中 xi 表示第 i 个样本属于第 yi 类的人脸照片所提取的特征,wj 表示最后一层全链接层属于第 j 个类别的权重,b 为偏置 bias,m 和 n 分别对应 batch size 和分类的类别数。

不同于 imagenet 这种 close-set 的分类任务,人脸识别问题实际上是在一个 open-set 上进行测评,所以是一个特征提取的问题,需要找到一个合适的特征度量空间,softmaxLoss 训练的分类器虽然可以将相似样本成功划分,却不能保证类内的聚拢。为了解决这个问题,学术界提出了一系列方法来聚拢类内距离,增大类间距离,从而学到一个泛化能力更强的特征表示。


人脸聚类

人脸聚类的工作已经有很多,比如 Center loss、Contrastive loss、Triplet loss。重点介绍我认为一个突破性的工作 sphereface,这个工作提出将 weights 归一化,同时将 bias 置 0,把问题转化为角度约束,表示更加清晰,变为,从公式中可以很明确的看到影响模型的三个要素:weights 的模长、feature 的模长、对θ加 margin。

    图 4 人脸聚类 margin 几何示意图


weightsnormalization

weightsnormalization,即,其实这种操作之前就有人研究过,不过更多是把其看作 weightdecay,一种为了避免过拟合的 L2 正则惩罚,并没有从几何角度更多解读它。其进行反向传播对权重 w 进行更新时,当其中一类样本过少的时候,会导致其样本对梯度影响不明显,导致该类别的权重学习不充分,权重的 L2norm 较小 [1]。由于 softmaxloss 的决策边界是,bias 置零后为,两向量正交,如果其中一个权重学习的不充分,L2norm 较小时,决策边界也会向该 w 倾斜,这会降低分类器的性能,如图 5 所示。

图 5 weights normalization 对决策边角的影响

苏宁在实际项目中也遇到了训练样本不均衡的问题,我们通过镜像、随机扰动等方式增加照片数较少类的样本。这种 data augmentation 虽然可以增加该类别的训练样本,却不能有效的增大该类别样本的凸包,对分类器的性能提升有限,而我们通过 weightsnormalization 则使学到的决策边界更加平衡,可以进一步提升分类器性能。

featurenormalization

再来看一下 featurenormalization,文章 [2][3] 对 feature 的 L2-norm 都有比较细致的分析,发现高质量正面人脸得到的 featureL2-norm 比较大,而模糊低质量人脸得到的 featureL2-norm 比较小。这也比较好解释,当一张人脸照片质量比较低的时候,能够区分人脸的这些神经元无法被充分激活,得到的 feature 自然比较小。

从 weightsnormalization 的分析中可以看出 featurenormalization 对决策边界其实没有影响,无外乎样本是分布在球体表面还是分布在一个锥体里。但是其对 loss 的作用结果是不同的,进行 featurenormalization 后再 scale 到一个比较大的值,通过 softmax 后其分布会变得更加集中,在反向传播的时候,其权重的更新会得到加强,从而加强训练的模型对低质量人脸的识别能力。

在线下场景的实际落地效果看,受应用场景的条件限制,很难保证采集人脸照片的高质量,而通过 featurenormalization 训练的模型在实际应用中泛化能力更强。

Augular margin

Sphereface 提出 angularmargin 是一种全局约束,m=4 的约束条件太强,很多样本无法满足 max intra-class angle < min inter-class angle 的分类条件,对大数据集训练时较难收敛,loss 反而增大。AM-softmax[4] 和 ArcFace[5] 的 margin 条件则相对宽松。AM-softmax 中的 margin 实现与 bias 很像,所不同的是 margin 只作用于本类别的 targetlogit。而 ArcFace 则进一步将 margin 的大小与θ关联起来。

人脸识别最具挑战的场景就是大规模的 1:N 的人脸应用,而目前市面上的成熟商业产品还几乎没有,以前这种需求集中在公安系统,其实在智慧零售中也需要大规模 1:N 人脸识别能力。

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

这里不过多讨论系统架构的复杂,单从 1:N 的开放场景的模型设计介绍一下苏宁的实战经验。在 N 如此大的情况,要求误识率很低,又要保证模型对相似人的分辨能力,甚至能区分双胞胎,仅靠前面提到的全局 margin 是很困难的。除了将人脸按地区区域分组降低 N 的比对范围,我们另一个实际经验是通过 tripletloss 进一步增加 localmargin。

在苏宁这样规模的应用场景里,其实人脸数据的来源和规模不是问题,前面提到的全局 margin 在这样的超大规模数据集中显得有些乏力,tripletloss 则可以通过三元训练样本的选择技巧来增加局部 margin。

不过我们实践发现现有的 tripletloss 是作用在欧式空间的,好不容易通过 global angular margin 学到的特征子空间再映射到欧式空间性能反而会有下降,为了解决这个问题,我们将 Dist(A,P)+margin 的目标改为 angle(A,P)+margin,从而不改变前面学习到的特征分布

为了找到合适的 triplet 样本对来调整 localmargin,我们从三个角度考虑进行 hard-example 的挖掘:图像质量不高的样本、学习不充分的样本、难以区分的样本,其中前两种类型的样本通常的表现就是 featurenorm 比较小,第三种类型的样本表现是 feature 距离其他类别过近。

在训练中要注意逐渐增加训练样本困难程度,可以有效防止模型梯度弥散,模型的表现往往可以更进一步。我认为 tripletloss 有很大的工程应用研究价值。作为一种数据驱动的方法,其最大的优势是可操作空间非常大。


榨取人脸数据金矿

对于人脸识别网络训练另一个重要问题是训练数据的获取,已有公开数据集中可玩性比较强的几个数据集有 MS_celeb_1M、VggFace2、CASIA_WebFace。这些数据集存在一个普遍问题就是噪声很大,需要清洗,而且我们实践发现用公开数据训练出的模型有一个很普遍的问题就是对东方人识别能力不够优秀。为了克服这个问题,苏宁也构建了东方人的人脸数据库资源,这样训练出的模型在实际场景中有更好的区分能力。

图 6 苏宁“北斗”系统人脸检测效果

除了苏宁一些内部场景的人脸数据采集,为了更加丰富我们的人脸样本,我们也通过互联网搜索引擎收集了海量名人人脸库。有了丰富的图像来源还不够,因为这些人脸图像有很严重的噪声;虽然算法模型对一定的人脸噪声足够鲁棒 [6],我们研究发现,更加高质量的数据集的确可以提高算法模型性能,所以仍需要通过清洗标注来去除这些噪声数据。

苏宁的图像团队早在 2015 年就关注到了数据标注的问题,并在商品识别项目中累计了丰富的工程经验,这些经验在人脸数据的清洗标注中也同样适用。具体我们通过多级过滤的方案对人脸数据进行清洗:首先是通过一些简单的分类器去除比较严重的噪声;然后我们发现数据量足够大的时候,同一个人的人脸分布是非常紧凑的,我们利用这一先验知识对类内样本清洗、类间相同样本进行聚类合并;除了聚类清洗,我们还使用一个训练好的模型,对已有的样本进行预测,根据置信度对样本进行过滤,这样清洗后的数据经过人工校验后再对模型进行 fine-tune,从而逐步得到比较干净的一个训练数据。

图 7 商品晒单图像清洗流程


人脸识别的当下与未来

除了模型的改进和源源不断高质量的人脸数据,行业内各家技术比拼还体现在算力上。俗话说天下武功,唯快不破。我们通过高性能 GPU 服务器组成的集群快速迭代验证算法,使模型更新速度从几周更新一次到十几小时更新一次,让不同的模型适配不同的场景,让算法更精准。苏宁拥有 18 万员工以及几千家门店,2018 年还会再增加 5000 家门店,通过人脸识别技术在苏宁内部以及线上线下的应用,苏宁的人脸识别算法能力还会进一步的迭代提升。

虽然人脸识别发展到今天已经相对成熟,机器对于人脸的识别能力已经远超人类。但是在商业应用中这种基于二维图像的人脸识别还是受到很多限制,比如人皮面具的活体攻击问题,线下各种场景都有复杂的光照情况,比如逆光、光线较弱、室外。夜晚苏宁的酒店走廊里可能光照比较暗,而在一些门店的条件又限制了摄像头安装的角度和高度,同时也不希望摄像头的安装影响顾客的购物体验,这都对人脸识别的落地提出了挑战。

为了解决这些问题,苏宁已经开启基于 3D 传感器的人脸识别技术的研发。iphoneX 的成功为人脸识别开启了新的思路,这种基于 VCSEL(垂直腔面发射激光器)3D 结构光的人脸识别硬件也一定会成为未来的标准输入设备,据了解华为和小米的下一代旗舰机也都会配备该硬件。VCSEL 芯片具有效率高、响应时间短的特点,过去主要用于短距光通信,其发射的红外光经过反射、衍射后可以形成几万个红外结构光射出。

其红外阵列图像的响应强度就是人脸的三维结构信息,通过预处理和归一化后,同样送入神经网络中进行训练学习,得到的人脸识别准确率甚至要优于传统的人脸识别方法。基于 3D 结构光测距得到的人脸特征具有响应快、防攻击、对环境光照不敏感的优点,可以很好的补充苏宁的一些受限场景下的人脸识别应用。


参考文献

[1] Guo Y, Zhang L. One-shot facerecognition by promoting underrepresented classes[J]. arXiv preprintarXiv:1707.05574, 2017.

[2] Parde C J, Castillo C, Hill M Q, et al.Deep Convolutional Neural Network Features and the Original Image[J]. arXivpreprint arXiv:1611.01751, 2016.

[3] Ranjan R, Castillo C D, Chellappa R.L2-constrained softmax loss for discriminative face verification[J]. arXivpreprint arXiv:1703.09507, 2017.

[4]Wang F, Liu W, Liu H, et al. AdditiveMargin Softmax for Face Verification[J]. arXiv preprint arXiv:1801.05599, 2018.

[5] Deng J, Guo J, Zafeiriou S. ArcFace:Additive Angular Margin Loss for Deep Face Recognition[J]. arXiv preprintarXiv:1801.07698, 2018.

[6] Wu X, He R, Sun Z, et al. A light CNNfor deep face representation with noisy labels[J]. arXiv preprintarXiv:1511.02683, 2015.


更多高质资源 尽在AIQ 机器学习大数据 知乎专栏 点击关注

转载请注明 AIQ - 最专业的机器学习大数据社区  http://www.6aiq.com