基于PaddleHub的人脸口罩识别系统

2021-07-22 07:46唐心雨陈霜霜王永林蔡长安
关键词:测温人脸卷积

唐心雨,陈霜霜*,路 鹏,王永林,蔡长安,秦 雄

(1.江苏省心理与认知科学大数据重点建设实验室,江苏 盐城 224002;2.盐城师范学院 信息工程学院,江苏 盐城 224002)

自新冠肺炎疫情暴发以来,新冠病毒在人群中迅速传播,给社会上的各行各业造成了极大的风险隐患,因此,佩戴口罩成为了人们日常生活的重要措施。为确保在人流密集区域等特殊场景下每个人都佩戴口罩,本研究基于PaddleHub[1]设计了人脸口罩识别系统,该系统同时具有视频监控识别、嵌入式测温的功能。同时,本系统增加了分类人数统计、实时语音报警及截图的特色功能,助力疫情防控工作。

本系统分为核心功能模块、特色功能模块和未来工作模块三大部分。其中,核心模块包括人脸口罩识别、视频监控识别和人体测温三个组成部分;特色功能模块分为分类人数统计、实时语音报警及截图;未来工作是对该系统的一个发展规划和一些计划实现的方案。整体架构图如图1所示:

图1 系统整体架构Figure 1 Overall system architecture

1 基于PaddleHub的人脸口罩识别

1.1 PaddleHub的简介

本系统基于百度开源的PaddleHub作为模型管理和迁移学习工具。PaddleHub采用了飞桨领先的核心框架,精选效果优秀的算法快速地实现模型的预测、升级等功能。到目前为止,PaddleHub的预训练模型覆盖了用于图像分类、图像生成、关键点检测等主流模型。此外,PaddleHub 还提供了Fine-tune API[2],可以完成深度学习模型在自然语言处理和计算机视觉场景下的快速迁移学习,在更短的时间内完成模型的训练。

PaddleHub支持飞桨Master模式,该模式可以运用于多种场景。Master模式包含算力与数据结合、知识与算法结合的预训练模型。其中,预训练模型与迁移学习工具构成Master模式的核心。PaddleHub作为模型管理和迁移学习工具,它的框架由开发、训练和端到端的部署三个部分组成,如图2所示。

图2 PaddleHub的框架Figure 2 The framework of PaddleHub

其中,“开发”用于提高框架的易用性,“训练”用于提高模型的预算速度,而“端到端的部署”用于模型适配网页端或者移动端的部署。基于三者的结合,PaddleHub不仅能够在线提供负载均衡能力,而且可以快速实现端到端一键部署。

1.2 核心算法

本系统包括人脸检测和口罩识别两个核心算法模块,其中,人脸检测模块基于PaddleHub的PyramidBox模型来训练[3],口罩识别模块利用FaceBoxes的主干网络来判断人脸是否佩戴口罩[4],这两个核心算法模块组合成一个有机整体。

1.2.1 人脸检测

人脸检测使用环境辅助的单阶段人脸检测器PyramidBox 实现。PyramidBox 作为一种高效的人脸检测器,可以设计出新的检测环境-anchor来监督高层级的环境特征,同时预测所有尺度的脸部以及困难人脸的检测。

PyramidBox 的网络结构使用了与S3FD相同的层次结构[5],该结构包含了VGG16 的扩展主干结构和an⁃chor尺度设计[6],可以生成不同层级的特征图和等比例间距的anchor。PyramidBox的网络结构如图3所示。

图3 pyramidbox的网络结构[3]Figure 3 Pyramidbox network structure[3]

在图3的网络结构中,尺度合理的主干网络层使用了S3FD 中的基础层和额外卷积层作为主干卷积层,其中基础卷积层保留了VGG16 中的conv1_1 层到pool5 层,额外卷积层将fc_6 层和fc_7 层转换为conv_fc层,可添加更多的卷积层使其变得更深。

低层级特征金字塔(Lower Feature Pyramid Network,简称LFPN)被添加到主干架构网络中,并且使用从中间层开始的自上而下的结构来接收较小的、模糊的和被遮挡的人脸,采用这种结构可以解决困难人脸的检测。

环境敏感的预测网络层(Prediction Network Layer,简称PNL)受Inception-ResNet启发设计出一个环境敏感的预测模块(Context-sensitive Predict Module,简称CPM)来提高预测网络的表达能力[7]。CPM使用反卷积DSSD(Deconvolutional Single Shot Detector)的残差预测模块作为卷积层[8]。第l个CPM 的输出尺寸是wl×hl×cl,其中wl=hl= 640/22+l是特征的尺寸,cl是通道数。因此,在保持DSSD模块方法的所有优势的同时,还可以保留来自SSH上下文模块的丰富上下文信息。

PyramidBox 损失层有一系列的pyramid anchors(金字塔锚)来监督分类和回归任务,其中分类损失函数使用softmax函数,回归使用平滑L1损失函数。对于一个原始图像中在目标区域regiontarget的目标人脸,考虑anchori,j,即第i个特征层的第j个anchor,步长为si,定义第k个金字塔锚的公式为

1.2.2 口罩识别

通过人脸检测获得目标人脸后,利用FaceBoxes 的主干网络判断人脸是否佩戴口罩。为了进一步强化口罩区域,加入了注意力机制来进行特征学习,并针对损失函数进行了优化。

FaceBoxes的网络结构分为快速消融卷积层(Rapidly Digested Convolutional Layers,简称RDCL)和多尺度卷积层(Multiple Scale Convolutional Layers,简称MSCL)。RDCL 模块用来加速检测目标信息,MSCL 用来检测多尺度目标,两者的结合实现了FaceBoxes的“快”和“准”。

RDCL 采用合适的卷积和池化尺寸conv1_7×7,conv2_5×5,pool1_3×3,pool2_3×3,结合较大的步长加速目标的降维,同时,利用C.ReLU 激活函数进行C.ReLU(x)=Concat[ReLU(x),ReLU( - x)]的维度加倍运算,在保证精准的前提下,又大大地提高了计算速度,图4是C.ReLU的实现原理图。

图4 C.ReLU的实现原理图Figure 4 Implementation schematic diagram of C.ReLU

在进行一次卷积、标准化批量操作之后,C.ReLU模块把特征图像的值取反,然后连接到一起再进行Re⁃LU(修正线性单元函数)操作,这样就减少了卷积操作,提高了训练与测试的速度。

MSCL遵循两个角度:深度和宽度,深度由Inception网络和Conv层组成,宽度则使用了Inception网络丰富了感受野。Inception网络输出的特征图尺寸保持不变,但是会丰富锚框和感受野。Inception丰富的锚框拥有3种尺寸和7个感受野,如表1所示。

表1 锚的尺寸及感受野Table 1 Dimensions and receptive fields of anchors

Inception网络是将某一层特征图的像素点映射到原图的区域大小。Inception网络会根据不同尺寸的特征图输出不同的锚框去处理不同尺度的人脸。高分辨率的特征图感受野小,适合于检测小目标;低分辨率的特征图感受野大,适合于检测大目标。

普通感受野的计算:F(i,j- 1)=((F(i,j)- 1))*stride+kernal-size,其中F(i,j)表示第i层对第j层的局部感受野。Inception网络是用多个卷积核卷积同一个输入来代替单一层卷积,所以上式中的kernal-size会有多个数值。

通过对感受野的计算强化了目标人脸口罩的识别,加上Inception网络对不同大小目标的分类检测提高了识别的准确性,同时减少了输出通道数,从而减少了算法的执行时间。

2 系统功能模块

2.1 视频监控识别设计

视频监控识别功能可以实时录制视频并对视频中未佩戴口罩的人员进行人脸口罩识别。本模块包括视频识别、语音报警和实时截图3个部分,如图5所示。

图5 视频监控流程图Figure 5 Flowchart of video monitoring

视频监控识别的步骤可总结为首先通过视频端或监控端将视频帧输入至识别模块,然后识别模块对视频中的人脸进行检测与口罩识别,如若检测到未佩戴口罩的人员立即进行语音报警和截图,最后对视频识别数据进行存储。

视频识别利用OpenCV技术实现动态视频的监控[9]。首先对存在噪声的视频进行预处理,然后将处理后的每一帧图像组合成视频输入至识别模块,最后得出识别结果。语音报警是本系统的一项特色功能,可以对视频中未戴口罩的人员进行语音报警,提示工作人员进行防控,报警效果会持续到该人员戴上口罩为止,部分源代码如下所示。

初始化音乐:pygame.mixer.init(frequency=44 100)

载入音乐:pygame.mixer.music.load(file)

播放音乐:pygame.mixer.music.play()

实时截图指的是对视频的检测结果进行实时截图并在后台保存,通过视频截图存储未戴口罩人员的信息,以便日后疫情防控的排查。

2.2 嵌入式人体测温

嵌入式人体测温是基于Arduino[10]设计的非接触式人体测温技术,采用Arduino Nano作为CPU。Arduino Nano 是一款适用于面包板的ATmega328P产品,提供与UNO 板一样的外部连接特性,并且具有外部的插脚接口,可以使用Arduino的编程软件(IDE)来为Arduino Nano编程,也可以进行离线编程。

2.2.1 设备组成

测温设备由杜邦线、面包板、Arduino Nano开发板、OLED屏和MLX90614传感器模块5个部分组成。杜邦线用来连接各个模块,面包板用来放置各个硬件设备,Arduino Nano开发板和MLX90614传感器模块用于接收数据,OLED屏用来显示测温数据。

2.2.2 设备安装

离线编辑Arduino Nano 程序需要安装Arduino Desktop IDE,此外,还需要通过Mini-B USB 电缆来连接Arduino Nano到计算机,电缆同时也可以给面包板提供电源,使得Arduino Nano 2.x上的蓝色LED和Arduino Nano 3.0的上部LED发亮。

display.print(mlx.readAmbientTempC());//显示环境温度

display.print(mlx.readObjectTempC());//显示目标温度

嵌入式测温设备能够适应多场景下的非接触式人体测温,用于对体温异常者进行初筛,一旦发现体温异常者便会出现红色标注警告,达到预防交叉感染的作用。与一般的测温设备相比,该测温设备精确度能够达到± 0.2,且会根据环境温度进行测温的自行调整(调整范围±0.2),减少了人工使用测温枪等测温设备的需求,实现快速筛查。

2.3 web网页端设计

为展示本系统的整体效果,本系统采用了web网页形式进行展示。

2.3.1 web端交互设计

web 端部署方案主要采取HTML/CSS、JavaScript 等技术进行前端界面设计,利用Django 框架直接调用PaddleHub识别模块[11],从而实现前后端的交互,该部分设计流程如图6所示。用户只需上传待识别的图像,系统就可识别图像中的人员是否佩戴口罩,并对戴口罩和未戴口罩的人数进行统计。

图6 前后端交互流程图Figure 6 Interaction flowchart of front and rear end

2.3.2 web模块设计

本部分可分为页面渲染模块、图像口罩识别和分类人数统计模块。

页面渲染模块用于渲染html文件,web页面与用户的交互界面建立在此模块基础。此外,该模块需要获取前端表单上传图像的数据信息并进行保存。在web系统的开发过程中采用了分模块的开发方式,主要有渲染模块、程序处理模块以及一些静态资源。各个模块结构如图7所示:

图7 模块结构示意图Figure 7 Schematic diagram of module structure

每个模块可以看成是Django 的一个应用程序,包含了view、model、urls 和template 文件。各个模块从开发和资源文件上划分是独立开来的,但是在应用逻辑层是相互关联和依赖的。这种开发模式可以使开发人员分工明确,降低沟通成本,系统功能能够更快地实现,此外,还有利于项目的后期维护和升级。

图像口罩识别功能模块是web端识别程序的核心模块。本模块能够准确识别图像中的人员是否佩戴口罩并返回准确的统计结果。分类人数统计模块能够对戴口罩与未戴口罩的人群进行有效的分类,即对未佩戴口罩的人员进行脸部红色矩形框标注,佩戴口罩的进行绿色矩形框标注,并且都会有佩戴口罩正确率的显示,识别效果如图8所示。

3 实验部分

3.1 实验数据

图8 识别效果图Figure 8 Identify renderings

在自然环境下进行人脸口罩的检测会面临许多的问题,包括光照强度、拍摄角度、口罩佩戴的方式以及口罩的不同尺度,因此,需要不同类型的数据进行模型的调整与优化。训练的数据来源主要包括:①从网上下载的数据集(包括600张戴口罩的人脸和1800 张不戴口罩的人脸),②自己拍摄的图像,③网上搜集的图像。为了达到图像数据的多样化,做到较高的识别准确率和分类能力,训练时对数据集进行了数据的增强操作,包括随机旋转、裁剪和随即缩放等。同时,根据图像边缘框的检测率,定义了简单、中等和困难三个难度等级。

3.2 评价指标

由于口罩识别模型属于二分类问题,只需判断出是否佩戴口罩,所以评价指标选择“混淆矩阵”进行评价。“混淆矩阵”包括准确率(Precison)、召回率(Recall)和精确率(Accuracy),其中准确率指所有样本被正确分类的占比;召回率指戴口罩的样本中正确分类的占比;精确率指正确分类的样本中戴口罩的占比。

表2 评价指标Table 2 The evaluation index

具体评估公式如下所示:

3.3 实验结果

为了加快实验测试速度,本研究使用了win10系统下GTX Tian X型号的GPU来操作,在PaddleHub平台上进行测试,实验结果如表3所示。

表3列出的三种测试集选取了不同难度的样例进行了实验,其中包括人脸的偏转角度大、模糊图片、部分遮挡、佩戴口罩不规范和不同口罩样式等。测试集①是网上下载的、较为标准的人脸口罩数据,测试集②是自行拍摄的不同光线、遮挡和模糊的人脸口罩数据,测试集③网上搜集的多种角度的人脸口罩图像。对比三者的实验结果,可以看出在明亮场景下,脸部有较少遮挡且人脸偏转角度较小的图像测出的准确率相对较高,能够满足正常的实际应用需求。

表3 基于PaddleHub的人脸口罩识别结果Table 3 The face mask recognition results based on PaddleHub

4 结论

通过PaddleHub设计出的人脸口罩识别系统包括人脸检测和口罩识别两部分。人脸检测利用Pyramid⁃Box实现目标人脸的检测,口罩识别利用FaceBoxes 网络结构进行目标人脸口罩的识别。同时,利用物联网和人工智能相结合的理念设计了系统功能模块,该模块分为视频监控识别设计、嵌入式人体测温设计以及web端的设计,具有动态视频识别、实时截图、语音报警和非接触式人体测温的特色功能。综上,该系统可以高效地、多场景地识别图像和视频中人脸佩戴口罩的情况,并可以实现精准测温,可部署于多种公共场合,具有广泛的应用场景。

猜你喜欢
测温人脸卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
有特点的人脸
一起学画人脸
疫情期间红外测温枪检测的基础理论和实验研究
卷积神经网络的分析与设计
从滤波器理解卷积
三国漫——人脸解锁
基于傅里叶域卷积表示的目标跟踪算法
变压器光纤测温探头的安装固定
基于DS18B20的单片机测温系统