DAMO-YOLO | 超越所有YOLO,5行代码即可体验

作者 | Random  编辑 | 3D视觉开发者社区

DAMO-YOLO 是阿里新推出来的目标检测框架,兼顾模型速度与精度,其效果超越了目前的一众 YOLO 系列方法,且推理速度更快。DAMO-YOLO 还提供高效的训练策略和便捷易用的部署工具,能帮助开发者快速解决工业落地中的实际问题。

DAMO-YOLO | 超越所有YOLO,5行代码即可体验_第1张图片

https://github.com/tinyvision/damo-yolo (上图源自官网)

本文提出了一种快速而精确的目标检测方案DAMO-YOLO,它取得了比其他YOLO系列方案更优的性能。DAMO-YOLO在YOLO的基础上引入了一些新技术:

  • NAS搜索高效骨干:采用MAE-NAS在低延迟高性能约束下进行骨干网络搜索,得到了带有SPP与Focus模块的类ResNet/CSP架构;

  • RepGFPN+轻量头:在这方面,延续了"Large Neck, Small Head"理念,引入了GFPN、ELAN以及重参数进行优化升级;

  • AlignedOTA:它用于解决标签分类过程中的恶不对齐问题;

  • 蒸馏增强:用于进一步提升检测器的性能。

DAMO-YOLO | 超越所有YOLO,5行代码即可体验_第2张图片

基于上述新技术,作者构建了不同尺寸的模型以满足不同场景需求:DAMO-YOLO-Tiny/Small/Medium。在T4 GPU上,它们分别取得了43.06/46.8/50.0的mAP指标,同时推理速度分别为2.78/3.83/5.62。该方案与其他YOLO方案(YOLOv5, YOLOv6, YOLOv7, YOLOX, PP-YOLOE)的性能对比可参考上图。

本文方案

DAMO-YOLO | 超越所有YOLO,5行代码即可体验_第3张图片

上图为DAMO-YOLO整体架构示意图,它由MAE-NAS搜索骨干、GiraffeNeck样式的Neck、GFL样式的ZeroHead以及AlignedOTA标签分配策略构成,此外还采用了蒸馏技术进一步提升模型性能。

MAE-NAS骨干

在骨干网络方面,作者采用MAE-NAS技术在不同计算负载约束下进行搜索。作者采用新的搜索模块k1kx(类似DarkNet53所采用的模块)构建搜索空间,直接采用延迟作为评估准则。在搜索完成后,作者对所得模型添加了SPP、Focus以及CSP等模块

DAMO-YOLO | 超越所有YOLO,5行代码即可体验_第4张图片

上表给出了CSP-DarkNet与所提方案搜索得到的模型性能对比,上述指标验证了MAE-NAS骨干的有效性。注:MAE-ResNet表示仅引入了SPP与Focus,MAE-CSP意味着还引入了CSP模块。考虑到性能与速度均衡问题,Tiny与Small版方案骨干采用的是MAE-ResNet,Medium版方案骨干采用的是MAE-CSP

Efficient RepGFPN

FPN旨在与骨干网路输出的多分辨率特征进行信息聚合,它是目标检测非常重要且有效的部件。传统的FPN引入了一个top-down路径融合多尺度特征;PAFPN则在FPN基础上引入了额外的bottom-up路径进行信息聚合;BiFPN则移除了仅有一个输入边的节点,并在同级节点之间添加了跳过连接。GiraffeDet所提GFPN提供了另一种对高层与底层信息高效交互的方案。关于GiraffeDet的介绍可参考:小目标到大目标一网打尽!阿里提出首个轻骨干重Neck的轻量级目标检测器GiraffeDet。

直接采用GFPN对YOLO系列方案中的PAFPN进行替换后可以取得更高的性能,但其延迟也变得更高。通过分析,主要原因可以归因到以下几个维度:

  • 不同尺度的特征具有相同的维度;

  • queen融合操作无法满足实时检测模型的需求;

  • 基于卷积的跨尺度融合不够高效。

基于GFPN,作者提出了Efficient-RepGFPN,改进方向包含以下几点:

  • 由于不同尺度特征FLOPs的大差异,很难在有效计算复杂度下控制不同特征图具有相同的维度。因此,作者对不同尺度特征设置不同的维度。相关结果可参考下表,通过更细粒度的控制通道数可以取得更高的精度

DAMO-YOLO | 超越所有YOLO,5行代码即可体验_第5张图片

  • GFPN通过queen进行特征交互,但同时引入了额外的上采样与下采样操作。从下图表示3可以看到:额外上采样操作会导致0.75ms推理延迟,而性能提升仅为0.3mAP。话说,这里的箭头是"左灯右行"吗???因此,作者移除了queen融合过程中的上采样操作。

DAMO-YOLO | 超越所有YOLO,5行代码即可体验_第6张图片

  • 在特征融合模块中,作者首先采用CSPNet替换原始的 3x3 卷积,取得了4.2mAP指标提升;进一步引入重参数机制与ELAN。在不会导致额外巨大计算负担前提下,模型性能大幅提升(可参考上图表4)。

ZeroHead与AlignOTA

"解耦头"已在近来优异检测方案中得到广泛应用,尽管这些方案具有更高AP,但延迟也大幅提升。为平衡延迟与性能,作者进行了一系列实验以评估Neck与Head的重要性,结果见下表。可以看到:"Large Neck + Small Head"可以取得更优性能

DAMO-YOLO | 超越所有YOLO,5行代码即可体验_第7张图片

有鉴于此,作者丢弃了"解耦头"方案,反而仅保留一个任务投影层,即一个线性层进行分类,一个线性层进行回归。由于该检测头并无其他可训练层,故作者将所得检测头称之为ZeroHead。

在后续的损失中,参考GFocal,作者采用QFL进行分类监督,采用DFL与GIOU进行回归监督。DAMO-YOLO的损失函数定义如下:

\text { Loss }=\alpha l o s s_{Q F L}+\beta l o s s_{D F L}+\gamma \text { loss }_{G I O U}

除了Head与Loss外,标签分类也是检测器训练过程中一个非常重要的成分。相比静态方案,动态标签分配可以根据预测与GT之间的分配损失进行标签分类,其中代表方案有OTA与TOOD。尽管分类与回归不对齐问题已得到广泛研究,但标签分配中的不对齐却鲜少被提到。为解决该问题,作者定义了如下方案:

\text { AssignCost }=C_{r e g}+C_{c l s}

I o U=I o U\left(\text { reg }_{g t}, \text { reg }_{\text {pred }}\right)

C_{r e q}=-I o U

C_{c l s}=\left|I o U-c l s_{\text {pred }}\right| \times C E\left(c l s_{\text {pred }}, I o U\right)

DAMO-YOLO | 超越所有YOLO,5行代码即可体验_第8张图片

Distillation Enhancement

知识蒸馏是一种有效的涨点方案,但在YOLO系列方案中有时难以取得显著改善(超参难以优化,特征包含太多噪声)。在DAMO-YOLO中,作者首次让蒸馏在所有尺寸模型上再次伟大

DAMO-YOLO | 超越所有YOLO,5行代码即可体验_第9张图片

上表对比了不同蒸馏方案的性能对比,很明显CWD与所提模型更切合。作者采用的蒸馏包含两个阶段:

  • strong mosaic域,采用老师模型对学生模型进行蒸馏(约284epoch);

  • no mosaic域,学生模型进行微调(约16epoch)。

本文实验

DAMO-YOLO | 超越所有YOLO,5行代码即可体验_第10张图片

上表给出了不同YOLO方案的性能对比(加*表示使用了蒸馏技术),可以看到:在精度/速度方面,DAMO-YOLO超越了其他所有 YOLO系列方案

快速体验

大家可以5行代码完成体验DAMO-YOLO(当然,你需要先安装modelscope)。

from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
object_detect = pipeline(Tasks.image_object_detection,model='damo/cv_tinynas_object-detection_damoyolo')
img_path ='https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/image_detection.jpg'
result = object_detect(img_path)

DAMO-YOLO | 超越所有YOLO,5行代码即可体验_第11张图片

版权声明:本文为奥比中光3D视觉开发者社区特约作者授权原创发布,未经授权不得转载,本文仅做学术分享,版权归原作者所有,若涉及侵权内容请联系删文。

3D视觉开发者社区是由奥比中光给所有开发者打造的分享与交流平台,旨在将3D视觉技术开放给开发者。平台为开发者提供3D视觉领域免费课程、奥比中光独家资源与专业技术支持。

加入【3D视觉开发者社区】学习行业前沿知识,赋能开发者技能提升!
加入【3D视觉AI开放平台】体验AI算法能力,助力开发者视觉算法落地!

你可能感兴趣的:(计算机视觉,人工智能,YOLO)