1. 引言
近几十年来,随着全球经济和技术的快速发展,隧道和地下工程的数量和规模大大增加。通常根据地质条件有多种可用的隧道施工方法。其中,钻孔爆破法(DBM)是最常用的方法之一,因为钻爆法能够处理复杂的环境,在硬岩地层中其效率明显高于隧道掘进机(TBM)等其他方法。钻爆法的施工流程通常如下:首先,由风枪钻好炮孔;然后将炸药填充在钻好的孔中,并安装雷管引爆炸药以炸碎隧道掌子面的岩石。在上述过程中,由于缺乏合适的自动化装备,炸药的装填是最耗时的步骤。到目前为止,装药仍是一项危险而繁琐的任务,需要由操作员手动执行。在实际工程中,需要许多操作人员一起协作完成炸药的装填,人力依赖性强,并且在裸露围岩下作业时有岩石掉落伤人等风险。因此,迫切需要实现炮孔的自动识别和炸药的无人装填[1]。
在目标检测领域,现有方法可以根据训练过程大致分为非基于学习的方法和基于学习的方法。早期发展起来的大多数目标检测方法可以看成是非基于学习的方法,例如基于Sobel算子的边缘检测[2] [3],Laplace运算符[4]-[6]。这些方法通常使用图像处理方法,例如滤波和二值化。尽管在某些应用中这些方法的性能能够令人满意,但非基于学习的方法在某些情况下容易受到限制,因为它们通常需要主观选择参数。这些非学习方法在现实场景下的应用通常受限于人为干预的主观性,需要用户有确定算法参数的经验,因此缺乏对环境干扰的适应能力。由于隧道环境复杂,可能受到岩石褶皱、灰尘和黑暗的影响,使用非基于学习的方法识别炮孔十分具有挑战性且不可靠。
由于深度学习和高性能计算设备的快速发展[7],人们开发了多种基于卷积神经网络(CNN)的目标检测方法。近年来,卷积神经网络的发展非常活跃。它已经从早年的LeNet [8]发展到现在的AlexNet [9]、VGGNet [10]、GoogLeNet [11]和ResNet [12]。这些网络模型可以被认为是基于学习的目标检测算法的主干,它可以为检测提供特征图来描述图像特征。经过近几年的发展,深度学习已经被用于交通工程中不同类型任务的图像分类。周等人[13]使用激光相机拍摄的距离图像研究裂纹分类。与RGB相机拍摄的图像不同,距离图像可以避免外部环境变化比如光照带来的影响。方星桦[14]采用smaAt-Unet神经网络识别和Zhang-Suen算法和8邻域连通域分析方法,最终建立了一种基于全景展开图像的隧道洞壁围岩节理信息识别方法。柳厚祥等[15]基于深度学习AlexNet模型识别隧道掌子面的节理、裂隙、破碎程度等。谢雄耀[16]等通过Faster R-CNN网络对原始衬砌图像进行目标识别,并对框选出的裂缝区域自动裁切,再利用U-Net语义分割网络对裂缝进行像素级分割,提出了一种复杂环境公路隧道裂缝快速识别与分割算法。陈帅豪[17]提出了一种改进的SSD目标检测算法,借助Mobilenetv2网络和ResNet34网络并融合FPN多特征融合结构,对隧道质量缺陷检测和识别进行了研究。
虽然当前国内外通过识别算法对隧道以及路面的表征和病害检测上有了一定的研究进展,但针对炮孔识别方面的目标检测算法的研究则比较欠缺。岳中文[18]利用MCIW-2深度学习模型,采用了MobileNetv3-Small网络与CBAM注意力机制,对炮孔进行了快速智能识别。张万志[19]提出了在隧道中对于炮孔识别的几种影响因素。并采用轻量化SqueezeNet网络结构,提出了一种改进的Faster R-CNN算法,对隧道内的炮孔进行识别。张也[20]使用Faster R-CNN算法与VGG-16网络对炮孔进行识别,并提出了一种可能的装药机器人方案。
从上述文献回顾可以看出,使用卷积神经网络进行目标检测已经在从交通工程到建筑工程的许多领域中流行起来。然而,深度学习在炮孔识别中的研究和应用在数量和普遍性上仍然存在局限。因此,本研究旨在为炮孔的识别提供一种可用且准确的方法。本文选择近年发展起来的新兴目标检测方法YOLOv5作为实现炮孔识别的工具,并做出了针对性改进。
2. 模型选择与优化
2.1. 模型选择
基于深度学习的目标检测算法可以分为两大类别:双阶段目标检测和单阶段目标检测。在双阶段目标检测方面,代表性的算法包括R-CNN [21]、Fast R-CNN [22]、Faster-RCNN [23]等,它们以出色的检测准确率著称。然而,受限于候选区域提取的计算量大和检测速度较慢等缺点,这些方法难以满足实时目标检测的需求。
Figure 1. Roadmap of Yolov5-6.0 network structure
图1. Yolov5-6.0网络结构路线图
相对而言,YOLO系列[24] [25]算法具有两大显著优点,即高检测准确率和快速检测速度。YOLO算法采用单阶段目标检测思想,通过一个卷积神经网络,能够端到端地预测目标物体的类别和位置信息。该算法将目标图片划分成网格,将目标检测任务转化为回归问题。随着深度学习的不断发展和算法的改进,YOLO算法已经从v1版本不断演进至v8版本。
在实际工程应用和算法轻量化的角度考虑,YOLOv5更加能够满足复杂隧道环境中实时检测的需求。YOLOv5算法本身也存在细节上的改动,共有YOLOv5-1.0到6.0六个小版本,本文选择的是YOLOv5-6.0。
6.0相较于5.0版本,具有以下改动:(1) 6.0使用6x6卷积替代5.0的Focus.二者效果一致,但卷积对硬件要求更低;(2) 6.0提出SPPF模块替换SPP模块,二者效果一致,但前者的执行时间是后者的一半。YOLOv5-6.0的网络结构如图1所示。
YOLOv5-6.0版本包含五种不同的模型,这些模型按照复杂性和从低到高分别为YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x。尽管YOLOv5x是性能最出色的模型,但随着模型复杂性的增加,推理计算速度显著减慢。相反,轻量化模型更容易在嵌入式设备上进行移植,适用于工业应用。因此,在本文中,我们选择以YOLOv5n作为基础模型。
2.2. 模型优化
虽然YOLOv5n模型检测性能优良,但它使用的CSPDarknet骨干网络参数量庞大,导致在特征提取的过程中计算参数量很大,需要耗费较长的时间。由于隧道炮孔识别时需要具备较高的实时性,并且隧道中的施工设备计算能力有限,所以需要减少参数量来对模型进行轻量化处理,以便更好地在移动硬件设备中进行部署。
2.2.1. 主干网络轻量化
ShuffleNet V2是由微软研究院提出的轻量级卷积神经网络,专为嵌入式设备和资源受限的环境设计。它的核心思想是通过Channel Shuffle操作来减少计算复杂度,同时保持高性能。ShuffleNet V2的核心组成部分是ShuffleUnit,它是模块的基本组成部分。ShuffleUnit包括三个关键元素:Channel Shuffle、Depthwise Separable Convolution和Residual Connection。
每个ShuffleUnit通常包括以下几个步骤。
(1) Channel Split:输入的特征通道被分成两个部分,通常是等分的,一部分进入分支A,另一部分进入分支B。
(2) Channel Shuffle:分支A和分支B的特征通道交错排列,以确保信息交流和混合。这增加了特征的多样性。
(3) Depthwise Separable Convolution:每个分支内都包括深度可分离卷积操作,用于提取特征。这是ShuffleNet V2轻量化的关键之一,因为它减少了参数数量和计算量。
(4) Residual Connection:分支内的特征与输入进行残差连接,确保信息不会丢失。
这些步骤使得ShuffleNet V2模块能够在低资源环境下实现高效的特征提取和分类任务。ShuffleNet V2已经在多个大规模图像分类数据集上展现出竞争力的性能。它在计算资源受限的设备上具有显著的优势,特别适用于嵌入式设备、移动应用和边缘计算。由于其高效性和轻量性,ShuffleNet V2已成为许多深度学习项目的理想选择,以在有限资源的情况下实现卓越的性能。
2.2.2. 注意力机制
虽然更换了模型的骨干网络后,检测速度显著提升,但同时也带来了检测精度的下降。为了在不增加模型复杂度的情况下提升性能,引入注意力机制,使网络更加聚焦于重要的特征信息,从而提高特征提取的效率,恢复检测精度。
坐标注意力机制[26]可以避免卷积神经网络在处理空间结构信息时的限制,使模型能够理解数据的空间布局,这在图像、视频和自然语言处理中尤为重要。坐标注意力机制的基本原理是,在输入数据的处理过程中引入额外的坐标信息,以便模型可以更好地理解不同位置的关系。通常,这个坐标信息可以是输入数据的位置坐标,例如像素的横纵坐标、单词的位置等。在每个层级,模型会学习如何加权考虑不同坐标位置的特征,从而更好地捕捉到局部结构和空间关系。坐标注意力机制的实现过程如图2所示。
Figure 2. The process of implementing the coordinate attention mechanism
图2. 坐标注意力机制实现过程
CA为了获取图像宽度和高度上的注意力并对精确位置信息进行编码,先将输入特征图分为宽度和高度两个方向分别进行全局平均池化,分别获得在宽度和高度两个方向的特征图,如下公式见式(1)与式(2)。
(1)
(2)
接着将获得全局感受野的宽度和高度两个方向的特征图拼接在一起,之后将它们送入共享的卷积核为1 × 1的卷积模块,将其维度降低为原来的C/r,然后将经过批量归一化处理的特征图F1送入Sigmoid激活函数得到形如1 × (W + H) × C/r的特征图f,如公式如下所示。
(3)
接着将特征图f按照原来的高度和宽度进行卷积核为1 × 1的卷积分别得到通道数与原来一样的特征图Fh和Fw,经过Sigmoid激活函数后分别得到特征图在高度和宽度上的注意力权重gh和在宽度方向的注意力权重gw,见式(4)与式(5)。
(4)
(5)
经过上述计算后将会得到输入特征图在高度方向的注意力权重gh和在宽度方向的注意力权重gw。最后在原始特征图上通过乘法加权计算,将得到最终在宽度和高度方向上带有注意力权重的特征图,公式如下所示。
(6)
2.2.3. 改进后模型
本文采用ShuffleNet V2骨干网络结构与CA注意力机制对YOLOv5n网络进行改进。ShuffleNet V2骨干网络可以降低模型复杂程度、提高检测速度,但是会降低检测精度。因此引入坐标注意力机制,在不影响模型复杂度的情况下提高检测精度。
3. 实验设置与结果
3.1. 炮孔数据集
隧道炮孔并没有公开的数据集。因此,本文从从隧道施工期间的真实场景中采集图像。图像由智能手机HUAWEI Mate40 Pro拍摄,采集图像的分辨率为4096 × 3072像素。共采集图像1000余张,示例如图3。
Figure 3. Example of tunnel acquisition image
图3. 隧道采集图像示例
对采集的图像进行处理。首先剔除因移动、过度曝光等原因造成的模糊不清的图像。然后通过数据增强来增加数据集中图像数量。数据增强手段包括镜像、旋转、调整亮度等,这样的操作可以增加模型的鲁棒性,避免过拟合的发生。数据增强后图像数量达到2000张。这些图像以8:1:1的比例分为训练集、验证集和测试集。训练集用于训练模型参数,验证集用于验证当前模型的泛化能力,而测试集用于评估最终模型的准确性,测试集不参与训练。
在使用卷积神经网络进行目标检测时,应准确标记训练图像中的目标。在这项研究中,我们使用LabelImg注释工具手动标记炮孔。LabelImg是一个基于Python的开源跨平台工具,可用于对目标区域进行标注,并以规定的格式导出标注的文件。
3.2. 实验环境
本文模型的训练平台参数如下:处理器为Intel(R) Xeon(R) Gold 6326 CPU;显卡为NVIDIA GeForce RTX 3090,显存24GB;系统环境为Ubuntu 20.04.5;GPU加速环境为CUDA 11.3;编程语言版本为Python 3.8;训练框架为Pytorch 1.10.0。
3.3. 训练参数设置及分析
不同模型的训练参数均保持一致,训练参数设置如下:最大迭代次数epoches设置为100;batch size设置为32;不使用于预训练权重进行训练;其他超参数均保持默认,即初始学习率0.01,权重衰减系数为0.0005,学习率动量0.937,使用随机梯度下降法作为优化器等。
3.4. 评价指标
在使用深度CNN时,广泛选择训练的精度和召回率作为评估指标。训练精度是表示模型精度的重要参数,定义为:
(7)
其中TP代表真阳性,分类器预测结果为正样本,实际也为正样本,即正样本被正确识别的数量;FP代表假阳性,分类器预测结果为正样本,实际为负样本,即误报的负样本数量。
召回率是用于评估训练性能的另一个重要参数。召回的定义由下式给出
(8)
其中FN表示假阴性。分类器预测结果为负样本,实际为正样本,即漏报的正样本数量。
以Precision为纵坐标,Recall为横坐标绘制的曲线被称为P-R曲线,P-R曲线与坐标轴围成的面积被称为AP,所有类别AP的均值被称为mAP,二者的值越接近1,表示模型检测越准确。计算AP和mAP的公式如式9、10所示。
(9)
(10)
评价目标检测模型,除了考虑精确度指标外,还必须考虑模型复杂度和模型检测速度。模型的复杂度可以从模型大小直观反映,采用帧率(frames per second,FPS)来衡量模型检测速度。其中,帧率的计算包含三部分时间,分别是预处理耗时(T1)、推理耗时(T2)、非极大抑制耗时(T3),三者求和后为推理一张图片所用时间,取倒数即为帧率,如公式11所示。
(11)
3.5. 实验结果
利用上述改进方法对算法进行改进后,按照前文所述参数,本文在同一设备上对原始算法和改进算法进行训练。
下表1分别为YOLOv5n、ShuffleNet V2网络与ShuffleNet V2网络 + 坐标注意力机制在测试集上的表现情况。
Table 1. Training of the three models
表1. 三种模型训练情况
模型 |
mAP@0.5 |
推理时间 MS |
帧率 F/S |
模型大小 MB |
YOLOv5n |
0.95 |
20.4 |
40.3 |
3.7 |
ShuffleNet V2 |
0.85 |
6.5 |
61.0 |
1.7 |
ShuffleNet V2 + CA |
0.94 |
15.7 |
52.1 |
1.7 |
(a) (b)
(c) (d)
Figure 4. Graph of the recognition effect of the improved algorithm
图4. 改进算法识别效果图
从表中可以看出,原始算法的精度和推理时间基本满足实际使用的需求,但是模型大小较大。经过替换骨干网络ShuffleNet V2后,不出意外的检测精度下降,mAP降低了0.1,但是推理时间大大缩短,降低了68%,非极大抑制耗时略微增加,最终帧率提升20.7。模型大小大大降低,降低了54%。在此基础上添加坐标注意力机制后,mAP提高了0.09,略微低于原始算法水平。推理时间虽有所上升,但仍比原始算法时间短。与原始算法相比,mAP降低了0.01,推理时间降低23%,帧率提升29%,模型大小降低54%。改进后的算法在检测精度、检测时间、模型大小等方面基本可以达到实际使用的需求,为进一步现场应用提供了可行性。
改进后的算法识别效果如图4所示。可以看到,整体识别效果较为良好,未将岩石阴影等干扰识别为炮孔,(a) (b)为同一图像在不同亮度下的检测结果,在不同亮度下都有不错的识别效果。(c)中炮孔形状较为不规则,但仍能较好识别。(d)为光照条件不足情况下的检测结果,未出现错检、漏检情况。
4. 结论与展望
(1) 本文通过对原始YOLOv5-6.0算法进行改进,更改骨干网络结构为ShuffleNet V2并增加坐标注意力机制,mAP降低了0.1,但是推理时间大大缩短,降低了68%,非极大抑制耗时略微增加,最终帧率提升20.7。模型大小大大降低,降低了54%。
(2) 添加坐标注意力机制后,mAP提高了0.09,略微低于原始算法水平。推理时间有所上升,但仍比原始算法时间短。与原始算法相比,mAP降低了0.01,推理时间降低23%,帧率提升29%,模型大小降低54%。
(3) 虽然本文中观察到基于YOLOv5改进算法的模型的良好性能,但本研究仍然存在需要改进的方面。首先,可以进一步增加训练图像的数量,从而提高模型的鲁棒性和准确性。其次,本研究采用强度图像,即由RGB信息组成的图像,用于检测炮孔。尽管观察到基于深度学习的检测方法具有鲁棒性并且可以避免环境干扰的影响,但强度图像的获取依赖于光学相机。地下空间的环境通常是黑暗和多尘的,在某些极端情况下,可能难以获得质量可接受的强度图像以进行检测。在这些情况下,范围图像将是另一种选择。因此,利用基于强度图像和距离图像的异构图像融合来训练模型和检测炮孔是我们未来的研究方向。