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

M2 Mac Mini使用Layout Parser库遇Unsupported query remaining错误求助

解决M2 Mac Mini上Layout Parser加载Detectron2模型的缓存错误

你遇到的错误本质是detectron2的checkpoint加载器无法识别带URL查询参数的本地缓存文件路径,和M2 Mac的路径格式无关。错误信息里的?dl=1是模型下载URL的查询参数,被iopath缓存时保留在了文件名里,导致加载失败。

报错信息

Traceback (most recent call last):
  File "/Volumes/easystore/Pycharm/Study_GPT/test.py", line 7, in <module>
    model = lp.Detectron2LayoutModel('lp://PubLayNet/faster_rcnn_R_50_FPN_3x/config',
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Volumes/easystore/Pycharm/Study_GPT/venv/lib/python3.11/site-packages/layoutparser/models/detectron2/layoutmodel.py", line 119, in __init__
    self._create_model()
  File "/Volumes/easystore/Pycharm/Study_GPT/venv/lib/python3.11/site-packages/layoutparser/models/detectron2/layoutmodel.py", line 122, in _create_model
    self.model = detectron2.engine.DefaultPredictor(self.cfg)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Volumes/easystore/Pycharm/Study_GPT/venv/lib/python3.11/site-packages/detectron2/engine/defaults.py", line 288, in __init__
    checkpointer.load(cfg.MODEL.WEIGHTS)
  File "/Volumes/easystore/Pycharm/Study_GPT/venv/lib/python3.11/site-packages/detectron2/checkpoint/detection_checkpoint.py", line 62, in load
    ret = super().load(path, *args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Volumes/easystore/Pycharm/Study_GPT/venv/lib/python3.11/site-packages/fvcore/common/checkpoint.py", line 155, in load
    checkpoint = self._load_file(path)
                 ^^^^^^^^^^^^^^^^^^^^^
  File "/Volumes/easystore/Pycharm/Study_GPT/venv/lib/python3.11/site-packages/detectron2/checkpoint/detection_checkpoint.py", line 108, in _load_file
    raise ValueError(
ValueError: Unsupported query remaining: f{'dl': ['1']}, orginal filename: /Users/.../.torch/iopath_cache/s/dgy9c10wykk4lq4/model_final.pth?dl=1

解决方案

方案一:清理iopath缓存(最推荐)

  • 找到iopath的缓存目录:/Users/你的用户名/.torch/iopath_cache/(替换成实际系统用户名)
  • 删除该目录下所有文件和子文件夹
  • 重新运行代码,Layout Parser会自动重新下载模型,缓存文件名不再带查询参数

方案二:手动指定本地模型路径

  • 手动下载对应模型的权重文件(比如PubLayNet的faster_rcnn_R_50_FPN_3x权重),保存到本地路径(如./model_final.pth)
  • 修改模型初始化代码,手动指定权重路径:
import layoutparser as lp

model = lp.Detectron2LayoutModel(
    'lp://PubLayNet/faster_rcnn_R_50_FPN_3x/config',
    model_path='./model_final.pth'  # 替换为实际本地文件路径
)

方案三:临时修改detectron2代码(应急用)

  • 找到虚拟环境中detectron2的detection_checkpoint.py文件,路径类似/Volumes/easystore/Pycharm/Study_GPT/venv/lib/python3.11/site-packages/detectron2/checkpoint/detection_checkpoint.py
  • 打开文件,在_load_file方法开头添加代码去除URL查询参数:
def _load_file(self, path):
    # 添加以下代码
    if '?' in path:
        path = path.split('?')[0]
    # 原有代码
    if path.startswith("detectron2://"):
        ...
  • 保存文件后重新运行代码,即可绕过查询参数问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:40:11