hako-mikan / sd-webui-negpip

Extension for Stable Diffusion web-ui enables negative prompt in prompt
GNU Affero General Public License v3.0
193 stars 15 forks source link

Fails if negative prompt contains only embeddings or is empty #5

Closed arcusmaximus closed 12 months ago

arcusmaximus commented 1 year ago

As in the title. If you generate something simple like

Positive prompt: 1girl, closeup Negative prompt: EasyNegativeV2

with NegPiP enabled, A1111 fails with the following error:

      File "D:\Automatic1111\repositories\stable-diffusion-stability-ai\ldm\modules\diffusionmodules\openaimodel.py", line 84, in forward
        x = layer(x, context)
      File "D:\Automatic1111\venv\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl
        return forward_call(*args, **kwargs)
      File "D:\Automatic1111\repositories\stable-diffusion-stability-ai\ldm\modules\attention.py", line 334, in forward
        x = block(x, context=context[i])
      File "D:\Automatic1111\venv\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl
        return forward_call(*args, **kwargs)
      File "D:\Automatic1111\repositories\stable-diffusion-stability-ai\ldm\modules\attention.py", line 269, in forward
        return checkpoint(self._forward, (x, context), self.parameters(), self.checkpoint)
      File "D:\Automatic1111\repositories\stable-diffusion-stability-ai\ldm\modules\diffusionmodules\util.py", line 121, in checkpoint
        return CheckpointFunction.apply(func, len(inputs), *args)
      File "D:\Automatic1111\venv\lib\site-packages\torch\autograd\function.py", line 506, in apply
        return super().apply(*args, **kwargs)  # type: ignore[misc]
      File "D:\Automatic1111\repositories\stable-diffusion-stability-ai\ldm\modules\diffusionmodules\util.py", line 136, in forward
        output_tensors = ctx.run_function(*ctx.input_tensors)
      File "D:\Automatic1111\repositories\stable-diffusion-stability-ai\ldm\modules\attention.py", line 273, in _forward
        x = self.attn2(self.norm2(x), context=context) + x
    TypeError: unsupported operand type(s) for +: 'NoneType' and 'Tensor'

Images after this fail with a different error, even if NegPiP is disabled:

      File "D:\Automatic1111\venv\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl
        return forward_call(*args, **kwargs)
      File "D:\Automatic1111\repositories\stable-diffusion-stability-ai\ldm\modules\attention.py", line 269, in forward
        return checkpoint(self._forward, (x, context), self.parameters(), self.checkpoint)
      File "D:\Automatic1111\repositories\stable-diffusion-stability-ai\ldm\modules\diffusionmodules\util.py", line 121, in checkpoint
        return CheckpointFunction.apply(func, len(inputs), *args)
      File "D:\Automatic1111\venv\lib\site-packages\torch\autograd\function.py", line 506, in apply
        return super().apply(*args, **kwargs)  # type: ignore[misc]
      File "D:\Automatic1111\repositories\stable-diffusion-stability-ai\ldm\modules\diffusionmodules\util.py", line 136, in forward
        output_tensors = ctx.run_function(*ctx.input_tensors)
      File "D:\Automatic1111\repositories\stable-diffusion-stability-ai\ldm\modules\attention.py", line 273, in _forward
        x = self.attn2(self.norm2(x), context=context) + x
      File "D:\Automatic1111\venv\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl
        return forward_call(*args, **kwargs)
      File "D:\Automatic1111\extensions\sd-webui-negpip\scripts\negpip.py", line 298, in forward
        return sub_forward(x, context, mask, additional_tokens, n_times_crossframe_attn_in_self,self.conds[0],self.contokens[0],self.unconds[0],self.untokens[0])
    TypeError: 'NoneType' object is not subscriptable

This error keeps happening until you generate something with NegPiP enabled and a negative prompt filled in.

(On a side note, I'd like to thank you for your Regional Prompter extension - I think it's an essential tool that's just as important as ControlNet. Your other extensions, including NegPiP, look promising too)

hako-mikan commented 1 year ago

I couldn't reproduce your error. Tel me your environment.

arcusmaximus commented 1 year ago

A1111 1.6.0 on Python 3.10.10/Windows 10, SD 1.5 model. NegPiP on latest version (updated just now). Tried disabling all other extensions and removing my "venv" folder, but to no avail.

hako-mikan commented 12 months ago

Maybe fixed.

arcusmaximus commented 12 months ago

Yes, works now. Thank you!