RT-DETR模型:在实时目标检测超越YOLO(附数据集,源码链接,项目搭建指南)

RT-DETR模型:在实时目标检测超越YOLO(附数据集,源码链接,项目搭建指南) 本文覆盖论文解读代码解读以及实操细节。背景介绍RT-DETRReal-Time DEtection TRansformer是一个实时的基于Transformers的目标检测模型首先是Transformers论文Attention Is All You Need作为基础知识本文略。DETR 论文End-to-End Object Detection with Transformers见我上一篇博客。RT-DETR 论文DETRsBeat YOLOsonReal-time Object Detection。Transformers是最基础的架构DETR是将它用到了目标检测实现了真正端到端的训练和推理消除了YOLO对锚点、网格中心作为初始猜测以及NMS后处理的依赖。然而其计算成本过高限制了实际应用和无需NMS的优势。RT-DETR则是对其改进使其性能在当时超越YOLO。5分钟快速理解YOLO-CSDN博客DETR将Transformers用于目标检测的开山之作DETR_目标检测transformer开源-CSDN博客RT-DETR核心逻辑同DETR主要是网络架构不同。能理解网络 每一层的设计理念和输入输出维度变换就能理解模型。下面的维度为了方便理解我用具体数字替代。输入3*640*640解释代表一张分辨率640*640的彩色图片。通过Backbone输出低层特征S3512*80*80 中层特征S41024*40*40 高层特征S52048*20*20解释Backbone基于ResNet-50输出多尺度特征图。底层特征 空间分辨率大通道数低代表颜色纹理等浅层信息高层特征 空间分辨率小通道数高代表物体部件类别关系等高层语义信息。S5通过AIFI模块输出F5400*2048解释AIFI模块就是一个注意力机制模块不过QKV等于展平的S5400*2048用QKV计算输出F5。对S5特征层执行尺度内交互。这样设计的原因在于对语义概念更丰富的高层特征执行自注意力操作能够捕捉概念实体之间的关联从而为后续模块实现目标定位与识别提供便利。而低层特征因缺乏语义概念且其尺度内交互存在与高层特征交互重复、混淆的风险因此无需对低层特征进行尺度内交互。S3,S4,F5经过CCFF输出256*80*80解释CCFF就是 基于 CNN 的跨尺度特征融合模块。内部经过一系列操作上采样、卷积等进行特征融合详见论文。CCFF的输出展成序列形式6400*256进入 不确定性目标选择模块 后输出300*256解释这个模块对应DETR的目标查询不过这里充分利用了图像特征。输出的300可以理解为300个预测框。详见论文其中核心是将不确定性融入损失函数不确定性用于绑定定位和分类预测能力前面输出的高质量初始查询300*256进入 解码器与预测头模块 输出 (30080)(3004)解释第一个输出代表每个查询的80类概率分布coco有80类第二个输出代表每个查询的边界框坐标cx, cy, w, h。先通过6层Transformer解码器自注意力 交叉注意力每层输出维度不变300256最后分别通过分类头30080和回归头3004。源码lyuwenyu/RT-DETR: [CVPR 2024] Official RT-DETR (RTDETR paddle pytorch), Real-Time DEtection TRansformer, DETRs Beat YOLOs on Real-time Object Detection. 下载code解压后得到我们主要用rtdetr_pytorch其中rtdetr_paddle是基于百度的架构Paddle构建的。内含configs包含数据集配置文件和模型配置文件告诉你种类数训练数据放哪模型架构信息等等。内含src模型源码。内含tool提供导出模型、推理、训练相关代码。我们的项目很简单用它的预训练模型在我们特定任务的数据集上再训练一下微调。大家可以根据自己的需要丰富该项目。数据集真实值Ground Truth需要一张图片以及对应物体的框和种类信息。所以要找标注好的数据集。这里推荐网站https://universe.roboflow.com/可能需要科学上网然后免费注册就可以了。注意下载COCO Json格式因为代码里的yaml配置文件用的是Json。这里我使用的是一个检测个人防护设备的数据集。大家嫌麻烦可以从网盘下载该数据集https://www.123865.com/s/68YFvd-B7ab?pwdXXDZ#下载并解压到configs/dataset之后我们修改源码给的yaml配置文件把类型改为14remapFlase修改文件位置帮图片img和标注文件ann放入对应位置。batch_size根据内存大小适当修改num_workers使用Windows 系统则设为0。至此我们的数据集准备完毕。训练下载依赖注意版本不一致版本可能引发各种不兼容问题。如果src标红我们将rtdetr_pytorch目录标记为源代码根目录。打开train我们不需要多进程和种子直接注释掉。可以看到代码已经给了我们微调接口。接下来我们打开readme下载想要的预训练模型然后放到指定文件夹。最后我们直接在终端输入python tools/train.py -c configs/rtdetr/rtdetr_r18vd_6x_coco.yml -t pre_model/rtdetr_r18vd_dec3_6x_coco_from_paddle.pth可以看到模型就跑起来了大概需要30多个小时才能跑完。结语如果我的博客对您有帮助请点赞收藏。谢谢