当前位置: 首页 > news >正文

RT-DETRv2训练自定义数据集的排坑全记录

RT-DETRv2训练自定义数据集的排坑全记录

最近在使用lyuwenyu/RT-DETR的PyTorch版本训练自定义缺陷检测数据集,从启动报错到成功训练,踩了不少典型的“新手坑”,这里把完整的排坑过程和解决方案整理出来,帮大家一次性避坑!


一、环境与项目准备

1.1 项目准备

我用的是Windows系统,Anaconda创建的Python 3.8环境,PyTorch 2.0+,CUDA 11.8,项目结构如下:

RT-DETR-V2/ ├── tools/train.py # 训练入口脚本 ├── configs/rtdetrv2/ # 模型配置文件 ├── src/ # 核心源码 └── datasets/ # 自定义数据集

数据集是COCO格式,包含train.jsonval.json和图片文件,标注的类别是NP两类。

1.2 选择yml文件

选择训练时传入的yml文件,我是用这个,不用改

长这样

1.3 修改coco_detection.yml文件

修改coco_detection.yml文件,修改输入数据集路径、num_classes和remap_mscoco_category,我的是2个类别,yolo格式的类别ID是0、1,而coco是从1开始为,变为1、2,这里num_classes则填3下文的坑3就是填为2,报错了

1.4 修改训练的epoches

修改dataloader.yml和optiminzer.yml中的epoches,2个文件的epoches需要保持一致

1.5 开始运行

命令为: python tools/train.py -c configs/rtdetrv2/rtdetrv2_r50vd_6x_coco.yml

二、排坑全过程(按报错顺序)

坑1:FileNotFoundError: No such file or directory配置文件找不到

报错截图:


报错信息:

FileNotFoundError: [Errno 2] No such file or directory: 'configs/rtdetrv2/rtdetrv2_r50vd_6x_coco.yml'

问题分析:
启动命令是在tools目录下运行的:

python tools/train.py-cconfigs/rtdetrv2/rtdetrv2_r50vd_6x_coco.yml

此时工作目录是tools/,相对路径configs/会被解析为tools/configs/,但配置文件实际在项目根目录的configs/下,路径不匹配导致文件找不到。

解决方案:

  1. 方法1:切换工作目录到项目根目录
    cdD:\work\git\Object-Detection\RT-DETR-V2 python tools/train.py-cconfigs/rtdetrv2/rtdetrv2_r50vd_6x_coco.yml
  2. 方法2:使用绝对路径
    python tools/train.py-cD:\work\git\Object-Detection\RT-DETR-V2\configs\rtdetrv2\rtdetrv2_r50vd_6x_coco.yml

坑2:UnicodeDecodeError: 'gbk' codec can't decode byte 0xafJSON文件编码错误

报错截图:

报错信息:

UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 364: illegal multibyte sequence

问题分析:
我的图像文件有中文字符,Windows系统默认编码是GBK,而你的COCO标注JSON文件是UTF-8编码,文件中包含了GBK无法识别的字符(比如特殊标点、中文注释),导致json.load()读取失败。

解决方案:
修改src/data/dataset/coco_dataset.py中读取JSON文件的代码,指定encoding='utf-8'

# 原代码(报错)self.coco=COCO(ann_file)# 修改后withopen(ann_file,'r',encoding='utf-8')asf:self.coco=COCO(json.load(f))

或者直接用VS Code打开train.json,点击右下角的编码格式,选择UTF-8保存,强制转换编码。


坑3:CUDA error: device-side assert triggered类别ID越界

报错截图:


报错信息:

C:\actions-runner\_work\pytorch\pytorch\pytorch\aten\src\ATen\native\cuda\IndexKernel.cu:93: Assertion `index out of bounds` failed. RuntimeError: CUDA error: device-side assert triggered

问题分析:
这是DETR系列模型最经典的“类别ID越界”错误,根源是:

  1. 你的标注文件中,categoriesid是从1开始的(N:1P:2
  2. 配置文件中num_classes: 2,模型预留的类别索引是01
  3. 当模型读取到category_id=2的标注时,会尝试访问数组的第3个位置(索引从0开始),直接越界触发CUDA断言错误。

    解决方案:
    有两种方案,推荐方案1,不用修改标注文件:
  4. 方案1:修改配置文件num_classes
    rtdetrv2_r50vd_6x_coco.yml中的num_classes改成3,这样模型就支持0,1,2三个索引,完美匹配你的标注ID。
    # 原配置num_classes:2# 修改后num_classes:3
  5. 方案2:修改标注文件,把类别ID改成从0开始
    "categories":[{"id":0,"name":"N"},{"id":1,"name":"P"}]
    同时把所有annotations中的category_id:1改成0category_id:2改成1,保持num_classes:2不变。

最终成功训练的日志截图


解决完以上三个坑后,模型终于正常启动训练,loss也在稳定下降:

Epoch: [0] [0/48] eta: 0:11:06 lr: 0.000000 loss: 40.9994 (40.9994) Epoch: [0] [47/48] eta: 0:00:01 lr: 0.000000 loss: 40.2926 (40.7860)

三、避坑总结与经验

  1. 路径问题优先排查:Windows下运行脚本时,一定要注意工作目录和相对路径的匹配,优先切换到项目根目录运行。
  2. 编码问题别忽视:JSON文件在Windows下很容易出现编码错误,读取时务必指定encoding='utf-8'
  3. 类别ID是重中之重:DETR模型对类别ID非常敏感,必须保证标注的category_id不超过num_classes-1,要么修改配置,要么重映射ID。
  4. 调试CUDA报错的技巧:在train.py最顶部加上os.environ["CUDA_LAUNCH_BLOCKING"] = "1",可以强制同步CUDA操作,让报错直接定位到CPU代码行,更容易排查问题。
http://www.jsqmd.com/news/859686/

相关文章:

  • 拒绝中间商赚差价!找接触角测量仪源头厂家,直奔广东北斗精密仪器有限公司 - 品牌推荐大师
  • 仅限首批50家申请者:ElevenLabs潮州话语音定制音色内测通道开放(含潮汕非遗传承人声纹授权协议模板)
  • 金融求职面试复盘资源哪家好:专业复盘实用指南分享 - 技研备忘录
  • 2026年深圳GEO优化公司靠谱推荐:口碑领先服务商选型对比 - 奔跑123
  • Windhawk终极指南:5分钟掌握Windows系统个性化定制
  • Midjourney范戴克印相避坑清单(11个致命错误):第9条导致90%用户输出褪色假象——附权威博物馆级比对图谱
  • 如何快速掌握uesave:Unreal引擎存档编辑的完整指南
  • 2026年企业礼品定制厂家最新推荐榜选择:江苏俭礼礼品有限公司 - 品牌推广大师
  • 2026企业网盘怎么选?十大产品深度测评:从合规到协作一次讲清
  • Ricon组态系统vs传统组态软件:为什么选择新一代Web组态平台
  • 【Flink学习】(五)Flink 并行度与任务链,任务运行核心原理
  • 2027精神病学主治医师考试听谁的课?过考考生口碑榜出炉 - 医考机构品牌测评专家
  • 如何用Python快速接入Taotoken平台调用多款大模型
  • 显卡驱动清理终极指南:如何彻底解决游戏卡顿和系统蓝屏问题?
  • 土方车远程监控智慧运维系统方案
  • 2026年十大品牌消泡剂厂家推荐指南:懂工艺、重安全的厂家 - 奔跑123
  • 开源数据库 TimescaleDB 2.27.1 发布:性能改进与多项错误修复,官方建议尽快升级
  • 泰州黄金回收实测:3个真实变现案例,哪家正规靠谱、价格透明? - 恒顺黄金回收
  • 老合兴洋服:贵阳西服定制的匠心之选,穿出绅士的体面与尊严 - 贵州服装测评君
  • 昆山奢侈品回收行业综合实力排名TOP6,2026年5月权威测评榜单 - 天天生活分享日志
  • 3个核心功能:用HSTracker将炉石传说数据转化为你的制胜优势
  • 【MATLAB源码-第442期】基于MATLAB的OFDM系统PAPR抑制算法仿真及限幅压扩SLM、PTS与TR性能对比
  • TurboVNC高性能远程桌面解决方案:从入门到精通
  • 蒸汽咨询正规机构吗 - 技研备忘录
  • 贪吃蛇游戏(代码+超详细注释)
  • 如何永久解锁IDM下载加速?2024年免费激活与试用重置完全攻略
  • 亲测2026最新10款免费降ai率工具(附工具优缺点对比图) - 殷念写论文
  • 智界V9,50万的豪华MPV来了
  • 【硬核测评】程序员专属AI面霸养成指南:鹅来面OfferGoose,真的能让你Offer拿到手软?
  • 2026年新品:资深高压锅炉管研发厂家 - 品牌推广大师