算法论文/目标检测1——RT-DETRv2: Improved Baseline with Bag-of-Freebies for Real-Time Detection Transformer

摘要

  在本报告中,我们介绍了 RT-DETRv2,一种改进的RT-DETR。RT-DETRv2 建立在之前最先进的实时检测器 RT-DETR 的基础上,并打开了一组免费赠品袋,以实现灵活性和实用性,并优化训练策略以实现增强的性能。为了提高灵活性,我们建议在可变形关注中为不同尺度的特征设置不同数量的采样点,以实现解码器选择性的多尺度特征提取。为了提高实用性,我们提出了一个可选的离散采样算子来取代 YOLO 特定于 RT-DETR 的 grid_sample 算子。这将删除通常与 DETR 关联的部署约束。对于训练策略,我们提出了动态数据增强和缩放自适应超参数定制,以在不损失速度的情况下提高性能。源代码和预训练模型将在 https://github.com/lyuwenyu/RT-DETR 上提供。

1 引言

  对象检测是一项基本的视觉任务,涉及识别和定位图像中的对象。其中,实时目标检测是一个重要的领域,具有广泛的应用范围,例如自动驾驶(Atakishiyev et al. [2024])。随着过去几年的发展,YOLO 探测器(Redmon 和 Farhadi [2017, 2018],Bochkovskiy 等人 [2020],Glenn.[2022],Xu 等人 [2022],Li 等人 [2023],Wang 等人 [2023],Glenn.[2023],Wang et al. [2024a,b])无疑是该领域最负盛名的框架。原因是 YOLO 检测器实现了合理的平衡。RT-DETR 的出现 (Zhao et al. [2024])为实时目标检测开辟了一条新的技术途径,打破了该领域对 YOLO 的依赖。RT-DETR 提出了一种高效的混合编码器来取代 DETR 中的普通 Transformer 编码器(Carion et al. [2020]),它通过解耦多尺度特征的尺度内交互和跨尺度融合,显著提高了推理速度。为了进一步提高性能,RT-DETR 提出了 uncertainty-minimal 查询
 selection,它通过显式优化不确定性为解码器提供高质量的初始查询。此外,RT-DETR 提供了广泛的探测器尺寸,并支持灵活的速度调整,以适应各种实时场景,而无需重新训练。RT-DETR 代表了一种新颖的端到端实时检测器,标志着 DETR 系列的重大进步。

  在本报告中,我们介绍了 RT-DETRv2,一种改进的实时检测 Transformer。这项工作建立在最近的 RT-DETR 之上,并在 DETR 系列中开辟了一套关于灵活性和实用性的免费赠品,以及优化训练策略以实现增强的性能。具体来说,RT-DETRv2 建议在可变形注意力模块内为不同尺度的特征设置不同数量的采样点,以实现解码器的选择性多尺度特征提取。在增强实用性方面,RT-DETRv2 提供了一个可选的离散采样算子来取代原来的 grid_sample 算子,这是特定于 DETR 的,从而消除了通常与检测 Transformer 相关的部署限制。此外,RT-DETRv2 优化了训练策略,包括动态数据增强和尺度自适应超参数定制,目的是在不损失速度的情况下提高性能。结果表明,RT-DETRv2 为 RT-DETR 提供了改进的基线和免费赠品袋,增加了灵活性和实用性,并且所提出的训练策略优化了性能和训练成本

2 方法

  RT-DETRv2 的框架与 RT-DETR 相同,只是对解码器的可变形注意力模块进行了修改。

2.1 框架

  不同比例的采样点数量不同。当前的 DETR 利用可变形的注意力模型 (Zhu et al. [2020])来减轻由多尺度特征组成的长序列输入引起的高计算开销。RT-DETR 解码器保留了此模块,该模块在每个尺度上定义相同数量的采样点。我们认为,这种约束忽略了不同尺度下特征的内在差异,限制了可变形注意力模块的特征提取能力。因此,我们建议为不同的尺度设置不同数量的采样点,以实现更灵活、更高效的特征提取。

  离散采样。提高 RT-DETR 的实用性并使其无处不在。我们专注于比较 YOLO 和 RT-DETR 的部署要求,其中特定于 RT-DETR 的 grid_sample 运算符限制了其广泛的适用性。因此,我们提出了一个可选的 discrete_sample 运算符来代替 grid_sample,从而消除了 RT-DETR 的部署约束。具体来说,我们对预测的采样偏移量执行舍入操作,省略了耗时的双线性插值。但是,舍入操作是不可微分的,因此我们关闭了用于预测采样偏移量的参数的梯度。在实践中,我们首先使用 grid_sample 运算符进行训练,然后用 discrete_sample 运算符代替它进行 f ine-tuning。对于推理和部署,该模型使用 discrete_sample 运算符。

2.2 训练计划

  动态数据增强。为了使模型具有鲁棒的检测性能,我们提出了动态数据增强策略。考虑到检测器在训练初期的泛化性差,我们应用了更强的数据增强,而在后期训练阶段,我们降低了它的水平,以适应检测器对目标域的检测。具体来说,我们在早期保持了 RT-DETR 数据增强,同时在最后两个 epoch 中关闭了 RandomPhotometricDistort、RandomZoomOut、RandomIoUCrop 和 MultiScaleInput。

  缩放自适应超参数自定义。我们还观察到,不同大小的缩放 RT-DETR 是使用相同的优化器超参数训练的,导致它们的性能欠佳。因此,我们建议对缩放的 RT-DETR 进行缩放自适应超参数定制。考虑到光检测器的预训练主干(例如 ResNet18 (He et al. [2016]) 的特征质量较低,我们提高了它的学习率。相反,具有大型检测器的预训练骨干网(例如,ResNet101 (He et al. [2016]))具有更高的特征质量,我们降低了它的学习率。

3 实验

3.1 实现细节

  与 RT-DETR 一样,我们使用在 ImageNet 上预训练的 ResNet (He et al. [2016])作为主干,并使用 AdamW (Loshchilov and Hutter [2018])优化器训练 RT-DETRv2,批量大小为 16,并应用 ema_decay = 0.9999 的指数移动平均线 (EMA)。对于可选的离散采样,我们首先使用 grid_sample 运算符预训练 6×然后使用 discrete_sampleoperator 微调 1×。对于尺度自适应超参数定制,超参数如表 1 所示,其中 lr 表示学习率。

3.2 评估

  RT-DETRv2 在 COCO (Lin et al. [2014]) train2017 上进行了训练,并在 COCO val2017 数据集上进行了验证。我们报告了标准 AP 指标(在均匀采样的 IoU 阈值上取平均值,范围为 0.50 − 0.95,步长为 0.05)和真实场景中常用的 APval 50。

3.3 结果

  与 RT-DETR(Zhaoetal.[2024])在表 2.RT-DETRv2 中优于 RT-DETR在不损失速度的情况下实现不同尺度的检测器

3.4 消融实验

  采样点的消融。我们对 grid_sampleoperator 的采样点总数进行消融研究。采样点的总数计算为 num_head×num_point×num_query× num_decoder,其中 num_point 表示每个格网中每个比例要素的采样点总和。结果表明,减少采样点的数量并不会导致性能显著下降,参见。表3.这意味着在大多数工业场景中,实际应用不太可能受到影响

  离散采样的消融。然后我们移除grid_sample并用 discrete_sample 替换它进行消融。结果表明,该操作在 APval 50 中没有造成明显的减少,但确实消除了 DETRs 的部署约束,参见。表 4.

4 结论

  在这份报告中,我们提出了RT-DETRv2,一种改进的实时检测Transformer。RT-DETRv2 开启了一系列免费赠品,增加了 RT-DETR 的灵活性和实用性,优化了训练策略,在不损失速度的情况下实现性能增强。我们希望这份报告能为 DETR家族提供见解,并拓宽 RT-DETR 的应用范围。

### 关于 RT-DETRv2 的技术文档与项目实现 #### 技术背景 RT-DETRv2 是一种改进版的实时目标检测模型,它通过引入一系列无成本优化方法(Bag-of-Freebies),显著提升了性能和效率[^1]。该模型的核心在于结合 Transformer 架构的优势,同时针对实际应用中的推理速度进行了专门优化。 #### 实现细节 为了部署 RT-DETRv2 并确保其高效运行,可以参考以下内容: 1. **TensorRT C++ 部署** 使用 TensorRT 可以极大地加速 RT-DETRv2 的推理过程。具体操作包括构建环境、编写配置文件以及执行编译命令。以下是基本流程: ```bash # 创建并进入构建目录 cd RT-DETR mkdir build && cd build # 编译工程 cmake .. make # 执行推理程序 ./detr_trt ``` 上述脚本展示了如何从源码到最终可执行文件的过程[^2]。 2. **Ultralytics 库支持** Ultralytics 提供了一种简单易用的方式来训练和推理基于 Transformer目标检测模型。如果计划使用此库,则可以通过官方文档了解详细的 API 和功能说明。例如,定义数据集路径、调整超参数设置等均能在 ultralytics 中找到对应接口[^3]。 3. **全面测试建议** 完成部署之后,务必对整个系统展开详尽评估工作。重点关注以下几个方面: - 推理时间是否满足预期; - GPU/CPU 资源消耗情况; - 不同分辨率输入下的稳定性表现。 #### 示例代码片段 下面给出一段简单的 Python 伪代码用于加载预训练权重并完成前向传播计算任务。 ```python import torch from models import RT_DETR_v2 # 初始化网络结构实例对象 model = RT_DETR_v2() # 加载已保存好的 checkpoint 文件 checkpoint = torch.load('rt_detr_v2.pth') model.load_state_dict(checkpoint['state_dict']) # 设置为 eval 模式以便冻结 BatchNorm 层状态 model.eval() with torch.no_grad(): input_tensor = torch.randn(1, 3, 640, 640) # 假设图像尺寸固定为 (H,W)=(640,640) output = model(input_tensor) print(output.shape) # 输出预测框坐标及相关类别概率分布矩阵形状 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值