【代码复现】RT-DETR2(pytorch版)环境部署及训练

简介:RT-DETR是第一个实时端到端目标检测器,RT-DETR2 是基于 Transformer 的端到端检测器的 实时目标检测模型 (Real-Time Detection Transformer) ,目标是进一步提升目标检测的性能和效率,尤其是在实时目标检测场景下,相较于原始版本进行了性能和架构优化,其设计理念是以 高效性实时性 为核心,结合 Transformer 模型的全局特征提取能力,为目标检测任务提供了兼具高性能和高速度的解决方案。

本教程配置:Windows10,CUDA11.8,python 3.8

1.代码拉取

代码链接:lyuwenyu/RT-DETR: [CVPR 2024] Official RT-DETR (RTDETR paddle pytorch), Real-Time DEtection TRansformer, DETRs Beat YOLOs on Real-time Object Detection. 🔥 🔥 🔥

git clone https://github.com/lyuwenyu/RT-DETR.git

2.虚拟环境

conda create -n rtv2 python=3.8 -y
conda activate rtv2 

3.安装依赖

cd rtdetrv2_pytorch
pip install six
pip install opencv-python
pip install torch==2.1.0+cu118 torchvision==0.16.0+cu118 torchaudio==2.1.0+cu118 -f https://download.pytorch.org/whl/cu118/torch_stable.html
pip install -r requirements.txt
pip install scipy

检查CUDA是否可用的命令(可不执行)

import torch
print("Is CUDA available:", torch.cuda.is_available())  # 应返回 True
print("CUDA version:", torch.version.cuda)  # 查看 CUDA 版本
print("Device count:", torch.cuda.device_count())  # 查看可用 GPU 数量

4.制作数据集

1)coco数据集格式

位置:rtdetrv2_pytorch > configs > dataset

修改:yolo的label(txt)转coco的annotations(json)代码为yoyo2coco.py【网上随便都能搜到】

2)配置yaml

位置:rtdetrv2_pytorch > configs > dataset > coco_detection.yml

修改:(1)num_classes;(2)train_dataloader的img_folder和ann_file;(3)val_dataloader的img_folder和ann_file;

img_folder: ./configs/dataset/coco/train/
ann_file: ./configs/dataset/coco/annotations/instances_train.json

5.训练

 1)修改train.py

位置:rtdetrv2_pytorch > tools > train.py

修改:第45行添加:default='./configs/rtdetrv2/rtdetrv2_r50vd_6x_coco.yml'

2)修改训练参数

位置:rtdetrv2_pytorch > configs > rtdetrv2 > include > dataloader.yml

修改:epoch

3)训练运行

位置:RT-DETR-main > rtdetrv2_pytorch > python tools/train.py

python tools/train.py

### Group DETR v2 模型介绍 Group DETR 是一种改进的目标检测模型,基于 DETR (Detection Transformer),旨在解决原始 DETR 中存在的收敛速度慢等问题。在 Group DETR 中,object queries 被分成了多个不同的组别,在训练过程中这些组别会分别接受监督学习,而在推理阶段则仅使用其中一组 object queries 进行预测[^3]。 这种设计不仅提高了模型的效率,还增强了其灵活性和鲁棒性。相比于其他变种如 MS-DETR 和 Hybrid DETR, 它们采用了不同的策略来优化目标查询的质量;而 Group DETR 则专注于如何更有效地利用有限数量的对象查询来进行高质量的目标定位与分类任务。 ### 实现细节 为了实现上述功能,Group DETR 对标准 DETR 架构做了特定调整: 1. **Object Queries 分组**: 将所有的 object queries 平均分配给若干个独立的工作组。 2. **多头机制下的并行处理**: 使用多头自注意机制允许各工作组内的对象查询可以被并行计算。 3. **单一解码器输出路径的选择**: 在测试期间,选择性能最佳的一组作为最终的结果输出源。 ```python import torch.nn as nn from transformers import DetrConfig, DetrForObjectDetection class GroupDetr(nn.Module): def __init__(self, config: DetrConfig, num_groups=8): super().__init__() self.num_groups = num_groups # 初始化 DETR 配置和其他组件... def forward(self, pixel_values=None, ...): outputs = [] for i in range(self.num_groups): group_output = self.detr_model(pixel_values=pixel_values, ...) outputs.append(group_output.logits) return torch.stack(outputs).mean(dim=0) model = GroupDetr(DetrConfig()) ``` 此代码片段展示了简化本的 `GroupDetr` 类定义及其部分核心逻辑。实际应用中还需要考虑更多因素,比如损失函数的设计以及评估指标的选择等。 ### 教程资源链接 对于希望深入了解或动手实践的人来说,官方文档和社区贡献者提供了丰富的资料供参考: - [Hugging Face Transformers 文档](https://huggingface.co/transformers/model_doc/detr.html): 提供了关于 DETR 及其衍生本的基础理论和技术说明。 - GitHub 上开源项目页面:通常包含了详细的安装指南、配置选项解释及案例研究等内容。 ### 论文推荐阅读 建议查阅原作者发表于学术期刊上的文章以获取最权威的第一手资讯。以下是几篇重要的参考资料之一: - "End-to-end Object Detection with Transformers" by Nicolas Carion et al., ECCV 2020.
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值