Detectron2 Mac CPU环境运行官方Demo未检测到目标实例问题求助
核心问题及解决方案
错误原因
运行命令存在配置文件与预训练权重不匹配问题,是无检测结果的直接原因:指定的配置文件为mask_rcnn_R_101_FPN_3x.yaml(对应ResNet101 backbone的Mask RCNN结构),但加载的预训练权重为ResNet50结构的参数,二者网络层维度、参数数量完全不符,因此日志提示参数缺失,模型无法正常推理。
直接修复方案
二选一即可,保证配置与权重结构对齐:
- 方案1:统一使用R50结构,替换配置文件为R50对应的yaml:
python demo.py --input 000000439715.jpeg --output output --config-file mask_rcnn_R_50_FPN_3x.yaml --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl MODEL.DEVICE cpu
- 方案2:统一使用R101结构,替换权重为R101对应的预训练参数:
python demo.py --input 000000439715.jpeg --output output --config-file mask_rcnn_R_101_FPN_3x.yaml --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_101_FPN_3x/138205316/model_final_a3ec72.pkl MODEL.DEVICE cpu
后续排查步骤(修改后仍无结果可按顺序验证)
- 确认本地
mask_rcnn_R_101_FPN_3x.yaml和Base-RCNN-FPN.yaml存放在同一目录下,未手动修改配置内的继承路径与结构参数。 - 验证输入图片无损坏,可在demo.py的预测逻辑前加入代码打印输入图片的尺寸、像素值范围,确认图片读取逻辑正常。
- 重新运行后确认日志不再出现「参数未在checkpoint中找到」的警告,如果仍有警告可重新拉取对应版本的官方配置文件,避免手动修改导致结构不匹配。
- 可在命令中加入
--confidence-threshold 0.1降低置信度阈值,排除阈值过高导致的漏检问题。
内容的提问来源于stack exchange,提问作者W.P. McNeill
相关产品推荐
相关产品推荐

