KritaのAI生成プラグイン「Krita AI Diffusion」をカスタムComfyUIサーバで試す
オープンソースのペイントソフトであるKritaにAIによる画像生成を追加するプラグインみたい。以下の動画がわかりやすい。
Kritaを使ったことはないけども、ペイントソフトに組み込まれているというのは、画像生成専用のサービスで使うよりも、よりワークフローに適しているのではないかと思うし、ペイントソフトに慣れているならそちらのほうが使い勝手も良さそう。
ということで試してみる。
GitHubレポジトリ
Krita向け生成AI
これは、Krita内で生成AIを活用して画像のペイントや編集のワークフローを支援するためのプラグインです。より視覚的な紹介については、www.interstice.cloudをご覧ください。
このプロジェクトの主な目標は以下です:
- 精度とコントロール
テキストから画像全体を生成するプロセスは予測不可能になることがあります。このプラグインでは、選択範囲に生成を限定したり、既存のコンテンツを可変強度で洗練したり、画像の特定領域にテキストを集中させたり、参照画像やスケッチ、線画、深度マップなどを使用して生成を誘導することができます。- ワークフロー統合
多くの画像生成ツールはAIのパラメータに重点を置いていますが、このプロジェクトでは、Kritaの画像編集ワークフローとシームレスに統合する控えめなツールを目指しています。解像度や技術的な詳細を気にせず、描画、ペイント、編集、生成をスムーズに行えます。- ローカル、オープン、無料
私たちはオープンソースモデルを採用しており、プリセットのカスタマイズや独自モデルの持ち込み、すべてをローカル環境で動作させることが可能です。また、クラウド生成オプションも利用でき、大きな投資なしにすぐ始められます。
主な機能
- インペインティング: 選択範囲を使用して生成的な塗りつぶし、拡張、オブジェクトの追加や削除を行う
- ライブペインティング: AIがキャンバスをリアルタイムで解釈し、即座にフィードバックを提供。ビデオを見る。
- アップスケーリング: メモリを消費せずに画像を4kや8k以上に拡大
- Stable Diffusion: Stable Diffusion 1.5およびXLに対応(SD3の部分対応あり)
- ControlNet: スクリブル、線画、エッジ検出(Canny)、ポーズ、深度、法線、セグメンテーションなど多数対応
- IPアダプター: 参照画像、スタイル・構図の転送、フェイススワップ
- 領域: レイヤーで定義された画像領域ごとに個別のテキスト説明を割り当て
- ジョブキュー: 作業中に生成ジョブのキューやキャンセルが可能
- 履歴: 結果のプレビューや過去の生成物、プロンプトをいつでも参照可能
- 強力なデフォルト設定: 使いやすいUIを提供する多目的なデフォルトスタイルプリセット
- カスタマイズ: 独自のプリセットを作成可能(カスタムチェックポイント、LoRA、サンプラーなど)
必要要件
- Windows、Linux、Mac
- LinuxとMacでは、Pythonとvenvのインストールが必要
- 推奨バージョン: 3.11 または 3.10
- 通常、パッケージマネージャ(例: apt install python3-venv)でインストール可能
ハードウェア要件
ローカルで実行する場合、少なくとも6GBのVRAMを備えた強力なグラフィックカード(NVIDIA)が推奨されます。これがない場合、画像生成に非常に時間がかかるか、メモリ不足で失敗する可能性があります。
NVIDIA GPU CUDAを使用してサポート AMD GPU サポートは限定的、WindowsではDirectML、LinuxではROCm(カスタムインストール) Apple Silicon コミュニティサポート、macOSではMPSを使用 CPU サポートされますが、非常に遅い
Krita+プラグインのインストール
インストール手順は以下
ざっと見た感じ
- Krita本体をインストール
- Krita AI Diffusionプラグインをダウンロードして、Kritaで有効化
- Krita AI Diffusionプラグインの設定を行って、ComfyUIサーバを起動
という感じ。まずとりあえず1と2をやる。
Macで試す。Krita本体はHomebrewでインストールできる。
brew install --cask krita
Krita AI Diffusionプラグインをダウンロード。記事執筆時点ではv1.29.0だった。
Kritaを起動して、「ツール」→「スクリプト」→「Pythonプラグインをファイルからインポート」と進んで、先ほどダウンロードしたプラグインのZIPファイルを指定する。
インストールしたらKritaを再起動して、とりあえずなんでもいいので新規画像を開く。
「設定」→「ドッキングパネル」→「AI Image Generation」をクリック
右のパネルに「AI Image Generation」のパネルが表示される。
「Configure」をクリック。
AI Image Generationの設定画面が開く。
ここでServer Configurationには3つの選択肢がある様子。
- Local Managed Server
Kritaがインストールされているマシン上(つまり今回の場合はMac)にComfyUIサーバをインストールして接続 - Custom Server (local or remote)
ローカルまたはリモートに構築されたComfyUIサーバに接続 - Online Service
interstice.cloudが提供するGPUクラウドサービスに接続
このままMac上でサーバを立てる場合には1を選択してそのまま進めると自動的にセットアップされる様子。
ただ、自分はUbuntuサーバでRTX4090を使っているので、どうせならこれを使いたい。カスタムサーバについてはGitHubのREADMEには以下とある。
オプション: カスタムComfyUIサーバ
このプラグインはComfyUIをバックエンドとして使用します。自動インストールの代替として、手動でインストールするか、既存のインストールを使用することもできます。Kritaを起動する前にローカルでサーバーが既に実行されている場合、プラグインは自動的に接続を試みます。この方法でリモートサーバーを使用することも可能です。
必要な拡張機能とモデルのリストを確認し、インストールが互換性を持つことを確認してください。
で以下のドキュメントが紹介されている
ComfyUIについては過去に以下でも試しているので、これを踏まえてセットアップしてみたいと思う。
カスタムComfyUIサーバの構築
環境
- Ubuntu22.04
- RTX4090
- python-3.11.5
- CUDA-12.6
レポジトリのクローン
git clone https://github.com/comfyanonymous/ComfyUI krita-ai-diffusion-custom-server
cd krita-ai-diffusion-custom-server
仮想環境を作成
python -m venv .venv
. .venv/bin/activate
パッケージインストール
pip install -r requirements.txt
ComfyUI-Managerをインストール
cd custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Manager.git
cd ..
ComfyUIを起動
python main.py --listen
ComfyUIの画面が開いたら、右上の「Manager」をクリック、メニューから「Custom Node Manager」をクリック
カスタムノードがリストアップされるので、上で検索して必要なものをインストールすれば良い。
なお、インストール後は再起動が求められる。まとめてインストールして再起動できるのかよくわかってないので、自分は都度都度再起動した。
インストールが終わったら一旦ComfyUIを落として(落とさなくてもできるかもしれないけど)、今度はモデルのダウンロードを行う。
# Clip-Vision
wget https://huggingface.co/h94/IP-Adapter/resolve/main/models/image_encoder/model.safetensors -O models/clip_vision/clip-vision_vit-h.safetensors
# NMKD Superscale SP_178000_G
wget https://huggingface.co/gemasai/4x_NMKD-Superscale-SP_178000_G/resolve/main/4x_NMKD-Superscale-SP_178000_G.pth -P models/upscale_models
# OmniSR_X2_DIV2K
wget https://huggingface.co/Acly/Omni-SR/resolve/main/OmniSR_X2_DIV2K.safetensors -P models/upscale_models
# OmniSR_X3_DIV2K
wget https://huggingface.co/Acly/Omni-SR/resolve/main/OmniSR_X3_DIV2K.safetensors -P models/upscale_models
# OmniSR_X4_DIV2K
wget https://huggingface.co/Acly/Omni-SR/resolve/main/OmniSR_X4_DIV2K.safetensors -P models/upscale_models
# MAT_Places512_G_fp16
wget https://huggingface.co/Acly/MAT/resolve/main/MAT_Places512_G_fp16.safetensors -P models/inpaint
SD1.5
# ControlNet inpaint
wget https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_inpaint_fp16.safetensors -P models/controlnet
# ControlNet tile
wget https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_lora_rank128_v11f1e_sd15_tile_fp16.safetensors -P models/controlnet
# IP-Adapter (SD1.5)
wget https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15.safetensors -P models/ipadapter
# Hyper-SD-LoRA (SD1.5)
wget https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-8steps-CFG-lora.safetensors -P models/loras
SDXL
# IP-Adapter (SDXL)
wget https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl_vit-h.safetensors -P models/ipadapter
# Hyper-SD-LoRA (SDXL)
wget https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SDXL-8steps-CFG-lora.safetensors -P models/loras
# Fooocus Inpaint (Head)
wget https://huggingface.co/lllyasviel/fooocus_inpaint/resolve/main/fooocus_inpaint_head.pth -P models/inpaint
# Fooocus Inpaint (Patch)
wget https://huggingface.co/lllyasviel/fooocus_inpaint/resolve/main/inpaint_v26.fooocus.patch -P models/inpaint
Checkpoints
# Realistic Vision
wget https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/realisticVisionV51_v51VAE.safetensors -P models/checkpoints
# DreamShaper
wget https://huggingface.co/Lykon/DreamShaper/resolve/main/DreamShaper_8_pruned.safetensors -P models/checkpoints
# Flat2D AniMerge
wget https://huggingface.co/Acly/SD-Checkpoints/resolve/main/flat2DAnimerge_v45Sharp.safetensors -P models/checkpoints
# Juggernaut XL
wget https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/juggernautXL_version6Rundiffusion.safetensors -P models/checkpoints
# ZavyChroma XL
wget https://huggingface.co/misri/zavychromaxl_v80/resolve/main/zavychromaxl_v80.safetensors -P models/checkpoints
ComfyUIを起動
python main.py --listen
これで準備完了。
Kritaから接続
Kritaに戻って、AI Image GenerationのConfigurationから、
- Server Configurationで、"Custom Server (local or remote)"を選択
- カスタムサーバのURL(
http://IPアドレス:8188
)を入力 - "Connect"をクリック
で、左に緑の"Connected"が表示されれば、とりあえずはOKだと思う。
とりあえず適当にプロンプトを入れて生成してみた。これが通常の生成。
a race horse standing in the race course
大まかには動いてそう。
なお、キャンバスが広いと生成時間がかかるようなので、とりあえず512x512ぐらいにしておくと良いみたい。
何ができるのか?をこのあと確かめていく。
Live
事前にプロンプトを入力しておいて、あとは手書きで雑に書いていくと、リアルタイムでAIによる生成が行われる
以下が一番わかりやすかった
すべての機能は使うには、上にあるモデル以外にもインストールが必要っぽい。
とりあえずLiveだけでも凄いなと感じたが、Kritaの基本的な操作をまず理解した上で、いろいろ試したい。
と思って、公式のチュートリアルを見てみたが、うーん・・・わかりにくいと自分は感じてしまった。
あと、KindleでKrita入門本とかあるのだけど、軒並み古い。基本的な操作であればそれほど困らなさそうではあるのだけども。