Stable Diffusion web UI (AUTOMATIC1111) で画像が表示されない問題の対処

公開日:  

python stable diffusion AI


Google ColaboratoryでStable Diffusion web UIを使って画像を生成していると、たまにUIが止まってしまい、生成結果の画像が表示されないということがありました。

問題

環境はというと、Colab上で下記のように--shareオプションを使用してgradio.app経由でウェブUIにアクセスしていました。

!COMMANDLINE_ARGS="--share --gradio-debug --gradio-auth me:qwer" REQS_FILE="requirements.txt" python launch.py

512x512の画像を1枚などは正常に生成することができました。しかしbatch sizeを増やして512x512の画像を4枚を生成しようとすると、(Colab上で表示されるログでは生成完了しており、outputディレクトリには画像が作成されていますが)ページ上には反映されず画像が表示されません。
この状態になると再度Generateボタンを押下しても反応しないので、ページを再読み込みする必要があります。

解決方法

少し調べるとどうやらアプリケーション自体の問題ではなくgradio.appの問題のようでした。2MBを超える画像が送れないみたいです(今後改善されるかもしれません)。
gradio.app経由ではなくローカルで動かす分にはこの問題は発生しなそうです。

Colab上で動かしているWEBアプリケーションに外部からアクセスするためには、ngrokというサービスを使います。
幸い、Stable Diffusion web UIではコマンドライン引数に指定するだけでngrokを使用できます。
※あらかじめngrokでアカウントを作成し、自分のAuthtokenを取得する必要があります。

起動コマンドを下記のように変更します。

# 自分のngrokのAuthtoken
my_ngrok_authtoken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

!COMMANDLINE_ARGS="--ngrok $my_ngrok_authtoken --gradio-debug --gradio-auth me:qwer" REQS_FILE="requirements.txt" python launch.py

起動すると*.ngrok.ioのURLが作成されるので、そちらにアクセスします。

これで再度、512x512の画像を4枚の生成を試したところうまくいきました。8枚など増やしても問題ありませんでした(どれくらいの画像サイズまで大丈夫かは検証していません)。

以上



関連記事