赞
踩
YOLOv7在5 FPS到160 FPS的范围内,在速度和精度上都超过了所有已知的物体检测器,在GPU V100上以30 FPS或更高的速度在所有已知的实时物体检测器中具有最高的精度56.8% AP。
YOLOv7-E6对象检测器(56 FPS V100,55.9% AP)的速度和精度分别比基于transformer的检测器SWINL Cascade-Mask R-CNN(9.2 FPS A100,53.9% AP)快509%和2%,比基于卷积的检测器convnext-XL Cascade-Mask R-CNN(8.6 FPS A100,55.2% AP)快551%和0.7% AP,YOLOv7的性能也更好此外,本文仅在MS COCO数据集上从头开始训练YOLOv7,而不使用任何其他数据集或预训练的权重。
源代码发布在 https://github.com/WongKinYiu/yolov7
论文地址:https://arxiv.org/abs/2207.02696
三位作者 Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao 是 YOLOv4 的原班人马。从 2015 年的 YOLOV1,2016 年 YOLOV2,2018 年的 YOLOV3,到2020年的 YOLOV4、 YOLOV5, 以及最近出现的 YOLOV6 和 YOLOV7 可以说 YOLO 系列见证了深度学习时代目标检测的演化。
实时目标检测是计算机视觉中一个非常重要的课题,因为它通常是计算机视觉系统中一个必要的组成部分。比如多目标跟踪[BYTETrack,FAIRMOT],自动驾驶[GS3D,Deep multi-modal object detection and semantic segmentation for autonomous driving: Datasets, methods, and challenges],机器人学[Object detection approach for robot grasp detection,Object detection and pose estimation from rgb and depth data for real-time, adaptive robotic grasping],医学图像分析[Retina U-Net: Embarrassingly simple exploitation of segmentation supervision for medical object detection,CLU-CNNs: Object detection for medical images]等。
执行实时物体检测的计算设备通常是一些移动CPU或GPU,以及各大厂商开发的各种神经处理单元(NPU)。例如,苹果神经引擎(Apple)、神经计算棒(Intel)、杰特森人工智能边缘设备(Nvidia)、边缘TPU (Google)、神经处理引擎(高通)、人工智能处理单元(联发科)和人工智能SOC(耐能)都是npu。
上面提到的一些边缘设备致力于加速不同的运算,例如普通卷积、深度卷积或MLP运算。在本文中,提出的实时对象检测器主要是希望它能够从边缘到云端同时支持移动GPU和GPU设备。
近年来,针对不同边缘设备的实时目标检测器仍在开发中。比如MCUNet 和NanoDet 的开发,重点是生产低功耗的单片机,提高edge CPU上的推理速度。至于YOLOX 和YOLOR等方法,则侧重于提高各种GPU的推理速度。
最近,实时对象检测器的发展集中在高效架构的设计上。至于可以在CPU上使用的实时物体检测器[NanoDet-Plus,PP-PicoDet,MobileDets,FBnetv5],它们的设计大多基于MobileNet,ShuffleNet ,或者GhostNet 。另一种主流的实时对象检测器是为GPU开发的[You only learn one representation: Unified network for multiple tasks,YOLOX,Objects as points],它们大多使用ResNet,DarkNet ,或DLA,然后使用CSPNet 策略来优化架构。
本文提出的方法不同于当前主流的实时目标检测器的发展方向。除了架构优化之外,提出的方法将集中在训练过程的优化上。本文的重点将放在一些优化模块和优化方法上,这些优化模块和优化方法可以在不增加推理成本的情况下,加强训练成本,以提高对象检测的准确性。把提出的模块和优化方法称为可训练的bag-of-freebies。
最近,模型重新参数化[RepVGG,Diverse branch block: Building a convolution as an inception-like unit,Online convolutional re-parameterization]和动态标签分配[OTA: Optimal transport assignment for object detection,TOOD: Task-aligned one-stage object detection,A dual weighting label assignment scheme for object detection]已经成为网络训练和对象检测中的重要课题。主要是在上述新概念提出后,目标检测器的训练演化出许多新的课题。
在本文中,将介绍一些发现的新问题,并设计有效的方法来解决它们。对于模型的重新参数化,利用梯度传播路径的概念分析了适用于不同网络层次的模型重新参数化策略,并提出了有计划的重新参数化模型。此外,当发现使用动态标签分配技术时,具有多个输出层的模型的训练将产生新的问题。即:“如何为不同分支的输出分配动态目标?”针对这个问题,提出了一种新的标签分配方法,称为由粗到细的引导标签分配。
本文的贡献总结如下
(1)设计了几种可训练的免费包方法,使得实时目标检测在不增加推理代价的情况下,大大提高了检测精度
(2)对于对象检测方法的发展,发现了两个新的问题,即重新参数化的模块如何取代原始模块,以及动态标签分配策略如何处理对不同输出层的分配。此外,还提出了解决这些问题带来的困难的方法;
(3)提出了“扩展”和“复合缩放”的实时目标检测方法,能够有效地利用参数和计算量;
(4)该方法能有效减少当前实时目标检测器约40%的参数和50%的计算量,并具有更快的推理速度和更高的检测精度。
YOLOv7 在 5 FPS 到 160 FPS 范围内,速度和精度都超过了所有已知的目标检测器,并在 GPU V100 上,30 FPS 的情况下达到实时目标检测器的最高精度 56.8% AP。YOLOv7 是在 MS COCO 数据集上从头开始训练的,不使用任何其他数据集或预训练权重。
相对于其他类型的工具,YOLOv7-E6 目标检测器(56 FPS V100,55.9% AP)比基于 transformer 的检测器 SWINL Cascade-Mask R-CNN(9.2 FPS A100,53.9% AP)速度上高出 509%,精度高出 2%,比基于卷积的检测器 ConvNeXt-XL Cascade-Mask R-CNN (8.6 FPS A100, 55.2% AP) 速度高出 551%,精度高出 0.7%。
实时目标检测器仍在针对不同的边缘设备进行开发。例如,MCUNet 和 NanoDet 的开发专注于生产低功耗单芯片并提高边缘 CPU 的推理速度;YOLOX、YOLOR 等方法专注于提高各种 GPU 的推理速度;实时目标检测器的发展集中在高效架构的设计上;在 CPU 上使用的实时目标检测器的设计主要基于 MobileNet、ShuffleNet 或 GhostNet;为 GPU 开发的实时目标检测器则大多使用 ResNet、DarkNet 或 DLA,并使用 CSPNet 策略来优化架构。
YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队希望它能够同时支持移动 GPU 和从边缘到云端的 GPU 设备。除了架构优化之外,该研究提出的方法还专注于训练过程的优化,将重点放在了一些优化模块和优化方法上。这可能会增加训练成本以提高目标检测的准确性,但不会增加推理成本。研究者将提出的模块和优化方法称为可训练的「bag-of-freebies」。
对于模型重参数化,该研究使用梯度传播路径的概念分析了适用于不同网络层的模型重参数化策略,并提出了有计划的重参数化模型。此外,研究者发现使用动态标签分配技术时,具有多个输出层的模型在训练时会产生新的问题:「如何为不同分支的输出分配动态目标?」针对这个问题,研究者提出了一种新的标签分配方法,称为从粗粒度到细粒度(coarse-to-fine)的引导式标签分配。
目前最新的实时物体检测器主要基于YOLO 和FCOS [Fully convolutional one-stage object detection,A simple and strong anchor-free object detector]。能够成为最先进的实时物体检测器通常需要具备以下特征:
(1)更快更强的网络架构;
(2)更有效的特征集成方法;
(3)更精确的检测方法;
(4)更稳健的损失函数;
(5)更有效的标签分配方法;
(6)更有效的训练方法。
在本文中,本文不打算探索需要额外数据或大型模型的自我监督学习或知识提炼方法。相反,将设计新的可训练的bag-of-freebies方法,用于解决从与上述(4)、(5)和(6)相关的最先进方法中衍生的问题。
模型重新参数化技术在推理阶段将多个计算模块合并为一个。模式再参数化技术可以看作是一种集成技术,可以将其分为两类,即模块级集成和模式级集成。为了获得最终的推理模型,模型级的重新参数化有两种常见的做法。
一种是用不同的训练数据训练多个相同的模型,然后平均多个训练好的模型的权重。另一种是对不同迭代次数的模型权重进行加权平均。模块级重新参数化是近年来比较热门的研究课题。
这种类型的方法在训练期间将一个模块分成多个相同或不同的模块分支,并在推理期间将多个分支的模块集成为一个完全等价的模块。然而,并不是所有提出的重新参数化模块都可以完美地应用于不同的架构。考虑到这一点,开发了新的重新参数化模块,并为各种架构设计了相关的应用策略。
模型缩放是一种放大或缩小已经设计好的模型并使其适合不同计算设备的方法。模型缩放方法通常使用不同的缩放因子,例如分辨率(输入图像的大小)、深度(层数)、宽度(通道的数量)和阶段(特征金字塔的数量),以便在网络参数的数量、计算、推理速度和准确性之间实现良好的折衷。
网络架构搜索(NAS)是一种常用的模型缩放方法。NAS可以从搜索空间中自动搜索合适的缩放因子,而无需定义太复杂的规则。NAS的缺点是需要非常昂贵的计算来完成对模型比例因子的搜索。在[Fast and accurate model scaling]中,研究者分析了缩放因子与参数和运算量之间的关系,试图直接估计一些规则,从而得到模型缩放所需的缩放因子。
查阅文献,发现几乎所有的模型缩放方法都是独立地分析单个缩放因子,甚至复合缩放类别中的方法也是独立地优化缩放因子。这是因为大多数流行的NAS体系结构处理的扩展因素并不十分相关。观察到,所有基于级联的模型,如DenseNet 或VoVNet,在缩放此类模型的深度时,会改变某些层的输入宽度。由于所提出的架构是基于级联的,因此必须为该模型设计一种新的复合缩放方法。
在大多数关于设计高效架构的文献中,主要考虑的不外乎参数数量、计算量和计算密度。从内存访问代价的特点出发,Ma等[ShuffleNet V2]还分析了输入/输出通道比、体系结构的分支数目、逐元素运算对网络推理速度的影响。Dollár等人[Fast and accurate model scaling]在执行模型缩放时额外考虑了激活,即更多地考虑卷积层的输出张量中的元素数量。
下图 (b)中CSPVoVNet [79]的设计是VoVNet 的变体。除了考虑前述的基本设计问题,CSPVoVNet 的架构还分析了梯度路径,以使不同层的权重能够学习更多不同的特征。上述梯度分析方法使得推断更快更准确。下图 ©中的ELAN 考虑了以下设计策略——“如何设计一个高效的网络?."他们得出了一个结论:通过控制最短最长的梯度路径,一个更深的网络可以有效地学习和收敛。本文在ELAN的基础上提出了扩展ELAN (E-ELAN ),其主要架构如下图(d)所示。
扩展的高效层聚合网络。提出的扩展ELAN (E-ELAN)完全不改变原有架构的梯度传输路径,而是利用组卷积来增加添加特征的基数,以shuffle合并基数的方式组合不同群的特征。这种操作方式可以增强不同特征映射所学习的特征,并改进参数和计算的使用。
新的 E-ELAN 完全没有改变原有架构的梯度传输路径,其中使用组卷积来增加添加特征的基数(cardinality),并以 shuffle 和 merge cardinality 的方式组合不同组的特征。这种操作方式可以增强不同特征图学得的特征,改进参数的使用和计算效率。
无论梯度路径长度和大规模 ELAN 中计算块的堆叠数量如何,它都达到了稳定状态。如果无限堆叠更多的计算块,可能会破坏这种稳定状态,参数利用率会降低。新提出的 E-ELAN 使用 expand、shuffle、merge cardinality 在不破坏原有梯度路径的情况下让网络的学习能力不断增强。
在架构方面,E-ELAN 只改变了计算块的架构,而过渡层(transition layer)的架构完全没有改变。YOLOv7 的策略是使用组卷积来扩展计算块的通道和基数。研究者将对计算层的所有计算块应用相同的组参数和通道乘数。然后,每个计算块计算出的特征图会根据设置的组参数 g 被打乱成 g 个组,再将它们连接在一起。此时,每组特征图的通道数将与原始架构中的通道数相同。最后,该方法添加 g 组特征图来执行 merge cardinality。除了保持原有的 ELAN 设计架构,E-ELAN 还可以引导不同组的计算块学习更多样化的特征。
无论大规模ELAN中的梯度路径长度和计算块的堆叠数量,都达到了一个稳定的状态。如果无限堆叠更多的计算块,这种稳定状态可能会被破坏,参数利用率会降低。所提出的E-ELAN使用扩展、shuffle、合并基数来实现在不破坏原有梯度路径的情况下不断增强网络学习能力的能力。
架构方面,E-ELAN只是改变了计算块的架构,而过渡层的架构完全不变。本文的策略是使用群卷积来扩展计算块的通道和基数。将对计算层的所有计算块应用相同的组参数和通道乘数。然后,由每个计算块计算的特征图将根据设置的组参数g被混洗成g个组,然后将它们连接在一起。此时,每组特征图中的通道数将与原始架构中的通道数相同。最后,添加g组特征映射来执行合并基数。除了保持原有的ELAN设计架构,E-ELAN还可以引导不同组的计算块学习更多样的特性。
模型缩放的主要目的是调整模型的某些属性,生成不同尺度的模型,以满足不同推理速度的需要。例如,EfficientNet的缩放模型考虑了宽度、深度和分辨率。至于scaled-YOLOv4,其缩放模型是调整级数。在[Fast and accurate model scaling]中,Dollár等人分析了香草卷积和群卷积在进行宽度和深度缩放时对参数和计算量的影响,并以此设计了相应的模型缩放方法。
以上方法主要用于PlainNet或ResNet等架构中。当这些架构在执行放大或缩小时,每一层的入度和出度不会改变,因此可以独立地分析每个缩放因子对参数和计算量的影响。然而,如果将这些方法应用于基于级联的架构,会发现,当在深度上执行放大或缩小时,紧接在基于级联的计算块之后的翻译层的入度会减小或增大,如下图(a)和(b)所示。
基于连接的模型的模型缩放。从(a)到(b),观察到当在基于连接的模型上执行深度缩放时,计算块的输出宽度也增加。这种现象会导致后续传输层的输入宽度增加。因此,提出©,即在对基于级联的模型进行模型缩放时,只需要缩放计算块中的深度,其余的传输层用相应的宽度缩放。
从上述现象可以推断出,对于基于级联的模型,不能单独分析不同的缩放因子,而必须一起考虑。以放大深度为例,这样的动作会引起过渡层的输入通道和输出通道之间的比率变化,这可能导致模型的硬件使用量的减少。因此,必须为基于连接的模型提出相应的复合模型缩放方法。当缩放计算块的深度因子时,还必须计算该块的输出通道的变化。然后,将在过渡层上执行相同变化量的宽度因子缩放,结果如上图 ©所示。提出的复合缩放方法可以保持模型在初始设计时的性质,并保持最佳结构。
虽然RepConv在VGG上取得了优异的性能,但是当直接将其应用到ResNet和DenseNet 等架构上时,其精度会明显降低。使用梯度流传播路径来分析重新参数化卷积应该如何与不同的网络相结合。也相应地设计了重新参数化卷积。
RepConv实际上将3 × 3卷积、1 × 1卷积、恒等式连接结合在一个卷积层中。在分析了RepConv与不同架构的组合和对应性能后,发现RepConv中的恒等映射破坏了ResNet中的残差和DenseNet中的串接,为不同的特征图提供了更多的渐变多样性。
基于上述原因,使用无恒等映射的RepConv(RepConvN)来设计计划重参数化卷积的架构。在本文的思维中,当一个有残差或级联的卷积层被重新参数化的卷积所替代时,应该没有恒等映射。下图显示了在PlainNet和ResNet中设计的“有计划的重新参数化卷积”的一个例子。至于在基于残差的模型和基于级联的模型中的完全计划的重新参数化卷积实验,将在消融研究中提出。
计划的重新参数化模型。在建议的计划的重新参数化模型中,本文发现,具有残差或级联连接的层,其RepConv不应具有恒等映射。在这些情况下,可以用不包含标识连接的RepConvN来代替它。
重参数化的作用:在保证模型性能的条件下加速网络,主要是对卷积+BN层以及不同卷积进行融合,合并为一个卷积模块。卷积+BN融合的公式化过程,红色表示卷积参数(权重和偏置),蓝色是BN参数(m是输入均值,v 是输入标准差,γ 和β 是两个可学习的参数),最终经过一系列化简,融合成了一个卷积:
深度监督是一种经常用于训练深度网络的技术。其主要思想是在网络的中间层增加额外的辅助头,以辅助损失为导向的浅层网络权值。即使对于通常收敛良好的ResNet和DenseNet等架构,深度监督仍然可以显著提高模型在许多任务上的性能。下图(a)和(b)分别显示了“没有”和“有”深度监控的对象检测器架构。在本文中,把负责最终输出的头称为引导头,用来辅助训练的头称为辅助头。
粗略用于辅助,精细用于引线头标签分配器。与正常模式(a)相比,( b)中的图式有辅助头。与通常的独立标签分配器©不同,提出了(d)引线头引导的标签分配器和(e)由粗到细的引线头引导的标签分配器。
该标签分配器通过导联头预测和ground truth进行优化,以同时获得训练导联头和辅助导联头的标签。详细的由粗到细的实现方法和约束设计细节将在Apendix中详细阐述。
在标签分配策略方面,上图 (a) 和 (b) 分别显示了「没有」和「有」深度监督的目标检测器架构。研究者将负责最终输出的 head 称为 lead head,用于辅助训练的 head 称为 auxiliary head。该研究所提的两种深度监督标签分配策略分别如上图 (d) 和 (e) 所示。与通常的独立标签分配器(图 © )不同,该研究提出的标签分配器通过 lead head 预测和实况进行优化,以同时获得训练 lead head 和 auxiliary head 的标签。
YOLOv7的标签分配策略(正样本筛选),集成了YOLOv5和YOLOX两者的精华:
YOLOv5 Step1:Autoanchor策略,获得数据集最佳匹配的9个anchor(可选) Step2:根据GT框与anchor的宽高比,过滤掉不合适的anchor Step3:选择GT框的中心网格以及最邻近的2个邻域网格作为正样本筛选区域(辅助头则选择周围4个邻域网格)YOLOX Step4:计算GT框与正样本IOU并从大到小排序,选取前10个值进行求和(P6前20个),并取整作为当前GT框的K值 Step5:根据损失函数计算每个GT框和候选anchor的损失,保留损失最小的前K个 Step6:去掉同一个anchor被分配到多个GT框的情况
接下来要讨论标签分配的问题。以往在深度网络的训练中,标签赋值通常是直接参考ground-truth,按照给定的规则生成硬标签。但是近年来,如果以物体检测为例,研究人员往往利用网络输出的预测质量和分布,再和ground-truth一起考虑,使用一些计算和优化方法,生成一个可靠的软标签。例如,YOLO使用边界框回归预测的IoU和ground-truth作为对象的软标签。在本文中,称这种机制为“标签分配器”,它将网络预测结果与ground-truth一起考虑,然后分配软标签
深度监督需要针对目标对象进行训练,无论辅助主管或主管的情况如何。在软标签分配器相关技术的开发过程中,意外地发现了一个新的衍生问题,即“如何将软标签分配给辅助头和前导头?”据本文所知,相关文献至今没有探讨过这个问题。
目前最流行的方法的结果如上图 ©所示,就是把辅助头和引导头分开,然后利用各自的预测结果和ground-truth来执行标签赋值。本文提出的方法是一种新的标签分配方法,通过引导头预测来引导辅助头和引导头。换句话说,以引导头预测为指导,生成由粗到细的分层标签,分别用于辅助头和导联头学习。上图 (d)和(e)分别示出了两种提议的深度监督标签分配策略。
Lead head引导标签分配器主要基于lead head的预测结果和ground-truth情况进行计算,并通过优化过程生成软标签。这组软标签将用作辅助头并主导的目标训练模型。之所以要这么做,是因为lead head有比较强的学习能力,所以由其生成的软标签应该更能代表源数据和目标之间的分布和相关性。此外,可以将这种学习视为一种广义残差学习。通过让较浅的辅助头直接学习lead head已经学习的信息,lead head将更能专注于学习尚未学习的残留信息。
由粗到细的导联头引导标签分配器还利用导联头的预测结果和实际情况来生成软标签。然而,在该过程中,生成两组不同的软标签,即,粗标签和细标签,其中细标签与由导联头引导的标签分配器生成的软标签相同,并且通过放松正样本分配过程的约束允许更多的网格被视为正目标来生成粗标签。
之所以会这样,是因为辅助头的学习能力不如引导头强,而且为了避免丢失需要学习的信息,会重点优化辅助头在物体检测任务中的召回率。对于lead head的输出,可以从高召回率的结果中筛选出高精度的结果作为最终输出。
但是,必须注意,如果粗标签的附加权重接近细标签的附加权重,则可能在最终预测时产生不良先验。因此,为了使那些超粗的正网格影响更小,在解码器中设置了限制,使得超粗的正网格不能完美地产生软标签。上述机制允许在学习过程中动态调整细标签和粗标签的重要性,并使细标签的可优化上界始终高于粗标签。
在这一节中,将列出一些可训练的行李。这些free是在训练中使用的一些技巧,但最初的概念不是提出的。这些free的训练细节将在附录中详细阐述,包括
(1)conv-bn-activation拓扑中的批量归一化:这部分主要是将批量归一化层直接连接到卷积层。这样做的目的是在推断阶段将批量归一化的均值和方差集成到卷积层的偏差和权重中。
(2)YOLOR中的隐含知识结合卷积特征图以加法和乘法的方式:YOLOR中的隐含知识可以在推理阶段通过预先计算简化为一个向量。这个向量可以与前一个或后一个卷积层的偏差和权重相结合。
(3) EMA模型:EMA是mean teacher中使用的一种技术,在本文的系统中纯粹使用EMA模型作为最终的推理模型。
使用微软的COCO数据集进行实验,验证了本文的目标检测方法。所有的实验都没有使用预先训练好的模型。也就是所有的模型都是从零开始训练的。在开发过程中,使用train 2017集合进行训练,然后使用val 2017集合进行验证和选择超参数。最后,在测试集2017上展示了对象检测的性能,并将其与最先进的对象检测算法进行了比较。详细的训练参数设置在附录中描述。
本文为edge GPU、normal GPU和cloud GPU设计了基本模型,它们分别被称为YOLOv7tiny、YOLOv7和YOLOv7-W6。同时,还使用基本模型针对不同的服务需求进行模型缩放,得到不同类型的模型。对于YOLOv7,我们在颈部进行堆叠缩放,并使用提出的复合缩放方法对整个模型的深度和宽度进行放大,并使用此方法获得YOLOv7-X。对于YOLOv7-W6,使用新提出的复合缩放方法获得YOLOv7-E6和YOLOv7-D6。此外,将proposed EELAN用于YOLOv7-E6,从而完成YOLOv7E6E。由于YOLOv7-tiny是面向edge GPU的架构,所以会使用leaky ReLU作为激活函数。至于其他模型,使用 SiLU作为激活函数。将在附录中详细描述每个模型的比例因子。
选择以前版本的YOLO和最先进的物体探测器YOLOR 作为本文的基线。下表显示了提出的YOLOv7模型与使用相同设置训练的那些基线的比较。
Comparison of baseline object detectors
从结果中看到,与YOLOv4相比,YOLOv7的参数减少了75%,计算量减少了36%,AP提高了1.5%。如果与最先进的YOLOR-CSP相比,YOLOv7的参数少43%,计算量少15%,AP高0.4%。在tiny模型的性能上,与YOLOv4-tiny-31相比,YOLOv7tiny减少了39%的参数数量和49%的计算量,但保持了相同的AP。在云GPU模型上,本文的模型在减少19%的参数数量和33%的计算量的同时,仍然可以拥有更高的AP。
本文将提出的方法与通用GPU和移动GPU的最先进的对象检测器进行了比较,结果如下表所示。从下表中的结果知道,所提出的方法具有最佳的速度-精度综合权衡。如果将yolov 7-tiny-路斯与YOLOv5-N (r6.1)进行比较,本文的方法在AP上快127 fps,准确率高10.7%。另外YOLOv7在161 fps的帧率下有51.4%的AP,而AP相同的PPYOLOE-L只有78 fps的帧率。在参数使用上,YOLOv7比PPYOLOE-L少41%,如果把114 fps推理速度的YOLOv7-X和99 fps推理速度的YOLOv5-L (r6.1)对比,YOLOv7-X可以提高AP 3.9%。
如果将YOLOv7X与相近规模的YOLOv5-X (r6.1)相比,YOLOv7-X的推断速度要快31 fps。此外,在参数和计算量方面,YOLOv7-X相比YOLOv5-X (r6.1)减少了22%的参数和8%的计算量,但AP提高了2.2%。
如果用输入分辨率1280对比YOLOv7和YOLOR,YOLOv7-W6的推断速度比YOLOR-P6快8 fps,检测率也提高了1% AP。至于YOLOv7-E6和YOLOv5-X6 (r6.1)的对比,前者比后者AP增益0.9%,参数少45%,计算量少63%,推理速度提高47%。YOLOv7-D6推理速度与YOLOR-E6接近,但AP提高0.8%。YOLOv7-E6E的推理速度与YOLOR-D6接近,但AP提高了0.3%。
下表显示了使用不同的模型缩放策略进行放大时获得的结果。其中,提出的复合缩放方法是将计算块的深度放大1.5倍,将过渡块的宽度放大1.25倍。如果本文的方法与只按比例增加宽度的方法相比,本文的方法可以用更少的参数和计算量提高AP 0.5%。如果本文的方法与只按比例增加深度的方法相比,本文的方法只需要增加2.9%的参数数量和1.2%的计算量,就可以提高AP 0.2%。从下表的结果可以看出,提出的复合缩放策略可以更有效地利用参数和计算。
Ablation study on proposed model scaling.
为了验证本文提出的重新参数化模型的通用性,分别在基于连接的模型和基于残差的模型上进行验证。选择用于验证的基于级联的模型和基于残差的模型分别是3层ELAN和CSPDarknet。
在基于级联模型的实验中,本文将3层堆叠ELAN中不同位置的3 × 3卷积层替换为RepConv,详细配置如下图所示。
计划中的RepConv 3-堆叠式ELAN。蓝圈是用RepConv代替Conv的位置。
从下表所示的结果中,看到所有较高的AP值都出现在提出的计划中的重新参数化模型上。
Ablation study on planned RepConcatenation model.
在处理基于残差的模型的实验中,由于原始暗模块没有符合设计策略的3 × 3卷积模块,因此为实验额外设计了一个反向暗模块,其架构如下图所示。
反向CSPDarknet。颠倒了暗块中1 × 1和3 × 3卷积层的位置,以符合计划的重新参数化模型设计策略。
由于带暗块和反暗块的CSPDarknet的参数和运算量完全相同,所以比较是公平的。下表中所示的实验结果充分证实了所提出的计划的再参数化模型在基于残差的模型上同样有效。发现RepCSPResNet 的设计也符合本文的设计模式。
Ablation study on planned RepResidual model.
在辅助头的辅助损失实验中,比较了引导头和辅助头的一般独立标记分配方法,也比较了两种提出的导联引导标记分配方法。在下表中显示了所有的比较结果。从下表中列出的结果可以明显看出,任何增加辅助损耗的模型都可以显著提高整体性能。
Ablation study on proposed auxiliary head.
此外,本文提出的线索引导标签分配策略在AP、AP50和AP75中比一般的独立标签分配策略获得了更好的性能。至于本文提出的粗略的助理和精细的领导标签分配策略,它在所有情况下都产生最佳结果。
在下图中,显示了在辅助头和引线头通过不同方法预测的目标图。从下图中发现,如果辅助头学习引导软标签,它确实会帮助引导头从恒定目标中提取残差信息。
Objectness map predicted by different methods at auxiliary head and lead head.
在下表中,进一步分析了所提出的由粗到细的导联引导标记分配方法对辅助头解码器的影响。也就是说,比较了引入/不引入上限约束的结果。从表中的数字来看,用离物体中心的距离来约束物体性上界的方法可以取得更好的性能。
Ablation study on constrained auxiliary head.
由于提出的YOLOv7使用多个金字塔联合预测物体检测结果,可以直接将辅助头连接到中间层的金字塔进行训练。这种类型的训练可以弥补在下一级金字塔预测中可能丢失的信息。基于以上原因,在提出的E-ELAN架构中设计了部分辅助头。
本文的方法是在合并基数之前,在其中一组特征映射之后连接辅助头,这种连接可以使新生成的一组特征映射的权重不被辅助loss直接更新。本文的设计允许每个铅头金字塔仍然从不同大小的物体中获取信息。下表显示了使用两种不同方法获得的结果,即由粗到细导联引导法和部分由粗到细导联引导法。显然,部分由粗到细的导联引导方法具有更好的辅助效果。
Ablation study on partial auxiliary head.
本文提出了一种新的实时目标检测器结构和相应的模型缩放方法。此外,发现目标检测方法的发展过程产生了新的研究课题。在研究过程中,发现了重新参数化模块的替换问题和动态标签分配的分配问题。为了解决这个问题,提出了可训练的bag-of-freebies方法来提高目标检测的准确性。在此基础上,开发了YOLOv7系列目标检测系统,获得了最先进的结果。
YOLOV7,首先对输入的图片 resize 为 640x640 大小,输入到 backbone 网络中,然后经 head 层网络输出三层不同 size 大小的 feature map,经过 Rep 和 conv输出预测结果,这里以 coco 为例子,输出为 80 个类别,然后每个输出(x ,y, w, h, o) 即坐标位置和前后背景,3 是指的 anchor 数量,因此每一层的输出为 (80+5)x3 = 255再乘上 feature map 的大小就是最终的输出了。
YOLOV7 head 其实就是一个 pafpn 的结构,和之前的YOLOV4,YOLOV5 一样。首先,对于 backbone 最后输出的 32 倍降采样特征图 C5,然后经过 SPPCSP,通道数从1024变为512。先按照 top down 和 C4、C3融合,得到 P3、P4 和 P5;再按 bottom-up 去和 P4、P5 做融合。这里基本和 YOLOV5 是一样的,区别在于将 YOLOV5 中的 CSP 模块换成了 ELAN-H 模块, 同时下采样变为了 MP2 层。
RepConv 在训练和推理是有一定的区别。训练时有三个分支的相加输出,部署时会将分支的参数重参数化到主分支上。
YOLOv7在5 FPS到160 FPS的范围内,在速度和精度方面都超过了所有已知的物体检测器,在GPU V100上具有30 FPS或更高的所有已知实时物体检测器中,具有最高的精度56.8% AP test-dev / 56.8% AP min-val。YOLOv7-E6对象检测器(56 FPS V100,55.9% AP)的速度和精度分别比基于transformer的检测器SWIN-L Cascade Mask R-CNN(9.2 FPS A100,53.9% AP)快509%和2%,比基于卷积的检测器conv next-XL Cascade Mask R-CNN(8.6 FPS A100,55.2% AP)快551%和0.7% AP,并且优于YOLOv此外,只在MS COCO数据集上从头开始训练YOLOv7,而不使用任何其他数据集或预训练的权重。
YOLOv7-E6E (56.8% AP)实时模型在COCO数据集上的最大准确率比目前最准确的美团/YOLOv6-s模型(43.1% AP)高+13.7% AP。在COCO数据集和V100 GPU上batch=32的相同条件下,我们的YOLOv7-tiny (35.2% AP,0.4 ms)模型比美团/YOLOv6-n (35.0% AP,0.5 ms)快+25%,AP高+0.2%。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。