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

Detectron2目标检测运行无显示、弹窗无响应如何解决

我参考这篇文章提供的代码,使用训练完成的模型对图像开展目标检测推理,分别尝试cv2.imread、detectron2的read_image接口读取输入图片,效果一致,完整代码如下:

# import some common detectron2 utilities
from detectron2.engine import DefaultPredictor
from detectron2.config import get_cfg
from detectron2.utils.visualizer import Visualizer
from detectron2.data import MetadataCatalog
import cv2

from detectron2.data.detection_utils import read_image


WINDOW_NAME = "COCO detections"
#im = cv2.imread("sample.jpg")  # this also shows the same result
im = read_image("sample.jpg", format="BGR")

# Create config
cfg = get_cfg()
cfg.merge_from_file("C:/Users/preet/detectron_repo/configs/COCO-Detection/faster_rcnn_X_101_32x8d_FPN_3x.yaml")
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5  # set threshold for this model
cfg.MODEL.WEIGHTS = "detectron2://COCO-Detection/faster_rcnn_X_101_32x8d_FPN_3x/139173657/model_final_68b088.pkl"

# Create predictor
predictor = DefaultPredictor(cfg)

# Make prediction
outputs = predictor(im)

v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)
v = v.draw_instance_predictions(outputs["instances"].to("cpu"))
cv2.namedWindow(WINDOW_NAME, cv2.WINDOW_NORMAL)
cv2.imshow(WINDOW_NAME, v.get_image()[:, :, ::-1])

代码运行后弹出的结果窗口显示“无响应”,窗口内未展示任何检测结果,同时运行时输出如下警告信息:

UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at  C:\cb\pytorch_1000000000000\work\aten\src\ATen\native\TensorShape.cpp:2228.)
  return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]
排查解决方法

输出的torch.meshgrid警告是PyTorch与当前安装的detectron2版本的兼容提示,不会阻塞程序运行,也不是窗口无响应的诱因,按以下优先级排查修复:

  • 核心问题修复:OpenCV的imshow函数本身不会阻塞程序,也不会启动GUI消息循环,现有代码执行到imshow后会直接运行到程序末尾退出,窗口没有进程维持消息响应就会显示“无响应”。只需要在cv2.imshow()代码后追加两行逻辑即可:
# 等待任意按键按下,0代表永久等待,传入其他数字代表等待毫秒数
cv2.waitKey(0)
# 按键触发后销毁所有OpenCV创建的窗口
cv2.destroyAllWindows()
  • 权重下载阻塞排查:如果是第一次运行这段代码,detectron2://前缀的模型权重会自动从远程拉取,下载过程中程序处于阻塞状态,不会有终端输出,此时提前弹出的窗口会暂时显示无响应。不要强制关闭窗口,观察终端网络/下载进度提示,等权重下载完成、推理执行结束后,结果会正常渲染到窗口中。
  • 图片读取有效性校验:确认sample.jpg和运行脚本的工作路径一致,文件没有损坏。可以在图片读取代码后加一行print(im.shape),如果能正常输出(高度, 宽度, 3)格式的元组,说明图片读取正常;如果报NoneType相关错误,就是路径不对或者图片损坏,调整为绝对路径即可。
  • 警告消除(可选,不影响功能):如果不想看到meshgrid相关警告,要么升级detectron2到适配最新PyTorch的版本,要么在导入torch的代码后加一行补丁逻辑:
import torch
# 给meshgrid补默认indexing参数,消除警告
_original_meshgrid = torch.meshgrid
torch.meshgrid = lambda *args, **kwargs: _original_meshgrid(*args, indexing='ij', **kwargs)

内容的提问来源于stack exchange,提问作者Preetom Saha Arko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:48:17