射击是一项受到全世界人民喜爱的运动,在世界各地拥有大量的射击运动员和业余爱好者。近年来,随着科技的发展,射击成绩的统计方式正逐渐由人工报靶转变为自动报靶。以胸环靶射击运动为例,传统成绩统计以人工报靶为主。这需要运动员在射击完成后人工统计弹孔数量并判断分数,不仅费时费力,也降低了运动的乐趣。特别是在户外和远距离射击运动中,人工报靶不仅效率低下还具有一定的危险性。因此,高精度、低延迟的自动报靶方式是研究者一直探索的目标。而实现自动报靶,弹孔识别是关键。
杨子宁[1]提出通过将靶纸覆盖在由光敏和激光二极管组成的靶机上,根据子弹穿过时激光网络的阻断情况检测弹着点,初步实现了自动识别;冯斌等[2]通过分析弹丸轨迹与由声探测阵列和光探测器生成的假定靶面的交点的方式,实现了10 m×10 m测试靶面的弹孔识别;Sun等[3]通过分析特制靶面被子弹射击时产生的电信号,在一定程度上解决了弹孔识别过程当中存在的漏报、误报的问题;黄应清等[4]通过训练改进后的Res Net50网络模型,能够有效识别弹孔数量较少的胸环靶;宋雨等[5]通过改进Otsu法结合两边扫描方法实现了重孔目标的区分和辨别,有效提升了弹孔识别的精度。
但是上述利用声电、光电、视觉处理和神经网络技术实现自动报靶的方式都有很大的缺陷。例如利用光、声电技术的报靶方式设计成本较高,训练所需要的胸环靶和弹丸需要特殊定制,难以进行大规模的使用。传统的视觉处理往往依赖于阈值,当射击环境复杂或背景灰度值与靶面接近时精度就难以得到保障。其他基于神经网络的报靶方式检测速度慢、精度低,因此也没有被广泛地使用。
为了解决上述问题,本文提出了一种基于改进YOLOv8s的胸环靶弹孔检测技术,该技术创新点如下:①在数据集的制作过程当中利用YOLOv8s-segment处理采集的原始胸环靶图片,将胸环靶与背景分离,排除复杂背景引起的误判;②在骨干网络的C2f模块中引入CBAM注意力机制,通过对空间和通道特征赋予不同的权值提高模型的识别能力;③增加160×160大小的小目标输出层,减少弹孔特征在深层次网络中的信息损失;④更换骨干网络的卷积层为SPD-Conv,避免池化层和卷积步长导致的细粒度损失,进一步增加对弹孔特征的提取能力;⑤对损失函数进行优化,采用边界框损失更小的WIoU函数。在自制的胸环靶数据集上的实验结果表明:改进后的算法精度更高、泛化性更好。
Redmon等[6]于2016年提出了一种无须提取候选区域而直接输出目标类别和概率的目标检测算法——YOLO(you only look once)。因其占用计算资源少、检测速度快,一经推出就在目标检测领域引起巨大反响[7-8]。经过数年的发展,YOLO算法已经迭代至v8版本,YOLOv8是Ultralytics公司推出的新一代YOLO模型,根据网络深度、宽度和最大通道数可以划分为n、s、m、l和x 5个模型。本文基于轻量化和精度的考虑选择YOLOv8s作为基线模型,结构如图1所示。
图1 YOLOv8s结构模型
Figure 1 YOLOv8s structure model
YOLOv8s由骨干(Backbone)、颈部(Neck)以及头部(Head)网络3部分组成。骨干网络与YOLOv5相似,仍旧基于CSP思想。不同的是将C3(CSP bottleneck with 3 convolutions)模块结合YOLOv7的ELAN思想组成C2f(CSP bottleneck with 2 convolutions)模块[9],在保证轻量化的同时通过增加梯度传播的支流提高了模型的推理速度。在骨干网络的尾部使用快速金字塔池化层(spatial pyramid pooling-fast,SPPF)融合多尺度感受野以提高特征图的表达能力。颈部模块利用PAFPN融合多尺度的特征图,丰富特征信息。头部模块与YOLOv5有所不同,YOLOv8采用YOLOX的解耦头设计,将类别信息与位置信息分离,同时采用Anchor-Free的策略,有益于解决因不同尺寸的锚框数量不平衡所导致的小目标检测精度低的问题。
虽然YOLOv8是目前最先进的目标检测模型之一,但直接用于胸环靶弹孔的检测仍存在诸多问题。首先,不同的射击环境下的光照、遮挡问题会导致模型的检测精度受限,因此,误判、漏检等问题较为严重。其次,YOLOv8网络颈部输出的特征图尺寸大小分别为20×20、40×40、80×80,仅能够检测8×8以上大小的目标,而弹孔直径大约为10 mm,在照片当中相对于胸环靶图像而言属于极小目标,原始YOLOv8网络难以准确、完整地检测所有的弹孔。因此需要对网络进行改进。
本次算法设计针对弹孔尺寸较小,模型在下采样的过程中特征信息损失较多,在高层次特征图中很难获得有效信息等问题,对算法做出如下改进:①在C2f中融合CBAM[10]注意力机制;②增加小目标输出层;③利用SPD-Conv[11]替换原有卷积层;④更改边界框损失函数为WIoU[12]。改进后的网络结构如图2所示。
图2 改进YOLOv8s结构模型
Figure 2 Improved YOLOv8s structure model
注意力机制[13]因其即插即用的便利性被广泛应用在基于卷积神经网络的目标检测当中。它通过加权的方式强化目标特征,提高了神经网络检测的准确性。特别是在一些小目标检测中,注意力机制往往能够起到十分重要的作用。
因为弹孔尺寸较小,YOLOv8s模型在采样过程中易损失许多有用的特征信息。因此为了提升算法对弹孔目标的感知力,本文在骨干网络的C2f模块中引入CBAM注意力[10],构建C2f_CBAM模块,如图3所示。
图3 C2f_CBAM结构
Figure 3 C2f_CBAM structure
CBAM包含CAM(channel attention module)和SAM(spatial attention module)两部分,分别关注目标特征的类别信息和位置信息。CBAM通过自主学习来获取通道特征和空间特征的重要度,并赋予不同的权值以强化在图片当中的重要特征。借助于轻量化的设计,CBAM可以占用很少的计算资源嵌入到网络模型中,CBAM结构模型如图4所示。
图4 CBAM结构模型
Figure 4 CBAM structure model
CAM即通道注意力模块(如图5所示),通过并行的最大池化层(max-pooling)和平均池化层(average-pooled)压缩输入特征图的空间,生成两个大小均为1×1×C的特征图。两个特征图共同通过一个参数共享的多层感知网络(MLP)后,将输出向量相加、激活得到通道注意力特征向量,如式(1)所示。
图5 CAM结构模型
Figure 5 CAM structure model
MC(F)=σ(MLP(AvgPool(F))+MLP(MaxPool(F)))=
(1)
式中:和分别为经过平均池化和最大池化后的特征向量;σ为Sigmoid函数;W0和W1分别为WLP网络的两个权重。
在空间注意力模块SAM中,通道注意力特征与原始的输入特征向量混合作为输入,经过串行的最大池化层和平均池化层压缩特征图的通道数,得到两个大小为H×W×1的特征向量和如式(2)所示。
MS(F)=σ(f 7×7([AvgPool(F);MaxPool](F))=
(2)
式中:f 7×7代表卷积核尺寸为7×7的卷积。
最后,经过标准卷积与激活生成空间注意力特征,如图6所示。
图6 SAM结构模型
Figure 6 SAM structure model
在卷积神经网络中,深层网络经多次卷积、池化等下采样操作后主要包含目标的语义特征,对于边缘、纹理等浅层特征损失较多,导致难以有效检测微小目标。而浅层网络的特征图尺度大,能够包含更多边缘特征信息,有利于小目标检测。
YOLOv8网络在特征融合后输出最大检测尺度特征图仅为80×80,仅能检测8×8以上尺寸的目标。射击训练中的弹孔尺寸较小,8×8的检测尺度难以满足检测需要。因此本文在原有网络结构中增加特征图尺寸为160×160的小目标输出层,通过缩小感受野能够有效减少弹孔在下采样当中损失的特征信息,降低漏检的可能性。
传统卷积层的卷积方式为跨步卷积,在特征提取的过程中会部分丢失目标的细粒度信息。所以在对弹孔等微小目标的检测和在图片分辨率较低时,网络的检测性能会剧烈下降。因此,本文引入SPD-Conv模块[11](space-to-depth convolution),抛弃传统跨步卷积的方式,改用SPD和无跨步卷积,减小网络的信息损失,提高对弹孔的检测能力。
SPD-Conv模块包含SPD和无跨步卷积两部分。假设输入特征图的尺寸为S×S×C,SPD模块将特征图按照a×a×C的尺寸划分为无数的网格,将每个网格相应位置的特征向量分别提取组成a2个子特征图,子特征图的大小为(S/a)×(S/a)×C。随后对子特征图进行通道拼接,组成(S/a)×(S/a)×a2C大小的特征图。当a=2时,如图7所示。
图7 SPD结构模型
Figure 7 SPD structure model
在SPD操作后紧随着由C2个卷积核组成的无跨步卷积层(即卷积步长为1),其中C2<a2C1。利用无跨步卷积的方式能够在降低计算成本的同时有效提取小目标特征的细粒度信息。
YOLOv8的边界框损失函数为CIoU,如式(3)所示。CIoU通过将预测框与真实框的距离和尺寸引入到惩罚项中,使得模型的收敛速度有所改善。
CIoU=1-IoU+。
(3)
式中:
(4)
(5)
式中:IoU为模型预测框与真实框之间的交互比,取值在0~1;c表示模型预测框与真实框的最小外接矩形的对角线长度;ρ2(b, bgt)表示模型预测框与真实框中心点的距离;α表示权重;v为用于衡量长宽比一致性的函数。
由于弹孔在靶面上占比很小,导致在模型训练的过程当中锚框的正负样本数量极不平衡。当模型采用CIoU损失函数训练时对负样本的惩罚会增加训练的时间,降低模型训练结果的精度和泛化能力。因此,本算法采用Wise-IoU(WIoU)[12]作为损失函数,根据离群度动态评估锚框质量,减少了负样本对模型训练的干扰,即
WIoU=r·RWIoUIoU;
(6)
(7)
(8)
式中:β代表离群度,与锚框的质量负相关;α和δ分别表示取值为1.9和3.0的超参数;RWIoU为WIoU的惩罚项。
通过将WIoU设为边界框损失函数能够有效地提升普通锚框的影响力,避免弹孔因尺寸小、模糊等问题导致的检测效果不佳的问题。
图像采集装置是与郑州纬达自动化科技公司合作研发的、具有自主产权的自动报靶装置,如图8所示。配备DS-2CD7T47DWD-L型4 mm焦距海康威视摄像机,可通过笔记本电脑远程控制。随机选取1 300张模拟射击后的胸环靶图像,包含23 562个弹孔。
图8 自动报靶装置
Figure 8 Automatic target reporting device
为了避免外部环境影响模型检测,减少模型的计算量,在数据集的制作过程中引入图形分割操作。通过将胸环靶与背景分离,提高模型的计算速度,加速模型收敛。因此使用YOLOv8s-segment作为分割模型。首先利用Labelme制作胸环靶图像分割数据集。利用YOLOv8s-segment训练靶面分割模型,对原始图片进行分割处理,将处理后的图片利用Labelme制作目标检测数据集。数据集按照互不干涉原则以8∶1∶1的比例划分为训练集、验证集和测试集。
本系统的靶面分割以及弹孔检测的实验环境:CPU为Intel® 酷睿TM i5-12400F;GPU为GeForce RTXTM 3060 12G;编程语言为Python 3.8;深度学习环境为CUDA 11.3、PyTorch 1.11.0。在模型训练过程中,输入640×640的RGB图片;使用SGD优化器;初始学习率为0.01;衰减系数为0.000 5;批次大小为16,训练500轮。
为了能够客观评估改进的YOLOv8算法,本文选取准确率P、召回率R、平均精度mAP作为评价指标,部分评价指标如下:
(9)
(10)
(11)
式中:TP表示被检测到的弹孔的数量;FP表示被误检为弹孔的数量;FN表示漏检弹孔的数量;NC表示待检的类别数,本例中为1;AP表示弹孔的平均精度。
为了证明CBAM注意力机制在本文算法设计当中的优越性,选取目前通用的两种注意力机制CA[14](coordinate attention)和SE[15](squeeze and excitation networks)与CBAM在胸环靶数据集上的效果进行对比。以mAP50(检测框与真实框的重叠部分超过50%)作为评价指标,实验结果如图9所示。其中,添加CBAM注意力后,mAP50上涨至84.4%,较原结构增加了0.017百分点;添加CA注意力后,mAP50略有下降;添加SE注意力后,mAP50上涨至83.1%,较于原结构增加0.004百分点,低于CBAM。可以看出,CBAM在本次弹孔检测中表现优异,因此选择添加CBAM注意力模块。
图9 注意力机制对比
Figure 9 Comparison of attention mechanisms
为验证WIoU损失函数在YOLOv8s上的有效性,选取了CIoU、SIoU[16]、EIoU[17]与WIoU进行对比实验,实验结果如表1所示。实验结果显示,在训练中使用WIoU损失函数的模型结果较其他函数有所降低,同时mAP50达到83.7%,实验结果表明:WIoU损失函数更适合于本模型,能够提高弹孔目标的检测效果。
表1 损失函数对比
Table 1 Loss function comparison
损失函数损失值mAP50/%CIoU1.7182.7SIoU1.6583.1EIoU1.5283.2WIoU1.4383.7
将改进的YOLOv8s算法与原YOLOv8s算法进行对比,如表2所示。以平均精度mAP50为例:YOLOv8s算法的平均检测精度为82.7%,在C2f中添加CBAM注意力机制后,平均精度为84.4%,较原模型提升1.7百分点;继续添加小目标输出层后精度为92.1%,较原算法提升9.4百分点。将原卷积层替换为SPD-Conv,模型平均精度值上升至97.3%,较原算法提升14.6百分点。总的来说,改进后的算法相较于原算法平均精度提升15.3百分点,达到98.0%。
表2 消融实验结果
Table 2 Ablation experiment results
算法CBAM小目标层SPD-ConvWIoU准确率P/%召回率R/%mAP50/%帧率/(帧·s-1)YOLOv8s88.171.082.764.5YOLOv8s√90.275.184.456.8YOLOv8s√√91.090.292.135.7YOLOv8s√√√96.796.197.341.7YOLOv8s√√√√96.996.498.043.6
为了证明本算法相对于其他算法的优越性,在超参数相同的情况下选取了3种实时检测算法进行实验,结果如表3所示,可以看出本文算法的综合性能具有明显的优越性。
表3 对比实验结果
Table 3 Comparation of experimental results
算法mAP50/%帧率/(帧·s-1)参数量/MBYOLOv5s[18]79.959.97.02YOLOv7[7]85.131.737.2SSD[19]81.337.125.2本文算法98.043.610.9
将原算法和改进算法在10个弹孔、120个弹孔的靶纸上进行检测,如图10所示。由图10(c)和图10(d)可以看出:原算法明显存在漏检的情况,特别是当弹孔数量较多、较密集时漏检概率明显增加。而本文改进算法不论弹孔数量多少,均能够较准确、完整地识别弹孔数量,具有更好的准确性。
图10 原始YOLOv8s和改进YOLOv8s检测效果对比
Figure 10 Comparison of detection effect between original YOLOv8s and improved YOLOv8s
本文针对传统自动报靶精度低、易受环境影响的特点设计了一种基于YOLOv8s的改进算法。在自制数据集的实验结果表明,本算法在弹孔检测方面的准确率P为96.9%、召回率R为96.4%、平均精度mAP50为98.0%,与原始算法相比分别提高了8.8百分点、25.4百分点和15.3百分点,进步显著。实验结果表明,不论是稀疏弹孔的胸环靶面还是密集弹孔的胸环靶面,本文算法均能够准确地检测弹孔,具有良好的检测精度和泛化性。
[1] 杨子宁. 光电自动报靶系统的设计与实现[J]. 科学技术与工程, 2007, 7(1): 102-104, 111.YANG Z N. Design and realization of the automatic target-scoring system[J]. Science Technology and Engineering, 2007, 7(1): 102-104, 111.
[2] 冯斌, 石秀华, 康智强, 等. 声阵列与光探测组合测试弹着点坐标的研究[J]. 压电与声光, 2012, 34(2): 177-179.FENG B, SHI X H, KANG Z Q, et al. Study on measurement of impact point coordinates with the combination of acoustic array and optical detection[J]. Piezoelectrics &Acoustooptics, 2012, 34(2): 177-179.
[3] SUN J H, WANG S S, ZHANG F M, et al. Research on key technologies in automatic target-reporting[C]∥International Conference on Automatic Control and Artificial Intelligence (ACAI 2012). London: Institution of Engineering and Technology, 2012: 1732-1735.
[4] 黄应清, 陈晓明, 谢志宏, 等. 一种基于计算机视觉的胸环靶弹孔检测方法[J]. 兵器装备工程学报, 2021, 42(11): 157-162, 221.HUANG Y Q, CHEN X M, XIE Z H, et al. Bullet hole detection method of chest ring target based on computer vision technology[J]. Journal of Ordnance Equipment Engineering, 2021, 42(11): 157-162, 221.
[5] 宋雨, 王亚林, 杜博军, 等. 基于改进最大类间方差法的靶板重孔检测[J]. 兵工学报, 2022, 43(4): 924-930.SONG Y, WANG Y L, DU B J, et al. Detection of overlapped bullet holes based on improved otsu′s thresholding method[J]. Acta Armamentarii, 2022, 43(4): 924-930.
[6] REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: unified, real-time object detection[C]∥2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Piscataway: IEEE, 2016: 779-788.
[7] 院老虎, 常玉坤, 刘家夫. 基于改进YOLOv5s的雾天场景车辆检测方法[J]. 郑州大学学报(工学版), 2023, 44(3): 35-41.YUAN L H, CHANG Y K, LIU J F. Vehicle detection method based on improved YOLOv5s in foggy scene[J]. Journal of Zhengzhou University (Engineering Science), 2023, 44(3): 35-41.
[8] 薛均晓, 武雪程, 王世豪, 等. 基于改进YOLOv4的自然人群口罩佩戴检测方法[J]. 郑州大学学报(工学版), 2022, 43(4): 16-22.XUE J X, WU X C, WANG S H, et al. A method on mask wearing detection of natural population based on improved YOLOv4[J]. Journal of Zhengzhou University (Engineering Science), 2022, 43(4): 16-22.
[9] WANG C Y, BOCHKOVSKIY A, LIAO H Y M. YOLOv7: trainable bag-of-freebies sets new state-of-the-art for real-time object detectors[C]∥2023 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). Piscataway: IEEE, 2023: 7464-7475.
[10] WOO S, PARK J, LEE J Y, et al. CBAM: convolutional block attention module[EB/OL]. (2018-07-17)[2023-12-11].https:∥doi.org/10.48550/arXiv.1807.06521.
[11] SUNKARA R, LUO T. No more strided convolutions or pooling: a new CNN building block for low-resolution images and small objects[M]∥Machine Learning and Knowledge Discovery in Databases. Cham: Springer, 2023: 443-459.
[12] TONG Z, CHEN Y, XU Z, et al. Wise-IoU: bounding box regression loss with dynamic focusing mechanism[EB/OL]. (2023-01-24)[2023-12-11].https:∥doi.org/10.48550/arXiv.2301.10051.
[13] MNIH V, HEESS N, GRAVES A, et al. Recurrent models of visual attention[EB/OL]. (2014-01-24)[2023-12-11].https:∥doi.org/10.48550/arXiv.1406.6247.
[14] HOU Q B, ZHOU D Q, FENG J S. Coordinate attention for efficient mobile network design[C]∥2021 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). Piscataway: IEEE, 2021: 13708-13717.
[15] HU J, SHEN L, ALBANIE S, et al. Squeeze-and-excitation networks[EB/OL].(2017-09-05)[2023-12-11].https:∥doi.org/10.48550/arXiv.1709.01507.
[16] ZHENG Z H, WANG P, LIU W, et al. Distance-IoU loss: faster and better learning for bounding box regression[EB/OL]. (2019-11-19)[2023-12-11].https:∥doi.org/10.48550/arXiv.1911.08287.
[17] ZHANG Y F, REN W Q, ZHANG Z, et al. Focal and efficient IOU loss for accurate bounding box regression[J]. Neurocomputing,2022,506(28):146-157.
[18] Ultralytics. YOLOv5[EB/OL]. (2020-06-26)[2023-12-11].https:∥github.com/ultralytics/yolov5.
[19] LIU W, ANGUELOV D, ERHAN D, et al. SSD: single shot multibox detector[C]∥ECCV 2016 14th European Conference. Cham: Springer,2016:21-37.