2023/04/15(土) [n年前の日記]
#1 [cg_tools][gimp] GIMPから Stable Diffusion web UIを呼び出してみる
ふとなんとなく、GIMP から Stable Diffusion web UI を呼び出して利用できないものかなと思いついた。
環境は以下。
ググった感じでは、2つのプラグインに遭遇した。
_GitHub - thndrbrrr/gimp-stable-boy: GIMP plugin for AUTOMATIC1111's Stable Diffusion WebUI
_GitHub - blueturtleai/gimp-stable-diffusion
今回は、Stable Boy (gimp-stable-boy) のほうを使ってみる。
GIMPを再起動すると、上部のメニューの中に、Stable Boy という項目が増えている。
環境は以下。
- Windows10 x64 22H2
- GIMP 2.10.32 x64 Portable samj版
- CPU : AMD Ryzen 5 5600X
- RAM : 16GB
- GPU : GeForce GTX 1060 6GB
ググった感じでは、2つのプラグインに遭遇した。
_GitHub - thndrbrrr/gimp-stable-boy: GIMP plugin for AUTOMATIC1111's Stable Diffusion WebUI
_GitHub - blueturtleai/gimp-stable-diffusion
今回は、Stable Boy (gimp-stable-boy) のほうを使ってみる。
◎ 導入 :
導入は以下。任意のフォルダで、git を使ってクローン。
今回は、D:\aiwork\ 以下で作業してみた。
git clone https://github.com/thndrbrrr/gimp-stable-boy.git
今回は、D:\aiwork\ 以下で作業してみた。
cd /D D:\aiwork git clone https://github.com/thndrbrrr/gimp-stable-boy.gitD:\aiwork\gimp-stable-boy\ というフォルダが出来て、中にファイル一式がコピーされている。
◎ GIMPのプラグインとして指定する :
- GIMP 2.10 を起動。
- プラグインフォルダの設定画面を表示。編集 → 設定 → フォルダー → プラグイン。
- 先ほどクローンしたプラグインの場所 + src を指定。
D:\aiwork\gimp-stable-boy\src
GIMPを再起動すると、上部のメニューの中に、Stable Boy という項目が増えている。
◎ Stable Diffusion web UIを起動しておく :
Stable Diffusion web UIを起動しておいて、他のアプリから使える状態にしておく。
Stable Boy の説明ページ(README.md)には、--api を指定して起動する、と書いてある。DOS窓(cmd.exe)を開いて、Stable Diffusion web UI のインストールフォルダをカレントディレクトリにして、以下を実行。
_API - AUTOMATIC1111/stable-diffusion-webui Wiki - GitHub
DOS窓内にずらずらとメッセージが表示される。通常なら、以下のURL(URI)にアクセスすれば利用できるようになっているはず…。
Stable Boy の説明ページ(README.md)には、--api を指定して起動する、と書いてある。DOS窓(cmd.exe)を開いて、Stable Diffusion web UI のインストールフォルダをカレントディレクトリにして、以下を実行。
webui.bat --api
_API - AUTOMATIC1111/stable-diffusion-webui Wiki - GitHub
DOS窓内にずらずらとメッセージが表示される。通常なら、以下のURL(URI)にアクセスすれば利用できるようになっているはず…。
http://127.0.0.1:7860
◎ GIMP側でプラグインの初期設定 :
GIMP側で、512x512の画像を新規作成しておいてから、Stable Boy → 設定、を選んで、アクセスすべきURL(URI)を指定する。
何かしらの画像ウインドウが無いとメニュー選択ができないので注意。
デフォルトでは、http://localhost:7860 になっているが、この設定だと無反応だったので、http://127.0.0.1:7860 に変更する。
ちなみに、設定したURLは保存されないので、GIMP を起動するたびに、毎回設定しないといけない…。面倒臭い。
gimp-stable-boy\src\gimp_stable_boy\constants.py の中で、"http://localhost:7860" が定義されているので、そこを修正してしまうのも手かもしれない。
何かしらの画像ウインドウが無いとメニュー選択ができないので注意。
デフォルトでは、http://localhost:7860 になっているが、この設定だと無反応だったので、http://127.0.0.1:7860 に変更する。
http://127.0.0.1:7860
ちなみに、設定したURLは保存されないので、GIMP を起動するたびに、毎回設定しないといけない…。面倒臭い。
gimp-stable-boy\src\gimp_stable_boy\constants.py の中で、"http://localhost:7860" が定義されているので、そこを修正してしまうのも手かもしれない。
◎ 実際に利用してみる。 :
Stable Boy → Text to Image を選ぶ。おそらく txt2img を呼び出して、英文や英単語を打ち込めば、画像生成してくれるのだろう。
Prompt に「girl」とでも打ち込んで動作確認。また、Results as で、Layer (新規レイヤー作成) か Image (新規画像作成) を選べる。
Stable Diffusion web UI側の処理が終わると、GIMPのウインドウ内に生成画像が返ってくる。
Inpaint も使えるらしい。
これで、黒色に塗った部分が新しく作成される。
Prompt に「girl」とでも打ち込んで動作確認。また、Results as で、Layer (新規レイヤー作成) か Image (新規画像作成) を選べる。
Stable Diffusion web UI側の処理が終わると、GIMPのウインドウ内に生成画像が返ってくる。
Inpaint も使えるらしい。
- Inpainting Mask という名前のレイヤーを新規作成して、一番上の階層に持ってくる。
- 黒色でマスクしたい部分を塗り潰す。
- その状態で、Stable Boy → Inpainting を選択。
これで、黒色に塗った部分が新しく作成される。
◎ 終了の仕方 :
GIMPを終了したら、Stable Diffusion web UI を実行してるDOS窓も閉じてしまっていい。
◎ 問題点 :
一応、これで、GIMPから Stable Diffusion web UI を利用することができるようになったけど。ただ、このプラグイン、時々動作が怪しい…。
プラグインのダイアログで「OK」をクリックして、すぐにダイアログが閉じられる時は、何らかの処理に失敗している。処理に失敗してるけど、Stable Diffusion web UI側は、処理を続行している…。
本当なら、Stable Diffusion web UI が生成処理を終えるまで、ダイアログが開きっぱなしのままになるし、ダイアログのウインドウタイトルに「(応答なし)」も表示される。Stable Diffusion web UI側の処理が終われば、ダイアログ上の「Processing」の表示が100%になって、生成画像が返ってくるはず。
ということで、ダイアログがすぐに閉じたら、処理に失敗してると判断して、Stable Diffusion web UI側の処理が終わった頃を見計らってから、再度プラグインを実行してみるべし。
もう一点。公式ドキュメントにも書いてあるけど、学習モデルデータの選択は、このプラグイン側からできないので、Stable Diffusion web UI 側で事前に選択しておくこと。
プラグインのダイアログで「OK」をクリックして、すぐにダイアログが閉じられる時は、何らかの処理に失敗している。処理に失敗してるけど、Stable Diffusion web UI側は、処理を続行している…。
本当なら、Stable Diffusion web UI が生成処理を終えるまで、ダイアログが開きっぱなしのままになるし、ダイアログのウインドウタイトルに「(応答なし)」も表示される。Stable Diffusion web UI側の処理が終われば、ダイアログ上の「Processing」の表示が100%になって、生成画像が返ってくるはず。
ということで、ダイアログがすぐに閉じたら、処理に失敗してると判断して、Stable Diffusion web UI側の処理が終わった頃を見計らってから、再度プラグインを実行してみるべし。
もう一点。公式ドキュメントにも書いてあるけど、学習モデルデータの選択は、このプラグイン側からできないので、Stable Diffusion web UI 側で事前に選択しておくこと。
◎ 雑感 :
考えてみたら、Webブラウザ経由で Stable Diffusion web UI を使っても、絶えずpng画像が保存されるのだから…。エクスプローラ等から GIMP に画像をドラッグアンドドロップしてアレコレすれば済みそうな気もする…。いや、その場合、マスク画像を作成して渡すのが面倒臭いかな…。
[ ツッコむ ]
以上です。