You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Detectron2中DiffusionDet训练报错:已注册数据集仍提示未注册

排查Detectron2数据集注册失效问题

1. 确认注册代码的执行时机

  • 确保数据集注册代码在train_net.py启动前被执行。如果注册代码写在单独脚本里,必须让train_net.py通过import加载该脚本——比如把注册代码放在项目的dataset/__init__.py中,或者在train_net.py开头直接导入注册模块。
  • 验证方法:在train_net.py开头添加代码:
    from detectron2.data import DatasetCatalog
    print(DatasetCatalog.list())
    
    运行训练命令,查看输出里是否包含aqua_train,如果没有,说明注册代码未被执行。

2. 检查配置文件的数据集名称匹配

  • 核对config文件中DATASETS.TRAIN的配置,确保名称和注册的aqua_train完全一致,无大小写错误、空格或额外符号。正确格式示例:
    DATASETS:
      TRAIN: ("aqua_train",)
    
  • 注意必须用元组格式,即使只有一个数据集,末尾也要加逗号。

3. 排查注册代码的逻辑问题

  • 避免将注册代码放在if __name__ == "__main__":块中,否则被其他脚本导入时不会执行。正确的注册代码示例:
    from detectron2.data.datasets import register_coco_instances
    register_coco_instances("aqua_train", {}, "/path/to/aqua_train.json", "/path/to/images_dir")
    
  • 检查是否存在多次注册覆盖的情况,确保注册逻辑是无条件执行的。

4. 清理缓存与版本兼容检查

  • 清理Detectron2缓存目录(默认路径为~/.detectron2/cache/),避免旧缓存导致的识别异常。
  • 确认DiffusionDet代码与当前使用的Detectron2版本兼容,版本不匹配可能引发注册逻辑异常。

5. 验证COCO格式JSON的有效性

  • 虽然DatasetCatalog.get("aqua_train")能返回内容,仍需检查JSON格式:
    • 确认images字段中的file_name是相对图片根目录的路径或绝对路径,且图片可正常访问。
    • 确认annotations字段中的category_id是从1开始的连续整数,Detectron2对COCO格式的类别ID有严格要求,不连续或缺失会导致训练逻辑无法识别数据集。

内容的提问来源于stack exchange,提问作者LongVuBui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:27:07