DAMO-YOLO:一种平衡速度和准确性的新目标检测框架
- 1.介绍
- 2.关键技术
- 2.1. NAS主干网络:MAE-NAS
- 2.2. Large Neck:RepGFPN
- 2.3. Small Head:ZeroHead
- 2.4. 标签分配:AlignOTA
- 2.5 模型蒸馏
- 3.性能效果展示
作者:KevinLuo
1.介绍
DAMO-YOLO是一种考虑了速度和准确性的目标检测框架,其效果超越了当前的YOLO系列方法,并在保持高推理速度的同时实现了SOTA。DAMO-YOLO在YOLO框架的基础上引入了一系列新技术,并对整个检测框架进行了重要修改。具体来说,它包括基于NAS搜索的新的检测主干结构,更深的中间结构,简化的头部结构,以及引入蒸馏技术以进一步改善效果。除了模型之外,DAMO-YOLO还提供了高效的训练策略和方便易用的部署工具,帮助您快速解决工业领域的实际问题!
2.关键技术
2.1. NAS主干网络:MAE-NAS
主干网络结构在目标检测中起着重要的作用。在早期的YOLO系列中,DarkNet一直占主导地位。近期,一些工作也开始探索其他对检测有效的网络结构,如YOLOv6和YOLOv7。然而,这些网络仍然是人工设计的。随着神经网络结构搜索技术(NAS)的发展,有许多NAS网络结构可用于检测任务,并且与传统手动设计的网络相比,NAS网络结构可以实现良好的检测结果。因此,他们使用NAS技术搜索适合作为DAMO-YOLO主干的网络结构。在这里,他们使用阿里自家研发的MAE-NAS。MAE-NAS是一种基于启发式和无需训练的NAS搜索方法,可用于快速搜索不同大小的各种主干网络结构。
MAE-NAS利用信息论评估初始化网络的熵,评估过程不需要任何训练过程,从而解决了先前NAS搜索方法需要训练和重新评估的缺点。在短时间内实现广泛的网络搜索,降低搜索成本,增加找到潜在更好网络结构的可能性。值得特别注意的是,在MAE-NAS搜索中,他们使用K1K3作为基本的搜索模块。同时,他们直接使用GPU推理延迟(Latency)作为目标预算,而不是Flops。在搜索后,他们对最终的主干网络应用了空间金字塔池化和焦点模块。下表1展示了不同主干网络的性能对比。可以看出,MAE-NAS主干网络的效果明显优于DarkNet网络结构。
MAE-NAS作为一种神经网络结构搜索方法,类似于一位探险家,在庞大的网络结构空间中寻找着最佳的主干网络结构。它使用信息论的思想,以熵的角度评估不同网络结构的初始化状态。这相当于对网络的探索程度进行度量,越高的熵意味着网络结构越不确定,有更大的潜力进行改进和优化。
通过利用熵的评估,MAE-NAS能够快速搜索出适合目标检测任务的网络结构,而无需通过繁重的训练过程。相比于传统的手动设计网络结构,这种自动搜索方法具有更高的效率和灵活性。通过使用GPU推理
2.2. Large Neck:RepGFPN
在特征金字塔网络(FPN)中,多尺度特征融合旨在聚合来自主干网络不同阶段的特征输出,从而增强输出特征的表达能力,并提高模型性能。传统的FPN引入自顶向下的路径来融合多尺度特征。考虑到单向传输的局限性,PAFPN增加了一个额外的自底向上路径聚合网络,但增加了计算成本。为了减少计算强度,YOLO系列检测网络选择了具有CSPNet的PAFPN来融合主干网络输出的多尺度特征。
ICLR2022 GiraffeDet中的工作提出了一种新颖的轻量主干网络和重型中间层结构,并取得了SOTA的性能,因为给定的中间层结构GFPN(Generalized FPN)可以充分交换高层语义信息和低层空间信息。在GFPN中,多尺度特征融合发生在前一层和当前层的不同尺度特征之间,此外,跨层连接log_2(n)提供了更高效的信息传输,可扩展到更深的网络。
RepGFPN中的大型中间层就像一个信息交流中心,它接收来自主干网络的多尺度特征,并通过不同尺度特征之间的交互来实现特征的融合。类似于一个智慧的导游,它能够将高层语义信息和低层空间信息进行充分的交流和交换。
因此,他们尝试将GFPN引入DAMO-YOLO,并与PANet进行了比较,取得了更高的准确性,这是预期的结果。然而,与此同时,GFPN也带来了模型推断延迟的增加,以至于准确性/延迟的权衡并没有获得很大的优势。通过对原始GFPN结构的分析,他们归因于以下几个方面:
- 不同尺度的特征共享相同数量的通道,这使得很难给出一个最佳的通道数量,以确保高级低分辨率特征和低级高分辨率特征具有相同的丰富表达能力;
- GFPN使用Queen-Fusion来增强特征之间的融合,而Queen-Fusion包含大量的上采样和下采样操作,以实现不同尺度特征的融合,这极大地影响了推断速度;
- GFPN中使用的3x3卷积的跨尺度特征融合的效率并不高,无法满足轻量级计算的需求,需要进一步优化。
在上述分析的基础上,他们提出了一种新的Efficient-RepGFPN,以满足实时目标检测中颈部结构的设计,主要包括以下改进:
- 针对不同尺度特征图使用不同的通道数,从而在轻量级计算的约束下灵活控制高级特征和低级特征的表达能力;
- 删除Queen-Fusion中的额外上采样操作,这在准确性降低较小的情况下大大减少了模型推断延迟;
- 将原始基于卷积的特征融合改进为CSPNet连接,并引入重参数化和ELAN连接的思想,以提高模型的准确性而不增加更多的计算量。最终的Efficient-RepGFPN网络结构如上图所示。Efficient-RepGFPN的消融实验结果如下表2所示。
从表2可以看出,灵活控制不同尺度特征图的通道数量可以实现比所有尺度特征图共享相同通道数更高的准确性,这表明灵活控制高级特征和低级特征的表达能力可以带来更多的好处。同时,通过在相同计算层级上控制模型,他们还在Efficient-RepGFPN中进行了深度/宽度的权衡比较,当深度=3,宽度=(96、192、384)时,模型达到了最高的准确性。
表3比较了Queen-Fusion连接的消融实验结果,颈部结构采用了没有添加额外上采样和下采样运算符的PANet连接。他们尝试只添加上采样运算符、只添加下采样运算符和完整的Queen-Fusion结构,并且模型的准确性有所提高。然而,仅添加上采样运算符会增加0.6毫秒的推断时间,而准确性只提高了0.3,远远低于仅添加额外下采样运算符的准确性/延迟增益,因此他们在最终的设计中放弃了额外的上采样运算符。
在表4中,他们对多尺度特征融合方法进行了实验比较,从表中可以看出,在低计算约束下,采用CSPNet的特征融合方法要比基于卷积的融合方法好得多,同时,引入重参数化思想和ELAN连接可以在增加的延迟很小的情况下带来较大的准确性改善。
2.3. Small Head:ZeroHead
在DAMO-YOLO中,他们关注目标检测头部(ZeroHead)。目前,在目标检测方法中,常用的是使用Decouple Head作为检测头部。Decouple Head可以实现更高的平均精度(AP),但它会在一定程度上增加模型的计算时间。为了平衡模型的速度和性能,他们在下表5中进行了实验,以选择合适的颈部和头部特重。
从表2、3、4中可以看出,“大颈部,小头部”的结构会获得更好的性能。因此,他们舍弃了以前方法中常用的“Decouple Head”,仅保留了一个线性投影层用于分类和回归任务,他们称之为ZeroHead。ZeroHead将检测头部中的计算量最大化,为更复杂的颈部(如RepGFPN颈部)提供更多空间。值得注意的是,ZeroHead本质上可以被视为Couple Head,这也是与以前方法采样的Decouple Head的一个显著区别。
2.4. 标签分配:AlignOTA
标签分配(label assignment)是目标检测中的关键组成部分,以前的静态分配方法通常只考虑了anchor和ground truth的IoU,这种分配方法容易导致分类任务失焦,如图3左侧的图示,手部检测框使用玩偶熊上的点进行预测,这对于模型来说是不合理的,理想的标签如图3右侧的图示所示。此外,这种方法依赖于anchor priors,在工业应用中,待检测的对象尺度各异,找到一个最合适的anchor prior非常麻烦。
为了克服上述问题,学术界出现了一些使用模型的分类和回归预测值的标签分配方法,这些方法消除了标签分配对锚点的依赖,并在分配过程中同时考虑了分类和回归的影响,从一定程度上消除了失焦的问题。OTA是其中的经典工作之一,它根据模型的分类和回归预测值计算分配损失,并使用Sinkhorn-Knopp算法求解全局最优分配,在复杂的分配场景中表现出色。因此,他们在这里将OTA用作加速simOTA的分配策略。然而,simOTA本身存在一定的问题,在计算分布时不能保证考虑到分类和回归对分布的平衡影响,也就是分类回归损失不匹配的问题。为了解决这个问题,他们修改了分配分数的计算方式,如下所示:
为了在标签分配中平衡分类和回归损失,他们将Focal Loss引入到标签分配的分类损失中,并用IoU替代了分类的One-hot标签,从而放宽了对分类的限制。表4对改进后的AlignOTA和simOTA进行了比较,可以看出AlignOTA在性能方面有显著的提升。
2.5 模型蒸馏
模型蒸馏是提高模型效果的有效手段。YOLOv6尝试通过在其大型模型中使用自蒸馏技术来改进模型。但总体而言,在YOLO系列的当前工作中,蒸馏的应用并不常见,尤其是在小型模型上的蒸馏。他们对DAMO-YOLO进行了特殊研究,并最终将蒸馏技术应用于DAMO-YOLO的各种尺度模型,以改进效果。
DAMO-YOLO的训练过程分为两个阶段,第一阶段是基于强烈的马赛克增强进行训练,第二阶段是带有封闭式马赛克增强的训练。他们发现,在第一阶段使用蒸馏技术可以实现更快的收敛并取得更高的结果;然而,在第二阶段继续使用蒸馏并不能进一步增强效果。他们认为,第二阶段的数据分布与第一阶段相比存在较大偏差,并且第二阶段的知识蒸馏在一定程度上会破坏在第一阶段学习到的知识分布。第二阶段的训练时间过短,导致模型无法完全从第一阶段的知识分布过渡到第二阶段的知识分布。然而,如果强行延长训练周期或增加学习率,一方面会增加训练成本和时间,另一方面会削弱第一阶段蒸馏的效果。因此,在这里他们关闭了第二阶段的蒸馏操作,仅进行第一阶段的蒸馏。
其次,他们在蒸馏中引入了两种技术,一种是对齐模块,用于对齐教师和学生的特征图大小。另一种是归一化操作,用于减弱教师和学生之间数值尺度波动的影响,可以看作是KL损失的动态温度系数。
此外,他们还发现蒸馏的损失权重和头部尺寸对蒸馏效果也有很大影响。如上图4所示,当蒸馏损失权重增大时,分类损失的收敛速度变慢且波动较大。他们知道分类损失对检测任务有很大影响,其较晚的收敛会导致模型优化不充分,进而影响最终的检测效果。因此,与以往的蒸馏经验不同,在DAMO-YOLO中,他们使用较小的蒸馏权重来控制蒸馏损失,减弱蒸馏损失和分类损失之间的冲突。
同时,他们在检测头的结构中使用了ZeroHead。ZeroHead只包含一个用于任务投影的线性层。因此,它相当于同时优化蒸馏损失和分类损失在相同的特征空间中,所学习的空间能够满足蒸馏和分类的优化需求,并进一步提高分类损失和蒸馏损失优化的一致性。
3.性能效果展示
DAMO-YOLO团队在MSCOCO验证集上验证了DAMO-YOLO的性能。可以看出,结合以上改进,DAMO-YOLO在严格的延迟限制下取得了显著的精度提升,创造了新的SOTA(State-of-the-Art,最先进技术)。