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)所示:
(1)
(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)。
(3)
(4)
(5)
(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
*通讯作者。