石油和化学工业是我国重要的基础产业, 支柱产业, 化学品产值约占全球的40%. 同时, 危险化学品领域重特大事故多发, 安全生产仍处于爬坡过坎, 攻坚克难的关键时期[1]. 在装卸区存在装卸过程中泄露的易燃, 易爆的气体和液体, 当车辆产生的静电积累到一定值后, 就会放电引发火灾爆炸事故. 在厂区实际装卸作业中, 一是因为施工人员疏忽或偷懒不接接地线, 二是人工监管存在漏洞无法做到全程监管, 会出现接地线未正确安装的问题, 对此, 使用深度学习目标检测配合现场防爆摄像头做到接地线的实时监管, 以减少此类情况的发生.
目标检测指的是从复杂的图片背景中检索到感兴趣的目标并对定位的目标进行分类. 目标检测的发展也包含了基于传统方法和基于深度学习方法两类, 与行为识别一致. 传统的目标检测一般是通过窗口滑动的方式普遍扫描图像, 利用手工提取特征, 再将提取的特征送入AdaBoost, 支持向量机等分类器中做分类判断. 但传统方法一般针对小数据集检测任务, 实际应用的泛化能力较弱, 而深度学习方法通过复杂的深度神经网络结构提取特征相较于传统方法能更好地学习和表达特征[2]. 深度学习技术的成熟, 推动着目标检测技术的进步, 根据训练方式的不同又分为了双进程(two-stage)和单进程(one-stage)检测方法两类.
双进程检测方法包含了两个阶段, 一是对候选区域提议的预处理过程, 二是对提议的区域进行分类和回归并输出分类结果. 2014年Girshick等人[3]提出了一种R-CNN网络代替传统目标检测模型, 自此开启了双阶段目标检测算法的研究道路, 衍生出许多经典的算法. Fast R-CNN[4]在整个图像上使用一次卷积过程, 输出感兴趣区域, 提高了R-CNN的运算速度, 采用ROI池化层对候选区域池化归一为同等大小的特征图送入完全连接网络中后利用Softmax进行分类. 丁志敏等人[5]在原始Faster R-CNN方法的基础上将卷积网络的低层和高层特征图均送入RPN中实现多尺度目标检测, 并对非极大值抑制进行改进, 有效提升了输电线路挂接接地线的识别效果.
相较于双进程目标检测算法, 单进程目标检测算法的整体检测流程更具简洁性. 2015年Redmon等人提出YOLOv1算法[6], 删减了双阶段目标检测法中提取候选区域环节, 图像输入后直接用一个深度神经网络完成提取特征, 回归候选框和分类, 相较于Faster R-CNN, 其检测速度有大幅提升. YOLOv1算法之后, 利用新的网络结构, 增加锚点, 跨尺度预测等调优技巧进行改进, 相继提出了YOLOv2[7], YOLOv3[8]. 2020年Bochkovskiy等人[9]利用感受野和参数更大的CSP-Darknet53作为主干网络提取特征, 并将YOLOv3中的FPN改为PANet完成多通道特征融合, 构建出YOLOv4, 提高了小目标检测性能. YOLOv5[10]是Ultralytics团队在2020年6月提出的一种典型的单进程目标检测算法, 该算法在性能上稍弱于YOLOv4, 但其速度和灵活性远高于YOLOv4, 从而非常适合厂区内的实时检测. 吴天舒等人[11]首先通过设计轻量化目标检测算法完成驾驶员区域快速定位; 然后利用经过剪枝加速的语义分割模型对驾驶员区域进行分割, 得出安全带连通域; 最后通过判断安全带连通域面积检测驾驶员是否佩戴安全带. 郑福建等人[12]提出对原生YOLOv3目标检测算法进行剪枝改进, 使得剪枝后的CUT-YOLOv3目标检测算法在与原生YOLOv3精度相当的情况下提升检测速度以识别安全带.
受化工厂区摄像头安装距离和防爆区防爆摄像头性能影响, 在图像中接地线部分在整个图像中所占比例大多不超过10%. 另外, 车辆型号不同导致接地线连接位置不同, 所以接地线拉伸后呈现的状态也不同, 且拉抻越长接地线越细; 夜间接地线与背景颜色区别度不高, 都使接地线的检测难度大大增大. 因此, 本文通过引入自注意力机制CotNet改进YOLOv5, 提高模型的识别精度, 最终满足实时精确检测接地线的要求.
1 算法原理介绍 1.1 YOLOv5目标检测算法YOLOv5自发布以来一直在迭代升级版本, 本文采用的是YOLOv5的6.0版本. 其模型根据网络结构的深度和宽度分为s、m、l、x这4个版本, 其中YOLOv5s模型最小但检测精度最低, YOLOv5x模型最大但检测精度最高. 本文基于YOLOv5m进行改进. 如图1所示YOLOv5的网络结构可以分为4个部分: 输入端, Backbone, Neck, 输出端[13].
1.1.1 输入端YOLOv5的输入端采用了Mosaic数据增强, 随机从中筛选4张图片再进行随机缩放, 随机分布后进行拼接, 大大丰富了数据集. 通过随机缩放也可以得到很多小目标数据, 有助于提高网络的鲁棒性. 除此之外, 通过自适应锚框计算将计算初始锚框值的功能嵌入到代码中, 每次训练时, 自适应的计算不同训练集中的最佳锚框值. 通过自适应图片缩放减少计算量和信息冗余, 提高推理速度.
1.1.2 Backbone本文使用的YOLOv5的6.0版本相较于之前版本, Backbone中把原本的Focus模块替换为了一个使用起来更加高效的
1.1.3 Neck
YOLOv5的Neck使用了FPN+PAN结构, 该结构能够更好地处理深层特征图和浅层特征图的优缺点. FPN能够把深层特征图携带的更强的语义特征传到浅层, 从而增强多个尺度上的语义表达, PAN能够把浅层特征图携带的更强的定位信息传到深层, 从而增强多个尺度上的定位能力. FPN+PAN的组合大大增强了网络不同特征层的融合能力.
1.1.4 输出端YOLOv5采用CIOU_Loss做边界框回归损失函数, 通过重叠面积, 中心点距离, 长宽比这3个几何因素计算真实标注框和模型预测框的吻合程度, 能够有效提高模型对重叠遮挡目标的检测效果. 且YOLOv5通过NMS非极大值抑制消除多余预测框.
2 算法改进 2.1 自注意力机制2017年, Transformer算法被首先应用于自然语言处理领域(natural language processing, NLP), 并且取得了一定的成功, 其模型的网络结果由自注意力机制组成, 不仅能够并行化训练, 而且能够包含全局信息[14]. 目前应用于图像处理领域的自注意力机制是通过对key, query, value的计算来获取具有上下文信息的注意力矩阵, 自注意力机制中key, query, value可以理解为对一个给定的query, key是其一个索引, 通过query与key的计算可以得出最合适的value. 在计算机视觉中, 我们通过特征图信息与相应的参数矩阵相乘计算出K,Q, V. 但是由于每个key都是单独和query进行计算, 从而忽视了相邻键之间的上下文信息. 因此, 传统自注意力机制可很好的获取图像全局信息, 但卷积神经网络捕捉到的图像局部信息却被自注意力机制忽略[15], 本文使用的CotNet通过将两者捕捉图像全局信息和图像局部信息的能力结合起来, 不再需要引入position模块, 可以有效提高模型的特征表达能力.
2.2 CotNet模块原理如图2所示[16], 在CotNet中key采用了
$ A = [{K^1}, Q]{W_\theta }{W_\delta } $ | (1) |
其中, A代表注意力矩阵,
对于输入的特征图信息N, value定义为
$ {K^2} = A \otimes V $ | (2) |
其中, A代表注意力矩阵,
最后与图像局部上下文信息
$ Y = {K^1} + {K^2} $ | (3) |
其中, Y为CotNet最终输出的结果,
CotNet模块的算法如算法1所示.
算法1. CotNet模块的算法
(1) 获取输入特征图N的[b, c, h, w], 即batch, 通道数, 图像的高和宽. (2) 特征图N通过k×k的卷积得到局部静态上下文信息K1. (3) 特征图N通过1×1的卷积后得到v.(4) 将K1与特征图N通过concat拼接得到y. (5) y经过连续两个1×1卷积得到注意力矩阵A.(6) 对A进行取平均降维后与v相乘.得到全局动态上下文信息K2. (7) K1与K2相加后返回结果.
CotNet模块通过对key进行卷积操作提取局部上下文信息来指导自注意力学习. 如图3所示本文在YOLOv5的网络结构中引入CotNet自注意力机制代替CSP1_N部分结构, 提高了算法对接地线的特征提取能力.
2.3 输出端损失函数改为SIOU_Loss
YOLOv5原本使用的CIOU_Loss, 在通过重叠面积, 中心点距离, 长宽比这3个几何因素计算真实标注框和模型预测框的吻合程度时, 没有考虑真实框和预测框之间的向量角度, 从而导致收敛速度慢且效率较低[18]. SIOU_Loss损失函数引入了真实标注框和模型预测框之间的向量角度, 并重新定义相关损失函数, 有效地提高了训练的速度和推理的准确性[19].
SIOU_Loss包含4个部分: 角度损失(angle cost), 距离损失(distance cost), 形状损失(shape cost), IOU损失(IOU cost).
角度损失定义如下:
$ \begin{split} \varLambda & = 1 - 2 \times {\rm{sin}}{^2}\left({\rm{arcsin}}\left(\frac{{{c_{{h}}}}}{\sigma }\right)- \frac{\pi }{4}\right) \\ & ={\rm{cos}}\left(2 \times \left({\rm{arcsin}}(\frac{{{c_{{h}}}}}{\sigma }) - \frac{\pi }{4}\right)\right) \\ \end{split} $ | (4) |
其中,
距离损失在定义时考虑了上面的角度损失), 定义如下:
$ \varDelta = \sum\limits_{(t = {{x}}, {{y}})} {(1 - {{\rm{e}}^{ - \gamma {\rho _{{t}}}}})} = 2 - {{\rm{e}}^{ - \gamma {\rho _{{x}}}}} - {{{{\rm{e}}}}^{ - \gamma {\rho _{{y}}}}} $ | (5) |
其中,
$ {\rho _x} = \left( {\frac{{b_{cx}^{gt} - {b_{cx}}}}{{{c_w}}}} \right),\;{\rho _y} = \left( {\frac{{b_{cy}^{gt} - {b_{cy}}}}{{{c_h}}}} \right),\;\gamma = 2 - \varLambda $ | (6) |
其中,
形状损失的定义如下:
$ \varOmega = \sum\limits {(1 - {{\rm{e}}^{ - {{{w}}_{{t}}}}}} {)^\theta } = {(1 - {{\rm{e}}^{ - {{{w}}_{{w}}}}})^\theta } + {(1 - {{\rm{e}}^{ - {{{w}}_{{h}}}}})^\theta } $ | (7) |
其中,
$ {w_w} = \frac{{\left| {w - \left. {{w^{gt}}} \right|} \right.}}{{\max \left( {w,{w^{gt}}} \right)}}, \; {w_h} = \frac{{\left| {h - \left. {{h^{gt}}} \right|} \right.}}{{\max \left( {h,{h^{gt}}} \right)}}$ | (8) |
其中,
IOU损失的定义为:
$ IOU = \frac{A}{B} $ | (9) |
其中, IOU为IOU损失, A为真实框与预测框的交集, B为真实框与预测框的并集. 最后结合上述, SIOU_Loss损失函数的定义为[20]:
$ {L_{{\rm{box}}}} =1- IOU + \frac{{\varDelta + \varOmega }}{2}$ | (10) |
本文试验所用的数据集为化工厂中装卸车区域的防爆摄像头拍摄的数据. 在数据采集期间, 每辆作业车辆以10 s为间隔采集20张图片, 因接地线连接位置导致接地线拉长的场景采集30张图片, 夜间作业车辆采集30张图片, 共采集2000张图片. 受防爆摄像头性能限制, 采集的图片尺寸为1920×1080. 对数据标注时为防止因为部分遮挡就完全无法识别, 对接地线进行分段标注, 且尽量减少标注框内背景占比, 降低背景对特征提取的影响. 根据8:1:1的比例随机分为训练集, 验证集, 测试集, 最终得到训练集1600张, 验证集200张, 测试集200张.
3.2 试验环境本次试验是在Windows操作系统下, 基于GPU, PyTorch和CUDA框架完成的. 试验运行环境的CPU为Intel(R) Core(TM) i7-9750H CPU @ 2.60 GHz, 显卡为英伟达RTX2070, 显存为8 GB, 运行内存为16 GB.
3.3 评估指标本研究主要采用目标检测算法中的精确度(precision, P), 召回率(recall, R), 平均精确度(average precision, AP), 平均精度均值(mean average precision, mAP)和单幅图像检测耗时作为评估指标, 其中平均精度均值(mAP)和单幅图像检测耗时是主要评估指标, 可以有效评估算法的精度和速度.
精确度的计算如式(11)所示, 召回率的计算公式如式(12)所示:
$ P= \frac{{TP}}{{TP + FP}}$ | (11) |
$ R= \frac{{TP}}{{TP + FN}}$ | (12) |
其中, TP是接地线识别正确的样本数量, FP是把非接地线识别成接地线的样本数量, P代表接地线目标检测的精确度, FN是把接地线识别成非接地线的样本数量, R代表接地线目标检测的召回率.
平均精确度的计算公式如式(13)所示.
$ {X_{AP}} = {{\rm{\int }}_0^1P}\left( R \right)$ | (13) |
$ {m_{AP}} = \frac{{\displaystyle\sum\limits_{i = 1}^K {{X_{APi}}} }}{K}$ | (14) |
其中,
${m_{AP}}_{@0.5} = \frac{{\displaystyle\sum\limits_{i = 1}^K {{X_{AP}}_{@0.5{{i}}}} }}{K}$ | (15) |
其中,
在网络模型训练阶段, 将迭代次数设置为100次, 将每批次训练数据量设置为16, 将权重衰减系数设置为0.0005, 将动量因子设置为0.8, 学习速率决定了模型参数的更新步伐, 学习率过大可能导致网络无法收敛, 学习率过小则可能收敛过慢, 将优化器设置为Adam, Adam可以自动调整学习率, 将初始学习率设置为0.01, 将置信度阈值设置为0.5, 如表1所示. 改进后模型的训练损失变化和YOLOv5的训练损失变化如图4所示.
3.5 改进后模型的性能分析与消融实验
经过改进后算法对接地线的检测精确度为94.1%, 召回率为97.8%,
试验结果证明, 改进后的模型对接地线取得了较高的识别精度, 且检测的耗时也属于可接受范围. 为了进一步验证改进后算法相较原算法的有效性, 本文以YOLOv5算法为基础, 分别增加本文的两种改进方法, 再同时增加两种改进方法, 共4组网络用同样的数据设计了消融实验. 实验结果如表2所示.
由表2数据可知, 在YOLOv5网络骨干中融合自注意力CotNet模块后
为了进一步直观地验证改进算法能够更有效地识别不同环境和不同连接方式下的接地线, 现选取一部分接地线图片作为验证集, 分别验证原算法和改进后算法, 验证结果如图5所示. 根据Image1可以看出, 改进后算法能够更好地识别接地线且识别精度有所提升. 根据Image2可以看出, 改进后算法在夜间相比原算法能够更好地识别接地线且识别精度有较大提升. 根据Image3可以看出有, 改进后算法在识别拉长后的接地线时能更好地识别接地线且识别精度有较大提升. 通过以上结果可知, 改进后算法不但提高了接地线的识别精度, 而且在原算法难以有效识别的场景下可以有效提高识别效果.
4 结论
本文提出的改进算法是在YOLOv5的基础上, 首先在网络结构中引入自注意力机制CotNet模块, 有效提高算法特征提取能力; 再修改回归损失函数为SIOU_Loss, 提高了训练的速度和推理的准确性. 研究结果表明, 改进后的算法的平均精度均值达到了97.6%, 单幅图像检测耗时21.2 ms, 可以满足厂区装卸车接地线检测的精确度要求和实时性要求. 对于拉长后的接地线和夜晚环境下的接地线也都有效提高了识别效果. 未来将继续优化接地线的识别效果, 考虑引入图像分割结合目标检测提高识别效果, 为化工厂区的安全监管保驾护航.
[1] |
黄志刚. 5G+工业互联网在危险化学品企业安全生产管理中的应用. 新型工业化, 2021, 11(7): 9-10. DOI:10.19335/j.cnki.2095-6649.2021.7.004 |
[2] |
卢宏涛, 张秦川. 深度卷积神经网络在计算机视觉中的应用研究综述. 数据采集与处理, 2016, 31(1): 1-17. DOI:10.16337/j.1004-9037.2016.01.001 |
[3] |
Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation. Proceedings of the 2014 IEEE Conference on Computer Vision and Pattern Recognition. Columbus: IEEE, 2014. 580–587.
|
[4] |
Ren SQ, He KM, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149. DOI:10.1109/TPAMI.2016.2577031 |
[5] |
丁志敏, 邢晓敏, 董行, 等. 基于深度学习的输电线挂接地线状态目标检测. 电子测量技术, 2021, 44(3): 132-137. DOI:10.19651/j.cnki.emt.2005474 |
[6] |
Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection. Proceedings of the 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Vegas: IEEE, 2016. 779–788.
|
[7] |
Redmon J, Farhadi A. YOLO9000: Better, faster, stronger. Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Honolulu: IEEE, 2017. 6517–6525.
|
[8] |
Redmon J, Farhadi A. YOLOv3: An incremental improvement. arXiv:1804.02767, 2018.
|
[9] |
Bochkovskiy A, Wang CY, Liao HYM. YOLOv4: Optimal speed and accuracy of object detection. arXiv:2004.10934, 2020.
|
[10] |
Zhu XK, Lyu S, Wang X, et al. TPH-YOLOv5: Improved YOLOv5 based on transformer prediction head for object detection on drone-captured scenarios. Proceedings of the 2021 IEEE/CVF International Conference on Computer Vision Workshops. Montreal: IEEE, 2021. 2778–2888.
|
[11] |
吴天舒, 张志佳, 刘云鹏, 等. 结合YOLO检测和语义分割的驾驶员安全带检测. 计算机辅助设计与图形学学报, 2019, 31(1): 126-131. |
[12] |
郑福建, 汪彦, 左应祥, 等. 基于剪枝YOLOv3算法的高处作业人员安全带佩戴检测研究. 信息系统工程, 2021(10): 117-119. DOI:10.3969/j.issn.1001-2362.2021.10.037 |
[13] |
王鹏飞, 黄汉明, 王梦琪. 改进YOLOv5的复杂道路目标检测算法. 计算机工程与应用, 2022, 58(17): 81-92. DOI:10.3778/j.issn.1002-8331.2205-0158 |
[14] |
孔雅洁, 张叶. 引入高斯掩码自注意力模块的YOLOv3目标检测方法. 液晶与显示, 2022, 37(4): 539-548. DOI:10.37188/CJLCD.2021-0250 |
[15] |
王全增. 基于深度学习的花粉自动检测算法研究[硕士学位论文]. 北京: 北京工业大学, 2020.
|
[16] |
Li YH, Yao T, Pan YW, et al. Contextual transformer networks for visual recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence,
|
[17] |
杨鹤, 柏正尧. CoT-TransUNet: 轻量化的上下文Transformer医学图像分割网络. 计算机工程与应用. 2023, 59(3): 218–225.
|
[18] |
徐长凯. 基于优化边界框回归的目标检测研究[硕士学位论文]. 青岛: 青岛科技大学, 2021.
|
[19] |
Gevorgyan Z. SIoU Loss: More powerful learning for bounding box regression. arXiv:2205.12740, 2022.
|
[20] |
李小军, 邓月明, 陈正浩, 等. 改进YOLOv5的机场跑道异物目标检测算法. 计算机工程与应用. 2023, 59(2): 202–211.
|