基于OpenCV与Qt的深度学习口罩检测

(整期优先)网络出版时间:2022-07-29
/ 2

基于OpenCV与Qt的深度学习口罩检测

王正阳,宫琳琳

山东协和学院 山东济南 250109

摘要:

本软件界面开发基于OpenCV以及Qt,推理网络使用YOLOv5进行训练,使用sqlite数据库作为支撑,用C++进行编写。本软件通过简洁的界面展示采集到的监控画面并通过YOLOv5进行推理,实时展示画面中人员的口罩佩戴情况。简化了公共场所管理人员对行人是否佩戴口罩的管理,很大程度提高了管理效率,为各公共场所提供了有力的技术支持。

键词:人工智能 深度学习 模型训练 YOLOV5

1  深度学习口罩检测的背景

人工智能是计算机科学中最重要的技术之一,可用于安全、金融、导航、医学等领域。在疫情环境下,各大公共场所出于安全考虑加强了对口罩佩戴的检查。但大多数检查工作依然由人工完成,并且很难实现对场所内人员的检查。因此,开发一个检测行人是否佩戴口罩的人工智能愈发重要。

2  深度学习口罩检测的意义

通过结合目前市场上人工智能视觉识别的空白,从综合考虑公共场所需求出发编写本软件。软件界面可以直观的看到场所内摄像头捕获的图像和基于OpenCV DNN网络推理实时对图像检测、识别的结果,并在输出框标注正确佩戴口罩和未佩戴口罩的人员。无需人工即可完成对人流量密集情况下佩戴口罩的检测,不仅提高了场所内环境水平,而且减轻了安检人员的负担,降低了病毒传播的可能性。

3  相关技术与开发环境研究

(1)相关技术

深度学习技术:深度学习是一种复杂的机器学习算法,该方法基于具有学习功能的神经网络,在语音和图像识别方面取得了远远超过以往相关技术的成果。

深度学习旨在学习样本数据的内在规律和表示水平,让机器能够像人类一样进行分析和学习,并识别文字、图像和声音等数据。在这些学习过程中获得的信息对于解释文本、图像和声音等数据有很大帮助。

机器学习技术:机器学习分为有监督学习、无监督学习、半监督学习和强化学习,是一门穿插了多个领域的技术

本系统训练的YOLO V5属于有监督学习的分类学习,输入带有labelimg标定后标签的数据,标签表明了数据所属类别。

输入数据可以分为训练集和验证集,训练集是用来训练模型的已经带有标注的数据,主要是用来建立模型发现规律。验证集也是带标签的数据,但是这部分用来验证训练效果,一般做法是只将数据送入模型,比较结果和标签,从而评估模型的学习能力。

(2)开发环境

Qt 5.12Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,UI与函数之间可通过信号槽机制进行连接

YOLOV5YOLO是一种先进的目标检测方法,在单个神经网络上进行一次评估即可完整的预测出要检测物体的边界,称之为ROI。

YOLO 将目标检测定义为一个单一的回归问题,将图像用网格分割后预测每个网格的类概率和边界框坐标,只需要查看一次图像即可预测当前画面中的对象及其位置,也是“你只看一次(You Look Only Once,YOLO)”名字的由来。

4  数据采集及标定

(1)数据采集

在网上收集佩戴与不佩戴口罩的图片,准备制作YOLOv5训练的数据集。

在YOLOv5文件夹下新建文件夹并命名为datas,文件夹下目录结构如下:

├─images

│  ├─train

│  └─val

└─label

    ├─train

└─val

其中images文件夹下的train将存放全部图片,为训练集;val下将放置训练集中约四分之一图片,作为验证集。

Label文件夹下同理。

至此数据集目标文件夹设置完毕。

(2)图片标定

使用labelimg对每一张图片进行标定,软件界面如下:

图 1  labelimg界面图

将左侧标记文件格式切换为YOLO

图 2  labelimg切换文件格式界面图

点击Create \nRectBox按钮开始标定

图 3  labelimg创建RextBox界面图

用鼠标框出未带口罩的面部:

图 4  labelimg标定界面图

并标记为Not Wearing:

图 5  labelimg标定界面图

佩戴口罩的标记为Weared,以此类推,将所有收集到的数据集完成标定。

将全部标定完成的图片复制到YOLO V5目录下的datas/images/train文件夹下,选择其中四分之一的图片复制到datas/images/val下。再将标定的数据标签文件(.txt后缀)复制到datas/labels/train文件夹下,同样选择其中四分之一的文件复制到datas/labels/val文件夹下,val文件夹下文件名需要对应。

至此数据采集部分完成。

(3)模型训练

在YOLOV5的GitHub页面克隆全部文件到本地。

在YOLOV5目录下运行pip install -r requirement.txt,安装所需依赖。

在YOLOv5的Github上下载权重文件,有n\s\m\l\x可选,文件体积从小到大,推理速度与可信度成反比:

图 6  yolov5权重文件对比图

由于需要适配各种不同性能的设备,需要下载所有大小的权重文件。

将下载好的权重文件放在yolov5/weights下,在data文件夹下新建train_yolov5s.yaml等文件,并将数据集路径设置好:仅需指定图片所在目录,yolo会自动在label文件夹下寻找所需标定文件。

至此训练所需文件已配置完毕。

在yolov5文件夹下运行终端,并运行如下命令:

训练时长为3.7小时,并在runs/train/exp下生成此次训练数据,权重文件是weights文件夹下的best.pt。

由于使用OpenCV的DNN网络进行推理,因此需要将YOLO生成的pt文件转换为ONNX文件。

需要先安装onnx组件,运行命令pip install onnx,等待完成安装。

将runs/train/exp/weights下的best.pt移动到根目录下并改名为mask_yolov5m.pt。

接下来运行export.py进行模型转换:

python export.py –weights mask_yolov5m.pt –img 640 –batch 1

程序运行后将在根目录下生成一个mask_yolov5m.onnx文件,即为所需文件,至此转换为ONNX模型完毕。

结 语:

通过搜集人工智能、视觉识别、深度学习等相关资料了解了目前人工智能发展状况及根据目前疫情情况开发出了本软件,本软件以Qt界面为基础,通过简洁易懂的UI设计,方便用户使用,根据需要选择相应功能即可进行佩戴口罩的检测。实现公共场所通过摄像头对行人是否佩戴口罩进行判断,并及时给出提醒。公共场所通过引入本软件,可有效减轻工作人员负担,提高场所入口安检效率。

参考文献:

[1]极智分析.2021.机器学习干货篇:训练集、验证集和测试集.5月29日 ,2021,来自https://www.bilibili.com/read/cv11484172.

[2]朱晨冰,李建英著.Qt5.12实战[M].清华大学出版社,2020.10.

[3](美)史蒂芬·普拉达著;张海龙,袁国忠译.C++ Primer Plus中文版:第6版[M].人民邮电出版社,2020.7.

[4]史忠植,王文杰.人工智能[M].北京:国防工业出版社,2007.

[5]周以真.计算思维[J].中国计算机学会通讯,2007(3). 

作者简介:

王正阳(2000.03),男,山东济南,本科,山东协和学院学生,学习专业:计算机科学与技术

宫琳琳(1983.04),女,山东青岛,硕士,副教授,研究方向:软件技术