[记录]SD WD14-Tagger插件反推报错修复

Leaphy 发布于 2025-06-21 最后更新于 19 天前 247 次阅读


AI 摘要

[记录]SD WD14-Tagger插件反推报错修复 使用Stable Diffusion的WD14-Tagger插件时遇到网络连接错误,报错显示无法访问HuggingFace下载模型。通过排查发现是hf_hub_download函数无法连接网络导致的。 解决方法: 1. 从镜像网站手动下载模型文件 2. 将模型文件放入models/interrogators目录 3. 修改插件代码,绕过hf_hub_download直接加载本地模型 4. 安装缺失的onnxruntime依赖 虽然修改插件代码会在更新后失效,但这是目前最直接的解决方案。最终成功解决了反推功能无法使用的问题。

出错了qwq

今天在使用Stable Diffusion【1】的反推【2】时报错了,错误如下

Loading wd14-vit-v2 model file from SmilingWolf/wd-v1-4-vit-tagger-v2
*** Error completing request
*** Arguments: (<PIL.Image.Image image mode=RGB size=1192x671 at 0x79E8DB7F9AE0>, '', False, '', '[name].[output_extension]', 'ignore', False, False, 'wd14-vit-v2', 0.35, '', '', False, False, True, '0_0, (o)_(o), +_+, +_-, ._., <o>_<o>, <|>_<|>, =_=, >_<, 3_3, 6_9, >_o, @_@, ^_^, o_o, u_u, x_x, |_|, ||_||', False, False) {}
    Traceback (most recent call last):
      File "/home/***/anaconda3/envs/stablediffusion/lib/python3.10/site-packages/urllib3/connection.py", line 198, in _new_conn
        sock = connection.create_connection(
      File "/home/***/anaconda3/envs/stablediffusion/lib/python3.10/site-packages/urllib3/util/connection.py", line 85, in create_connection
        raise err
      File "/home/***/anaconda3/envs/stablediffusion/lib/python3.10/site-packages/urllib3/util/connection.py", line 73, in create_connection
        sock.connect(sa)
    OSError: [Errno 101] Network is unreachable

    The above exception was the direct cause of the following exception:

看到OSError: [Errno 101] Network is unreachable可知是无法连接一个什么东西导致的报错。

排查

最后在"\stable-diffusion-webui\extensions\stable-diffusion-webui-wd14-tagger\tagger\interrogator.py【3】"找到了这个下载的逻辑。原本的代码:

    def download(self) -> Tuple[os.PathLike, os.PathLike]:
        print(f"Loading {self.name} model file from {self.kwargs['repo_id']}")

        model_path = Path(hf_hub_download(
            **self.kwargs, filename=self.model_path))
        tags_path = Path(hf_hub_download(
            **self.kwargs, filename=self.tags_path))
        return model_path, tags_path

    def load(self) -> None:
        model_path, tags_path = self.download()

        # only one of these packages should be installed at a time in any one environment
        # https://onnxruntime.ai/docs/get-started/with-python.html#install-onnx-runtime
        # TODO: remove old package when the environment changes?
        from launch import is_installed, run_pip
        if not is_installed('onnxruntime'):
            package = os.environ.get(
                'ONNXRUNTIME_PACKAGE',
                'onnxruntime-gpu'
            )
...

在download方法里使用了hf_hub_download【4】这个函数从huggingface下载模型,但是显然huggingface在我的网络环境下是访问不了的。

修复

先说说我的解决方法

先从镜像网站下载模型,放到models/interrogators【5】目录,然后更改代码如下:

# def download(self) -> Tuple[os.PathLike, os.PathLike]:

    #     print(f"Loading {self.name} model file from {self.kwargs['repo_id']}")

    #     model_path = Path(hf_hub_download(

    #         **self.kwargs, filename=self.model_path))

    #     tags_path = Path(hf_hub_download(

    #         **self.kwargs, filename=self.tags_path))

    #     return model_path, tags_path

    def load(self) -> None:

        # model_path, tags_path = self.download()

        model_dir = Path("./models/interrogators")

        model_path, tags_path = model_dir / self.model_path , model_dir / self.tags_path

        # only one of these packages should be installed at a time in any one environment

        # https://onnxruntime.ai/docs/get-started/with-python.html#install-onnx-runtime

        # TODO: remove old package when the environment changes?

        from launch import is_installed, run_pip

        if not is_installed('onnxruntime'):

            package = os.environ.get(

                'ONNXRUNTIME_PACKAGE',

                'onnxruntime-gpu'

            )

改好之后报错变了:

ModuleNotFoundError: No module named 'onnxruntime'

直接pip install【6】

pip install onnxruntime

重启SD,问题解决。

写在最后的话

本来打算不更改原来的代码解决问题,因为如果改了代码,下次更新插件后又要再次修改,很麻烦。但是试了试把模型丢在hf_hub_download下载文件的cache目录【7】也不行,还是改代码算了。

此作者没有提供个人介绍。
最后更新于 2025-07-05