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

MMDetection训练报错KeyError: mask_detectionDataset不在数据集注册表中

问题解决方案

核心原因

你的自定义数据集类没有被运行环境实际加载到注册器中,和你直接运行__init__.py报的相对导入错误无关(__init__.py是包初始化文件,本身就不支持独立运行,这个报错属于正常操作导致的,不用处理)。

排查&修复步骤

  • 首先检查命名和导入配置是否正确
    1. 确认mmdetection/mmdet/datasets目录下的初始化文件是**__init__.py**(前后各两个下划线,你描述里写的init.py是错误命名,会导致Python无法识别该目录为包,导入失效)
    2. 确认你在上述__init__.py中添加了正确的导入语句,示例如下(把文件名和类名替换成你自己的):
    # 假设你的自定义数据集代码存在同目录的mask_detection.py文件中
    from .mask_detection import mask_detectionDataset
    # 把类名添加到__all__列表中,如果已有__all__列表就追加类名,不要重复声明
    __all__ = ['mask_detectionDataset']
    
    1. 确认自定义数据集类上的装饰器导入来源正确,示例如下:
    from mmdet.datasets.builder import DATASETS
    # 不要导错DATASETS的来源,且类名要和cfg中填写的type完全一致,大小写匹配
    @DATASETS.register_module()
    class mask_detectionDataset(CustomDataset):
        # 你的数据集实现逻辑
    
  • 修复环境调用路径问题
    从报错日志可以看到,你当前运行环境调用的是conda路径下预安装的mmdet包:D:\anaconda3\envs\openmmlab\lib\site-packages\mmdet\,你修改的本地F:\Project\mmdetection下的代码根本没有被环境加载,所以注册逻辑不生效。
    打开命令行,切换到你本地mmdetection仓库的根目录(F:\Project\mmdetection\),执行以下命令把本地代码以可编辑模式安装到环境中:
    pip install -e .
    
    执行完成后,你修改本地mmdet的代码会同步到环境中生效。
  • 验证注册是否生效
    你可以在训练代码的最开头添加以下代码测试注册结果:
    from mmdet.datasets import DATASETS
    print('mask_detectionDataset' in DATASETS.module_dict)
    
    输出为True即代表注册成功,再运行训练代码就不会抛出KeyError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:54:05