YOLO-GW:更轻量更精确的YOLOv7模型
YOLO-GW: A Lighter and More Precise YOLOv7 Model
DOI: 10.12677/csa.2024.1412239, PDF, HTML, XML,   
作者: 祝 发:天津工业大学计算机科学与技术学院,天津;苑春苗:天津工业大学软件学院,天津;杨清永*:天津中德应用技术大学软件与通信学院,天津
关键词: 目标检测YOLOv7GSConvWIoU特征融合Object Detection YOLOv7 GSConv WIoU Feature Fusion
摘要: YOLOv7是一种目标检测算法,但其在一些资源受限的设备上可能面临计算和内存压力。为了解决该问题,本文提出了使用GSConv对YOLOv7模型进行改进,在减轻复杂度的同时,添加P2检测层和WIoU损失函数增加模型的检测性能。为了验证我们提出的方法的有效性,我们进行了一系列实验和比较。我们选取了标准的YOLOv7模型作为基准,并使用PASCAL VOC2007公开数据集进行训练和测试。实验结果表明,相较于标准模型,本文提出的模型可以显著减少参数量,同时保持较高的检测精度,为在资源受限的设备上部署和运行YOLOv7模型提供了可行的解决方案。
Abstract: YOLOv7 is an object detection algorithm, but it may encounter computational and memory pressures on certain resource-constrained devices. To tackle this challenge, this paper proposes enhancing the YOLOv7 model using GSConv, incorporating a P2 detection layer and a WIoU loss function to bolster the model’s detection capabilities while minimizing complexity. To validate the efficacy of our approach, we conducted a series of experiments and comparisons. We adopted the standard YOLOv7 model as the baseline and trained and tested it using the PASCAL VOC2007 public dataset. The experimental results demonstrate that, compared to the standard model, our proposed model can significantly reduce the number of parameters while maintaining high detection accuracy, offering a viable solution for deploying and running the YOLOv7 model on resource-limited devices.
文章引用:祝发, 苑春苗, 杨清永. YOLO-GW:更轻量更精确的YOLOv7模型[J]. 计算机科学与应用, 2024, 14(12): 44-53. https://doi.org/10.12677/csa.2024.1412239

1. 引言

YOLOv7模型[1]是YOLO系列推出的YOLO结构目标检测算法,与其他模型相比它在速度和准确性上都取得了显著的提升。通过轻量化YOLOv7模型,可以减少模型的参数量和计算复杂度,使得模型在资源受限的环境下也能高效运行。同时,精度提升可以提高模型在目标检测任务中的准确性,使其能够适应更多的场景。让YOLOv7在能够在复杂场景下保持检测精度和检测速度,从而可以更好地满足实际需求。

针对YOLOv7模型中存在着大量的冗余特征、检测延迟性高等问题,我们引入了GSConv技术[2],该技术能够在保持高精度的同时减少模型的计算和内存需求。

GSConv是一种基于DW卷积的轻量化卷积操作。GSConv首先进行一个普通卷积的下采样,然后使用DWConv,并将两个conv的结果拼接起来,最后进行shuffle操作,从而减少了计算和参数量。GSConv技术在保持感受野范围和特征表达能力的同时,有效地降低了模型的复杂性。通过将GSConv应用于YOLOv7模型的卷积层,我们能够显著减少计算和内存开销,同时保持高精度的目标检测性能。其次,为了进一步提升目标检测的精度,我们使用k-means++聚类算法[3]对目标数据集的边界框进行聚类分析,以找到适合不同尺度目标的合适锚点。然后,在传统的YOLOv7模型的基础上,引入了P2检测层来实现多尺度特征融合。P2检测层利用聚类得到合适的锚点,通过在不同的特征层上进行目标检测,提供了更丰富的多尺度感知能力。通过在多个特征层上进行检测,我们可以更好地适应不同尺度目标的检测需求,特别是对于小目标和远距离目标的检测效果改善明显。P2检测层的引入进一步提升了目标检测的精度和鲁棒性,使我们的模型能够更好地应对不同尺度目标的检测任务。通过k-means++聚类找到合适的锚点,并将其应用于多尺度特征融合,我们能够更准确地定位和检测目标,从而提高整体的目标检测性能。最后,为了更好地优化目标框的位置和大小,我们采用了WIoU loss [4]作为目标函数。传统的目标检测算法通常使用IoU (Intersection over Union) [5]-[8]作为损失函数,但它对于小目标和不平衡数据集存在一定的缺陷。WIoU loss (Wise-IOU)通过引入样本权重和动态阈值,能够更准确地度量目标框与真实框之间的重叠程度。通过优化WIoU loss,我们的模型能够更加关注关键目标,并更好地适应各种目标尺度和难度,从而进一步提升了目标检测的精度和鲁棒性。

2. 相关工作

常见的目标检测算法包括Faster R-CNN [9]、SSD [10]和YOLO [11]-[13]。Faster R-CNN是一种基于区域提议的目标检测算法,引入区域提议网络(RPN)生成候选目标框,然后使用分类和回归网络对这些候选框进行分类和定位。尽管在准确性方面表现出色且能够检测小目标,但由于需要两个独立网络进行预测,计算效率相对较低。SSD是单阶段算法,通过在多个尺度的特征图上进行预测来实现多尺度感知。SSD在每个特征图位置上预测多个不同尺度和长宽比的边界框,并对这些框进行分类和定位。它在速度和准确性之间取得了良好的平衡,能够实现较高的检测精度。然而,相对于Faster R-CNN和yolo,SSD在小目标检测和密集目标检测上可能略有不足。YOLO也是一种单阶段目标检测算法,将检测任务转化为回归问题。它将输入图像划分为网格,在每个网格单元中预测固定数量的边界框和类别概率。YOLO具有快速的检测速度,适合更多的应用,在小目标,密集目标检测和定位精度方面不逊于Faster R-CNN。轻量化目标检测算法如MobileNet [14]、ShuffleNet [15]和Efficient-Net [16]旨在减少模型的计算和存储需求,以在资源受限环境下高效运行。这些方法包括模型压缩、网络剪枝和量化等技术。MobileNet使用深度可分离卷积,ShuffleNet利用逐通道随机混洗,而Effi-cientNet通过复合缩放和自动调整网络结构,在准确性和计算效率之间取得平衡。EfficientNet具有可调节的深度、宽度和分辨率特性,可根据需求选择合适的模型大小。综合来看,这些算法在精度和计算效率方面存在一定的权衡。YOLO在精度上具有优势,适用于对准确性要求较高的场景,并且具有快速的检测速度,适合实时应用,在某些情况下对小目标和密集目标的检测效果也具有明显效果。

3. 方法

3.1. 基于GSConv的轻量化的颈部

在深度学习领域中,通常存在着精度与模型复杂度之间的权衡关系。随着模型变得更复杂,可以获得更高的精度,但同时也会增加计算量和参数量,导致速度下降。因此,需要在精度和速度之间做出权衡。轻量化模型通过使用深度可分离卷积(Depthwise Separable Convolution)等技术,大大减少了模型的参数量和计算量,从而提高了模型的推理速度。这使得它们在资源受限的环境中表现出色。但是,这些轻量化模型通常在精度上会有一定程度的损失,相较于传统的深度网络,它们可能无法达到相同水平的准确性。这种牺牲一部分精度来换取更高的推理速度是轻量化模型的一个普遍特点。

Figure 1. GSConv module structure

1. GSConv模块结构

为了解决精度和速度之间的权衡问题,GSConv采用标准卷积、深度可分离卷积和shuffle进行组合起来构建为一个GSConv卷积层,GSConv在减少复杂度的同时尽可能地最大限度地保留了每个通道之间的隐藏连接。GSConv卷积计算的输出尽可能接近标准卷积,降低了计算量。一般来说,卷积计算的时间复杂度由FLOPs定义。因此,SC (channel-dense convolution)和GSConv的时间复杂度为:Timesc:O (W·H·K1·K2·C1·C2),Timegsconv:O [W·H·K1·K2·],相比较SC,GSConv减少了大约一半的时间复杂度。GSConv模块结构如图1所示。

为进一步提高检测精度,降低计算和网络结构的复杂性,在CSConv基础上借鉴一次性聚合方法设计了一个新的网络增强模块,即VoV-GSCSP,如图2所示。

Figure 2. Vov-GSCSP structure

2. Vov-GSCSP结构

3.2. 引入P2检测层进行跨层特征融合

P2层检测层是在目标检测任务中引入的特殊层级,我们在YOLOv7中引入P2检测层主要为了优化模型对小尺度目标的检测性能。

对于YOLOv7,其原始结构为三个探测头(P3、P4、P5),为解决下采样带来的小目标信息丢失,导致模型在较深的特征图中很难精准定位和识别小目标这一问题,在模型引入更浅的特征层P2检测层,使模型在更早阶段获取高分辨率,小目标的特征信息。P2检测层利用特征金字塔网络(FPN)进行多尺度特征提取,使模型能够有效捕捉更小尺寸的目标信息。P2检测层还通过跨层信息融合,综合考虑上下文信息,增强了对复杂场景的理解能力。通过融合不同尺寸目标的高分辨率特征图,模型能够更好地感知小目标的细节信息,同时利用高层特征图的语义信息和低层特征图的细节信息,从而提高对小目标的检测能力。

通过引入P2层检测层可以改善多尺度目标的检测性能,模型可以更专注于提取小尺度目标的特征图,从而提供更加详细的信息,使模型在较小尺度和较大尺度目标之间具有更好的平衡和适应性。使得YOLOv7模型能够同时具备不同尺度下的检测能力,更好地应对不同尺度的目标物体,使得小尺度目标可以在相应的低层特征图上进行检测。P2层检测层的引入还可以提升YOLOv7模型的鲁棒性。由于P2层检测层适用于小尺度目标,当遇到复杂场景或者目标尺度变化较大时,P2层检测层可以更好地适应这些变化,提供更准确的检测结果,提高了YOLOv7模型的准确性和鲁棒性。这进一步增强了YOLOv7模型对不同尺度目标的适应性和泛化能力。

总体而言,P2层检测层的引入不仅提升了YOLOv7模型对小尺度目标的检测能力,还增强了其在多尺度目标检测中的适应性、泛化能力和鲁棒性,使得模型在面对复杂场景和尺度变化时能够更加准确地进行目标检测。

3.3. 损失函数

WIoU损失函数是一种基于交并比的目标检测损失函数。Wise-IoU (WIoU)基于动态非单调的聚焦机制设计。这种动态非单调聚焦机制通过使用“离群度”替代传统的IoU来评估锚框的质量,并提供了合理的梯度增益分配策略。这一策略在降低高质量锚框之间的竞争性的同时,也减少了低质量样本所带来的有害梯度。这种方法使得WIoU能够更专注于普通质量的锚框,有助于更好地识别和利用具有普通质量的锚框,从而提高了检测器的整体性能。

训练数据中低质量示例的距离、纵横比之类的几何度量都会加剧对其的惩罚使模型的泛化性能下降。WIoU在锚框与目标框较好地重合时会削弱对几何度量的惩罚,不过多地干预训练使模型拥有更好的泛化能力,并且根据距离度量构建了距离注意力,使WIoU具有两层注意力机制,如下式(1)、(2)所示:

L WloU = R WloU L loU (1)

R WloU =exp ( x x gt ) 2 + ( y y gt ) 2 ( W g 2 + H g 2 ) (2)

式中:Wg和Hg表示最小包围框的宽和高,RWIoU ∈ [1, e)将会在一定程度上扩大普通质量锚框的IOU损失函数值LIoU,LIoU ∈ [0, 1]会显著降低高质量锚框的RWIoU,并在锚框与目标框重叠度较高的情况下重点降低其对中心点距离的关注,∗表示将Wg和Hg从计算图中分离,有效地促进了函数收敛。

3.4. 整体结构

我们提出的改进后的YOLOv7模型的整体网络结构如图3所示,我们称为YOLO-GW模型。

Figure 3. YOLO-GW model schematic diagram

3. YOLO-GW模型示意图

4. 实验

4.1. 数据集

PASCAL VOC2007数据集是PASCAL VOC挑战官方使用的数据集。该数据集包含20类的物体。每张图片都有标注,标注的物体包括人、动物(如猫、狗、岛等)、交通工具(如车、船飞机等)、家具(如椅子、桌子、沙发等)在内的20个类别。PASCAL VOC2007包含训练集(5011张,测试集(4952张),共9963张标注过的图片,共标注出24,640个物体。本文使用PASCAL VOC2007提供的训练集和验证集来进行评估。如下图4所示。

Figure 4. Example image of PASCAL VOC2007 dataset

4. PASCAL VOC2007数据集例图

4.2. 实验环境

实验配置如下:运行内存为16 G;操作系统为Windows 10专业版的64位操作系统;深度学习框架为Pytorch1.12;CUDA版本为11.4;编程语言为Python 3.9。

训练时输入图片的大小为640 × 640。在数据增强模块中采用mosaic和mixup数据增强方法,增加了数据的多样性,丰富了图片的背景和目标个数,变相地提高了训练批次,可以有效防止模型过拟合。使用随机梯度下降算法(SGD)优化器,初始学习率为0.01,学习率动量为0.937,权重衰减系数设置为0.0005。训练批次设置为8,迭代周期设置为500个epoch。

4.3. 评价指标

为了全面、客观地评估改进YOLOv7算法的性能,平均精度的均值mAP (mean Average Precision)、召回率(R)、参数量(Params)对检测性能进行评价,涵盖了模型在不同方面的表现。具体公式如下(3)~(6)。

P= TP TP+FP ×100% (3)

AP= 0 1 P(r)dr ×100% (4)

mAP= 1 n i=1 n A P i ×100% (5)

R= TP TP+FN ×100% (6)

其中,TP表示预测为正例的正样本,FP表示预测为正例的负样本,FN表示预测为负例的正样本。

4.4. 实验结果

为了更全面地验证改进后的YOLOv7算法目标检测的性能,我们将其与其他的目标检测算法YOLOv3、YOLOX、YOLOv5s、YOLOv7进行对比,实验结果见表1

Table 1. Comparison with other object detection algorithms

1. 与其他目标检测算法对比

模型

mAP@0.5:0.95/%

AP@.5/%

R/%

#Param.

YOLOv3

50.8

79.68

60.1

235.1 M

YOLOX

47

72.3

61.6

9 M

YOLOv5s

51

79

62.8

7.2 M

YOLOv7

52

82.9

65.8

36.9 M

YOLOv7-GW

53.3

84

73

31.8 M

表1中可以看出,虽然改进YOLOv7算法与YOLOv5s、YOLOX算法相比,参数量略有增加,但是其mAP明显优于其算法。与原有YOLOv7目标检测算法相比,因为更改了WIoU损失函数和增加了P2检测层提高了模型检测的精确度,使mAP提高了1.1%,同时引入GSConv和新的网络增强模块VoV-GSCSP,显著减少了模型的参数量,使参数量减少了13.5%。在目标检测精确率和复杂度大小的综合考量方面较其他算法有明显优势,可以有效实现常用物体的目标检测,使得在移动设备上的部署变得更为可行。

训练过程和结果如下图5~7所示。

Figure 5. MAP variation curve

5. MAP变化曲线

Figure 6. Loss variation curve

6. Loss变化曲线

Figure 7. Experimental result

7. 实验结果

4.5. 损失函数对比实验

为验证YOLOv7算法引入WIoU损失函数的有效性,将YOLOv7算法中分别引入EIoU损失函数、Focal EIoU损失函数进行对比实验,实验结果如表2所示。

Table 2. Comparison of experimental results of different IOU

2. 不同IOU实验结果对比

IoU

mAP@0.5:0.95/%

mAP@.5/%

EIoU

51.7

82.6

FocalEIoU

50.8

83.5

WIoU

53.3

84

从实验结果可以看出,EIoU损失函数相较于其他损失函数的提取能力较弱。WIoU能更高效地捕捉关键特征。因此在目标检测过程中,将WIoU注意力机制引入YOLOv7算法中,在增加的参数量较少的情况下,提升了目标检测准确率。

4.6. 消融实验

表3中可以看出,每一种改进方法都提升了YOLOv7的最终效果。将GSConv添加到YOLOv7算法neck网络中,模型的参数量减少了13.5%,模型精确度减少很少。增加P2检测层,模型的参数量增加的很少,但模型精确度有大幅度提升,超越了原有YOLOv7模型,并比原有YOLOv7参数量减少许多。将WIoU损失函数添加到YOLOv7之后进一步提升了模型的精确度,但参数量几乎没有增加。改进后的YOLOv7模型不仅精确度高于原有模型,并且参数量还小于原有模型。

Table 3. Results of ablation experiment

3. 消融实验结果

YOLOv7

GSConv

P2检测层

WIoU

P/%

mAP/%

#Param.

×

×

×

81

82.9

36.9 M

×

×

82

82.6

31.35 M

×

82.1

83.2

31.82 M

83.8

84

31.82 M

5. 结论

本文提出的改进YOLOv7-GW算法旨在从平衡模型精度和轻量化程度的角度出发。在YOLOv7算法的neck网络中引入GSConv算法,减少了模型的参数量,提高了模型提取能力。在特征融合和头部输出层引入了P2检测层,这使得模型充分利用不同尺度特征图在融合时的空间权重,充分利用不同尺度的特征信息,从而提高了模型检测的全局性和准确性,进而提升小目标检测能力。在损失函数上引入了WIoU损失函数算法替换原有的CIoU损失函数,更好地调整了候选框之间的重叠度,有效改善了模型漏检和误检的问题。实验结果表明,改进后的YOLOv7-GW算法对目标检测的精确率更高,召回率也提高,漏检和误检情况减少,模型参数量更少,使得在移动设备上的部署变得更为可行。

NOTES

*通讯作者。

参考文献

[1] Wang, C., Bochkovskiy, A. and Liao, H.M. (2023) YOLOv7: Trainable Bag-Of-Freebies Sets New State-Of-The-Art for Real-Time Object Detectors. 2023 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), Vancouver, 17-24 June 2023, 7464-7475.
https://doi.org/10.1109/cvpr52729.2023.00721
[2] Li, H., Li, J., Wei, H., et al. (2022) Slim-Neck by GSConv: A Better Design Paradigm of Detector Architectures for Autonomous Vehicles. arXiv: 2206.02424.
[3] Arthur, D. and Vassilvitskii, S. (2006) k-Means++: The Advantages of Careful Seeding. Stanford CS Theory.
[4] Tong, Z., Chen, Y., Xu, Z., et al. (2023) Wise-IoU: Bounding Box Regression Loss with Dynamic Focusing Mechanism. arXiv: 2301.10051.
[5] Rezatofighi, H., Tsoi, N., Gwak, J., Sadeghian, A., Reid, I. and Savarese, S. (2019) Generalized Intersection over Union: A Metric and a Loss for Bounding Box Regression. 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), Long Beach, 15-20 June 2019, 658-666.
https://doi.org/10.1109/cvpr.2019.00075
[6] Zheng, Z., Wang, P., Liu, W., Li, J., Ye, R. and Ren, D. (2020) Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression. Proceedings of the AAAI Conference on Artificial Intelligence, 34, 12993-13000.
https://doi.org/10.1609/aaai.v34i07.6999
[7] Zheng, Z., Wang, P., Ren, D., Liu, W., Ye, R., Hu, Q., et al. (2022) Enhancing Geometric Factors in Model Learning and Inference for Object Detection and Instance Segmentation. IEEE Transactions on Cybernetics, 52, 8574-8586.
https://doi.org/10.1109/tcyb.2021.3095305
[8] Zhang, Y., Ren, W., Zhang, Z., Jia, Z., Wang, L. and Tan, T. (2022) Focal and Efficient IoU Loss for Accurate Bounding Box Regression. Neurocomputing, 506, 146-157.
https://doi.org/10.1016/j.neucom.2022.07.042
[9] Ren, S., He, K., Girshick, R. and Sun, J. (2017) Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 39, 1137-1149.
https://doi.org/10.1109/tpami.2016.2577031
[10] Liu, W., Anguelov, D., Erhan, D., Szegedy, C., Reed, S., Fu, C., et al. (2016) SSD: Single Shot Multibox Detector. In: Leibe, B., Matas, J., Sebe, N. and Welling, M., Eds., Computer VisionECCV 2016, Springer, 21-37.
https://doi.org/10.1007/978-3-319-46448-0_2
[11] Redmon, J. (2018) YOLOv3: An Incremental Improvement. arXiv: 1804.02767.
[12] Ge, Z. (2021) YOLOx: Exceeding Yolo Series in 2021. arXiv: 2107.08430.
[13] Zhu, X., Lyu, S., Wang, X. and Zhao, Q. (2021) TPH-YOLOv5: Improved YOLOv5 Based on Transformer Prediction Head for Object Detection on Drone-Captured Scenarios. 2021 IEEE/CVF International Conference on Computer Vision Workshops (ICCVW), Montreal, 11-17 October 2021, 2778-2788.
https://doi.org/10.1109/iccvw54120.2021.00312
[14] Howard, A., Sandler, M., Chen, B., Wang, W., Chen, L., Tan, M., et al. (2019) Searching for MobileNetV3. 2019 IEEE/CVF International Conference on Computer Vision (ICCV), Seoul, 27 October-2 November 2019, 1314-1324.
https://doi.org/10.1109/iccv.2019.00140
[15] Zhang, X., Zhou, X., Lin, M. and Sun, J. (2018) ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices. 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition, Salt Lake City, 18-23 June 2018, 6848-6856.
https://doi.org/10.1109/cvpr.2018.00716
[16] Tan, M. and Le, Q. (2021) EfficientNetV2: Smaller Models and Faster Training. arXiv: 2104.00298.