当前位置:首页 期刊杂志

基于YOLOv5的实时抽烟检测研究

时间:2024-05-04

李昌夏 加文浩 黄政龙 黄文峰 甘恒

摘要:为了实现对公共场合中的抽烟行为的自动识别检测,提出了利用YOLOv5算法获取抽烟行为目标的方法。该实验使用python编程语言在pytorch上建立模型,训练模型,最终能对吸烟行为进行有效检测,对抽烟检测研究具有参考价值。

关键词:YOLOv5;实时抽烟检测;pytorch;python

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

文章编号:1009-3044(2022)08-0100-03

公共场合抽烟的危害很大,国家也相应地出台了在公共场合禁烟的政策。以前实行相关的政策都是靠工作人员巡逻发现并出言禁止,这样做效率很低下。计算机视觉领域发展迅速,而抽烟检测也属于一种计算机视觉目标检测的行为,可以采用目标检测[1]的方法来实现。目前,目标检测在很多领域都取得显著成就[2],但是在抽烟检测领域方面进行研究却几乎没有。该研究可以有效节省成本,对公共场合禁烟政策的实行有很大的推动作用。

1 YOLOv5算法简介

YOLO[3]系列是基于深度学习的回归方法。该系列陆续诞生出YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5。本实验采用的算法是YOLOv5,它是一种单阶段目标检测的算法,因为该算法可以根据落地要求灵活地通过chaneel和layer的控制因子来配置和调节模型,所以在比赛和落地中应用比较多。同时它有YOLOv5x、YOLOv5l、YOLOv5m、YOLOv5s四種模型。它具有以下优点:1)在pytorch环境下编写;2)可以很容易编译成ONNX和Core ML;3)运行速度很快,每秒可以达到140FPS的速度;4)模型精度高;5)集成了YOLOv3和YOLOv4的部分优秀特性,进行了推陈出新的改进。

2 相关技术

2.1 输入端

2.1.1 Mosaic数据增强

Mosaic数据增强技术[4]采用了四张图片的随机缩放、随机剪裁、随机排布的方式对数据进行拼接,相比CutMix数据增强多用了两张图片。在目标识别过程中,要识别的目标有大目标、中等目标、小目标,并且三种目标的占比例不均衡,其中,小目标的数量是最多的,但是出现的频率很低,这种情况就会导致在bp时对小目标的优化不足,模型正确识别小目标的难度比识别中、大目标的难度要大很多,于是对于小目标来说很容易出现误检和漏检的情况。Mosaic数据增强技术做出改进后,上述的问题得到有效的解决。该技术的优点是:⑴丰富了数据集,采用“三个随机”的方式对数据进行拼接丰富了检测的数据集,尤其是随机缩放增加了很多小目标,克服了小目标的不足,让网络的鲁棒性得到提高;⑵减少GPU的使用,在Mosaic增强训练时,四张图片拼接在一起,GPU可以直接计算四张图片的数据,让Mini-batch的大小减少了很多,这使得一个GPU就可以达到比较可观的效果。

2.1.2 自适应anchor

自适应anchor是check_anchors函数通过遗传算法与Kmeans迭代算出的最大可能召回率的anchor组合。在网络模型的训练过程中,网络在初始化的锚框的基础上输出预测框,然后与真实框groundtruth进行对比,计算两个框之间的差值,再根据差值进行反向更新,迭代网络参数,最后求出最佳的锚框值。自适应的anchor能够更好地配合网络训练,提高模型的精度,减少对anchor的设计难度,具有很好的实用性。

2.1.3 自适应图片缩放

为了提高模型的推理速度,YOLOv5提出自适应图片缩放,根据长宽比对图像进行缩放,并添加最少的黑边,减少计算量。该方法是用缩放后的长边减去短边再对32进行取余运算,求出padding。在训练时并没有采用缩减黑边的方法,该方法只是在测试模型推理的时候才使用,这样提高了目标检测的准确率和速度。

2.2 Backbone

2.2.1 Focus结构

该结构采用切片操作,将特征切片成四份,每一份将当成下采样的特征,然后在channel维度进行concat。例如:原始608*608*3的数据图片,经过切片操作先变成304*304*12的特征图,再经过一次32个卷积核的卷积操作,变成304*304*32的特征图。

2.2.2 CSP结构

YOLOv5中的CSP[5]结构应用于两处,一处是CSP1_X结构应用于Backbone的主干网络中,另一处的CSP2_X结构应用于Neck中,用于加强网络的特征融合的能力。CSPNet主要从网络结构设计的角度解决推理中从计算量很大的问题。该结构的优点有:1)增强CNN的学习能力,使得模型在轻量化的同时保持较高的准确性;2)减低计算的瓶颈问题;3)减低内存的分险。

2.3 Neck

2.3.1 PFN+PAN结构

这个结构是FPN和PAN的联合。FPN是自顶向下的,将高层的特征信息通过上采样的方式进行传递融合,得到进行预测的特征图,而PAN正好与FPN的方向是相反的方向,它是自底向上地采取特征信息。两个结构各自从不同的主干层对不同的检测层进行参数聚合。两个结构的强强联合让得到的特征图的特征更加明显和清楚。

2.4 Prediction

2.4.1 Bounding box的损失函数

Bounding box损失函数[6]增加了相交尺度的衡量方式,有效缓解了当两个框不相交和两个框大小完全相同的两种特殊情况。因为当预测框和目标框不相交时,IOU=0,无法反应两个框距离的远近的时候,此时的损失函数不可导;两个框大小完全相同,两个IOU也相同,IOU_LOSS无法区分以上两种特殊情况。

2.4.2 nms非极大值抑制

在目标检测过程的后续处理中,对于大量的目标框的筛选问题,通常会进行nms操作,以此来达到一个不错的效果。YOLOv5算法同样采用了加权的nms操作。

3 识别吸烟行为实验

3.1 数据源与处理

为了保证有效的检测精度,制作了抽烟行为数据集。分别从正视、侧视、俯视三个角度对不同人进行抽烟行为视频录制,将吸烟行为定义为“somke”类,对录制的视频进行截图、筛选;用LabelImg标记软件对图像进行标注,生成 .txt 文件。共获得1200张有效图片,其中训练集包含图片1000张,测试集200张。将数据集的路径写入.yaml文件。

3.2 实验过程

该实验采用的算法是YOLOv5的目标检测算法,该算法具有很高的灵活性和很快的速度,在训练模型的时候还会对数据进行自動地加工处理,通过自动缩放、色彩空间调整和马赛克增强三种手段让目标物体变得更容易识别,提高模型的准确度。同时也正是因为对数据进行上述的处理加工才让“烟”这种小的目标识别得更加精确。

本实验用python编程语言在pytorch上构建模型,通过大量的数据集训练模型,模型训练结束后评估模型的准确率,最后使用模型进行检测。检测方式可以是使用照片、使用视频和连接摄像头实时检测。

3.3 实验结果分析

如图5是利用YOLOv5算法下对吸烟行为的检测情况,图中的“somke 0.9”是图中动作与吸烟动作的相似度,从俯视角度的识别结果可以看出该模型能对吸烟行为做出较为精准的识别。

mAP@0.5(mean Average Precision loU=0.5)即对每一类的所有图片的平均精度再对类求平均,如图6,本实验中的mAP@0.5的值在0.65左右表明在系统预测出来标记结果与原图片的标记重合度为0.5时检测精度能达到0.65。

4 总结

对于本实验的抽烟实时检测采用的是YOLOv5算法,从数据集的制作到模型的选择和训练整个实验过程,得到以下结论:

本实验对抽烟行为的检测可以实现对照片、视频和摄像头实时进行检测,但是由于制作数据集的场景比较单一,所以对地点和摄像头的拍摄角度有要求,摄像头的放置高度对也会有一定影响,比如摄像头安置的高度、目标识别距离等。如果太高太远的话,识别的数据就会很小,识别小目标就会增加难度,所以综合来说模型还有很大的完善和进步空间。

参考文献:

[1] 张慧,王坤峰,王飞跃.深度学习在目标视觉检测中的应用进展与展望[J].自动化学报,2017,43(8):1289-1305.

[2] 宋彬彬.计算机视觉技术在自动化中的应用探析[J].电子世界,2020(20):10-11.

[3] 陈辉东,丁小燕,刘艳霞.基于深度学习的目标检测算法综述[J].北京联合大学学报,2021,35(3):39-46.

[4] 包迪.基于YOLO V4+Word2Vec的试卷问答题评分算法研究[D].昆明:昆明理工大学,2021:33.

[5] 王立辉.基于卷积神经网络的行人检测与跟踪算法研究[D].武汉:武汉科技大学,2021:11.

[6] 沈记全,陈相均,翟海霞.改进交并比边界框回归损失的YOLOv3检测算法[J].计算机工程,2021(4):4-5.

【通联编辑:梁书】

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!