MindSpore:不用摘口罩也知道你是谁

作者: 梁丘刘峰

更新时间:2022-03-26 14:36:44

2780 阅读

【本期推荐专题】从三大主流前端技术出发,看看它们各自特性,以及如何从业务特性出发,选择合适的框架。

摘要:我们基于MindSpore设计了一种人脸识别算法,以解决口罩遮挡场景下的人脸识别问题。该算法的开源代码已经在MindSpore上首发了。

本文分享自华为云社区《不用摘口罩也知道你是谁,MindSpore训练口罩人脸识别模型》,原文作者:chengxiaoli。

人脸识别的目标是确定人脸图像的身份。随着智慧城市的建设,人脸识别的应用场景越来越多样,比如嫌疑人追踪、定位走失的老人儿童等。随着新型冠状病毒在全球范围内的爆发,为了公共卫生安全,越来越多的人在公共场所佩戴口罩以降低感染传染性疾病的风险。

传统的人脸分析方法主要提取整张脸部的全局特征进行分析,口罩遮挡场景下,面部的部分重要部位(比如下颌等)被口罩覆盖住,提取整张脸的全局特征将会引入大量噪声。因此,口罩遮挡场景下的人脸分析任务亟需新的解决方案。我们基于MindSpore设计了一种人脸识别算法,以解决口罩遮挡场景下的人脸识别问题。该算法的开源代码已经在MindSpore上首发了。

  • 论文:

Feifei Ding, Peixi Peng, Yangru Huang, Mengyue Geng and Yonghong Tian. Masked Face Recognition with Latent Part Detection. ACM Multimedia 2020. https://dl.acm.org/doi/pdf/10.1145/3394171.3413731

  • 开源地址:https://gitee.com/mindspore/mindspore/tree/master/model_zoo/research/cv/MaskedFaceRecognition

算法框架

目前还没有针对口罩人脸的大规模的训练数据集,为解决训练数据不足的问题,我们基于已有的公开人脸数据集生成口罩人脸数据作为训练数据。流程如下:

(1)采用已有的人脸关键点检测算法(比如Dlib)检测出无遮挡人脸图片上的多个关键点位置;

(2)标注出口罩佩戴区域(鼻尖以下区域)的关键点位置;

(3)在口罩示例图片(比如N95口罩)上手动标注关键点,并和人脸口罩佩戴区域的关键点一一对应;

(4)根据口罩示例图片的关键点位置,对其做三角剖分,将口罩示例图片划分为多个小三角形;

(5)根据口罩示例图片和人脸图片的关键点对应关系,将口罩示例图片上的每个小三角形区域仿射变换到人脸图片上,并进行平滑操作,生成口罩人脸图片。

我们在人脸公开数据集WebFace上生成了8种不同风格的口罩人脸,将其与原始未佩戴口罩的人脸图片混合,作为训练数据。

https://image.macnp.com/express/1472271877300224-0062359e.png?x-oss-process=style/macnp

算法框架如图所示,考虑到口罩人脸中的许多重要信息被口罩遮挡,我们提出了基于潜在区域检测的二分支网络模型以提取更具判别力的特征。其中,局部分支对潜在区域提取局部特征,全局分支对原图提取全局特征。

我们将潜在区域定义为未被口罩遮挡的人脸区域,用https://image.macnp.com/express/1472271877300224-ccfb1bd1.png?x-oss-process=style/macnp表示,其中https://image.macnp.com/express/1472271877300224-6c1ab4c7.png?x-oss-process=style/macnphttps://image.macnp.com/express/1472271877300224-cc796fe9.png?x-oss-process=style/macnp为待学习的参数。受空间转换网络(STN)的启发,我们对https://image.macnp.com/express/1472271877300224-43721876.png?x-oss-process=style/macnp区域内的特征进行有限制的仿射变换,使其转变为原图大小,公式如下:

https://image.macnp.com/express/1472271877300224-a9f08554.png?x-oss-process=style/macnp

其中,目标框定义为https://image.macnp.com/express/1472271877300224-6fb96416.png?x-oss-process=style/macnpH和W分别为原图的长和宽。通过该公式可以得到https://image.macnp.com/express/1472271877300224-7785ed54.png?x-oss-process=style/macnp可以通过STN的仿射变换矩阵的参数https://image.macnp.com/express/1472271877300224-7f23e43b.png?x-oss-process=style/macnphttps://image.macnp.com/express/1472271877300224-f63d91ff.png?x-oss-process=style/macnp转化得到,由此可以检测出潜在区域。根据潜在区域和原图坐标的对应关系,采用双线性插值将其扩充为和原图一样的大小。

网络模型为二分支网络,一分支对潜在区域提取局部特征,另一分支对原图提取全局特征,两分支共享网络参数。各分支采用分类损失函数进行优化,对于局部分支,额外引入LPD损失函数:

https://image.macnp.com/express/1472271877300224-ac6e65ea.png?x-oss-process=style/macnp

其中,https://image.macnp.com/express/1472271877300224-18dfeca2.png?x-oss-process=style/macnp为鼻尖关键点的纵坐标。引入该损失函数的目的是规范网络对潜在区域的定位,使其尽可能在人脸鼻尖以上的区域,因为根据先验知识,口罩往往会遮挡鼻尖以下的脸部区域。在测试阶段,将全局特征与局部特征结合作为最终的特征表达。

实验结果

我们搜集了实际的口罩人脸数据集PKU-Masked-Face Dataset作为测试集,该测试集共有10301张属于1018个不同身份的人脸图片。大多数身份有至少5张佩戴口罩和5张不佩戴口罩的共计5个视角的人脸图片,5个视角分别为:正面、左面、右面、俯视、仰视。口罩人脸图片作为查询图像库,正常人脸图片作为待匹配图像库。

  • 测试集链接:

https://pkuml.org/resources/pku-masked-face-dataset.html

基于MindSpore实现的算法模型实验结果如下表所示,其中Baseline为采用WebFace原始数据训练的ResNet50基准模型,MG是采用WebFace增强数据训练的ResNet50模型,LPD为我们提出的潜在区域检测模型。

https://image.macnp.com/express/1472271877300224-55e95992.png?x-oss-process=style/macnp

MindSpore代码实现

二分支网络结构代码:

https://image.macnp.com/express/1472271877300224-751b4549.png?x-oss-process=style/macnp

其中global_out和partial_out分别对应对原图提取的全局特征和潜在区域提取的局部特征,两部分共用特征提取主干层。 

潜在区域检测LPD模块的具体实现:

https://image.macnp.com/express/1472271877300224-a05acfd9.png?x-oss-process=style/macnp

其中输入为原始图片,输出为未被遮挡人脸区域边界坐标。

  • 相关训练与推理代码:

https://gitee.com/mindspore/mindspore/tree/master/model_zoo/research/cv/MaskedFaceRecognition

该代码基于MindSpore框架实现,运行的硬件环境为Ascend910。算法解决了口罩遮挡场景下的人脸识别问题,对基准模型性能提升明显,实验结果如上表达到业界领先水平。

 

点击关注,第一时间了解华为云新鲜技术~

版权声明:本文著作权归作者【梁丘刘峰 】所有,不代表本网站立场。

侵权请联系:root_email@163.com

相关推荐