前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >详解苏宁门店的人脸识别技术

详解苏宁门店的人脸识别技术

作者头像
CSDN技术头条
发布2018-07-30 11:24:59
3.9K1
发布2018-07-30 11:24:59
举报
文章被收录于专栏:CSDN技术头条CSDN技术头条

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

图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几何示意图

weights normalization

weights normalization,即

,其实这种操作之前就有人研究过,不过更多是把其看作weight decay,一种为了避免过拟合的L2正则惩罚,并没有从几何角度更多解读它。其进行反向传播对权重w进行更新时,当其中一类样本过少的时候,会导致其样本对梯度影响不明显,导致该类别的权重学习不充分,权重的L2norm较小[1]。由于softmax loss的决策边界是

,bias置零后为

,两向量正交,如果其中一个权重学习的不充分,L2norm较小时,决策边界也会向该w倾斜,这会降低分类器的性能,如图5所示。

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

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

feature normalization

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

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

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

Augular margin

Sphereface提出angular margin是一种全局约束,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的比对范围,我们另一个实际经验是通过triplet loss进一步增加local margin。

在苏宁这样规模的应用场景里,其实人脸数据的来源和规模不是问题,前面提到的全局margin在这样的超大规模数据集中显得有些乏力,triplet loss则可以通过三元训练样本的选择技巧来增加局部margin。不过我们实践发现现有的triplet loss是作用在欧式空间的,好不容易通过global angular margin学到的特征子空间再映射到欧式空间性能反而会有下降,为了解决这个问题,我们将Dist(A,P)+margin<Dist(A,N)的目标改为angle(A,P)+margin<angle(A,N),从而不改变前面学习到的特征分布。

为了找到合适的triplet样本对来调整localmargin,我们从三个角度考虑进行hard-example的挖掘:图像质量不高的样本、学习不充分的样本、难以区分的样本,其中前两种类型的样本通常的表现就是feature norm比较小,第三种类型的样本表现是feature距离其他类别过近。在训练中要注意逐渐增加训练样本困难程度,可以有效防止模型梯度弥散,模型的表现往往可以更进一步。我认为triplet loss有很大的工程应用研究价值。作为一种数据驱动的方法,其最大的优势是可操作空间非常大。

榨取人脸数据金矿

对于人脸识别网络训练另一个重要问题是训练数据的获取,已有公开数据集中可玩性比较强的几个数据集有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.

杨现

中科院半导体所博士毕业,苏宁技术研究院计算机视觉算法专家,负责计算机视觉在苏宁线上线下的应用落地,在图像识别、目标检测跟踪、人脸识别等研究方向上有丰富的实战经验。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GitChat精品课 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档