Stable Diffusion メモ(4) 絵の描けない人が Krita Plugin で選択範囲にimg2imgかける

これまでやったこと

jtnoske.hateblo.jp

jtnoske.hateblo.jp

今回はこれら記事の続き、になるのかな?

 

Krita と Stable Diffusion Plugin

別画像に切り出してimg2imgするのは面倒だなぁということでGIMPプラグインの登場を待っていたんですが、どうもKritaという(無料)ペイントツールのプラグインが開発されているということでそちらを利用。

krita.org

github.com

たぶんPhotoshopプラグインと同じことができそう、あちらはどうもクラウド側でimg2imgをするっぽいけど、こちらはローカルでGPUをぶん回すようだ。

gigazine.net

導入方法

誰かもっと詳しく書いてください…

(9/4 追記) Krita プラグインがアップデートされ、batファイルを叩けば必要なパッケージを集めてくるようになりました。その代わりにgitが必須となったようです。アップデートにともない、導入方法を書き換えています。

Kritaプラグイン
  1. Krita 5.1.0 をインストールする
  2. Kritaを起動して、メニューから「設定」 - 「リソースを管理」 を選択し、画面の「リソースフォルダを開く」を押す
  3. エクスプローラが開くので、pykrita フォルダを開く(なければフォルダを作る)
  4. 取ってきたKrita Pluginのコード一式から krita/plugin 下の krita_diff フォルダとkrita_diff.desktop ファイルをpykrita フォルダに置く
  5. Kritaを再起動する
  6. メニューから「設定」 - 「Kritaの設定を変更」 を選択し、画面の「Python プラグインマネージャー」を選択して「Krita Stable Diffusion Plugin」の左にあるチェックボックスのチェックを入れる。
  7. 「OK」ボタンを押し、Kritaを再起動する。
サーバー側
  1. Python 3.10.6入れる
  2. gitをいれる
  3. CUDA 11.3 を入れる
  4. git bash を起動し、任意のフォルダで
    git clone https://github.com/sddebz/stable-diffusion-krita-plugin.git する
    • 古いKrita Plugin や webui の実装を上書きせず、別のフォルダにcloneし直すのを推奨
  5. Stable Diffusionのモデルが置いてあるところ からsd-v1-4.ckptをダウンロードし、model.ckptにリネームした上でwebui.batがあるフォルダと同じところに配置する
  6. (オプション) GPFGANを使いたい場合は、ここからGPFGANv1.3.pthをダウンロードしてwebui.batがあるフォルダと同じところに配置する
  7. webui-user.batを実行する(普通に実行すればよい、"管理者として実行"はしないこと)
    なんやらかんやらあってKrita プラグインのサーバー側が起動します。

 

古いやり方
  1. Krita 5.1.0 をインストールする(少なくともそれより前のバージョンは動かなさそう)
  2. Krita Plugin のリポジトリからコードをClone、もしくはzipでとってくる
  3. fork元のStable Diffusion のインストール方法に従い、webui.pyが実行できるようにする(このあたりは日本語で導入方法を書いてる方がおられると思う)
    • anaconda or minicondaが必須、krita pluginで環境変数 %CONDA_PATH% が要求される
  4. Krita Plugin では追加で以下の実行をする
    • conda env update -n ldo --file environment.yaml --prune
  5. Kritaを起動して、メニューから「設定」 - 「リソースを管理」 を選択し、画面の「リソースフォルダを開く」を押す
  6. エクスプローラが開くので、pykrita フォルダを開く(なければフォルダを作る)
  7. 取ってきたKrita Pluginのコード一式から krita/plugin 下の krita_diff フォルダとkrita_diff.desktop ファイルをpykrita フォルダに置く
  8. Kritaを再起動する
  9. メニューから「設定」 - 「Kritaの設定を変更」 を選択し、画面の「Python プラグインマネージャー」を選択して「Krita Stable Diffusion Plugin」の左にあるチェックボックスのチェックを入れる。
  10. 「OK」ボタンを押し、Kritaを再起動する。

使用方法

  1. krita.cmd を実行する
  2. Krita を起動する
  3. Stable Diffusionにかけたい画像の範囲を選択する。

  4. SD Pluginのドッキングパネルでいろいろ設定する or krita_config.yamlをいじる
    ドッキングパネルはメニューの「設定」-「ドッキングパネル」-「SD Plugin」にチェックを入れると出てきます。

    大抵の設定の優先度は SD Pluginドッキングパネルの設定 > yamlの設定 のようだ
    最初yamlで denoising_strengthを設定しても全然効かなくてなんだこれはとウンウン悩んでいましたが、ドッキングパネルを出してなかっただけでした…
  5. Kritaの画面でCtrl + Alt + Q (txt2img) または Ctrl + Alt + W (img2img) を押す

オーできた すげー

自分のマシン(Ryzen 7 5800x, 64GB, RTX 3080 GAMING Z TRIO 12G)で一押し3秒くらい。ウォーはかどりますなぁこりゃ… 

Krita自体もGIMPと比べると使いやすい感じする、今後はこちらを使っていくかぁ

たぶん絵を描く人は顔じゃなくてほかのところをtxt2imgなりimg2imgなりかけて変更したいんだろうけど、ほかのところでもこのやり方でいけそうですな。顔ばっかりじゃなくて今度は手を描いてみましょうかな…

 

いやー楽、これまでの苦労は一体なんだったんだっていうくらい楽
選択範囲をimg2imgした結果がレイヤーで積み重なるってのがいいですな、見比べるのが楽

 

img2img後にできるレイヤーを表示したままで再度img2imgすると、img2imgした後の画像で再度img2imgをかけるので、より洗練される感じになりそう 元絵から再度img2imgしたい場合はレイヤーを不可視化する必要がありますね。

 

(9/4 追記)inpaintingできるようになってました

 

続き

手を頑張って描きました(画伯が)

 

jtnoske.hateblo.jp