摘 要:针对目前市面上口罩检测装置价格昂贵且技术复杂的现状,设计了一款基于嵌入式机器学习TinyML技术的口罩检测装置。该装置由M5Stack UnitV2的AI摄像头结合M5Stack Core2开发套件构成,通过M5Stack UnitV2的摄像头设备检测是否规范佩戴口罩,通过串口通信的方式在M5Stack Core2上显示口罩分类图像并发出声音提醒人们,M5Stack Core2采用M5Stack的UiFlow图像化编程平台编写口罩检测的Blockly程序。在多种场合多次对不同人脸和不同口罩佩戴情况进行测试,结果表明:该装置功耗低、运行稳定、可靠,在保证准确率的情况下大大降低了成本,具有较高的应用价值。本文对口罩检测装置的研究有助于政府在流行病传播期及时对人们进行管控,降低感染的风险。
关键词:TinyML技术;M5Stack UnitV2;M5Stack Core2;UiFlow图像化编程;显示图像;声音提醒
中图分类号:TP714 文献标识码:A 文章编号:2095-1302(2024)03-00-04
0 引 言
新冠肺炎疫情等流行病的爆发改变了人们的生活方式,严重危害了人们的生命安全。佩戴口罩被证实为预防此类传染病最有效且最直接的方法[1]。口罩人脸检测属于比较新的研究领域,受到了社会的广泛关注,但市面上大多数口罩检测装置都存在着一些缺点,例如技术复杂、功能冗余、价格昂贵、功耗大、体积大、安全性低[2-3]。因此需要设计一款体积小巧、低成本、低功耗、安全性高且技术简单的口罩检测装置。
目前国内对于口罩识别系统的研究也取得了较大的突破。齐曼等[4]以STM32F103 单片机作为核心处理装置,通过OpenMV与STM32F103进行串口通信、建立联系,在TFT显示屏显示口罩佩戴情况,若未佩戴口罩则通过蜂鸣器与指示灯进行报警。张欣怡等[5]设计了一种改进的YOLOv5s算法,对特征融合的neck层进行了改进,更换了卷积的方案,在确保推理速度的前提下,提高了准确率,降低了模型权重文件内存以及对硬件环境的依赖。赵元龙等[6]提出了基于YOLOv7与DeepSORT的一种佩戴口罩的行人跟踪算法,能够通过跟踪判断行人是否佩戴口罩。上述方法虽然速度快、精度高,但是代码框架繁琐、模型训练框架较为复杂、功能冗余并且对嵌入式设备的要求较高。因此本文设计了一款利用嵌入式机器学习TinyML技术的口罩检测装置。
边缘计算和物联网为在网络资源受限的嵌入式设备上使用机械学习技术提供了新的机会[7]。在机器学习的未来,随着物联网(IoT)的不断发展,TinyML将是一项重要的技术[8]。
TinyML技术旨在将过剩的传统高端系统转移到低端客户端,设计能够适用于M5Stack UnitV2等低功耗和嵌入式设备的模型,它是能够在资源受限的微控制器上实现低功耗与低资源占用的机器学习算法[9]。本设计所用的设备都是低功耗的边缘设备,小巧方便。M5Stack的AI模型训练服务V-Training可以很方便地搭建自定义识别模型,使用UIFlow 编写人脸检测的Blockly程序,程序简单清晰,不仅可以显示口罩分类图像,还可以发出语音提醒,满足口罩检测的需求,具有较高的实用意义与市场价值。
1 装置总体方案
该装置由M5Stack Core2核心控制器以及M5Stack UnitV2的AI摄像头设备两部分构成。核心控制器内置锂电池,配备电源管理芯片,可以为核心控制器的主控芯片与摄像头设备供电;核心控制器需对摄像头设备进行初始化,初始化完成后摄像头设备开始工作,摄像头设备检测到人脸信息会不断输出识别样本数据,通过串口将数据发送给核心控制器;核心控制器接收到数据信息以后,对数据进行处理,在屏幕上显示口罩佩戴类别的图像,并发出声音。装置总体方案如图1所示。
2 装置硬件方案
该装置的硬件部分包括两部分:M5Stack Core2核心控制器模块、M5Stack UnitV2的AI摄像头模块。
2.1 核心控制器模块
M5Stack Core2的核心主控配备ESP32-D0WDQ6-V3,具有2个可以单独控制的Xtensa® 32-bit LX6处理器,主频高达240 MHz,支持WiFi功能,板载16 MB FLASH与
8 MB的PSRAM,具有功耗低、工作速度快、便于开发、配置强劲等特点。M5Stack Core2还包括:正面搭载一块2.0寸一体化电容式触摸屏,可以很清晰地显示口罩识别种类,便于人机交互;电源部分搭载AXP192电源管理芯片,可有效控制机身功耗,实现低功耗、长续航;机身还配备了扬声器,为了保证获得更高质量的声音效果,采用I2S数字音频接口的功放芯片,能有效防止信号失真,可以控制扬声器播放本地或云端的音频文件,并调整音调、节拍和声道,检测到人脸以后根据口罩佩戴种类可以发出不同的提示音;串口通信可与AI摄像头模块建立连接,互相传发数据,根据接收的数据传达下一步的指令。M5Stack Core2的部分示意图如图2所示。
2.2 AI摄像头模块
AI图像识别技术配备上包括智能化处理的软件和设施,可以在没有人为干扰的情况下,自动地进行数据分析处理、深度学习和串联系统协调工作[10]。UnitV2是一款高效率的AI识别模块,采用Sigmstar SSD202D(集成双核处理器)控制核心,集成128 MB-DDR3内存、512 MB NAND FLASH以及1080P摄像头,内嵌Linux操作系统,集成丰富的软硬件资源与开发工具,并且体积只有拇指大小。此外UnitV2内部还集成了由M5Stack开发的基础AI识别服务,内置多种识别功能,可快速帮助我们构建AI识别应用[11]。该设备具有体积小、成本低、高性能、资源丰富、功能强大的特点。利用该装置的识别功能,可以快速帮我们检测到人脸,当检测到目标时,会通过底部串口不断输出识别样本的数据,与核心处理器模块建立串口通信,可以快速传输识别数据。M5Stack UnitV2的原理框图如图3所示。
3 装置软件方案
系统主要依靠软件实现对人脸佩戴口罩进行识别、显示口罩佩戴类别、发出声音提醒。
3.1 口罩数据集的获取
本文使用的口罩数据集主要来自于互联网平台开源的数据集。为了确保可靠性,另外拍摄了一部分口罩图片。数据集包含了不同场景下人们佩戴口罩的情况,按照1∶1的比例被划分为戴口罩(with_mask)和不带口罩(without_mask)两个标签类别,用于在模型训练之前将分辨率低、口罩颜色过于鲜艳以及背景过于繁杂的图片去除。数据集图片示例如图4所示。
3.2 模型训练
本文使用M5Stack的V-Training在线AI模型训练服务平台训练模型,通过此平台可以轻松构建自定义识别模型。
首先将收集好的口罩数据集导入项目工程中,通过文本形式批量导入标签,标签有with_mask和without_mask两种,手动完成对图片的框选并导入标签,上传标记好的素材并选择高效率训练模式进行模型训练,迭代次数为100轮。训练完成后可以获取到模型文件以及损失曲线,损失曲线包含dfl-loss和qfl-loss两条曲线,QFL(Quanlity Focal Loss)和DFL(Distribution Focal Loss)为两个损失函数,其中QFL的加入强迫classification score(分类分数)和localization quality(定位质量评估因子)两者有了更高的相关性,从而避免高质量错误类别检测的出现;DFL的加入能够使得边缘分布预测,在清晰的边界区域尖锐,而在较模糊的位置处预测出较平缓的分布。QFL的计算公式如式(1)所示,DFL的计算公式如式(2)所示,损失曲线如图5所示。
(1)
(2)
式中:y为0~1的质量标签;σ为类别输出概率;S(i)与S(i+1)对应y附近两个预测值y(i)、y(i+1)的概率。
3.3 模型部署
M5Stack UnitV2内置了一张有线网卡,通过TypeC接口连接PC端,就可与UnitV2建立起网络连接;使用Web界面上传训练好的模型压缩文件,在识别功能的预览网页就可以使用模型,查看识别效果;在识别的过程中,UnitV2会不断地输出样本识别数据,数据以JSON格式输出。模型运行效果如图6、图7所示,串口数据位于运行效果图右下角Result处。
3.4 M5Stack Core2程序框架
首先要对AI摄像头模块进行初始化操作,本装置须完成口罩识别任务,因此初始化时选择Object Recognition;其次要完成对串口的配置,由于M5Stack UnitV2串口的波特率为115 200 b/s,要保证两者正常通信,M5Stack Core2需要设置相同的波特率[12],读取数据时需要判断是否有数据输入,没有数据输入则显示数据接收异常的信息,若接收正常则读取口罩佩戴的类别信息,根据口罩佩戴的情况显示对应的图片,并发出对应的提示语音。具体流程见图8所示。
3.5 核心程序
UiFlow编写的Blockly程序如图9所示,Python程序如图10所示。以下程序为Python代码的核心程序:
while True:
if uart1.any():
object2 = (json.loads((uart1.read())))['obj']
#此处将str类型转化为了字典类型
for i in object2:
label0.set_text(str(i['type']))
type2 = i['type']
if str(type2) == 'with_mask':
#需要将type2进行转化,转化为str类型
image1.set_hidden(True) #显示佩戴口罩图片
image0.set_hidden(False)
speaker.playWAV(\"res/yes.wav\")
#发出口罩佩戴规范,可以进入的语音
else:
image1.set_hidden(False)
image0.set_hidden(True)#显示未佩戴图片
speaker.playWAV(\"res/no.wav\")
#发出语音提醒佩戴口罩
else:
label0.set_text('Accept data exception')
wait_ms(2)
4 装置效果测试
模型部署完成后,用电缆线将核心控制器设备与AI摄像头设备的引脚进行连接,开始装置的测试,在佩戴口罩与未佩戴口罩的数据中,随机抽取5组数据进行测试,测试结果见表1所列。
10名测试人员中仅有1人识别错误,正确率为90%。为了防止偶然性,验证系统的稳定性以及准确率,进行了多次测试验证,总体成功率约为90%;同时证明测试速度快,稳定性与准确性较高,低功耗的性能使该口罩检测装置可以长时间工作,具有强续航的能力。
5 结 语
如今口罩检测技术日益成熟,但是基于TinyML技术的较少,因此基于TinyML的口罩检测装置的开发是很有意义的。本文利用M5Stack Core2与M5Stack UnitV2两款低功耗的边缘设备设计了一款口罩检测装置,对装置的总体方案设计以及软硬件结构做出了详细的介绍,对该装置进行了测试,并得到了理想的效果;在能正确识别口罩种类的情况下,还添加了口罩类别的图像显示、语音提示以及触摸屏人机交互等功能,使得该装置更加智能化。利用嵌入式机器学习TinyML技术的口罩检测装置运行稳定、可靠,功耗小,在达到理想的精确率的情况下,大大降低了成本,对于流行病的管控有重要意义,具有很高的实用价值。
注:本文通讯作者为陈飞龙。
参考文献
[1]金映谷,张涛,杨亚宁,等.基于MobileNet V2的口罩佩戴识别研究[J].大连民族大学学报,2021,23(5):404-409.
[2]陈秋.市场尝鲜戴口罩人脸识别[N].经济观察报,2020-07-27(019).
[3]沈泽.应用场景日渐繁荣 发展前景更为广阔—2021年人脸识别市场发展现状与趋势解析[J].中国安防,2021,16(3):60-63.
[4]齐曼,胡乃瑞,安天洋,等.基于STM32的口罩识别及无接触测温系统的实现[J].工业控制计算机,2022,35(3):128-130.
[5]张欣怡,张飞,郝斌,等.基于改进YOLOv5的口罩佩戴检测算法[J].计算机工程,2023,49(8):265-274.
[6]赵元龙,单玉刚,袁杰.改进YOLOv7与DeepSORT的佩戴口罩行人跟踪[J].计算机工程与应用,2023,59(6):221-230.
[7] PARTHA P R. A review on TinyML: state-of-the-art and prospects [J]. Journal of King Saud University-Computer and Information Sciences,2022,34(4):1595-1623.
[8] ABATE C J,禾沐.机器学习的未来—Daniel Situnayake访谈[J].单片机与嵌入式系统应用,2021,21(6):1-3.
[9] ABATE C J,君谦.什么是tinyML?[J].单片机与嵌入式系统应用,2021,21(8):1-3.
[10]关健荣.图像识别技术在“AI+安防”服务实战中的应用[J].无线互联科技,2022,19(10):81-83.
[11]钱玉娟. AI“战疫”[J].中国中小企业,2020,27(5):30-32.
[12]白文峰,张秋实,李忠健.串行通信中波特率的设置问题[J].工业控制计算机,2007,20(4):76-77.
作者简介:郑汉(2002—),男,本科生,研究方向为嵌入式系统开发。
陈飞龙(1990—),男,博士,讲师,研究方向为嵌入式系统开发、3D语音增强、声音事件定位与检测等。