hako-mikan / sd-webui-negpip

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

`TypeError: 'NoneType' object is not subscriptable` raised in denoiser_callback #9

Closed touensen closed 1 year ago

touensen commented 1 year ago

SD v1.5.2 c9c8485bc1e8720aba70f029d25cba1c4abf2b5c, ADetailer v23.9.3, Python v3.10.6

i2tで ADetailer を有効にしていたところ ADetailer の実行中に下記が連続して発生しました。

*** Error executing callback cfg_denoiser_callback for C:\sd.webui\webui\extensions\sd-webui-negpip\scripts\negpip.py
    Traceback (most recent call last):
      File "C:\sd.webui\webui\modules\script_callbacks.py", line 195, in cfg_denoiser_callback
        c.callback(params)
      File "C:\sd.webui\webui\extensions\sd-webui-negpip\scripts\negpip.py", line 191, in denoiser_callback
        for step, regions in self.conds_all[0]:
    TypeError: 'NoneType' object is not subscriptable

postprocess の下記をコメントアウトしたら発生しなくなりましたが対応として正しいかは分かりません。ご報告まで。

    def postprocess(self, p, processed, *args):
        if hasattr(self,"handle"):
            hook_forwards(self, p.sd_model.model.diffusion_model, remove=True)
            del self.handle
        # self.conds_all = None
        # self.unconds_all = None
zzz7xz commented 1 year ago

いろいろ使わせていただいています。ありがとうございます。

こちらの環境でもいくつかのケースで同じエラーが出ています。

WebUI version: v1.6.0 python: 3.10.6 torch: 2.0.1+cu118 xformers: 0.0.20 gradio: 3.41.2 sd-webui-negpip 7d4defb adetailer d51f4b3 v23.10.0

  1. txt2imgでNegPiPとADetailerを有効化して出力 →Hires. fix処理まではNegPiPは機能する。  ADetailer処理時にエラーが複数出てNegPiPが機能しない。  ADetailerを無効にするとエラーは出なくなる。

  2. txt2imgで出力後img2imgで出力 または img2imgで出力後txt2imgで出力 →NegPiPの有効、無効にかかわらずエラーが複数出る。

1はADetailer処理をNegPiPが無効になった状態で描写するようで、 マイナスのプロンプトがあるとADetailer適応箇所の描写が崩れます。

2はADetailer拡張の有無にかかわらず起きます。 エラーが出るだけで動作は正常なようです。

11 と同じ現象も起きています。

hako-mikan commented 1 year ago

併用は可能です。 Web-uiのSetting - ADetailerにある Script names to apply to ADetailer (separated by comma) にnegpipを加えることで有効になります。

zzz7xz commented 1 year ago

ありがとうございます!併用できました! ADetailer側から設定できたんですね。 失礼いたしました。