ABSTRACT
在传统的目标检测框架中,继承自图像识别模型的骨干主体提取深度潜在特征,然后由颈部模块融合这些潜在特征来获取不同尺度的信息。由于目标检测的分辨率远大于图像识别,因此主干的计算代价往往占主导地位。这种重主干设计范式主要是由于将图像识别模型转移到目标检测时的历史遗留问题,而不是目标检测的端到端优化设计。在这项工作中,我们表明,这种范式确实导致次优的目标检测模型。为此,我们提出了一个新的重颈范式,GiraffeDet,一个类似长颈鹿的网络,用于有效的目标检测。GiraffeDet使用了一个非常轻量的主干和一个非常深而大的颈部模块,这鼓励了不同空间尺度之间密集的信息交换,同时也鼓励了不同层次的潜在语义。这种设计范式使检测器即使在网络的早期阶段,也能以同样的优先级处理高级语义信息和低级空间信息,提高了检测任务的效率。对多个流行目标检测基准的数值评估表明,在广泛的资源约束范围内,GiraffeDet始终优于以前的SOTA模型。
INTRODUCTION
在过去的几年里,基于深度学习的目标检测方法取得了显著的进展。尽管在结构、训练策略等方面进行了不同的设计,使得目标检测网络的功能越来越强大,但检测所有大范围变化目标的元目标并没有改变。例如,COCO数据集中最小的10%和最大的10%的对象实例的比例分别是0.024和0.472 (Singh &戴维斯,2018年),规模扩大了近20倍。这给使用最近的方法来处理如此大规模的变化带来了极大的挑战。为此,我们的目标是通过设计一个规模强大的方法来解决这个问题。为了缓解大规模变化带来的问题,一种直观的方法是在训练和测试中都使用多尺度金字塔策略。(辛格的工作;Davis, 2018)在图像金字塔的相同尺度上训练和测试探测器,并选择性地反向传播不同大小的物体实例的梯度,作为图像尺度的函数。虽然这种方法提高了现有的大多数基于cnn的方法的检测性能,但它不是很实用,因为图像金字塔方法处理每个尺度的图像,计算成本较高。此外,在使用预先训练的分类骨干时,分类和检测数据集之间的对象规模仍然是领域转移的另一个挑战。另外,提出特征金字塔网络以较低的计算代价来近似图像金字塔。目前的方法仍然依赖于较好的骨干设计,但缺乏高层次特征与低层特征之间的信息交流。例如,一些工作通过自底向上的路径扩展来增强整个特征层次,在底层精确定位信号,但这种自底向上的路径设计可能缺乏高层语义信息和低层空间信息的交换。根据以上挑战,本次任务提出了以下两个问题
·在一个检测模型中,图像分类任务的主干是必不可少的吗?
·什么类型的多尺度表示对于检测任务是有效的?
这两个问题促使我们设计一个包含两个子任务的新框架,即高效的特征降采样和充分的多尺度融合。首先,传统的尺度敏感特征生成主干计算量大且存在域漂移问题。一个可替代的轻量级骨干可以解决这些问题。其次,检测器学习足够的高层次语义特征和低层空间特征融合信息是至关重要的。基于以上动机,我们设计了一个类似长颈鹿的网络,命名为GiraffeDet,其见解如下:(1)一种可替代的轻量级骨干可以在不增加任何计算成本的情况下提取多尺度特征变换。(2)足够的跨尺度连接,即Queen- fusion,就像国际象棋中的Queen Piece路径,能够处理不同层次的特征融合。(3)根据设计的轻量级骨干网和灵活的FPN,我们为每个FLOPs级别提出了一个GiraffeDet家族。值得注意的是,实验结果表明我们的GiraffeDet家族在每个FLOPs级别上都达到了更高的准确率和更高的效率。
综上所述,我们工作的主要贡献如下:据我们所知,我们提出了第一个轻量级替代骨干网和灵活的FPN结合作为检测器。GiraffeDet系列由轻型s2d链和通用fpn组成,展示了最先进的性能。我们设计了轻量级的空间到深度链(S2D-chain)来代替传统的基于cnn的骨干网,并通过控制实验证明,在目标检测模式中,FPN比传统骨干网更重要。在我们提出的广义fpn (GFPN)中,提出了一种新的后融合作为我们的跨尺度连接方式,融合了前层和当前层的级别特征,log2n跳过层链路提供了更有效的信息传输,可以扩展到更深的网络。基于轻骨干和重脖子的模式,GiraffeDet家庭机型在各种各样的flopp性能权衡中表现良好。特别是,使用多尺度测试技术,GiraffeDet-D29在COCO数据集上实现了54.1%的mAP,优于其他SOTA方法。
RELATED WORK
目标检测器通过学习尺度敏感特征来识别和定位目标是至关重要的。大规模变分问题的传统求解方法主要是基于改进的卷积神经网络。基于cnn的物体检测器主要分为两级检测器和一级检测器。两级探测器(Ren et al., 2015;戴等,2016;He等人,2017;蔡,塞·伐斯冈萨雷斯,他2018;Pang等人,2019年)预测区域建议,然后通过子网和一级检测器对其进行细化(Liu等人,2016年;Lin等,2017b;Redmon等人,2016;Redmon,哈蒂,2017;Tian等,2019;Zhu et al., 2019;Zhang等,2020;2019;Ge等人,2021)直接检测边界盒,而无需建议生成步骤。在这项工作中,我们主要进行基于一级检测器方法的实验。近年来,主要研究方向是利用金字塔策略,包括图像金字塔和特征金字塔。图像金字塔策略通过缩放图像来检测实例。例如,狙击手(Singh et al., 2018)提出了一种快速的多尺度训练方法,对真实地面周围的前景区域和背景区域进行不同尺度的训练。与图像金字塔方法不同,特征金字塔方法融合了跨越不同尺度和不同语义信息层的金字塔表示。例如,PANet (Liu et al., 2018)通过额外的自下而上的路径增强来增强特征金字塔网络顶部的特征层次结构。此外,NAS-FPN (Ghiasi et al., 2019)利用神经结构搜索自动搜索特征金字塔网络拓扑结构。我们的工作重点是特征金字塔策略,并提出了一种足够的高层语义和低层空间信息融合方法。一些研究人员开始着手设计新的结构来解决大规模变异问题,而不是在检测任务中采用骨干颈头结构。Sun等人(2019b)提出了FishNet作为一种编码器-解码器架构,通过跳跃连接融合多尺度特征。SpineNet (Du等人,2020年)设计为具有尺度排列的中间特征和跨尺度连接的骨干,通过神经体系结构搜索在目标检测任务中学习。我们的工作受到这些方法的启发,提出了一种轻量级的空间到深度骨干网络,而不是基于cnn的骨干网络。然而,我们的GiraffeDet仍然被设计成backbone-neck-head架构。由于这种典型的体系结构在检测任务中得到了广泛的应用并被证明是有效的。
THE GIRAFFEDET
虽然已经开展了大量的研究来研究有效的目标检测,但大规模变异仍然是一个挑战。为了实现有效的多尺度信息交换,我们提出了用于高效目标检测的GiraffeDet,该giraffe由轻型空间到深度链、广义fpn和预测网络组成。整个框架如图1所示,它主要遵循一级检测器范式。
图1:GiraffeDet概述,包括三个部分:1)主体部分包含图像预处理和轻量级的s2d链;2)重颈部分对高层语义和低层空间特征进行细化和融合;3) Head预测现有对象的边框和类标签
3.1 LIGHTWEIGHT SPACE-TO-DEPTH CHAIN
大多数特征金字塔网络都采用传统的基于cnn的网络作为骨干,提取多尺度特征地图,甚至进行信息交换学习。然而,随着CNN的发展,最近的骨干变得更加沉重,利用它们的计算成本很高。此外,最近应用的主干主要是在分类数据集上进行预训练,如ResNet50在ImageNet上进行预训练,我们认为这些预训练的主干不适合用于检测任务,仍然是领域转移问题。相反,FPN更强调高级语义和低级空间信息交换。因此,我们认为在目标检测模型中,FPN比传统主干更加关键。
灵感来自(Shi等人,2016;Sajjadi等人,2018),我们提出空间到深度链(S2D链)作为我们的轻量级骨干,其中包括两个3x3卷积网络和堆叠的S2D块。具体来说,3x3卷积用于初始下采样,并引入更多的非线性变换。每个S2D块由一个S2D层和一个1x1卷积组成。S2D层通过固定间隔对特征进行均匀采样和重组,将空间维度信息移动到深度维度,无需额外的参数对特征进行下采样。然后使用1x1卷积提供一个通道级池来生成固定维的特征映射。更多细节见附录A.1。
图2:空间到深度转换的说明。S2D操作将激活从空间维度移动到通道维度
为了验证我们的假设,我们在第4节中对相同FLOPs的多个目标检测进行了不同骨干和颈部计算率的对照实验。结果表明,在目标检测任务中,颈部比传统的骨干更重要。
3.2 GENERALIZED-FPN
在特征金字塔网络中,多尺度特征融合的目的是对从骨干网中提取的不同分辨率的特征进行聚合。图3显示了特征金字塔网络设计的演化过程。传统的FPN (Lin et al., 2017a)引入了自顶向下的路径来融合从3级到7级的多尺度特征。考虑到单向信息流的局限性,PANet(Liu et al., 2018)增加了额外的自底向上路径聚合网络,但计算成本更高。此外,BiFPN (Tan et al., 2020)删除了只有一个输入边的节点,并在同一层上从原始输入添加额外的边。然而,我们观察到,以往的方法只关注特征融合,而缺乏内部块连接。因此,我们设计了一种新的路径融合,包括跨层和跨尺度连接,如图3(d)所示。
图3:从level 3到level 7的特征金字塔网络演化设计(P3 - P7)。(a) FPN (Lin et al., 2017a)引入了自顶向下的路径融合多尺度特征;(b) PANet (Liu et al., 2018)在FPN的顶部增加了额外的自底向上路径;(c) BiFPN (Tan et al., 2020)引入了双向跨尺度路径;(d)我们的GFPN既包含皇后融合通路,也包含跨层连接。虚线框表示每个FPN设计中的层。
Skip-layer连接。与其他连接方法相比,在反向传播过程中跳跃式连接的特征层之间的距离较短。为了在如此沉重的长颈鹿脖子上减少梯度消失,我们提出了两种特征链接方法:在我们提出的GFPN中,密集链接和log2n-link,如图4所示
图4跨层连接的两种链路方式:(a)稠密链路:前面所有层的连接。(b) log2n-link:最多log2l + 1层的连接
密集链接:受DenseNet (Huang et al., 2017)的启发,对于k层中的每个尺度特征Pkl,因此,第l层接收到前面所有层的特征图
其中Concat()表示前面所有层产生的特性映射的拼接,Conv()表示一个3x3的卷积。
log2n-link:在每k层,第lth层最多接收到前一层的log2l + 1个特征映射,这些输入层与深度i的距离以2为底数,为指数,如所示
其中l2n0, Concat(), Conv()也分别表示拼接和3x3卷积。与深度l的稠密链路相比,log2n-link的时间复杂度仅为O(l·log2l),而不是O(l2)。此外,log2n-link在反向传播过程中只增加了层间的短距离,从1增加到1+log2l。因此,log2n-link可以扩展到更深的网络 。
Cross-scale连接。基于我们的假设,我们设计的足够的信息交换不仅要包含跨层连接,而且要包含跨尺度连接,以克服大规模变化。以往连接相邻层间特征的工作只考虑相同的层特征(Liu et al., 2018)或以前的层特征(Tan et al., 2020)。因此,我们提出了一种新的跨尺度融合,称为皇后融合,它同时考虑了图3(d)所示的相同级别和邻居级别特征,就像下棋中的皇后棋子。如图5(b)所示,P5中Queen-fusion的拼接包括前一层P4下采样、前一层P6上采样、前一层P5和当前一层P4。在这项工作中,我们分别使用双线性插值和最大池作为我们的上采样和下采样函数。因此,在极端大尺度变化情景下,需要模型有足够的高层和低层信息交换。基于我们的跨层和跨尺度连接机制,提出的广义fpn可以像长颈鹿脖子一样尽可能长地扩展。如此沉重的颈部和轻量级的骨干,我们的GiraffeDet可以平衡更高的准确性和更好的效率
图5:PANet与我们的皇后融合在GFPN中的跨尺度连接示意图。S和C表示求和和拼接融合方式,0Pk表示下一层节点
3.3 GIRAFFEDET FAMILY
根据我们提出的s2d链和广义fpn,我们可以开发一系列不同的GiraffeDet缩放模型,可以克服广泛的资源约束。以前的工作以低效的方式扩大其检测器,如改变较大的骨干网,如ResNeXt (Xie等人,2017),或堆叠FPN块,如NAS-FPN (Ghiasi等人,2019)。特别是effentdet (Tan et al., 2020)开始使用复合系数φ来联合放大骨干的各个维度。与effentdet不同的是,我们只关注GFPN层的扩展,而不是包括轻量级骨干网在内的整个框架。具体地,我们采用φd和φw两个系数来灵活地缩放GFPN的深度和宽度。
基于我们的GFPN和eS2D链,我们开发了一个GiraffeDet家族。大多数以前的工作通过改变更大的骨干网络来扩展基线检测器,因为他们的模型主要关注单一或有限的缩放维度。由于我们假设主干对目标检测任务不是至关重要的,因此GiffeDet家族只关注广义fpn的扩展。提出了两个乘子来控制GFPN的深度(#层)和宽度(#通道)
遵循以上设置和公式。3、我们开发了六种GiraffeDet架构,如表1所示。GiraffeDet- d7,D11,D14,D16与基于resnet系列的模型具有相同级别的FLOPs,我们在下一节比较GiraffeDet家族与SOTA模型的性能。注意,GFPN的层与图3所示的其他FPN设计不同。在我们提出的GFPN中,每一层代表一个深度,而PANet和BiFPN层包含两个深度。
4 EXPERIMENTS
在本节中,我们首先介绍实现细节,并展示我们在COCO数据集上的实验结果(Lin et al., 2014)。然后将我们提出的GiraffeDet家族与其他最先进的方法进行比较,并提供深入的分析,以更好地理解我们的框架。
4.1 DATASET AND IMPLEMENTATION DETAILS
可可数据集。我们在含有80个对象类别的COCO 2017检测数据集上对GiraffeDet进行了评估。它包括115k图像用于训练(train), 5k图像用于验证(val), 20k图像用于测试(测试开发),没有公共地面真相。所有方法的训练都是在115k训练图像上进行的。我们报告消融研究的验证数据集的结果,以及来自评估服务器的testdev数据集的结果,用于最先进的比较和DCN相关的比较。为了进行公平比较,所有结果都是在mm检测(Chen等人,2019年)和标准coco式评估协议下产生的。GFocalV2 (Li et al., 2021)和ATSS (Zhang et al., 2020)分别作为头部和锚点分配器。跟随(He et al., 2019)的工作,所有模型都是从零开始训练,以减少训练前骨干对ImageNet的影响。输入图像的短边被调整为800,最大尺寸被限制在1333以内。为了提高抓挠训练的稳定性,我们对所有模型采用多尺度训练,包括:2 x imagenet-pretrained (p-2x)学习计划(24时代,衰变在16和22世纪)只有在r2 - 101宽带骨干实验,和3 x划痕(s-3x)学习计划(36时代,衰变在28岁,33时代)在烧蚀研究中,和6 x划痕(s-6x)学习计划(72时代,衰变在65年和71年时代)在最先进的比较。更多的实现细节见附录B
4.2 QUANTITATIVE EVALUATION ON COCO DATASET
我们在表2中比较了GiraffeDet和最先进的方法。除非另有说明,否则应用不增加测试时间的单模型和单尺度设置。我们报告了测试开发(20k图像没有公共地面真相)和val与5k验证图像的准确性。如果模型有相似的失败,我们将它们分组,并比较它们在每组中的准确性。值得注意的是,模型的性能取决于网络结构和训练设置。我们参考了他们论文中的大部分模型。但为了进行公平的比较,我们也通过6次训练从头复制了一些retina et (Lin et al., 2017b)、FCOS (Tian et al., 2019)、HRNet (Sun et al., 2019a)、GFLV2 (Li et al., 2021),记为。
大规模的方差。从图6的性能可以看出,我们提出的GiraffeDet在每个像素尺度范围内的性能都是最好的,这表明我们提出的轻骨干和重颈范式以及我们提出的GFPN可以有效地解决大规模的方差问题。在跨层和跨尺度连接下,可以实现高层语义信息和低层空间信息的充分交换。许多对象实例小于COCO数据集中图像区域的1%,这使得检测器很难检测到。即使极小的实例很难检测,我们的方法在0-32像素范围内仍然比retina et性能好5.7%的mAP,在80-144像素范围内优于相同的mAP。值得注意的是,在192-256像素范围内,所提出的GiraffeDet算法的性能优于其他算法,这证明了我们的设计能够有效地学习尺度敏感特征。
图6:在R50 FLOPs级别和6倍scratch训练下,在五种不同模型的对象实例(像素)的所有尺度上的mAP,包括HRNet (Sun等人,2019a)、GFocalV2 (Li等人,2021年)、retina et (Lin等人,2017b)、FCOS (Tian等人,2019年)和我们提出的GiraffeDet
表2:GiraffeDet在COCO上的表现-单模型单尺度的结果。test-dev是COCO测试集,val是验证集。Y表示结果通过6x scratch training重新得到,其他引用他们的论文。如果模型有相似的失败,我们将它们分组,并比较它们在每组中的准确性。MStest:多尺度测试,R: ResNet, X: ResNext, W:低层次特征在HRNet中的映射宽度(通道号)。GiraffeDet家族的主要赋值器和定位点赋值器是GFocalV2和ATSS
与最先进的方法比较。从表2可以看出,我们的GiraffeDet family在每一级FLOPs中都比之前的检测器取得了更好的性能,这表明我们的方法可以有效、高效地检测目标。1)与基于resnet的方法在低层次FLOPs尺度上相比,我们发现,即使整体性能没有明显提高太多,我们的方法在检测小对象和大对象案例方面也有显著的性能。结果表明,该方法在大尺度变异数据集上具有较好的性能。2)与基于ResNextbased的方法相比,在高级别FLOPs尺度下,我们发现GiraffeDet的性能比在低级别FLOPs槽中更高,这表明一个好的FPN设计可能比一个沉重的骨干更重要。3)与其他方法相比,我们提出的GiraffeDet家族也具有SOTA性能,证明我们的设计在每个FLOPs级别上都达到了更高的精度和更高的效率。此外,基于nas的方法在训练过程中会消耗大量的计算资源来覆盖搜索空间,因此我们不考虑与它们进行比较。最后,使用多尺度测试协议,我们的GiraffeDet实现了54.1%的mAP,特别是APS和APL的mAP分别提高了2.8%和2.3%,远远高于APM的1.9%。
April_Mon_7788: 我出现了一个问题,就是在进行数据增强,调用flip时候报错: results[key] = self.bbox_flip(results[key], File "/media/newmy/code_env/mmrotate-main/mmrotate/datasets/pipelines/transforms.py", line 89, in bbox_flip flipped[:4] = flipped[[1, 0, 3, 2]].copy() IndexError: index 1 is out of bounds for axis 0 with size 0 请问你遇到过这个吗?不明白为什么我的图片以及被读取了,但是就是在进行数据增强时候读取的bbox是0,空的
一直都在的Alwayshere: 我的训练也是,然后我从GitHub上下载了yolov8n-seg.pt文件放到本地项目根目录下,然后这样使用: [code=python] model = YOLO("D:/ultralytics/ultralytics/cfg/models/v8/yolov8n-seg.yaml") model = model.load("D:/ultralytics/yolov8n-seg.pt") model.train(....) [/code]
懒鱼没有刺: ###36行~38行代码有逻辑错误,修改如下: [code=python] if (image1[len(image1)-2] != image1[-1]): image3.append(image1[len(image1)-1]) data.append(1) else: data[-1] += 1 [/code]
cs_c662022: 不能用pip install ultralytics安装ultralytics包
ways1999: 我也出现同样的问题,想知道怎么解决