DAMO-YOLO : A Report on Real-Time Object Detection Design

news2024/7/6 20:00:57

DAMO-YOLO:实时目标检测设计报告

在本报告中,我们提出了一种被称为DAMO-YOLO的快速准确的物体检测方法,该方法比最先进的YOLO系列具有更高的性能。DAMO-YOLO是由YOLO扩展而来的,它采用了一些新技术,包括神经结构搜索(NAS)、高效的重参数化泛化FPN (RepGFPN)、具有AlignedOTA标签分配的轻量级头部和蒸馏增强。特别地,我们使用最大熵原理指导的MAE-NAS方法在低延迟和高性能的约束下搜索我们的检测骨干,生成具有空间金字塔池和焦点模块的ResNetlike / CSP-like结构。在颈部和头部的设计上,我们遵循“大颈部,小头部”的原则。引入加速后融合的广义FPN构建探测器颈,并采用高效层聚合网络(ELAN)和重新参数化对CSPNet进行升级。然后我们研究了探测器头部大小如何影响检测性能,发现只有一个任务投影层的重颈部会产生更好的结果。此外,还提出了AlignedOTA来解决标签分配中的不对齐问题。并引入了一个蒸馏模式,以将性能提高到更高的水平。基于这些新技术,我们构建了一套不同规模的模型,以满足不同场景的需求,即DAMO-YOLO-Tiny/Small/Medium。在T4 GPU上分别实现43.0/46.8/50.0 map,时延为2.78/3.83/5.62 ms。该代码可在https://github.com/tinyvision/damo-yolo上获得。

1.介绍

近年来,研究人员在目标检测方法方面取得了巨大进展[1,9,11,22,23,26,32]。当业界追求具有实时约束的高性能目标检测方法时,研究人员专注于设计具有高效网络架构[4,15,16,28,29]和高级训练阶段的单级检测器[1,21 - 23,25]。特别是YOLOv5/6/7[17,31,33]、YOLOX[9]和PP-YOLOE[37]在COCO上实现了显著的AP-Latency折衷,使得YOLO系列对象检测方法在业界得到广泛应用。虽然目标检测已经取得了很大的进步,但仍有新的技术可以引入,以进一步提高性能。首先,网络结构在目标检测中起着关键作用。Darknet在YOLO历史的早期阶段占据主导地位[1,9,23 - 25,31]。最近,一些工作研究了其他有效的检测器网络,即YOLOv6[17]和YOLOv7[33]。然而,这些网络仍然是手工设计的。由于神经结构搜索(Neural Architecture Search, NAS)的发展,通过NAS技术发现了许多检测友好的网络结构[4,15,29],这些网络结构比以前手工设计的网络显示出了巨大的优势。因此,我们利用NAS技术,为我们的DAMO-YOLO导入了MAE-NAS[29]。MAE-NAS是一种启发式的、不需要训练的、不依赖超网络的神经结构搜索方法,可用于不同规模的主干数据归档。它可以通过空间金字塔池化和聚焦模块生成类ResNet /类CSP结构。其次,检测器学习足够的高层次语义特征和低层次空间特征之间的融合信息至关重要,这使得检测器颈部成为整个框架的重要组成部分。颈部的重要性在其他著作中也有讨论[10,16,30,35]。特征金字塔网络(FPN)[10]被证明是融合多尺度特征的有效方法。广义FPN (GFPN)[16]采用一种新的queen-fusion算法改进了FPN。在DAMO-YOLO中,我们设计了一个重参数化泛化fpn (RepGFPN)。它基于GFPN,但涉及加速queen-fusion,高效层聚合网络(ELAN)和重新参数化。

为了在延迟和性能之间取得平衡,我们进行了一系列实验来验证探测器的颈部和头部的重要性,发现“大颈部,小头部”会带来更好的性能。因此,在之前的YOLO系列作品中,我们放弃了检测器头[1,9,23 - 25,31,37],只留下了一个任务投影层。保存的计算被移动到颈部部分。除了任务投影模块,头部中没有其他训练层,因此我们将检测器头部命名为ZeroHead。加上我们的RepGFPN, ZeroHead实现了最先进的性能,我们相信这将为其他研究人员带来一些见解。

此外,动态标签分配,如OTA[8]、TOOD[7]等,得到了广泛的好评,与静态标签分配[41]相比,有了明显的改进。然而,在这些工作中,错位问题仍然没有得到解决。我们提出了一个更好的解决方案AlignOTA来平衡分类和回归的重要性,可以部分解决这个问题。

最后,通过对大模型的监督,证明了知识蒸馏(KD)对小模型的提升是有效的。这项技术非常适合实时目标检测的设计。然而,在YOLO系列上应用KD有时并不能取得显著的改善,因为超参数难以优化,特征带有太多的噪声。在我们的DAMO-YOLO中,我们首先在各种尺寸的模型上再次实现蒸馏,特别是在小型模型上。

如图1所示,经过上述改进,我们提出的一系列模型大大超越了目前的技术水平,如DAMO-YOLO-S模型达到46.8 mAP,性能优于YOLOv6-S 43.4 mAP和YOLOE-S 43.1 mAP,时延接近这些模型。

总之,贡献有三方面:

1. 本文提出了一种新的探测器DAMOYOLO,它在YOLO的基础上进行了扩展,并引入了更多的新技术,包括MAE-NAS主干、RepGFPN颈部、ZeroHead、aleigndota和蒸馏增强等。

2. DAMO-YOLO在公共COCO数据集上优于最先进的检测器(例如YOLO系列)。

3.DAMO-YOLO(微型/小型/中型)中提供了一套不同规模的模型,以支持不同的部署。代码和预训练模型在https://github.com/tinyvision/damoyolo上发布,支持ONNX和TensorRT。

2. DAMO-YOLO

在本节中,我们详细介绍了DAMOYOLO的各个模块,包括神经结构搜索(NAS)主干,高效的Reparameterized GeneralizedFPN (RepGFPN)颈部,ZeroHead, aliigndota标签分配和蒸馏增强。DAMO-YOLO的整体框架如图2所示。

2.1. MAE-NASBackbone

我们使用MAE-NAS[29]代替缩放技术,在不同的计算预算下获得最优网络。MAE-NAS基于信息论构造了一种替代代理,对初始化的网络进行不需要训练的排序。因此,搜索过程只需要几个小时,这比培训成本低得多。

在之前的工作[29]之后,我们在原始卷积网络空间中设计了一个新的搜索块“k1kx”,这类似于Darknet-53[25]中使用的块。同时,受YOLOv6[17]的启发,我们直接使用GPU推断延迟,而不是FLOPs作为目标预算。经过搜索,我们将空间金字塔池化(Spatial Pyramid Pooling, SPP)[12]、Focus[31]和CrossStage Partial (CSP)[34]模块应用于最终的主干。

表1列出了不同尺度下CSP-Darknet和我们的MAE-NAS骨干的性能比较,这表明了MAE-NAS骨干的有效性。在该表中,“MAEResNet”表示MAE-NAS骨干中只有SPP和Focus模块,“MAE-CSP”表示其中也有CSP模块。“S”(Small)和“M”(Medium)代表不同规模的backbone。考虑到性能和推理速度之间的权衡,我们在“T”(Tiny)和“S”尺度中使用“MAE-ResNet”,在“M”尺度中使用“MAE-CSP”,如表8所示。

图2.DAMO-YOLO网络架构概述。1) MAE-NAS为骨干,提取多尺度特征图;2)高效RepGFPN作为颈部,细化和融合高层次语义和低层次空间特征;3)提出了ZeroHead算法,每次损失只包含一个任务投影层。

2.2. EfficientRepGFPN

特征金字塔网络的目的是从骨干网中提取不同分辨率的特征进行聚合,这已被证明是目标检测的关键和有效部分[10,30,35]。传统FPN[10]引入了自顶向下的路径来融合多尺度特征。考虑到单向信息流的限制,PAFPN[35]增加了一个额外的自底向上路径聚合网络,但计算成本较高。BiFPN[30]删除只有一条输入边的节点,并在同一级别上从原始输入中添加skiplink。[16]中提出了广义GFPN (Generalized-FPN, GFPN)作为颈部,实现了SOTA性能,可以充分交换高层语义信息和低层空间信息。在GFPN中,多尺度特征融合在前一层和当前层的层次特征中。更重要的是,log2(n)跳层连接提供了更有效的信息传输,可以扩展到更深的网络。当我们在现代yolo系列模型上直接用GFPN替换修改后的PANet时,我们获得了更高的精度。然而,基于GFPN的模型的延迟比基于改进PANet的模型要高得多。通过对GFPN结构的分析,原因可以归结为以下几个方面:1)不同尺度的特征图具有相同的通道维度;2) queen-fusion的运行不能满足实时检测模型的要求; 3)基于卷积的跨尺度特征融合效率不高。

基于GFPN,我们提出了一种新型的Efficient-RepGFPN来满足实时目标检测的设计,主要包括以下几点:1)由于不同尺度特征图的FLOPs差异较大,在计算成本有限的约束下,很难控制每个比例尺特征图共享的通道的相同维度。因此,在我们颈部的特征融合中,我们采用了不同尺度的特征图的设置,不同维度的通道。比较了相同和不同通道的性能,以及颈部深度和宽度权衡带来的精度效益,表2显示了结果。我们可以看到,通过灵活地控制不同尺度的信道数量,我们可以获得比在所有尺度上共享相同信道更高的精度。当深度等于3,宽度等于(96,192,384)时,获得最佳性能。2) GFPN通过queen-fusion增强了特征交互,但也带来了大量额外的上采样和下采样算子。表3比较了上采样和下采样算子的效果。我们可以看到,额外的上采样算子导致延迟增加0.6ms,而精度的提高仅为0.3mAP,远远小于额外的下采样算子带来的好处。因此,在实时检测的约束下,我们去掉了queen-fusion中额外的上采样操作。3)在特征融合块中,我们首先用CSPNet代替原来的基于3x3-卷积的特征融合,得到4.2 mAP增益。随后,我们通过重参数化机制和高效层聚合网络(ELAN)[33]的连接对CSPNet进行了升级。在不带来额外计算负担的情况下,实现了更高的精度。对比结果如表4所示。

表2.颈部深度和宽度的消融研究。“深度”为融合块瓶颈处的重复次数。“宽度”表示特征图的通道尺寸。

表3.消融后融合连接的研究。1和2分别表示上采样和下采样操作。

表4.特征融合方式的消融研究。CSP表示跨阶段部分连接。Reparam[5,6]表示在CSP瓶颈上应用重参数机制。ELAN表示高效层聚合网络的连接。

2.3. ZeroHeadand AlignOTA

在近年来的目标检测进展中,解耦头被广泛应用[9,17,37]。使用解耦的头部,这些模型可以获得更高的AP,同时延迟显著增加。为了平衡延迟和性能,我们进行了一系列实验来平衡颈部和头部的重要性,结果如表5所示。从实验中我们发现,“大颈部,小头部”会带来更好的表现。因此,在之前的工作中,我们放弃了解耦的头部[9,17,37],只留下了一个任务投影层,即一个线性层用于分类,一个线性层用于回归。我们将我们的头命名为ZeroHead,因为在我们的头中没有其他的训练层。ZeroHead可以最大程度地节省RepGFPN颈部的计算量。值得注意的是,ZeroHead本质上可以被认为是一个耦合头,这与其他论文[9,17,31,37]中的解耦头有很大区别。对于head后损失中,在GFocal[19]之后,我们使用质量焦点损失(Quality Focal loss, QFL)进行分类监督,使用分布焦点损失(Distribution Focal loss, DFL)和GIOU损失进行回归监督。QFL鼓励学习分类和本地化质量的联合表示。DFL通过将边界框的位置建模为一般分布,提供了更丰富和精确的边界盒估计。提出的DAMO-YOLO的训练损失公式为:

Loss = α lossQFL + β lossDFL + γ lossGIOU

在检测器训练过程中,除了head和loss外,标签分配也是一个重要的组成部分,它负责将分类和回归目标分配给预定义的锚点。近年来,OTA[8]、TOOD[7]等动态标签分配方法得到了广泛的好评,与静态[41]相比,动态标签分配得到了显著的改进。动态标签分配方法是根据预测值与真实值之间的分配代价来分配标签,例如OTA [8]。虽然loss中分类与回归的对齐被广泛研究[7,19],但目前的研究很少提及标签分配中分类与回归的对齐。在静态赋值方法中,分类与回归的错位是一个常见的问题。动态分配虽然缓解了这一问题,但由于分类和回归损失的不平衡,如CrossEntropy和IoU Loss[39],这一问题仍然存在。为了解决这一问题,我们在分类成本中引入焦点损失[21],并使用预测框和真实边界框的IoU作为软标签,其公式如下:

有了这个公式,我们能够为每个目标选择分类和回归对齐的样本。除了对齐分配成本外,在OTA[8]之后,我们从全局角度形成了对齐分配成本的解。我们将标签赋值命名为AlignOTA。标签分配方法比较如表6所示。我们可以看到AlignOTA优于所有其他标签分配方法。

表5所示.RepGFPN与ZeroHead平衡的研究。

表6所示.在MSCOCO val数据集上的比较。

2.4.Distillation Enhancement

知识蒸馏(KD)[13]是进一步提高tiny模型性能的有效方法。然而,在YOLO系列上应用KD有时并不能取得显著的改善,因为超参数难以优化,特征带有太多的噪声。在DAMO-YOLO,我们首先让蒸馏在所有尺寸的模型上再次变好,特别是在小尺寸的模型上。我们采用基于特征的蒸馏转移暗知识,在中间特征图[14]中同时提取识别和定位信息。我们进行了快速验证实验,为我们的DAMO-YOLO选择合适的蒸馏方法。结果如表7所示。我们得出的结论是,CWD更适合我们的模型,而MGD比Mimicking更差,因为复杂的超参数使它不够一般。

我们提出的蒸馏策略分为两个阶段:1)我们的teacher在第一阶段(284个epoch)的强马赛克域上蒸馏student。面对具有挑战性的增强数据分布,student可以在teacher的指导下顺利地进一步提取信息。2) student在第二阶段(16个阶段)在无马赛克域上微调自己。我们在这个阶段不采用蒸馏的原因是,在这么短的时间内,teacher的经验会损害student的表现,当他想把student拉到一个陌生的领域(即没有马赛克的领域)。长期蒸馏可以减轻损害,但代价昂贵。所以我们选择了取舍,让student独立。在DAMO-YOLO中,蒸馏装置配备了两个先进的增强功能:1)对齐模块。一方面,它是一个线性投影层,使student特征适应于相同的分辨率(C,H,W)是teacher的。另一方面,与自适应模仿[36]相比,强迫student近似teacher特征直接导致较小的收益。2)通道动态温度。受PKD[2]的启发,我们对师生特征进行了归一化处理,弱化了实数差异带来的影响。减去平均值后,各通道的标准差即为KL损失中的温度系数。

此外,我们提出了两个关键的观察,以更好地利用蒸馏。其一是在蒸馏和任务损失之间取得平衡。如图3所示,当我们更多地关注蒸馏(weight=10)时,student中的分类损失收敛缓慢,导致负效应。因此,为了在蒸馏和分类之间取得平衡,必须采用较小的loss weight2(weight =0.5)。另一种是检测器的浅头。我们发现适当减小头部深度有利于颈部特征蒸馏。原因是,当最终输出和蒸馏的特征图之间的差距更接近时,蒸馏可以对决策产生更好的影响。

表7所示.MSCOCO数据集上DAMO-YOLO精馏方法的研究。学生的基线为38.2。当蒸馏损失量为0.5时,分类损失收敛速度快,精度高

图3.蒸馏过程的分级损失和AP曲线。蒸馏损失重量分别设置为0.5、2和10。当蒸馏损失量为0.5时,分类损失收敛速度快,精度高

3.实现细节

我们的模型用SGD优化器训练了300个epoch。权重衰减和SGD动量分别为5e-4和0.9。初始学习率为0.4,批大小为256,学习率按照余弦计划衰减。遵循yolo系列[9,17,31,33]模型,采用指数移动平均(EMA)和分组权重衰减。为了增强数据的多样性,Mosaic[1,31]和Mixup[40]增强是一种常用的做法。然而,最近的进展[3,42]表明,适当设计的box级增强在目标检测中至关重要。受此启发,我们将Mosaic和Mixup应用于图像级增强,并在图像级增强后使用SADA[3]的box级增强来实现更鲁棒的增强。

4. 与SOTA的比较

表8列出了与SOTAs的最终性能比较。为了更全面地看,我们列出了有蒸馏和没有蒸馏的结果。结果表明,我们的DAMOYOLO系列在精度和速度上都优于所有YOLO系列,这表明我们的方法能够有效、高效地检测目标。

表8所示.与MSCOCO测试开发中最先进的单模型检测器的比较。*表示采用蒸馏。延迟是我们自己在T4 GPU上测试的,其他结果来自于相应的论文。在FP16中报告了基于TensorRT引擎的FPS。

5.结论

本文提出了一种新的目标检测方法DAMO-YOLO,该方法的性能优于YOLO系列中的其他方法。它的优势来自于新技术,包括MAE-NAS骨干,高效RepGFPN颈部,ZeroHead,AlignedOTA标签分配和蒸馏增强。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/189468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode——1669. 合并两个链表

一、题目 给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果: 请你返回结果链表的头指针。 来…

【Qt】3.菜单栏、工具栏、状态栏、铆接部件、核心部件、资源文件

目录 菜单栏 工具栏 代码 mainwindow.cpp 结果 状态栏 铆接部件 核心部件 代码 mainwindow.cpp 结果 资源文件 代码 mainwindow.cpp 结果 菜单栏 只能有一个 menuBar()返回一个QMenuBar *bar 将bar放入到窗口中setMenuBar(bar) 添加菜单addMenu("文件&…

三年了,回村了

今年回老家了,因为工作和疫情等原因已经三年多没回了,思乡之情已经压不住了。 老家是一个五线小城市,属于南方典型的鱼米之乡:依山傍水、山清水秀。同时还有一个知名白酒厂:白云边,经济发展还不错。 老家…

从“语义网”到“去中心化”,Web3.0到底是个啥?

什么是Web3.0,为什么近两年这个概念又再一次火出了圈,但凡A股上市公司正在做或者准备做的业务与它沾上边,总会有那么几次异动。 这个概念到底是金融市场布下的骗局,还是未来互联网发展的趋势,在大家的眼里都是褒贬不一…

Redis 核心原理串讲(下),架构演进之高扩展

文章目录Redis 核心原理总览(全局篇)前言一、数据分片1、集群?2、分片?3、分片固定?4、元数据二、集群1、代理集群2、分片集群3、代理 分片集群三、生产实践总结Redis 核心原理总览(全局篇) 正…

新的一年,如何打开超级APP发展格局

本文开始我们先来明确一个概念:超级APP是什么?百度百科的定义是——那些拥有庞大的用户数,成为用户手机上的"装机必备”的基础应用。实际上各大互联网平台也给出了不同的解释,但相同点是他们都认为超级APP就应该超级个性化&a…

简单手写后门Safedog检测绕过

今天继续给大家介绍渗透测试相关知识,本文主要内容是简单手写后门Safedog检测绕过。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁…

最长上升子序列、最长公共子序列、最长公共上升子序列(LIS、LCS、LCIS)

LIS、LCS、LCIS最长上升子序列LIS最长公共子序列LCS最长公共上升子序列LCIS最长上升子序列LIS 题目链接:AcWing895. 最长上升子序列 这里只说明O(n2)O(n^2)O(n2)的解法,O(nlogn)O(nlogn)O(nlogn)解法之前的博客有介绍 O(n2)O(n^2)O(n2)的解法较为容易理…

MMCV - browse_dataset.py 可视化config文件数据预处理部分

无论是mmdetection、mmtracking、mmdetection3D等框架,在\tools\analysis_tools中均有一个名为browse_dataset.py的文件。该文件能够帮助用户直接可视化 config 文件中的数据处理部分,查看标注文件是否正确,同时可以选择保存可视化图片到指定…

百度学习经验

如何应对干扰1.将吸引你注意力的东西放在一旁,离开你的视野范围2.告诉大家你有空的时间,和你要专注的时间范围3.跟别人咨询的时候也是一样,不要在他专注的时候大扰别人关于如何做事,控制精力就是按照重要程度排序,不重…

《最佳停止时间》:什么时候可以停止寻找?

分享一个有趣的数学编程知识 《最佳停止时间》:什么时候可以停止寻找? 日常生活有很多"寻找-决策过程",如果考察所有选项,要花费很长时间,可能还会错失机会,后面遇到的未必有前面的好。能否确定一…

实力见证 | Authing 荣获 2022 中国数字化转型与创新评选之“年度安全创新产品”

近日,由数字产业创新研究中心、锦囊专家、首席数字官联合全国 20 多家 CIO 组织机构、行业协会共同发起的 《2022 中国数字化转型与创新评选》 获奖榜单新鲜出炉,Authing 成功入选该榜单,荣获“年度安全创新产品”。 该榜单自 2022 年 5 月启…

【设计模式】行为型模式·策略模式

学习汇总入口【23种设计模式】学习汇总(数万字讲解体系思维导图) 一.概述 该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。 策略模式属于对象行为模式,它通过对算法进行封…

英语学习 作文 1

1 议论文和应用文 1、议论文:essay 1 观点选择:option、choice 2 现象解释:why、what 3 问题解决:how to、solution、measure **4 图片图表:image、cartoon、diagram、chart**2、应用文:信件、通知、报道…

设计模式——创建型模式

目录 4.创建型模式 4.1 单例设计模式 4.1.1 单例模式的结构 4.1.2 单例模式的实现 4.1.3 存在的问题 4.1.4 JDK源码解析-Runtime类 4.2 工厂模式 4.2.1 概述 4.2.2 简单工厂模式 4.2.3 工厂方法模式 4.2.4 抽象工厂模式 4.2.5 模式扩展 4.2.6 JDK源码解析-Collecti…

2023年山东最新建筑施工信号工(建筑特种作业)考试真题题库及答案

百分百题库提供特种工(信号工)考试试题、特种工(信号工)考试预测题、特种工(信号工)考试真题、特种工(信号工)证考试题库等,提供在线做题刷题,在线模拟考试,助…

C++98以及C++11产生随机数的方法

目录引言1、C98标准实现随机数2、C11新标准随机数引擎引言 在C11出现之前,C98使用随机数采用的是C标准库的写法。而在C11出现后,我们生成随机数可以采用更为现代化的方式。 1、C98标准实现随机数 以往生成随机数使用的是cstdlib.h库中的rand()函数&…

基于Node.js的3DTiles三维倾斜摄影模型爬虫

随着小型无人机的普及,乡村级的倾斜摄影模型构建已经越来越简单。一个无人机和一名飞手2个小时内就可以完成。在做WebGIS和Cesium开发时,3DTiles是一种常用的倾斜摄影三维模型的切片格式。3DTiles格式通常有散列和紧凑两种文件组织形式,其中不同工具生成的散列数据使用的索引…

【GNN报告】GNN-LOGS部分报告汇总

Bastain Rieck: Topology-Based Graph Representation Learning 基础 拓扑学习 基于拓扑学习的工作 参考 Bastain Rieck: Topology-Based Graph Representation Learning_哔哩哔哩_bilibili Chaitanya K. Joshi Graph Neural Networks for Geometric Graphs 背景 方法 Geom…

Kenney Assets - 提供数以万计免费商用的游戏制作素材下载,包括 2d、3d素材,游戏音效和游戏 UI

来自荷兰的游戏公司开放了自家游戏的素材包,制作很精美,下载后无需取得授权就能直接商用。 关于 Kenney Assets Kenney Assets 是游戏公司 Kenney 为游戏开发者提供的游戏素材资源网站,主要包括游戏 2D / 3D 人物和场景素材,游戏…