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标签分配和蒸馏增强。