使用Detectron2训练自定义分割数据集遇文件找不到错误求助
问题原因及解决办法
核心问题1:配置合并顺序错误
你先设置了自定义数据集,再执行merge_from_file,而官方COCO配置文件会覆盖你之前设置的DATASETS.TRAIN和DATASETS.TEST,导致程序仍去寻找COCO的标注文件,这就是报错的根本原因。
核心问题2:权重路径设置错误
cfg.MODEL.WEIGHTS需要指向预训练权重文件(.pth格式),而非配置文件(.yaml),你当前填写的yaml路径会导致后续权重加载失败。
修正后的完整配置代码
cfg = get_cfg() # 先合并官方配置文件 cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")) # 再覆盖自定义配置项 cfg.MODEL.DEVICE = "cpu" cfg.DATASETS.TRAIN = ("category_train",) cfg.DATASETS.TEST = () # 修正权重路径:使用官方预训练权重的下载链接 cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml") cfg.DATALOADER.NUM_WORKERS = 0 cfg.SOLVER.IMS_PER_BATCH = 8 cfg.SOLVER.BASE_LR = 0.00025 # pick a good LR cfg.SOLVER.MAX_ITER = 25000 cfg.SOLVER.STEPS = [] cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE = 512 cfg.MODEL.ROI_HEADS.NUM_CLASSES = 6
额外注意事项
- 确保自定义数据集
category_train已正确注册到Detectron2,标注格式符合框架要求(如COCO格式)。 - 若本地已下载预训练权重,可直接填写本地.pth文件的绝对路径,替代
model_zoo.get_checkpoint_url。
内容的提问来源于stack exchange,提问作者Kamran Gasimov
相关产品推荐
相关产品推荐

