DETRs Beat YOLOs on Real-time Object Detection论文详解

2023-11-12

论文题目:DETRs Beat YOLOs on Real-time Object Detection

论文地址:https://arxiv.org/abs/2304.08069

论文代码:mirrors / facebookresearch / ConvNeXt · GitCode

等我毕业再打败吧,别打败YOLO,广大研究生们不同意

1. 摘要

        最近,基于端到端Transformer的检测器(DETRs)已经取得了显著的性能。然而,DETRs的高计算成本问题尚未得到有效解决,限制了它们的实际应用,并阻止它们充分利用无后处理的优点,例如非最大值抑制(NMS)。本文首先分析了现代实时目标检测器中NMS对推理速度的影响,并建立了一个端到端速度基准。为避免NMS引起的推理延迟,我们提出了Real-Time DEtection TRansformer(RT-DETR),这是我们所知道的第一个实时端到端物体检测器。具体来说,我们设计了一个高效的混合编码器,通过解耦内部尺度交互和跨尺度融合来高效处理多尺度特征,并提出了IoU感知的查询选择来改善物体查询的初始化。此外,我们提出的检测器支持通过使用不同的解码器层来灵活调整推理速度,无需重新训练,这有助于实时目标检测器的实际应用。我们的RT-DETR-L在COCO val2017上达到了53.0%的AP和在T4 GPU上达到了114 FPS,RT-DETR-X达到了54.8%的AP和74 FPS,在速度和准确性方面都优于相同规模的所有YOLO检测器。此外,我们的RT-DETR-R50在准确性方面比DINO-Deformable-DETR-R50提高了2.2%的AP,在FPS方面约高出21倍。

2. 主要贡献

本文的主要贡献总结如下:

(1) 我们提出了第一个实时端到端目标检测器,不仅在准确性和速度方面优于当前最先进的实时检测器,而且不需要后处理,因此它的推理速度不会延迟并保持稳定

(2) 我们详细分析了NMS对实时检测器的影响,并从后处理的角度得出了关于基于CNN的实时检测器的结论

(3) 我们提出的IoU感知的查询选择在我们的模型中显示出优秀的性能改进,为改进目标查询的初始化方案提供了新思路

(4) 我们的工作为端到端检测器的实时实现提供了可行的解决方案,所提出的检测器可以通过使用不同的解码器层灵活调整模型大小和推理速度,无需重新训练

3. 相关工作

3.1 实时目标检测器
       经过多年的持续发展,YOLO系列已经成为实时目标检测器的代名词,可以大致分为两类:基于锚点的和无锚点的。从这些检测器的性能来看,锚点不再是限制YOLO发展的主要因素。然而,上述检测器产生了大量冗余的边界框,需要在后处理阶段利用NMS进行过滤。不幸的是,这导致了性能瓶颈,而NMS的超参数对检测器的准确性和速度有重要影响。我们认为这与实时目标检测器的设计理念不相容。

3.2 端对端目标检测器
       端到端目标检测器以其简化的流程而闻名。DETR消除了传统检测流程中手动设计的锚点和NMS组件。相反,它采用二分图匹配并直接预测一对一的对象集。通过采用这种策略,DETR简化了检测流程并减轻了NMS导致的性能瓶颈。尽管DETR具有明显的优点,但它存在两个主要问题:训练收敛速度慢和难以优化的查询。许多DETR变体已被提出来解决这些问题。具体而言,Deformable-DETR 通过增强注意机制的效率来加速多尺度特征的训练收敛。Conditional DETR 和Anchor DETR 降低了查询的优化难度。DAB-DETR 引入了4D参考点,并逐层迭代地优化预测框。DN-DETR 通过引入查询去噪来加速训练收敛。DINO 在以前的工作基础上进行了改进,并实现了最先进的结果。尽管我们不断改进DETR的组件,但我们的目标不仅是进一步提高模型的性能,而且是创建一个实时的端到端目标检测器。

3.3 目标检测的多尺度特征
       现代目标检测器已经证明了利用多尺度特征来提高性能的重要性,特别是对于小物体。FPN 引入了一个特征金字塔网络,它融合了相邻尺度的特征。随后的工作扩展和增强了这个结构,并被广泛应用于实时目标检测器中。虽然可变形注意机制在一定程度上缓解了计算成本,但多尺度特征的融合仍会导致高计算负担。为了解决这个问题,一些工作尝试设计计算效率高的DETR。Efficient DETR 通过使用密集先验来初始化对象查询,从而减少编码器和解码器层数。Sparse DETR 有选择性地更新编码器标记,以减少解码器的计算开销。Lite DETR 通过交错方式降低低层特征的更新频率,增强了编码器的效率。尽管这些研究已经降低了DETR的计算成本,但这些工作的目标并不是将DETR推广为实时检测器。

4. 实时的DETR

4.1 模型概述
       所提出的RT-DETR由一个骨干网络、一个混合编码器和一个带有辅助预测头的变换器解码器组成。模型架构的概述如图所示。

具体来说:

(1) 首先,利用Backbone的S3,S4,S5最后3个阶段的输出特征作为编码器的输入;

(2) 然后,混合编码器通过尺度内交互和跨尺度融合将多尺度特征转换为一系列图像特征(如第4.2节所述);

(3) 随后,采用IoU-Aware查询选择从编码器输出序列中选择固定数量的图像特征,作为解码器的初始目标查询;

(4) 最后,具有辅助预测头的解码器迭代地优化对象查询以生成框和置信度得分。

4.2 高效混合编码器
       (1)计算瓶颈分析。为了加速训练收敛和提高性能,朱等人[43]建议引入多尺度特征,并提出了可变形注意机制来减少计算量。然而,尽管注意机制的改进减少了计算开销,但输入序列长度的急剧增加仍使编码器成为计算瓶颈,阻碍了DETR的实时实现。如[17]中所报告的那样,编码器占Deformable-DETR[43]的49%的GFLOPs,但只贡献了11%的AP。为了克服这个障碍,我们分析了多尺度变换器编码器中存在的计算冗余,并设计了一组变体来证明内部尺度和跨尺度特征的同时交互在计算上效率低下。

        从包含关于图像中的对象的丰富语义信息的低级特征中提取高级特征。直观地说,对连接的多尺度特征进行特征交互是多余的。如图5所示,为了验证这一观点,作者重新思考编码器结构,并设计了一系列具有不同编码器的变体。

       该组变体通过将多尺度特征交互解耦为尺度内交互和跨尺度融合的两步操作,逐步提高模型精度,同时显著降低计算成本。首先删除了DINO-R50中的多尺度变换编码器作为基线A。接下来,插入不同形式的编码器,以产生基于基线A的一系列变体,具体如下:

• A → B: 变体B插入了一个单尺度变换器编码器,该编码器使用一个变换器块层。每个尺度的特征共享编码器进行内部尺度特征交互,然后将输出的多尺度特征进行级联。
• B → C: 变体C在B的基础上引入了跨尺度特征融合,将级联的多尺度特征馈送到编码器中进行特征交互。
• C → D: 变体D解耦了多尺度特征的内部尺度交互和跨尺度融合。首先,使用单尺度变换器编码器进行内部尺度交互,然后使用类似于PANet的结构进行跨尺度融合。

• D → E: 变体E在D的基础上进一步优化了多尺度特征的内部尺度交互和跨尺度融合,采用我们设计的高效混合编码器。

       (2) Hybrid design

       基于上述分析,作者重新思考了编码器的结构,并提出了一种新的高效混合编码器。如图3所示,所提出的编码器由两个模块组成,即基于注意力的尺度内特征交互(AIFI)模块和基于神经网络的跨尺度特征融合模块(CCFM)。AIFI进一步减少了基于变体D的计算冗余,变体D仅在S5上执行尺度内交互。作者认为,将自注意力操作应用于具有更丰富语义概念的高级特征可以捕捉图像中概念实体之间的联系,这有助于后续模块对图像中目标的检测和识别。同时,由于缺乏语义概念以及与高级特征的交互存在重复和混淆的风险,较低级别特征的尺度内交互是不必要的。为了验证这一观点,只对变体D中的S5进行了尺度内相互作用,实验结果见表3,见DS5行。与变体D相比,DS5显著降低了延迟(快35%),但提高了准确性(AP高0.4%)。这一结论对实时检测器的设计至关重要。

        CCFM也基于变体D进行了优化,在融合路径中插入了几个由卷积层组成的融合块。融合块的作用是将相邻的特征融合成一个新的特征,其结构如图4所示。融合块包含N个RepBlock,两个路径输出通过元素相加进行融合。
 

可以将这个过程表述如下:

Q= K = V = Flatten (S_{5}^{})

F_{5} = Reshape (Attn (Q,K,V) )

Output = CCFM ( {S_{3}S_{4}F_{5}} )

其中Attn表示多头自注意力,Reshape表示将特征的形状恢复到与S5相同的形状,这是Faltten的inverse操作。

4.3 IoU感知查询选择

       DETR中的对象查询是一组可学习的嵌入向量,它们由decoder优化,并由预测头映射到分类分数和边界框。DINO的对象查询是利用分类分数从encoder中选择前K个特征来初始化对象查询。然而,由于分类得分和位置置信度的分布不一致,一些预测框具有高分类得分,但不接近GT框,这导致选择了分类得分高、IoU得分低的框,而分类得分低、IoU分数高的框被丢弃。这会削弱检测器的性能。为了解决这个问题,本文提出了IoU感知查询选择,通过约束模型在训练期间为具有高IoU分数的特征产生高分类分数,并为具有低IoU得分的特征产生低分类分数。因此,与由根据分类得分的模型选择的前K个编码器特征相对应的预测框具有高分类得分和高IoU得分。本文将DETR的二分匹配重新表述如下:

{L}(\hat{y},y)​ =L{box} (\hat{b},b) + L{cls}(\hat{c},c,IoU)

        通过IoU感知查询选择,在COCO MAP有了显著提升。其中,\hat{y} 和 y 分别表示预测和真实值,c和b分别表示类别和边界框。我们将IoU分数引入到分类分支的目标函数中,以实现对正样本的分类和定位的一致性约束。

       具体来说,首先根据分类得分选择前K个(在实验中K=300)编码器特征,然后可视化分类得分大于0.5的散点图。红点和蓝点是根据分别应用普通查询选择和IoU感知查询选择训练的模型计算的。点越靠近图的右上角,对应特征的质量就越高,即分类标签和边界框更有可能描述图像中的真实对象。根据可视化结果发现最引人注目的特征是大量蓝色点集中在图的右上角,而红色点集中在右下角。这表明,使用IoU感知查询选择训练的模型可以产生更多高质量的编码器特征。

        此外,还定量分析了这两类点的分布特征。图中蓝色点比红色点多138%,即分类得分小于或等于0.5的红色点更多,这可以被视为低质量特征。然后,分析分类得分大于0.5的特征的IoU得分,发现IoU得分大于0.5时,蓝色点比红色点多120%。定量结果进一步表明,IoU感知查询选择可以为对象查询提供更多具有准确分类(高分类分数)和精确定位(高IoU分数)的编码器特征,从而提高检测器的准确性。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DETRs Beat YOLOs on Real-time Object Detection论文详解 的相关文章

随机推荐

  • 淘宝x-sign算法demo示例

    用xposed hook这个方法就可以拿到对应的签名 需要可以留言 public String getMtopApiSign HashMap
  • 图文并茂:推荐算法架构——粗排

    导语 粗排是介于召回和精排之间的一个模块 是典型的精度与性能之间trade off的产物 理解粗排各技术细节 一定要时刻把精度和性能放在心中 本篇将深入重排这个模块进行阐述 一 总体架构 粗排是介于召回和精排之间的一个模块 它从召回获取上万
  • bilibili粉丝显示器

    代码地址 https github com hungtcs lab bilibili follower viewer ArduinoJSON https arduinojson org esp8266 oled ssd1306 https
  • Spirng @Conditional 条件注解的使用

    1 简介 Conditional 是 Spring 4 0 提出的一个新的注解 当标注的对象满足所有的条件时 才能注册为 Spring 中的 bean Conditional 源码中的定义如下 Target ElementType TYPE
  • C# Datagridview 标题完全居中

    DataGridView标题完全居中 标题文字居中 this dataGridView1 ColumnHeadersDefaultCellStyle Alignment DataGridViewContentAlignment Middle
  • Java 语言 TreeMap

    Java中的TreeMap是一种基于红黑树实现的排序映射表 它可以存储键值对 其中键和值都可以是任意类型的对象 TreeMap提供了快速的插入 删除和查找操作 具有高效的性能 并且可以根据键进行排序 因此在Java编程中非常常见 本文将介绍
  • 博士申请

    合适的工作难找 最新的招聘信息也不知道 AI 求职为大家精选人工智能领域最新鲜的招聘信息 助你先人一步投递 快人一步入职 南洋理工大学 南洋理工大学 Nanyang Technological University 是新加坡的一所世界著名研
  • 解决 Python 库安装提示:ModuleNotFoundError: No module named ‘windows‘. 问题解决方法

    在安装pyMouse PyKeyboard的时候报错我们可以尝试以下代码 应该有用 pip install PyUserInput
  • unity对象池系统

    当游戏场景中出现大量的可重复利用的物体时 通过Destory来销毁再创建会触发不必要的GC回收机制 浪费性能 我们可以利用unity自带的对象池系统 从而节约性能来得到同样的效果 为了使用这个对象池系统 我写了一个瞬间产生多枚子弹的测试脚本
  • 权限认证。。

    链接 手摸手 带你用vue撸后台 系列二 登录权限篇 掘金 juejin cn 前端权限控制 一 前端权限管理及动态路由配置方案 ONEO阿喔哟的博客 CSDN博客 检查员工是否具有特权 param requestTokenBO 请求令牌B
  • 如何快速算出一个数有多少个因子(c++)

    如何快速算出一个数有多少个 多少种 因子 c int count int n int sum 1 for int i 2 i i lt n i if n i 0 int tmp 0 while n i 0 n i tmp sum sum t
  • Piecewise混沌映射/PWLCM混沌映射(含MATLAB代码)

    一 Piecewise混沌映射 PWLCM混沌映射 混沌映射是生成混沌序列的一种方法 常见的混沌映射方式有 Logistic映射 Tent映射 Circle映射 而 Piecewise映射作为混沌映射的典型代表 数学形式简单 具有遍历性和随
  • python文件操作(with open)——读取行、写操作

    一 基础语法 1 打开文件 这里只介绍一种常用方式 但是打开文件方式有很多种 掌握一种最适合自己的即可 推荐使用这种方式 因为不需要close 具体原因往下看 看到示例就懂了 打开文件的模式有很多种 r 读 w 写等 此处不做详细介绍 采用
  • sublime text3取消自动换行!

    菜单栏中取消view gt word wrap的勾选也可以取消其代码的自动换行 菜单栏选择preferences gt Setting User中添加 word wrap false 即可
  • 膜拜(离散化差分模板题)

    题目描述 小鱼有 n 名优秀的粉丝 粉丝们得知小鱼将会在一条直线上出现 打算去膜他 为了方便 粉丝们在这条直线上建立数轴 第 i 名粉丝有一个侦查区间 li ri 如果小鱼在 j li j ri 处出现 这名粉丝将立刻发现并膜他 小鱼希望膜
  • python 3 中文URL编码转换问题

    链接里面含中文 转成URL编码 先引入模块 from urllib request import quote gt gt gt ff 摄像头 gt gt gt ff quote ff gt gt gt ff E6 91 84 E5 83 8
  • sql 还原数据库 错误3154

    在SQL Server2005及以下版本做数据库备份还原时 需要首先建立数据库 然后才能进行数据库还原操作 而在SQL Server2005以上版本做数据库还原时 不需要建立数据库 可以直接进行数据库还原操作 否则执行数据库还原操作时会报3
  • 求阶乘之和(循环版)(利用阶乘函数)

    请编写函数 用循环方法求阶乘之和 SumFac n 0 1 2 3 n include
  • uniapp uview 登录页

  • DETRs Beat YOLOs on Real-time Object Detection论文详解

    论文题目 DETRs Beat YOLOs on Real time Object Detection 论文地址 https arxiv org abs 2304 08069 论文代码 mirrors facebookresearch Co