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

Detectron2训练自定义COCO数据集后预测无实例如何排查解决

Detectron2预测无实例结果排查方案

1. 修复预测代码的核心逻辑错误

你的预测代码存在执行顺序错误:先调用预测接口,后读取图片,导致预测时输入的im是未初始化的无效值,自然没有任何输出。
修正后的代码顺序如下:

test_data = [{'1191.jpg': '/content/datasets/val/1191.jpg',
              'image_id': 1308}]

cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.7   # 后续可调整阈值
cfg.MODEL.WEIGHTS = os.path.join(cfg.OUTPUT_DIR, "model_final.pth")
cfg.MODEL.ROI_HEADS.NUM_CLASSES = 24
predictor = DefaultPredictor(cfg)
# 先读取图片,再传入预测器
im = cv2.imread(test_data[0]["1191.jpg"])
outputs = predictor(im)

v = Visualizer(im[:, :, ::-1],
               metadata=MetadataCatalog.get("TrashTron_train"), # 直接填注册的数据集名更稳妥
               scale=0.5,
               instance_mode=ColorMode.IMAGE_BW)
out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
img = cv2.cvtColor(out.get_image()[:, :, ::-1], cv2.COLOR_RGBA2RGB)
plt.imshow(img)

2. 其他问题排查步骤

  • 调低预测阈值:当前设置的0.7阈值过高,可先改为0.05测试是否有预测结果输出。如果调低阈值后出现结果,说明模型精度不足,需要优化训练过程。
  • 验证数据集注册正确性:确认你注册的TrashTron_train、TrashTron_val数据集的类别ID、标注格式和coco-annotator导出的标注文件完全匹配,没有类别ID偏移、标注框格式错误的问题。
  • 检查训练充分性:当前仅设置300轮迭代对于24类的自定义数据集远不足,建议将SOLVER.MAX_ITER调整到3000以上,观察训练过程中损失值是否稳定下降到1以下,确认模型完成了有效拟合。
  • 验证权重加载正常:确认model_final.pth文件存在且大小正常,可临时替换为COCO预训练权重,测试输入包含COCO常见类别的图片是否有输出,排除预测框架本身的问题。
  • 直接打印预测结果调试:执行预测后直接打印print(outputs["instances"]),如果实例列表非空但可视化无结果,说明元数据注册异常,需要检查MetadataCatalog中是否正确配置了类别列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:27:02