文章声明:仅个人体验,非广告;
引言
- 参考文献,文章所有资源均可在该地址处获取:https://www.aspiringcode.com/content?id=17326316345929\&uid=f7b84e2105b44e85981cca0c3e4d6bb9
目标检测是一项基本的视觉任务,涉及在图像中识别和定位物体。其中,实时目标检测是一个重要的领域,并且有着广泛的应用,例如自动驾驶。
RT-DETR 的出现为实时目标检测开辟了一条新的技术途径,打破了该领域对 YOLO 的依赖。RT-DETR 提出了一种高效的混合编码器来替代 DETR 中的标准 Transformer 编码器,通过解耦多尺度特征的尺度内交互和跨尺度融合显著提高了推理速度。为进一步提升性能,RT-DETR 提出了不确定性最小化查询选择机制,通过显式优化不确定性向解码器提供高质量的初始查询。此外,RT-DETR 提供了多种检测器尺寸并支持灵活的速度调整,无需重新训练即可适应各种实时场景。RT-DETR 是一种全新的端到端实时检测器,标志着 DETR 家族的重大进步。
在本文中,我们介绍的论文是《RT-DETRv2: Improved Baseline with Bag-of-Freebies for Real-Time Detection Transformer》,这是一种改进的实时检测 Transformer。
这项工作基于最近的 RT-DETR 并在 DETR 家族内部引入了一系列灵活性和实用性的优化选项,同时优化了训练策略以实现更好的性能。具体而言,RT-DETRv2 建议在可变形注意力模块中为不同尺度的特征设置不同的采样点数,以实现解码器的选择性多尺度特征提取。在增强实用性方面,RT-DETRv2 提供了一个可选的离散采样算子来替换原始的 grid_sample 算子,后者是 DETRs 特有的,从而消除了通常与检测 Transformer 相关的部署限制。此外,RT-DETRv2 优化了训练策略,包括动态数据增强和自适应超参数定制,旨在提升性能的同时不损失速度。实验结果表明,RT-DETRv2 为 RT-DETR 提供了一个改进的基线,增加了灵活性和实用性,提出的训练策略优化了性能和训练成本。
RT-DETR模型框架
RT-DETRv2 的框架与 RT-DETR 保持一致,仅对解码器中的可变形注意力模块进行了修改。
不同尺度下不同的采样点数量
当前的 DETRs 使用可变形注意力模块来缓解由多尺度特征组成的长输入序列带来的高计算开销。RT-DETR 解码器保留了这个模块,并在每个尺度上定义了相同的采样点数量。我们认为这种约束忽略了不同尺度特征之间的固有差异,限制了可变形注意力模块的特征提取能力。因此,我们提出为不同尺度设置不同的采样点数量,以实现更灵活高效的特征提取。
离散采样
为了提高 RT-DETR 的实用性并使其在各种环境中可用,作者专注于比较 YOLOs 和 RT-DETR 的部署要求,其中 RT-DETR 专用的 grid_sample 运算符限制了其广泛应用。因此,作者提出一个可选的 discrete_sample 运算符来替换 grid_sample,从而去除 RT-DETR 的部署限制。具体来说,在预测的采样偏移量上执行四舍五入操作,省去了耗时的双线性插值。然而,四舍五入操作是非可微的,所以关闭用于预测采样偏移量的参数梯度。在实践中,首先使用 grid_sample 运算符进行训练,然后在微调阶段将其替换为 discrete_sample 运算符。对于推理和部署,模型采用 discrete_sample 运算符。
训练方案
动态数据增强
为了使模型具备强大的检测性能,提出了动态数据增强策略。考虑到检测器在早期训练期间的泛化能力较差,应用更强的数据增强,而在后期训练期间则降低其强度,使检测器适应目标域的检测。具体来说,在早期阶段保持 RT-DETR 的数据增强策略,而在最后两个epoch中关闭 RandomPhotometricDistort、RandomZoomOut、RandomIoUCrop 和 MultiScaleInput。
自适应超参数定制
由于观察到不同尺寸的缩放 RT-DETR 模型使用相同的优化器超参数进行训练,导致其性能不佳。因此,提出了针对缩放 RT-DETR 的自适应超参数定制方法。考虑到轻量级检测器预训练主干网络的特征质量较低,我们提高了其学习率。相反地,大型检测器预训练主干网络具有更高的特征质量,我们降低了其学习率。
实验
对比实验
与 RT-DETR 一样,作者使用在 ImageNet 上预训练的 ResNet 作为主干网络,并使用 AdamW 优化器以批量大小为 16 来训练 RT-DETRv2,并应用指数移动平均(EMA),其中 ema_decay = 0.9999。对于可选的离散采样,作者首先使用 grid_sample 运算符进行 6 倍预训练,然后使用 discrete_sample 运算符进行 1 倍微调。
RT-DETRv2 在 COCO 的 train2017 数据集上进行训练,并在 COCO 的 val2017 数据集上进行验证。实验结果如下图。
可以看出,RT-DETRv2 在不同规模的检测器上表现优于 RT-DETR,且速度没有损失。
消融实验
采样点的消融研究
作者对网格采样(grid_sample)操作符的总采样点数量进行了消融研究。总采样点数量计算公式为 num_head × num_point × num_query × num_decoder,其中 num_point 表示每个网格中每个尺度特征的采样点之和。实验结果如下表。
研究结果表明,减少采样点的数量并不会导致性能的显著下降。这意味着在大多数工业场景中,实际应用不太会受到影响。
离散采样的消融研究
我们移除了网格采样(grid_sample),并替换成离散采样(discrete_sample)进行消融研究。结果表明,这一操作不会导致 𝐴𝑃𝑣𝑎𝑙50APval50 的显著下降,但确实消除了 DETRs 的部署限制,详见下表。
复现
我们首先对训练过程进行复现,和RT-DETR一样,数据集仍然使用COCO。
在填写好配置文件后,运行下面的命令即可开始模型的训练。
CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --master_port=9909 --nproc_per_node=4 tools/train.py -c path/to/config --use-amp --seed=0 &> log.txt 2>&1 &
训练过程如下:
运行下面的命令执行模型的推理,其中im-file是输入模型的图像路径。
python references/deploy/rtdetrv2_torch.py -c path/to/config -r path/to/checkpoint --im-file=xxx --device=cuda:0
我们使用COCO的验证集对模型进行推理测试,结果如下。
总结
这篇文章介绍了 RT-DETRv2,即 RT-DETR 的改进版本。RT-DETRv2 在前一代实时目标检测器RT-DETR的基础上进行了增强,提供了一系列的改进措施以提高灵活性和实用性,并优化了训练策略以提升性能。
RT-DETRv2 通过在可变形注意力模块中为不同尺度的特征设置不同数量的采样点,实现了解码器的选择性多尺度特征提取。文章提出了一个可选的离散采样操作符来替代 RT-DETR 中特有的 grid_sample 操作符,从而消除了与检测变压器(DETR)相关的部署限制,还引入了动态数据增强和尺度自适应的超参数定制,以在不牺牲速度的情况下提高性能。
RT-DETRv2 通过一系列改进,为DETR家族提供了一个更加灵活和实用的基线,同时优化了训练策略,提高了性能和训练成本效益。
- 参考文献,文章所有资源均可在该地址处获取:https://www.aspiringcode.com/content?id=17326316345929\&uid=f7b84e2105b44e85981cca0c3e4d6bb9