黄家驹,陆江华,张睿哲,王蕤,李嘉乐
(西安培华学院,陕西西安,710125)
自2019 年末开始,新型冠状病毒肺炎(COVID-19)在全世界全面爆发并迅速传播,公共场合佩戴口罩可以有效地减少感染率。因此,为减轻公共场合防疫人员检查人员是否佩戴口罩的压力,提高其效率,设计开发基于OpenMV 的口罩检测系统具有非常积极的现实意义。本文以OpenMV 机器视觉和卷积神经网络的理论为基础,通过Micro Python 为操作语言,实现口罩的检测,同时也搭载LED 灯增加其功能性。
口罩检测系统的设计采用OpenMV 作为核心处理器,它以 STM32H743IIk6 和 OV7725 摄像头为核心,通过基于卷积神经网络模型的人脸检测技术和目标分类技术对图像训练出识别模型,再通过 Python 代码搭载至 OpenMV 机器视觉模块[1],同时可得预处理后的图像信息,提高口罩识别的速度。使其实现口罩检测的功能;LED 显示模块由OpenMV 带有的STM32H743IIk6 处理器控制 LED 灯实现报警功能,当检测到佩戴口罩时亮绿灯,否则亮红灯,可在人员流动较大且人工检测复杂的地方安装,弥补了人力疲劳缺陷,保障人员安全[1]。口罩检测系统设计思路样图如图1所示。
图1 口罩识别系统设计思路样图
如图2 所示,本设计控制系统由 OpenMV 机器视觉模块、STM32H743IIK6 核心控制器、LED 灯显示模块组成,使用卷积神经网络算法,通过 Python 编程实现口罩检测系统。单片机和OpenMV 之间采用同步串行口通信,进行数据交换,单片机将接收到的数据进行计算分析,进行判断。当 OpenMV 捕捉到被测对象并处理后,则触发 LED 灯,如果检测出人员没有佩戴口罩,则 LED 灯亮红灯,如果人员佩戴口罩,则 LED 亮绿灯。
图2 系统硬件组成框图
OpenMV 摄像头是一款小巧,低功耗,低成本的电路板,可以通过高级语言MicroPython,Python[3]的高级数据结构使你很容易在机器视觉算法中处理复杂的输出。且可以完全控制OpenMV,包括I/O 引脚。同时可以使用外部终端触发拍摄或者执行算法,也可以把算法的结果用来控制I/O引脚[4]。
本设计采用 OpenMv4 H7 plus 机器视觉模块来进行口罩检测系统算法的编辑以及口罩检测图像的采集与判断。OpenMV 作为机器视觉模块搭载STM32H743IIk6 处理器,也可作为控制器实现相关功能。
摄像头模块采用 OpenMV4 中的OV7725 摄像头模块。
当 OpenMV 捕捉到被测对象并处理后,检测出其未佩戴口罩,则触发LED 灯亮红灯。
本设计采用的是OpenMV 机器视觉模块来实现口罩检测功能,使用 Python 语言对 OpenMV 机器视觉模块进行调试,它也是一种 STM32 单片机,可通过引脚连接实现相关硬件的通信,从而实现产品功能,包括数模转换、模数转换、图像捕捉、PWM 输出等电路。
当OpenMV 模块启动后,其搭载的 OV7725 摄像头模块开始工作,当通过人脸检测捕捉到人脸后,进入口罩检测模式,识别被测人员是否佩戴口罩,如果有,则 LED 灯亮绿灯,如果没有,则 LED 灯亮红灯。根据基于OpenMV口罩检测系统的原理及分析,设计代码的实现需要的程序流程图如图3 所示,引入摄像头、图像、窗口和时间模块。首先重置摄像头,调整窗口分辨率、像素格式、摄像头等待时间以及关闭白平衡[2]。随后启动摄像头模块,开始拍摄图像,调用 snapshot()函数返回image 对象,调用卷积神经网络训练模型对输入图像进行处理,对图像中人脸口罩置信度进行标注,并显示标注结果,最后计算开始计时后到标记目标的时间,并转化为帧率即可。
图3 软件系统流程图
卷积神经网络对特征识别已经目标分类训练具有操作简易,准确率高等优点,因此,本文拟采用卷积神经网络算法进行人脸检测,并将口罩检测问题转换为图片二分类目标,通过训练大量不同情况下的口罩佩戴样本,对其进行人脸定位、提取定位结果,通过卷积神经网络算法对口罩进行二分类识别,及佩戴口罩(mask)和未佩戴口罩(nomask)。
卷积神经网络是一种特别的神经网络模型,它将人工神经网络和深度学习技术相结合,其特点为:(1)卷积神经网络的神经元直接非全连接;(2)一些神经元的权重相共享。卷积神经网络由卷积层、池化层、激活层以及全连接层组成。
卷积神经网络中,卷积层的作用是将以输入的特征信息提取出来,它由若干个卷积单元组成,其中每个参数都是通过反向传播算法的优化得到的,通过感受野(filter)对输入图片进行移动,并且对相对应的区域做卷积运算进行特征提取;其中低卷积层只能提取到如边缘、线条等低级特征,而高卷积层则可以提取到更深度的特征。通过卷积运算提取特征之后得到的图像特征为线性特征,但实际的样本不一定是线性的,由于激活函数存在非线性、单调性以及连续可微等特性,因此引入激活函数来解决这一问题。常用的激活函数为Sigmod 函数、Tanh 函数以及ReLU 函数。全连接层、在卷积神经网络的最末端,给出分类的最后结果,在全连接层中,特征图失去了空间结构,展开成为特征向量,并且把前面提取的特征进行组合形成输出公式。
通过人脸检测方式检查出人脸区域后,需确定其有无戴口罩,目前可选择的方式为辨认和检测这两个方式。其中,检测要求对人脸范围中的所有目标进行标注,工程量较大,而且算法相对繁琐且速度缓慢。而采用目标划分技术的方式,只要求明确标识类别,工程量较小,而且因为口罩类在人脸中的占据比例也较大,所以用目标划分技术就可以取得非常良好的效果。
系统实现口罩检测的核心是建立一个良好有效的卷积神经网络训练模型,训练出准确率高、方便快捷的口罩检测模型。基于卷积神经网络训练模型的设计流程,建立的口罩检测模型包含人脸数据采集模块、图像处理模块、网络训练模块以及最终的口罩检测模块。
人脸数据采集模块就是通过OpenMV 摄像头采集人脸图像以及在网络上搜寻各种状态的人脸图像形成数据集。图像处理模块是将采集到的图像中的人脸图像进行预处理,经过灰度处理后,形成统一大小的图像。网络训练模块的作用是用来构建基于卷积神经网络的口罩检测模型,将处理好的数据集输入至EDGE-IMPULSE 中进而训练出能够进行识别的网络,将训练好的模型的参数进行保存并导出,供口罩检测时使用。口罩识别模块的功能就是进行实时的口罩检测,将摄像头实时采集的人脸图片进行处理,调用保存好的网络参数,将其放入卷积神经网络进行识别,若识别到未佩戴口罩,则输出反馈信号。
卷积网络模型训练整体设计流程如下:
(1)图像预处理阶段:将采集到的人脸图像进行预处理,形成统一大小的人脸图像数据集;
(2)将数据集放入 EDGE-IMPULSE 中进行训练,完成后保存参数;
(3)对实时视频进行口罩检测,通过人脸数据采集模块和图像处理模块得到需要判断的人脸图像,调取已生成的网络参数,将图像输入到卷积神经网络进行识别,反馈识别结果。系统流程图如图4 所示。
图4 口罩检测流程图
在经过数据集采集和图像预处理后,将可用于训练的图像带入卷积神经网络进行模型训练,设置其训练周期(Number of training cycles)为20,学习率(Learning rate)为0.0005,验证集大小(Validation set size)为20%。模型训练后得到训练集如图5 所示。
图5 口罩检测模型测试集分布图
如表1 所示,其中未佩戴口罩检测准确率为 97.5%,佩戴口罩检测准确率为 98.1%,其总体准确率为 97.8%,损失函数为0.07,因此该模型具有比较好的检测效果。
表1 训练集混淆验证集
系统的调试是整个设计过程中最重要的一个环节,它是检验系统能否正常运行的核心。分为软件的测试和硬件的测试。其中,硬件测试需要检测各个模块是否可以正常工作。在调试过程中,首次对各个硬件的外观进行检查,看是否存在破损;然后对各个模块进行上电测试,检查是否可以正常工作,在各个模块都确认无误后,将其进行组装,进行最终的调试,测试的主要内容有:
(1)口罩识别功能测试:测试被测人员是否佩戴口罩,并输出系统响应速度;
(2)LED 灯显示测试:在口罩识别过程中,能否根据被测人员佩戴口罩情况进行灯光颜色转换。
首先进行口罩检测测试,将编写好的代码放入OpenMVIDE 软件系统中,连接OpenMV 机器视觉模块,连接并运行。本文选用普通医疗口罩进行识别,在5cm、10cm 处进行识别响应,为了增加测试的广泛性,将男性女性同时作为被测人员,其中女性有长发,可遮挡一部分面部。实验结果见表2 所示。
表2
实验结果显示,8 次测试都准确地显示被测人员是否佩戴了口罩,但是距离的增加会导致识别时间变长,在经过后续多次实验后,实验结果基本符合了设计的要求,验证了系统的稳定性。
其次在口罩检测调试的基础上增加LED 灯,在相同变量下对LED 灯显示进行测试。实验结果见表3 所示。
表3
实验结果显示,测试都准确地显示被测人员是否佩戴了口罩,但是距离的增加会导致识别时间变长,在经过后续多次实验后,实验结果基本符合了设计的要求,验证了系统的稳定性。
本设计实现口罩检测功能,要求被测人员被摄像头采集到人脸信息后能够识别是否佩戴口罩,检测到未佩戴口罩时能够进行报警显示(LED 灯变色),经过调试和实现,最终满足设计要求。
本产品的实现对现阶段防控疫情有一定的积极意义,能够大大减轻工作人员的工作量,提高其工作效率,其简易的操作和低廉的造价成本,使其具有推广意义,但此设计仍需进行多方面的优化或在更多方向进行拓展。
从设计水平角度分析,该设计在软件设计和硬件设计上仍有较大的进步空间。
从设计的纵向角度分析,由于OpenMV 本身就具有不少 I/O 口,可拓展和升级更多功能,可以此为基础提高产品的拓展功能,提高产品的功能性。
从产品本身分析,从产品市场横向对比来看,产品本身的智能化程度还可以进一步强化,可将本设计集成到智能控制中去,提高其智能效果,使得使用上更加人性化。