钢缆是由多根多股钢丝绳围绕一根纤维芯或钢丝绳芯捻制而成的钢丝束, 在实际使用中会出现损坏等问题造成经济损失或人员伤亡, 因此及时检测识别到钢缆的损坏尤为重要. 目标检测方法分为单阶段和双阶段两种, 各自代表性的算法分别是YOLO与R-CNN, 其中YOLO在运行速度与对较小目标检测上拥有更好的性能, 故本文使用YOLO算法对钢缆表面的损坏进行检测识别实验.
YOLO目标检测算法是一种常用的单阶段目标检测算法, 其版本众多, 有YOLOv3[1]、YOLOv5、YOLOv7[2]等, 其中YOLOv5的性能最为优秀. YOLOv5在YOLOv4[3]的基础上进行了一部分改进, 使性能更佳, 且目标检测方面的算法和文献大多都以YOLOv5为基础进行开展, 使用五代网络进行改进方便进行对照和比较, 近几年推出的版本在实质上与YOLOv5相差不大, 因此本文采用YOLOv5进行研究与改进.
YOLOv5网络主要可以分为以下4个部分: 输入端、Backbone主干、Neck网络、Head检测输出端.
输入端主要对输入图像进行处理, 将输入图像统一尺寸、归一化等操作. 通过Mosaic操作对输入数据进行增强, 将随机的4张输入图片进行随机缩放、拼接、裁剪, 这样的操作可以丰富检测数据集, 增加了网络的鲁棒性, 并减小了Mini-batch值, 减小了GPU负担, 再通过自适应锚框计算与自适应图片缩放对接下来的目标检测进行性能提升.
Backbone主干部分主要由Conv模块, C3模块和SPPF模块组成, 主干网络的目的是提取输入图片中的图像特征, 以方便后续的目标检测工作, 其中C3模块可以增加网络的深度和感受野, 提升特征提取的性能, SPPF模块主要由最大池化部分和常规卷积所组成, 其可以从同一特征图中实现不同尺度的特征提取, 并生成三尺度特征图, 有助于提高检测精度.
Neck网络部分采用了FPN[4]特征金字塔与PANet[5]相结合. 通过进行自顶向下和自下而上的网络进行特征融合, 并将Backbone主干与Head检测端相结合, 进一步提升检测能力.
Head检测端主要用于预测特征图上不同大小的目标, YOLOv5与YOLOv4相同, 使用了多尺度的检测头, 对不同尺寸的特征图都有很好的检测效果.
在钢缆目标检测的实际应用中, 会出现检测设备资源有限、检测时间过长等问题, 故本文对YOLO进行优化, 减小模型大小与参数数量, 并同时保持较高的检测性能. 通过减小模型复杂度和计算开销, 达到缓解上诉实际应用问题的目的.
1 实验方法及改进本文网络将Backbone中的卷积模块替换为拥有更高的性能和更少的参数量的GhostConv模块; 在C3模块的基础上, 将ShuffleNet和注意力机制与原本的C3模块进行结合, 提出了ShuffleC3模块, 使网络拥有更高的检测性能和更轻量的结构, 最后对Head检测端进行改进.
由于相比其他五代网络, YOLOv5s网络拥有更为轻量的结构和更低的运算成本, 为了追求更好的检测性能度和更低的运算成本之间的平衡, 本文在YOLOv5s网络的基础上进行改进. YOLOv5网络结构如图1所示. 接下面详细介绍本文提出的GhostConv模块和ShuffleC3模块.
1.1 GhostConv卷积模块
神经网络在进行特征提取时, 会产生大量相似的冗余特征, 它们会占用大量的计算资源. 受GhostNet[6]启发, 引入GhostConv模块, 其通过廉价的操作生成更多的特征图, 从而减少中间扩展过程中的内存消耗. GhostConv模块结构是在普通卷积模块基础上进行改进, 将常规的卷积操作变为了两步, 第1步先对输入信息进行常规卷积, 获得一些特征图, 第2步再对第1步获得的特征图进行线性操作, 生成冗余特征图, 最后将两步的输出进行Concat连接. 其与普通卷积对比如图2所示.
GhostConv模块通过使用分组卷积进行线性变换, 假设输入的特征图大小为[C1, H, W], 输出特征图大小[C2 , H', W'], 其中C为通道数, H与W是特征图高与宽, 经过分组卷积分为g个组后, 输入特征图每组尺寸变为W×H×C1/g, 单个卷积核每组尺寸变为K×K×C2/g, K为卷积核大小, 由此可计算参数量从普通卷积的K×K×C1× C2变为K×K×C1× C2/g , 可以明显降低网络的参数量与计算量. 同样假设输入的特征图大小为[C1, H, W], 输出特征图 [C2 , H', W'], 其中常规卷积核为K, 线性变换卷积核为D, g表示每个通道产生的总映射数, 假设K=D, g远小于C1, 如下公式代表了常规卷积与GhostConv模块的计算量和参数量之比:
计算量之比:
$ \begin{split} {{{r}}_{{s}}} & = \frac{{{C_2} \times {{H}{'}} \times {W{'}} \times {C_1} \times K \times K}}{{\dfrac{{{C_2}}}{g} \times {{H}{'}} \times {W{'}} \times {C_1} \times K \times K + \left( {g - 1} \right) \times \dfrac{{{C_2}}}{g} \times {H{'}} \times {W{'}} \times D \times D}} \\ & = \dfrac{{{C_1} \times K \times K}}{{\dfrac{1}{g} \times {C_1} \times K \times K + \dfrac{{\left( {g - 1} \right)}}{g} \times D \times D}} \approx \dfrac{{{C_1} \times g}}{{{C_1} + g - 1}} \approx g{{ }} \\ \end{split} $ |
参数量之比:
$ \begin{split} {{{r}}_c} & = \dfrac{{{C_1} \times {C_2} \times K \times K}}{{\dfrac{{{C_2}}}{g} \times {C_1} \times K \times K + \left( {g - 1} \right) \times \dfrac{{{C_2}}}{g} \times D \times D}} \\ & \approx \dfrac{{{C_1} \times g}}{{{C_1} + g - 1}} \approx g{\text{ }} \end{split} $ |
因此, 理论上使用GhostConv模块可以节约g倍计算成本, 减少g倍参数. 通过将GhostConv模块引入Backbone主干并替换常规卷积, 将g设定为2, 可以大大减少计算成本, 并保证网络的稳定性.
1.2 ShuffleC3模块 1.2.1 ShuffleNetV2ShuffleNetV1[7]中, 使用了分组卷积来进行降低参数量, ShuffleNetV2[8]中在其基础上提出了channel split方法. channel split代替分组卷积, 减少分组卷积所需要的计算量, 将输入的C维通道一分为二, 得到左右两个分支, 由于网络中设计的分支数量越多、碎片化程度越高, 会导致网络的速度越慢, 故其中一个分支保持恒等映射, 另一个分支通过3个卷积进行特征提取, 再对输出进行Concat连接操作. 在连接之后, 由于每次常规卷积操作都是针对同一分支进行卷积处理, 导致每个组内没有进行信息交流, 于是提出channel shuffle的思想, 如图3所示, 通过channel split所得的g组特征矩阵, 对其再次进行g组划分, 将每个通道进行位置变换, 拼接出新的特征矩阵, 达到特征信息融合的目的, 由此来提高特征的重用性和特征提取性能.
C3模块是Backbone中的重要组成部分, 由3个卷积模块和1个Bottleneck模块组成, 本文将ShuffleNetV2与C3模块相结合, 将Bottleneck结构替换为ShuffleNet Bottleneck结构. ShuffleNet Bottleneck结构如图4所示, 其中卷积模块包括Conv模块、BN归一化模块、激活函数模.
1.2.2 CBAM注意力
CBAM[9]是一种轻量级的卷积注意力模块, 它与常见的注意力模块SENet[10]和ECANet[11]不同, 其在通道维度上进行注意力操作之外, 还在空间维度进行了注意力操作. 其结构如图5.
通道注意力模块主要关注输入图片中有意义的信息, 例如在分类任务中关注为什么分成不同的类别. 其在通道上保持维度不变, 在空间上压缩维度. 假设输入的特征图大小为[C, H, W], 将其分别通过最大池化层与平均池化层后, 得到两个大小均为[C, 1, 1]的特征图, 把这两个特征图送入全连接层后, 将输出结果相加, 再通过Sigmoid激活函数的计算, 获得代表特征重要程度的通道权重系数, 最后再将原输入的特征图与通道权重系数相乘, 得到大小为[C, H, W]的输出特征图.
空间注意力模块主要关注目标的位置信息, 其在空间上保持维度不变, 在通道上压缩维度, 其原理与通道注意力模块相同.
本文添加CBAM注意力到ShuffleNet Bottleneck结构中. CBAM注意力机制可以使网络关注更需要关注的地方, 通过并行的最大池化层和平均池化层, 使网络在特征提取的过程中, 提取到更加丰富、全面的高层特征, 提升特征提取的性能.
1.2.3 ShuffleC3模块设计本文网络使用分组结构的ShuffleNet Bottleneck来替换原本YOLOv5网络中C3模块中的Bottleneck结构, 分组结构可以降低一部分特征提取过程中所占用的参数量和计算量, 但为了维持特征提取准确性与轻量型结构之间的平衡, 本文网络在ShuffleNet Bottleneck中添加CBAM注意力机制、用3×3的卷积结构来替换原本1×1的卷积结构以加深网络深度、增加C3模块中Bottleneck的数量, 在原本的基础上增加一次Bottleneck结构. 由于SiLU函数在接近0时具有更平滑的曲线, 且可以使网络的输出范围在0和1之间, 实验得知其在本网络中获得了优于原ReLU[12]函数的性能, 故在ShuffleNet Bottleneck的卷积模块中使用SiLU函数替换ReLU函数. 通过上述方法, 使得网络获得更低的参数量和计算量, 并拥有更高的特征提取性能. ShuffleC3结构如图6所示, n表示Bottleneck结构重复次数.
1.3 Head部分改进
Head目标检测头部分主要由卷积层、池化层、全连接层等构成, 其用来对Backbone主干部分提取出的特征图进行大、中、小目标的多尺度目标检测. 锚框(Anchor)部分是预定义的一组边界框, 用于在特征图上生成候选框, 由于本次使用的钢缆数据集的目标多为中型目标和小型目标, 故只定义[10, 13, 16, 30, 33, 23]小目标检测框和[30, 61, 62, 45, 59, 119]中目标检测框. 由实验得知, 使用预定的锚框所得到的检测性能要优于使用K-means聚类所获得的锚框, 故本文网络使用预定锚框代替K-means聚类所获得的锚框. 再在Head网络中剪掉大目标检测部分和相对应的与Backbone主干相连接的Neck网络部分, 大幅降低网络的计算复杂度和参数量. 改进后的YOLOv5网络结构图如图7所示.
2 实验结果及分析为了证明改进网络在钢缆表面损坏上识别的优越性, 本节给出实验结果与分析. 在本节中, 首先介绍数据集、实验配置及评估指标, 再进行消融实验证实GhostConv模块、ShuffleC3模块、Head部分改进的作用, 最后将本文网络方法与其他常用的缺陷识别方法进行了比较.
2.1 数据集
为了证明本文所提出改进方法的有效性, 引用了数据集Cable Damage Computer Vision Project和数据集DBTT Computer Vision Project, 并对它们进行部分整合与数据增强, 获得钢缆损坏数据集Cable Damage. 数据集中为包含两种损坏类型: 断裂、烧毁的问题钢缆, 共包括6590张图像, 并按70%、20%、10%的比例划分训练集、验证集、测试集. 其中, 训练集中样本个数为4614, 验证集中样本个数为1314. 训练集在网络参数训练中有着重要作用, 可以获得最小的损失函数. 而验证集用来评估训练网络识别表面损坏的准确性. 数据集中两种损坏类型如图8所示.
2.2 实验配置
本次实验是在PyTorch框架下进行的. 本文实验使用具有10 GB显存的NVIDIA GeForce RTX 3080显卡和Intel(R) Xeon(R) 2.50 GHz Platinum 8255C CPU. 网络训练过程进行200次迭代, 每批次输入数据量大小为32, 将输入图像统一变换为640×640大小并归一化, 采用随机梯度(SGD)下降优化器, 采用线性学习率调度策略, 初始学习率为0.01, 最终学习率为0.0001. 动量参数和权重衰减系数分别为0.937和0.0005, 由于网络结构改变后预权重会对结果产生影响, 故本文所有实验均不使用预权重.
改进后网络的测试结果如图9所示, 可以看出改进后的网络能够准确识别出钢缆表面的损坏.
2.3 评估指标
本文采用平均精度(mAP)、精确率(Precision)、召回率(Recall)、浮点运算量(GFLOPs)、参数量(Params)、模型大小和每秒帧数(FPS)来综合评价所提出的网络. 在目标检测任务中, 精确率和召回率是判断网络识别效果的重要指标, 计算方法如下.
精确率:
$ {\textit{Precision = }}\frac{{{\textit{TP}}}}{{{\textit{TP + FP}}}}{\textit{ }} $ |
召回率:
$ {\textit{Recall = }}\frac{{{\textit{TP}}}}{{{\textit{TP + FN}}}}{\textit{ }} $ |
其中, TP代表正类被预测为正类的个数, FP代表正类被预测为负类的个数, FN代表负类被预测为负类的个数. 平均精度(mAP)是 mean average precision 的缩写, 它等于所有类别的平均精度求和除以所有类别. 此外, 为了比较不同网络的计算复杂度, 本文选择了计算量(GFLOPs)和参数量(Params)来表示不同网络之间的性能差异. 另外, 本文用每秒帧数(FPS)表示推理速度, FPS的结果为663张测试图像的平均值.
2.4 对照实验结果及分析本节通过消融实验验证GhostConv模块、ShuffleC3模块、Head改进在钢缆损坏识别上的优势, 实验结果如表1所示.
ShuffleC3模块中引入了注意力机制, 目前注意力机制最常用的包括SE-Net、ECA-Net、CA-Net[13]、CBAM-Net这4种. 分别加入4种注意力进行对比实验, 如表2所示.
为了验证本文改进网络在钢缆损坏识别上的性能, 将本文网络与其他先进的轻量型网络模型进行对比, 包括YOLOv3-Tiny、YOLOv6[14]、YOLOv7-Tiny, 再进行了与常见的两阶段目标检测网络Faster-RCNN[15]性能对比. 此外, 将常用的轻量型骨干网络MobileNetV3[16]、ShuffleNetV2、GhostNet取代YOLOv5默认的Backbone主干, 进行对比. 结果如表3所示.
根据消融实验可以看出在分别单独引入GhostConv模块、ShuffleC3模块、Head改进后, 网络的计算量和参数量都有明显程度的降低. 在实验5–实验7中分别对以上3种改进进行了不同方法的融合, 从数据可以看出实验7的融合方法效果最好, 提高了平均精度1.1%, 参数量和计算量分别降低了43.4%和31%, 模型大小减少了42.3%. 由于ShuffleC3模块中引入了CBAM注意力机制, 其会对网络运算速度产生一些影响. FPS指标会受到实验配置影响, 在不同的实验设备上会有不同的结果, 因此本文更注重平均精度和网络的计算成本, 故实验7的网络模型更加符合要求.
由注意力对比实验可以看出4种注意力机制对参数量、计算量和模型大小的影响相差不大, 使用CBAM可以获得更高的平均精度, 因此在本文网络中使用CBAM添加到ShuffleC3模块中.
由不同模型对比实验可知, YOLOv3-Tiny虽然平均精度略高于YOLOv5s, 但由于其主干使用DarkNet-53, 导致有了更高的计算成本. YOLOv6s、YOLOv7-Tiny在钢缆损坏识别上的表现均不如改进前的YOLOv5s, 本文网络在保证平均精度的同时, 在计算成本和模型大小上均有优于其他模型的表现, 其中替换骨干的ShuffleNetV2-v5、GhostNet-v5网络由于其使用大量轻量型卷积且网络深度较浅, 分别在参数量和计算量上略低于改进后网络. ShuffleNetV2-v5的参数量低了0.18M, 计算量低了2.9G, GhostNet-v5的计算量低了3G, 但是它们在减轻运算成本的同时, 因为其较浅的网络无法保证识别的准确度, 所以平均精度均低于改进后网络, 因此改进后网络更加符合本文的要求, 拥有最好的性能.
3 结论与展望本文在基于YOLOv5的基础上, 设计了一种针对钢缆表面损坏识别的轻量型网络, 为了更进一步的降低网络参数量和计算复杂度, 节约计算成本, 并保证检测的平均精度. 本文采用了GhostConv模块、ShuffleC3模块并对Head部分进行改进, 在Cable Damage数据集上测试, 改进后网络对比YOLO v5s提高1.1%的平均精度, 参数量和计算量分别降低了43.4%和31%, 模型大小减少了42.3%. 未来, 将重点对算法进行进一步优化, 以达到更高的准确率、更快的检测速度和更低的模型复杂度.
[1] |
Redmon J, Farhadi A. YOLOv3: An incremental improvement. arXiv:1804.02767, 2018.
|
[2] |
Wang CY, Bochkovskiy A, Liao HYM. YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors. Proceedings of the 2023 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Vancouver: IEEE, 2023. 7464–7475.
|
[3] |
Bochkovskiy A, Wang CY, Liao HYM. YOLOv4: Optimal speed and accuracy of object detection. arXiv:2004.10934, 2020.
|
[4] |
Lin TY, Dollár P, Girshick R, et al. Feature pyramid networks for object detection. Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017. 936–944.
|
[5] |
Liu S, Qi L, Qin HF, et al. Path aggregation network for instance segmentation. Proceedings of the 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018. 8759–8768.
|
[6] |
Han K, Wang YH, Tian Q, et al. GhostNet: More features from cheap operations. Proceedings of the 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020. 1577–1586.
|
[7] |
Zhang XY, Zhou XY, Lin MX, et al. ShuffleNet: An extremely efficient convolutional neural network for mobile devices. Proceedings of the 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018. 6848–6856.
|
[8] |
Ma NN, Zhang XY, Zheng HT, et al. ShuffleNet v2: Practical guidelines for efficient CNN architecture design. Proceedings of the 15th European Conference on Computer Vision. Munich: Springer, 2018. 122–138.
|
[9] |
Woo S, Park J, Lee JY, et al. CBAM: Convolutional block attention module. Proceedings of the 15th European confeRence on Computer Vision. Munich: Springer, 2018. 3–19.
|
[10] |
Hu J, Shen L, Sun G. Squeeze-and-excitation networks. Proceedings of the 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018. 7132–7141.
|
[11] |
Wang QB, Wu BG, Zhu PF, et al. ECA-Net: Efficient channel attention for deep convolutional neural networks. Proceedings of the 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020. 11531–11539.
|
[12] |
Glorot X, Bordes A, Bengio Y. Deep sparse rectifier neural networks. Proceedings of the 14th International Conference on Artificial Intelligence and Statistics. Fort Lauderdale: JMLR.org, 2011. 315–323.
|
[13] |
Hou QB, Zhou DQ, Feng JS. Coordinate attention for efficient mobile network design. Proceedings of the 2021 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Nashville: IEEE, 2021. 13708–13717.
|
[14] |
Li CY, Li LL, Jiang HL, et al. YOLOv6: A single-stage object detection framework for industrial applications. arXiv:2209.02976, 2022.
|
[15] |
Ren SQ, He KM, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks. Proceedings of the 28th International Conference on Neural Information Processing Systems. Montreal: MIT Press, 2015. 91–99.
|
[16] |
Howard A, Sandler M, Chen B, et al. Searching for MobileNetV3. Proceedings of the 2019 IEEE/CVF International Conference on Computer Vision. Seoul: IEEE, 2019. 1314–1324.
|