RTDETRv2 pytorch训练

RTDETRv2 pytorch训练

1. 代码获取

从github上下载官方源码官方源码,将其中的redetrv2_pytorch单独移动到桌面上

python 复制代码
git clone https://github.com/lyuwenyu/RT-DETR.git

2. 数据集制作

使用github仓库中的 yolo2coco_1.py将YOLO标签转化为COCO数据集格式,然后将其转化为如下的存储顺序,最终移动到redetrv2_pytorch中

python 复制代码
dataset
	└── coco
		├── train2017  
		├── val2017 
		├── test2017 
    	└── annotations
    		├── instance_train2017.json
    		├── instance_val2017.json
    		└── instance_test2017.json

3. 环境配置

windows 11 GPU4090

模型训练环境为YOLOv9,然后需要单独安装faster-coco-eval库

python 复制代码
pip install faster-coco-eval

或者直接

python 复制代码
pip install -r requirements.txt

4. 代码修改

1)configs/dataset/coco_detection.yml
python 复制代码
num_classes: 2  # 原始 80  以二标签数据集为例(flame、smoke)

# 如果按照上面的数据集制作数据集格式,则不需要修改内容,以个人数据集为例
img_folder: ./dataset/coco/train2017/
ann_file: ./dataset/coco/annotations/instances_train2017.json
2) configs/src/data/coco_dataset.py

mscoco_category2name修改为自己的标签内容

python 复制代码
# 注意,0、1需要根据自己转化的COCO数据集确定的 由于使用的是yolo2coco_1.py,生成的category_id是从0开始的,所以使用下面的这个
mscoco_category2name = {
    0: 'flame',
    1: 'smoke'
}
# 按照80标签的COCO数据集是从1开始的
mscoco_category2name = {
    1: 'flame',
    2: 'smoke'
}
3)configs/src/core/yaml_utils.py

如果在训练的时候出现读取yaml文件,字体格式的报错,可将代码修改为如下。如果没有出现,可直接跳过本步骤。

python 复制代码
# 添加encoding='utf-8'
with open(file_path, encoding='utf-8') as f:
    file_cfg = yaml.load(f, Loader=yaml.Loader)
    if file_cfg is None:
        return {}
4)configs/rtdeterv2/include/optimizer.yml

如果需要修改epoch,可以修改如下代码

python 复制代码
epoches: 300

此时,对应的configs/rtdeterv2/include/dataloader.yml需要进行如下修改

python 复制代码
train_dataloader: 
  dataset: 
    transforms:
      ops:
        - {type: RandomPhotometricDistort, p: 0.5}
        - {type: RandomZoomOut, fill: 0}
        - {type: RandomIoUCrop, p: 0.8}
        - {type: SanitizeBoundingBoxes, min_size: 1}
        - {type: RandomHorizontalFlip}
        - {type: Resize, size: [640, 640], }
        - {type: SanitizeBoundingBoxes, min_size: 1}
        - {type: ConvertPILImage, dtype: 'float32', scale: True}   
        - {type: ConvertBoxes, fmt: 'cxcywh', normalize: True}
      policy:
        name: stop_epoch
        epoch: 299 # epoch in [71, ~) stop `ops`  原始为71
        ops: ['RandomPhotometricDistort', 'RandomZoomOut', 'RandomIoUCrop']
  
  collate_fn:
    type: BatchImageCollateFuncion
    scales: [480, 512, 544, 576, 608, 640, 640, 640, 672, 704, 736, 768, 800]
    stop_epoch: 299 # epoch in [71, ~) stop `multiscales` 原始为71

5. 代码训练、验证、以及模型参数和FLOPs

1) training
python 复制代码
python tools/train.py -c ./configs/rtdetrv2/rtdetrv2_r50vd_m_7x_coco.yml --use-amp --seed=0
2) tuning
python 复制代码
python tools/train.py -c path/to/config -t path/to/checkpoint --use-amp --seed=0
3)验证
python 复制代码
python tools/train.py -c path/to/config -r path/to/checkpoint --test-only
4) 查看模型参数
python 复制代码
python tools/run_profile.py -c path/to/config
相关推荐
森之鸟2 分钟前
多智能体系统开发入门:用鸿蒙实现设备间的AI协同决策
人工智能·harmonyos·m
铁蛋AI编程实战9 分钟前
大模型本地轻量化微调+端侧部署实战(免高端GPU/16G PC可运行)
人工智能·架构·开源
铁蛋AI编程实战9 分钟前
最新版 Kimi K2.5 完整使用教程:从入门到实战(开源部署+API接入+多模态核心功能)
人工智能·开源
开源技术12 分钟前
如何将本地LLM模型与Ollama和Python集成
开发语言·python
weixin_4370446412 分钟前
Netbox批量添加设备——堆叠设备
linux·网络·python
我有医保我先冲14 分钟前
AI 时代 “任务完成“ 与 “专业能力“ 的区分:理论基础、行业影响与个人发展策略
人工智能·python·机器学习
林深现海14 分钟前
【刘二大人】PyTorch深度学习实践笔记 —— 第一集:深度学习全景概述(超详细版)
pytorch·笔记·深度学习
Bamtone202521 分钟前
PCB切片分析新方案:Bamtone MS90集成AI的智能测量解决方案
人工智能
Warren2Lynch23 分钟前
2026年专业软件工程与企业架构的智能化演进
人工智能·架构·软件工程
_waylau32 分钟前
【HarmonyOS NEXT+AI】问答08:仓颉编程语言是中文编程语言吗?
人工智能·华为·harmonyos·鸿蒙·仓颉编程语言·鸿蒙生态·鸿蒙6