58安全——涉政人脸识别技术实践

原创
08/24 08:48
阅读数 1.3K


01

导语

本文介绍信安兜底能力中涉政人脸识别技术的实践,整体实现以人脸比对为支持,主要包括人脸检测、人脸对齐、人脸识别三大模块。本文主要分享方案中各个模块的技术选型及检测、识别模块相应的优化。


02

背景

随着公司业务的发展,产品情况多种多样比较复杂,图像和视频在公司的多条产品线业务起着越来越重要的作用。为与政策法规权威同步,各业务线要避免出现敏感图片,公司多种场景需要接入政治人脸识别服务。比如云账号的先审后发机制,先把头像等信息统一送审至集团风控部门,进行涉政检测,审核通过后再进行展示。每天的审核量级在亿级别,只依赖人工审核难以实现。在此背景下升级开发了涉政人脸识别服务,支持运营人员自助调整审核阈值,配备有敏感人物审核库。

 图1. 涉政敏感图片示例


03

涉政人脸识别技术方案

涉政人脸识别服务主要以人脸比对技术为支持。整个的流程设计如图2所示:将接收到的图片依次通过人脸检测模块检测出人脸、人脸对齐模块对人脸进行校正、人脸识别模型提取到人脸特征,对提取到的特征与提前导入的涉政敏感人物特征库中的人脸特征进行比对,得到一个分值;若分值高于设定的阈值,则认为此图像有包含政治人物的风险,对此图像进行过滤或人工推审。

 图2. 涉政人物过滤服务流程设计

1. 人脸检测

人脸检测是人脸比对流程中的前导工作,将检测后的人脸进行裁剪后作为后续工作的信息输入。裁剪后的人脸图像中人脸占很大一部分比例,可极大的减少其他干扰信息对人脸识别结果的影响,也减少了后续机器的计算量。

图3. 人脸检测

人脸检测技术也经历了较长时间的发展。早期的人脸检测方法主要通过人工提取人脸的纹理特征训练分类器,比如opencv源码中自带的人脸检测器利用haar特征进行人脸检测,但是人工特征容易受到环境的影响,在环境变化强烈的时候检测效果不理想,例如弱光,人脸不全等。随着深度学习的发展,基于CNN的人脸检测在准确度上相比传统方法有大幅度提升。比如通用的目标检测算法中继承过来的人脸检测算法,利用faster-RCNN来检测人脸,可以适应环境变化和人脸不全等问题,但是时间消耗较高。除了这两种方式,还有专门针对人脸设计的检测方法,如主流的MTCNN、Faceboxes等方法,平衡了速度与性能。我们针对涉政人脸的使用场景对主流的人脸检测方法进行了调研。

表1.人脸检测方法比较

检测算法

FDDB召回率

检测速度/fps

MTCNN

0.908

CPU 16

FaceBoxes

0.913

CPU 20

SSH

0.910

GPU 50

FasterRCNN

0.904

GPU 3 


MTCNN由3个卷积神经网络PNet(proposal Network),RNet(refineNet),ONet(outputNet)级联组成。原始待检测图像经过resize,生成不同尺寸的图像构建图像金字塔作为网络的输入。首先通过PNet快速生成候选窗口,然后通过非极大值抑制去除一部分冗余。RNet精细化PNet检测出来的人脸候选框,进一步矫正人脸候选框的回归向量,同样使用NMS去冗余。ONet生成最终的人脸回归框和5个人脸关键点。MTCNN检测速度快,准确率和精度也较高,在场景中使用频率比较高。但是在存在单张图片多人的情况,这时基于MTCNN的人脸检测方法表现会比较差,因为MTCNN系列的方法耗时都对待检测人脸数量敏感。

Faceboxes网络主要由RDCL(Rapidly Digested Convolutional Layers)快速尺寸缩减层和MSCL( Multiple Scale Convolutional Layers)多尺度卷积层两个模块组成,可以在CPU上实现高速运行。RDCL模块为提升运行速度而设计,由两个卷积Conv1、Conv2和两个池化层组成。卷积层和池化层的步长分别为4,2,2,2,这意味着图像经过该模块后尺寸会被快速缩减32倍,从而减少推理时间。卷积层采用的卷积核大小分别为7*7,5*5,池化层采用的卷积核大小均为3*3。MSCL模块由为提升性能而设计,由三个inception模块和四个卷积层组成。本身单个inception能够获得丰富的尺寸信息,多个inception相连更是丰富了感受野。而且在不同卷积层之间加入分支,实现在不同尺度的featrue map上进行检测,有效的扩大检测范围,对形变较大的物体有更高的匹配度。除此之外faceboxes还采用了预选框稠密化的策略,在底层检测小目标时,生成密度更高的预选框,这是对密集目标很有效的一种方案。预选框密度定义公式如下: 

图4. faceboxes网络结构

faceboxes方法兼顾考虑了速度和性能,一张图像中有多个人脸的时候也不受影响,最终在涉政人脸过滤服务中的人脸检测算法选型结果为faceboxes。

2. 人脸对齐

人脸检测之后进行对齐,主要是为了在后续人脸进行特征提取的时候,能够提取出更具有区分性和鲁棒性的特征,对于一个好的人脸识别方法来说对齐也是一个不可或缺的部分。人脸对齐通过对人脸进行关键点检测后,然后计算人脸关键点与标准人脸的关键点之间的仿射变换矩阵,通过仿射变换将人脸矫正为标准人脸。

 图5. 人脸对齐

基于坐标回归的人脸关键点检测算法通过设计损失函数学习卷积神经网络的参数最终回归关键点坐标。对于回归来说最常用的损失函数就是L2损失,即平方误差损失: 

由于L2损失对“离群点”敏感这个缺点,CVPR2018论文《Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks》提出Wing loss损失,wingloss是分段函数,可以平衡不同大小的误差项,对异常值不敏感,公式如下:

图6.不同参数的wingloss图像

我们在涉政人像过滤服务中人脸对齐采用了wingloss损失,并对于w和a采用了论文作者推荐阈值10和2。

3. 人脸识别

人脸识别主要是对人脸特征进行提取,是整个方案设计中最重要的一步,从人脸图像中提取出的信息越有效,则人脸识别的准确率越高。调研近年来的深度学习人脸特征提取方法,基本都是从网络结构设计和损失函数设计这两个方向上进行研究。网络结构是骨架,具有非线性转化能力,能够表达出更具有判别性的特征;损失函数是约束条件,可以让网络沿着正确的方向进行训练。为了提取有效的人脸特征,近几年来,出现了各种各样的损失函数监督网络网络进行训练。损失函数主要分为两大类,一类是度量损失函数,如triplet loss损失函数,center loss损失函数;一类是基于softmax的分类损失函数的改进,如SphereFace、CosineFace、ArcFace等。我们对比常用的人脸特征提取方法在LFW公开数据集上的准确率,如表2和表3所示,选用准确率最高的Arcface方法作为我们在涉政人脸过滤服务中的特征提取方法。

表2.人脸特征提取不同方法准确率比较

方法名

时间

损失函数

网络

LFW准确率

FaceNet

2015

triplet loss 

GoogleNet-24

99.63%

Center Loss

2016

center loss

Lenet+-7 

99.28%

SphereFace

2017

A-softmax

ResNet-64

99.42%

Cosface

2018

cosface 

ResNet-64

99.73%

Arcface

2018

arcface

ResNet-100

99.83%

表3.基于CASIA数据集训练不同损失函数准确率比较

 损失函数

基础网络

训练集

LFW准确率

Triplet-loss

Resnet50

CASIA

98.98%

Sphereface-loss

Resnet50

CASIA

99.11%

Cosface-loss

Resnet50

CASIA

99.51%

Arcface-loss

Resnet50

CASIA

99.53%

ArcfaceLoss(加性角度间隔损失函数)对特征向量和权重归一化,对θ加上角度间隔m,角度间隔比余弦间隔在对角度的影响更加直接,提高了类间可分性同时加强类内紧度和类间差异。Arcface从输入到输出的流程如下图所示:

图7.Arcface流程示例图

经过人脸检测方法、人脸关键点检测以及识别模块的特征提取方法选型完成后,最后一步对提取的人脸特征向量与涉政敏感人物特征库中的特征进行比对。我们采用选用余弦距离,余弦值越接近1,两个向量越相似。 

图8.余弦相似度示例


04

方案升级

线下测试集测试,测试集由831张正常涉政人物和413张卡通政治人物组成,对于831张正常涉政人脸召回率96.1%,413张卡通政治人物的召回率43.58%,业务线初步接入涉政人脸过滤服务,线上效果基本符合预期。对于正常政治人物在但是仍然返回了一些误召,比如将卧室中的玩偶形象、类似人脸的圆形方向盘等误召为漫画版本的涉政人物形象。之所以产生这种情况的误召主要是由两方面的原因,一个是人脸检测方法产生了误检,一个是人脸特征的表达需要进一步优化。从这两方面出发我们对服务进一步升级。

图9.误识图像

1. 人脸检测优化

人脸检测在方案设计部分已介绍使用了faceboxes方法,分析faceboxes的网络结构,为减少误检我们加深了多尺度卷积层的网络深度,添加了一个inception模块,也将其加入了多尺度特征。在2845张涉政场景图片上进行测试,召回率准确率82%由提升到87.6%,但是耗时略有增加。误检率虽然降低,但是当调用量达到亿级别,还是有较多的影响。需对人脸检测进一步进行优化。

然后将改进的关注点转移到了RDCL快速尺寸缩减层,其由两个卷积层和两个最大池化层组成。其中步长为2的池化层属于下采样操作,这种操作会损失大量信息,降低特征分辨率,尤其是使用了两个池化层。将池化层由步长为 2 的卷积层来替换,虽然也是将输入尺寸降低 2 倍,但能提炼特征而不只是简单的下采样,但运算复杂度比池化层高,使得耗时增加了8ms左右。卷积层 2 采用了尺寸为 5×5 的卷积,鉴于网络整体的感受野已经足够大,将其改为 3×3 卷积;并将原始输入图像的大小由1024*1024改为512*512,同时将第一个卷积层的卷积核数由24减少到12,步长由4改为2,来降低运算复杂度,运算耗时可减少13ms,与池化改卷积后增加的8ms抵消后,整体耗时降低5ms左右。最终在2845张涉政场景图片上进行测试,召回率准确率由87.6%提升到98.3%,耗时由35ms减少到30ms。

优化后的效果表明,卷积层替换pooling层减少信息损失,以及在整体感受野足够大情况下部分kernel_size变小不会对感受野产生明显影响,从而增加了信息的丰富度。 

图10. faceboxes网络升级

2. 人脸识别优化

在训练过程中,神经网络都是基于训练数据学习特征的,既然是从训练数据学习特征,最终的方向自然是逼近最终数据的最真实的特征,也就是说,我们数据最原始是什么样子,网络模型的极限就是什么样子,它不能超越数据本身,而研究者在做的事情,也就是使得网络最后能更加逼近“极限”。所以数据在深度学习中扮演着极其重要的角色。为了进一步优化特征提取,训练出表现良好的人脸识别网络模型,我们对数据集进行了清洗工作。对下载的开源数据集VGG2、MS-Celeb-1M、CelebA、LFW、AgeDB、CPF并进行了清洗和对齐矫正。人脸识别中还会经常遇见一个问题,在公开数据集上训练好的模型,用到另一个数据集的时候识别性能往往会发生明显的下降。比如,使用欧洲人训练的模型,用于测试亚洲人,性能往往不佳,这是由于数据集分布不同数据域之间存在差异造成的。所以我们制作自有人脸数据集58Face、58Face-Test,加入训练集,这些数据一部分来自网络亚洲人脸,一部分来自内部员工。

表4.人脸识别训练数据

数据集

图片数量

人物数量

MS-Celeb-1M(算法清洗)

3.8M

85.2K

VGGFace2(算法清洗)

3.3M

9.1K

CelebA(算法+人工)

2.0M

13.1K

内部积累

0.1M

2.6k

在网络结构设计上,综合考虑准确率和效率我们选择了MobileFaceNet作为基础网络,输入图像尺寸为112x112,输出人脸特征向量为512维。该网络在58Face、MS-Celeb-1M和VGG2上反复训练,在LFW、AgeDB、CPF以及58Face-Test上进行测试,最终训练出一个高质量模型,该模型在LFW准确率达99.83%,在58Face-Test的准确率99.98%。GPU上速度为30FPS。

表5.基础网络准确率对比

网络

损失函数

准确率

速度(CPU)

Resnet50

arcface

99.75

154ms

Mobilenetv2

arcface

98.88

78ms

MFacenet

arcface

99.83

85ms


05

落地效果

我们抽取线上业务线80w标注数据进行召回率测试。召回率最初第一版为30.9%,逐步迭代到第四版召回率达到59.89%,达到行业同等水平。涉政人脸过滤服务现已接入超过140条业务场景,日调用量在高峰期达到3.5亿次。

图11.测试召回率与召回准确率


06

总结展望

涉政人脸服务基于人脸比对技术,为保证涉政敏感人物的召回,对人脸检测通过优化网络,在保证速度的同时尽量降低RDCL模块的图像信息损失来减少人脸误检;对人脸特征提取通过清洗开源数据加入自制数据,选用MobileFaceNet基础网络等来提升人脸特征的表达。目前涉政人脸过滤服务仍然存在着一些挑战,尤其是随着涉政人脸库的逐步扩增,对人脸识别的性能会要求越来越高。涉政人脸的召回属于无约束人脸识别的一种,相比配合约束的考勤人脸识别具有更大的挑战性。

人脸比对技术除了应用于涉政人脸识别,还针对不同业务定制优化后接入了其他场景如:中华英才网的考生身份防作弊场景、二手车用户车辆过户时的身份验证场景、58大学的学员上课身份校验场景以及明星人脸识别等。线上各业务线出现的人脸图像的环境多种多样,各种光照、表情、遮挡尤其是姿态变化因素造成人脸数据本身的信息损失,会导致人脸识别性能不佳,从而容易产生漏召、误召。后续将有针对性的进一步扩增不同光照、表情、遮挡的训练数据,尝试新的人脸对齐方法解决姿态变化造成的影响,并将在人脸方向建立完整的人脸质量评价体系。


参考文献

[1] Zhang S ,  Zhu X ,  Lei Z , et al. FaceBoxes: A CPU Real-time Face Detector with High Accuracy[J]. International Joint Conference on Biometrics (IJCB), 2017.

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

[3] Feng Z H ,  Kittler J ,  Awais M , et al. Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks[C]// 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. IEEE, 2018.

[4] https://github.com/TropComplique/FaceBoxes-tensorflow

[5] https://github.com/610265158/faceboxes-tensorflow

本文分享自微信公众号 - 58技术(architects_58)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部