基于MobileNet模型的人脸口罩佩戴识别系统

2022-05-29 23:09洪政吕南斌陈美如俞琪琪李岚
电脑知识与技术 2022年12期

洪政 吕南斌 陈美如 俞琪琪 李岚

摘要:基于树莓派开发板,控制树莓派车载平台进行人脸信息采集,并回传电脑终端。利用MTCNN人脸检测技术对采集图像中出现人脸位置进行并行框选,得到人脸框选图。在人脸框选的基础上,使用MobileNet模型对训练集进行卷积神经网络训练,对测试集进行训练结果测试,方可训练出口罩佩戴识别的权重文件,作为口罩佩戴识别重要参数。最终在UI功能界面实现对图片或实时视频中人脸佩戴口罩的识别。该系统用于解决疫情防控期间,公共场合中流动人员是否佩戴口罩的问题。以达到提高人群口罩佩戴率,避免人工检测对检测人员带来的风险。

关键词: OpenCV;gpu;mobilenet;mtcnn

中图分类号:TP391      文献标识码:A

文章编号:1009-3044(2022)12-0058-03

开放科学(资源服务)标识码(OSID):

2021年5月21日,广州市发现一例新冠肺炎核酸疑似阳性人员,,广州全市在10天内大排查发现新增阳性病例11例,并快速对传播轨迹进行圈定,病毒基因序列进行测序并得到了初步结果[1]。由此可见,我国国内针对新冠肺炎疫情有着高效、严密的控制措施,但人类与新冠病毒的斗争仍是一个长期的过程,为了切断新冠病毒的传播途径,有效降低疫情风险,人们必须保持佩戴口罩的良好习惯。

树莓派作为当今Linux单板市场的主要产品,从发行以来,就凭借着丰富的外扩板平台的支持,可观的运行速度与其便携式的设计等特点受到了众多开发者的认可[2]。其累计销售量更是紧跟Windows,Mac两大计算机平台之后,成了世界上第三大计算机平台[3]。本系统将树莓派与车载平台的主控板相连接,利用树莓派控制车载平台移动,使得二维摄像头平台可以更快速获取更多的视野信息,提高样本信息采集速度,加大采集量,使得训练数据权重具有更好的魯棒性。

目前,卷积神经网络(CNNs)在计算机视觉识别领域中快速发展,并取得了显著性进展,尤其是在图像分类、人脸识别方面,有着重大的突破。在CNNs优质性能的推动下,人脸检测方法也在近几年被提出。本系统使用多任务卷积神经网络技术(MTCNN),该神经网络由P-Net、R-Net和O-Net三层网络结构组成[4]。通过三层网络结构,对筛选出图片中的人脸候选框,进行不断优化处理,最终完成图像中的人脸识别。MTCNN在人脸识别的基础上还具有多个人脸识别的功能。非常适合在人群密集的场所进行人脸识别。

本文针对疫情防控过程中的人群情况,搭建了一个口罩佩戴识别的系统。该系统可以凭借树莓派车载平台良好的机动性,卷积神经网络增强式的口罩佩戴识别训练,以及无接触式地传递提醒佩戴口罩信息的功能,能在人流量、面积较大的商业中心或者交通枢纽中心,高效、快速、准确地识别未佩戴口罩的人群,并由电脑终端将识别信息回传到树莓派车载平台,达到提高人群流动性,降低疫情风险的作用。

2  数据采集模块

数据采集模块主要负责人脸数据采集,以供之后终端训练和实时口罩佩戴识别模块调用。该模块首先通过树莓派车载平台搭载的树莓派摄像头对识别的人脸进行采集并保存,再回传至电脑终端,由电脑终端进行保存。具体数据采集模块运行流程图如下:

2.1 二维平台树莓派摄像头

二维平台树莓派摄像头是采集信息的重要元件,它由两个舵机对其上下左右方向进行控制,以便获得更广阔的视野,提高人脸采集的效率。树莓派摄像头数据传输接口,与树莓派USB接口连接,实现对采集数据的实时传输至树莓派,进行数据处理。

2.2 OpenCV采集人脸数据集

人脸信息采集是通过树莓派摄像头传回视频,利用树莓派调用OpenCV中的Haar特征分析级联分类器[5]人脸检测中的haarcascade_frontalface_default.xml(存储人脸分类器)文件对视频中的人脸进行采集。该采集过程是一个初步粗略采集过程,采集的图像中会包含多个人脸,可以快速捕捉更多的信息,同时调用的MTCNN卷积神经网络对多人脸有着较大的处理优势。

采集过程:首先对识别的图像进行灰度化,以便该采集样本在调用中更便于在OpenCV中对图片进行处理加工,然后对灰度图中的人脸区域中的人脸进行截取,为了截取的页面包含更多的人脸,此处对图片的截取区域进行了扩大,最后将截取的灰度图命名格式为User+name+number.jps文件保存到硬盘。并由树莓派回传至电脑终端,作为训练的数据基础。运行人脸信息采集模块成果图,如下:

3 口罩识别分类器训练模块

口罩识别分类器模块,主要针对电脑终端已有的数据集进行预处理、训练,最终生成权重文件,该文件将作为人脸口罩佩戴识别的检测依据。预处理部分,是将数据采集模块得到的图像通过MTCNN的逐层人脸框选,并行框选出图中所有存在的人脸。训练部分则是对预处理数据集进行划分,训练集用于导入MobileNet模型中进行训练,只有当训练结果在验证集执行达到设定的标准,才生成权重文件。口罩识别分类器训练模块运行流程图如图4所示。

3.1  MTCNN卷积神经网络人脸识别模型

由于之前树莓派车载平台终端采集回传的数据集中,人脸在图中的位置不是固定的,所以在计算机终端需要对回传图片的人脸进行定位。需要利用MTCNN对图像中的人脸进行识别。

MTCNN主要工作原理,是将一个图像进行不同尺度缩放,生成图像金字塔,确保图像中不同大小的人脸都可以被同时识别。

Step1:调用defcreate_Pnet(weight_path):创建P-net类,将图像金字塔传入P-net生成大量人脸候选框,并基于原图进行粗略人脸框定位。

Step2:将粗略人脸候选框的框图传入def create_Rnet(weight_path):命令创建的R-net类,R-net使用crop_img =copy_img[int(rectangle[1]):int(rectangle[3]),int(rectangle[0]):int(rectangle[2])]命令利用Pnet处理后的人脸框图坐标对原图进行截取,并调用scale_img = cv2.resize(crop_img, (24, 24))命令对截取图像修改为24*24大小,R-net类会从是否存在人脸判断评分和框选更精准人脸两个方面对修改后的截取图进行操作。

Step3:O-net类对R-net精修的48*48大小人脸候选框圖进行更精准的P-net类似操作,输出的图像为最终人脸区域框选图像。

3.2 MobileNet神经网络口罩训练模型

在口罩佩戴识别过程中,口罩识别权重直接影响了口罩佩戴识别效果。为了得到一个鲁棒性较好的口罩识别权重,本文采用了增强型的MobileNet神经网络算法对样本集进行训练,并得到最终的口罩识别权重文件。

1)数据预处理:在准备样本集过程中,会涉及大量样本信息,需要对样本信息进行分类,并整合成数据集,方便训练过程中进一步调用。本数据集中每个样本图片名都按固定的存储标签进行保存,例如佩戴口罩样本采用mask_num.jpg作为文件名,同理,未佩戴样本集再用nomask_num.jpg作为文件名。

因为MobileNet神经网络训练过程中需要对样本集按0、1类型进行快速识别,则需要调用write(image + ";" + str(classes.index(image.split("_")[0]))+ "\n")函数将以“文件名+;+判断位”格式进行写入操作。此处判断位需要根据文件名进行区分,mask和nomake文件名分别对应0、1判断位;文件名是调用样本图片的依据。集成的样本数据集标签图像如下:

2)划分训练集和验证集:打开样本集文本,从中顺序选出10000行数据,并使用np.random.shuffle(lines)命令将其顺序打乱,以保证训练结果的拟合率。再使用num_val = int(len(lines)*0.1)命令对筛选出打乱的数据集按9:1划分为验证集和训练集。

3)创建MobileNet模型:model=MobileNet(input_shape=[HEIGHT,WIDTH,3],classes==2)命令创建MobileNet模型,其中input_shape中参数分别对应高、宽、图片数目,由这三项组成训练的基础。classes参数表示测试的目标分类,本系统只存在两个目标对象,故此处classes参数值为2。

4)为了保证训练结果有更好的鲁棒性和更高的训练效率,本系统调用了多种已经训练出的训练权重,辅助本系统训练结果,还利用def Alignment_1(img,landmark):函数对识别图像的翻转、色域转换等操作对图像进行多方面识别,以增强训练数据。

5)设定初期学习率为[1×103],调用model.fir(self,x,y,batch_size,epochs,initial_epoch,callback)函数,该函数参数包括了训练数据、训练数据标签、更新权重、训练轮数、初始训练次数、list数据回调。实现了将预处理训练数据导入初步训练模型进行训练以及验证集的验证。通过10个世代训练后,需要以[1×104]的学习率再次进行训练,以保证训练结果的可靠性。最终生成训练权重存入last_one.h5中,即可进行人脸佩戴口罩检测。

4  UI界面

UI界面作为本系统和工作人员之间进行信息传递的媒介,对于工作人员获取检测结果有着重要作用[6]。本系统UI设计,针对图片选择识别和实时口罩识别两个功能进行实现。图片选择识别功能是对非树莓派返回的图片进行识别,可满足工作人员除实时视频识别之外的识别需求。UI界面效果图如下:

1)图片选择识别功能,即在本机中找到所需识别的图片进行上传,并实现人脸佩戴口罩识别。因此,该UI界面调用定义了一个表单和表单内部文件域,按钮的初始化声明。UI界面表单第一行由一个文本和一个文件域组成,该行文本声明了本行功能,文件域则可进入文件选择模式以供用户选择上传文件。

由于上传图片文件大小不一,此处还需对上传图片进行统一的格式化,以便符合之后的识别标准。第二行为运行识别按钮,该按钮会触发定义的img_recognition命令,对格式化后的图像进行口罩佩戴识别。选择图像识别功能过程以及效果如图7、图8所示:

2)实时口罩识别功能,在UI界面表单第三行进行实现,本行包含了一个触发按钮,触发按钮后执行Husin_facemask命令,再调用mask_recognize.py文件。mask_recognize.py文件在口罩识别分类器训练模块的基础上完成整个口罩佩戴识别。其中包含了MTCNN与MobileNet模型的建立、检测人脸、截取图像和人脸关键点对齐。执行以上4个部分函数,则进行人脸佩戴口罩实时识别。实时人脸佩戴口罩识别效果如图9:

5 结 论

基于树莓派人脸口罩佩戴识别系统利用车载平台良好的机动性、树莓派开发板体积小、运算能力强的优势以及MTCNN人脸识别模型和Mobile模型训练结果的可靠性,可以对公共场所中未佩戴口罩人群进行准确识别,并通过电脑终端将识别结果以实时视频的方式进行回传。该系统不仅提高了公共场所佩戴口罩识别的效率还避免了工作人员在工作中存在的风险。由于人脸在佩戴口罩后出现了遮挡,会对MTCNN人脸识别造成一定的影响,在光线充足的环境下才能达到更好的效果。为了更稳定地对人脸配口罩进行识别,该系统可以通过改变目标检测方法,使用SSD One-stage目标检测算法[7]代替。该算法在稀疏环境的大目标检测方面,运行速度超过了YOLO检测算法[8],精度超过了MTCNN检测算法,能极大弥补MTCNN识别受影响的缺点。

参考文献:

[1] 邓雅蔓.记者亲历最大规模的核酸检测 聚焦广州疫情防控 高风险地区管理和疫苗接种成两大防线[J].中国经济周刊,2021(11):36-40.

[2] Mathias Claussen,禾沐.树莓派4:全新的背后,依然是优秀的表现吗?[J].单片机与嵌入式系统应用,2020,20(6):1-4.

[3] 韩进,杨永明,崔吉凤.基于STM32和树莓派的智能门禁系统[J].电子设计工程,2021,29(3):123-126,131.

[4] 曾维,江礼东,刘跃元,等.多任务级联卷积的人脸跟踪系统设计[J].单片机与嵌入式系统应用,2020,20(7):47-50,55.

[5] 张彩丽,刘广文,詹旭,等.基于新增haar特征和改进AdaBoost的人脸检测算法[J].长春理工大学学报(自然科学版),2020,43(2):89-93.

[6] 陈苡涵.浅谈UI设计的敏捷方法与理论实践[J].西部皮革,2021,43(10):81-82.

[7][1] 王相友,李晏兴,杨振宇,等.基于改进YOLO v4模型的马铃薯中土块石块检测方法[J].农业机械学报,2021,52(8):241-247,262.

[8]鲍文斌,张冬泉.XSSD-P:改进的SSD行人检测算法[J/OL].计算机工程与应用:1-11[2021-06-30].http://kns.cnki.net/kcms/detail/11.2127.TP.20210623.1013.002.html.

【通联编辑:唐一东】