Diffusers SDXL“TypeError:‘NoneType’类型的参数不可迭代”

问题描述 投票:0回答:2

刚刚访问了 SDXL 模型,希望对其即将发布的版本进行测试...不幸的是,我们当前用于服务的代码似乎不适用于

stabilityai/stable-diffusion-xl-base-0.9
,而且我不完全确定与 SDXL 有什么不同以及我需要改变什么。

我们使用不同的管道,因此我们可以生成图像预览,因此它不是 SDXL 模型自述文件中提供的典型模板。 该错误似乎发生在

unet_2d_condition.py
(在扩散器库中)

Traceback (most recent call last):
  File "C:\Users\myalt\Desktop\testing image grid\main.py", line 159, in <module>
    socker_listener.generate_image()
  File "C:\Users\myalt\Desktop\testing image grid\main.py", line 154, in generate_image
    foo = self.blocking_code()
  File "C:\Users\myalt\Desktop\testing image grid\main.py", line 109, in blocking_code
    noise_pred = self.unet(latent_model_input, t,
  File "C:\Users\myalt\Desktop\testing image grid\venv\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl
    return forward_call(*args, **kwargs)
  File "C:\Users\myalt\Desktop\testing image grid\venv\lib\site-packages\diffusers\models\unet_2d_condition.py", line 839, in forward
    if "text_embeds" not in added_cond_kwargs:
TypeError: argument of type 'NoneType' is not iterable

我已更新为

diffusers==0.18.2

这里是一个示例代码,它制作一堆图像并将它们放入网格中,使用自定义管道 https://hatebin.com/tqppqfsehk

python torch stable-diffusion
2个回答
1
投票

有趣的是,这看起来像是扩散器中的一个错误。

added_cond_kwargs
被指定为可选,并且函数签名明确将其默认为
None
。但是,后续代码不会检查
None
的情况,将其视为字典。如果尚未报告,值得通过
diffusers
提出问题。如果它作为
added_cond_kwargs
传递,他们可能可以通过简单地将
{}
设置为
None
来修复它。

同时,您应该能够通过显式地将

added_cond_kwargs={}
传递给unet 函数来解决此问题。


1
投票

我假设您正在使用 StableDiffusionPipeline。尝试改用 StableDiffusionXLPipeline。这应该可以解决您的问题。

https://huggingface.co/docs/diffusers/v0.20.0/en/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLPipeline

© www.soinside.com 2019 - 2024. All rights reserved.