しかつきかふぇ

ちょっとした休憩時間に

Krita + 画像生成AIで遊んでみよう on openSUSE Leap15.5

なんとか乗り切ってる今日この頃

鹿野です。
先週辺りから本当にわけわからないほど忙しいのですが、なんとか乗り切ってます。

というわけで今日は、 openSUSE Advent Calendar 2023 の 13 日目の記事となります。
13日目の記事を 12月14日に書いてたらだめだと思うんですけどね(棒)

本日のネタは、 Krita + StableDiffusion の記事となります。
冬コミ用のネタです!!

なのですが、冬コミでは openSUSE Tumbleweed で行う場合はこうやります!(めっちゃ簡単!!)
的な記事だったのですが、今日の記事は openSUSE Leap で行う場合はこうなります!!(めっちゃ面倒!!!!)
という具合の記事です。

Leap の場合は Python やら Krita やらのバージョンが古くて苦労するんです。
それでもなんとか上の画像のように Leap 15.5 でも動かすことができたので、その方法を紹介します。

そもそも Krita ってなんだ!?

おそらく openSUSE やら Linux でイラストを描いてる方には説明不要のような気がします。
OSS で高機能なお絵かきソフトです。
ひょっとしたら Linux ではなく、 Windows で使用しているという人も多いのではないでしょうか?

Krita | デジタルでのお絵描きと創造の自由を

今日はこの Krita に画像生成AIを組み合わせるプラグインについて紹介していきます。

Leap 15.5 での手順(概要)

なのだけど、Leap は諸々パッケージのバージョンが古いので力づくでパッケージをインストールしてもそのままでは動きません。
以下にその手順の概要を記載します。

  1. CUDA のインストール
  2. Python 3.10 のインストール
  3. Flatpak から Krita をインストール
  4. Generative AI for Krita プラグインのインストール
  5. ComfyUI サーバーのセットアップ

ここまでやってようやく動きます。
・・・って、人によってはそれだけかよ!?と思うかもしれませんが、それにしてもハマりどころが多いといいますか。

では早速、イチから順に進めていきましょう!

CUDA のインストール

CUDA のインストールは下記の記事を参考にしてください。 ※使いまわしですがあしからず

cafe.shikanotsuki.me

ここで注意点!
最新の PyTorch 2.1 では、 CUDA 12.1 を利用します。 バージョンが新しくなっている点だけ注意してください。

Python 3.10 のインストール

つづいて、 Python 3.10 をインストールします。

なぜそんな手順が必要かって、、Leap 15.5 でデフォルトで入ってる Python のバージョンは 3.6 だからです!!
Python 3.6 ではそもそも StableDiffusion、つまり画像生成AIが動きませんね。

というわけで、そこからです。・・・まぁインストール自体はコマンドひとつなのですが。

sudo zypper install python310

が、これだとデフォルトで使用する Pythonのバージョンは 3.6 のままです。
せっかくなので簡単に切り替えられるようにしておきましょう。

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2

ここまで入力したら、実際に Python のバージョンを以下のコマンドで切り替えます。

sudo update-alternatives --config python3

There are 2 choices for the alternative python3 (providing /usr/bin/python3).

  Selection    Path                 Priority   Status
------------------------------------------------------------
  0            /usr/bin/python3.10   2         auto mode
* 1            /usr/bin/python3.10   2         manual mode
  2            /usr/bin/python3.6    1         manual mode

Press <enter> to keep the current choice[*], or type selection number: 1

1 と入力後、エンターキーを押してください。

実際に切り替わったかを確認する場合は、下記のコマンドで確認します。

sudo update-alternatives --display python3

python3 - manual mode
  link best version is /usr/bin/python3.10
  link currently points to /usr/bin/python3.10
  link python3 is /usr/bin/python3
/usr/bin/python3.10 - priority 2
/usr/bin/python3.6 - priority 1

link currently points to /usr/bin/python3.10 と表示されてるので、 3.10 が選ばれてることが確認できますね。

FlatPak から Krita をインストール

続いて、FlatPak から Krita をインストールします。

なぜ FlatPak からなのか!?
やはり Leap の Krita ではバージョンが古く、この後登場するプラグイン=『Generative AI for Krita』が動かないからです!

というわけでインストール手順はこちらを参照ください。(またサボった!!)

cafe.shikanotsuki.me

※先週の記事は今日の記事の実験途中の記事だったわけです(^^;;

インストールが終わったら、一度 Krita を起動して、そのまま終了させます
理由は、、この後インストールするプラグインの場所を作るためです。。。(些細な理由ですが)

Generative AI for Krita プラグインのインストール

さて、いよいよ画像生成AIのプラグインをインストールしていきます。
まずは下記の場所から、プラグインの zip ファイルをダウンロードします。

github.com

2023/12/14 の時点では 1.10.0 となっていますが、結構頻繁にリリースされてるようですね。
この先は適宜バージョンを置き換えて読んでいってください。

ダウンロードしたら、下記のおまじないを使ってプラグインを FlatPak な Krita に認識させます。

# ホームディレクトリ下にプラグインファイルを展開
mkdir ~/.local/share/krita/pykrita/
cd ~/.local/share/krita/pykrita/
unzip ../../../../ダウンロード/krita_ai_diffusion-1.10.0.zip

# FlatPak が動いているディレクトリからプラグイン展開先へリンクを生成
cd /var/lib/flatpak/app/org.kde.krita/current/active/files/share/krita/pykrita
sudo ln -fs ~/.local/share/krita/pykrita/ai_diffusion

気づいた方は気づいたと思いますが、つまりこの Krita プラグイン、いろいろあれこれファイルを生成したりダウンロードしようとします。 が、 FlatPak の制約上、ファイル生成ができないわけですね。当然エラーが発生します。 ※前回ブログの一番最後のエラーです
そのため、『Generative AI for Krita』はホームディレクトリ下に配置して、そこを FlatPak が読みに行くという仕組みにしたわけです。

てゆか他にもっとシンプルな方法はあると思いますが、すぐにパッと思いついたのがこんな具合だったというわけです。。

ComfyUI サーバーのセットアップ

ここでもう一度、Krita を起動し、プラグインを認識させます。

Krita のプラグイン設定はこんな具合。

設定 > Kritaの設定を変更 > Pythonプラグインマネージャ > 『AI Image Diffusion』を選択

改めて Krita を再起動し、 ファイル > 新しいドキュメント を選択して、画像を描けるようにした後、下記の手順でドッキングパネルを開きます。

設定 > ドッキングパネル > 『AI Image Diffusion』にチェックを入れる

すると画面右下に『AI Image Diffusion』のパネルが表示されるので、 Configure のボタンを押します。
ここまで来てようやく PyTorch やら AIモデルやらのインストールですね。

『AI Image Diffusion』設定画面から、 Install ボタンをクリックしてください。

インストールが完了すると、 ComfyUI と呼ばれるサーバーが起動して、やっとこさっとこ準備完了となるわけですが、うまくいきましたか?

・・・はい。私はうまくいきませんでした!!!!(なんでだよ!??

ComfyUI 起動失敗時の対処方法

実はこの ComfyUI は、先ほど配置したプラグイン直下に Python venv とサーバープログラムがインストールされます。
なので、下記の方法で対処可能のようです。

cd ~/.local/share/krita/pykrita/ai_diffusion/.server
source venv/bin/activate
cd ComfyUI
python main.py

これで ComfyUI がちゃんと起動してくれたら問題ない・・・のですが、何をどう間違ったか失敗することがあるようです。
しかもおよそパッケージが不足してるとか、そんな具合!!!

> python main.py 
Total VRAM 5938 MB, total RAM 15690 MB
Traceback (most recent call last):
  File "/home/tsukimi/.local/share/krita/pykrita/ai_diffusion/.server/ComfyUI/comfy/model_management.py", line 218, in <module>
    import accelerate
  File "/home/tsukimi/.local/share/krita/pykrita/ai_diffusion/.server/venv/lib64/python3.10/site-packages/accelerate/__init__.py", line 3, in <module>
    from .accelerator import Accelerator
  File "/home/tsukimi/.local/share/krita/pykrita/ai_diffusion/.server/venv/lib64/python3.10/site-packages/accelerate/accelerator.py", line 35, in <module>
    from .checkpointing import load_accelerator_state, load_custom_state, save_accelerator_state, save_custom_state
  File "/home/tsukimi/.local/share/krita/pykrita/ai_diffusion/.server/venv/lib64/python3.10/site-packages/accelerate/checkpointing.py", line 24, in <module>
    from .utils import (
  File "/home/tsukimi/.local/share/krita/pykrita/ai_diffusion/.server/venv/lib64/python3.10/site-packages/accelerate/utils/__init__.py", line 16, in <module>
    from .dataclasses import (
  File "/home/tsukimi/.local/share/krita/pykrita/ai_diffusion/.server/venv/lib64/python3.10/site-packages/accelerate/utils/dataclasses.py", line 35, in <module>
    from .imports import is_cuda_available, is_npu_available, is_xpu_available
  File "/home/tsukimi/.local/share/krita/pykrita/ai_diffusion/.server/venv/lib64/python3.10/site-packages/accelerate/utils/imports.py", line 22, in <module>
    from packaging import version
ModuleNotFoundError: No module named 'packaging'

なので、一個一個不足してるパッケージをインストールしていけば恐らくエラーも解消されます(汗
例えば上の例で行くと packaging と呼ばれるモジュールが足りないと言われているので、下記の方法で対処可能でした。

pip install selenium webdriver-manager

これを、エラーが出なくなるまで繰り返します・・・・・・・簡単です。(ほんとかよ!??

ComfyUI がちゃんと起動するようになったら、改めて Krita を起動してみてください。
今度こそ『AI Image Diffusion』が使用できるようになってるはずです。

お疲れ様でした!!

ところで Krita と画像生成AI でなにができるのか?

一番面白いと思ったのはライブ画像生成でしょうか。※冬コミ記事のネタにもしていますが
まずは下記手順で、 ControlNet Scribble をインストールしてみてください。

AI Image Diffusion の設定画面 > Connection > Control extensions > 『ControlNet Scribble』にチェックを入れる > 『Install』 をクリック

続けて、 下記画像に従って、ライブ画像生成の準備してみます。

  1. Add Control layer をクリック
  2. Live を選択
  3. Scribble を選択
  4. プロンプトを入力
  5. Start !!

そうしたら左側に絵を描いてみましょう!!

・・・あ〜、うん。
冬コミ記事のイラストに比べたらだいぶマシなんじゃないかな〜??(ぇぇぇ
注:トラックボールで描きましたw

というわけで皆さんも、AIで素敵な画像を描いてみましょう〜(逃)