SDXLをSD1.5で自動i2iしよう!(Stability MatrixでComfyUIの使い方から、Managerを使った簡単ワークフロー共有、生成ができるまで)
というツイートをしたところ、多少なりとも「そんなことできるんだ!」という声があったので、せっかくなのでやり方を共有しておきます。
あと、あまり記事にされていないかもしれない、Stability MatrixでComfyUI Managerを使う方法もついでに解説します。
SDXLをSD1.5で自動i2iして何が嬉しいか
SDXLはSD1.5に比べて、構図が上手だったり、描画するものに自由度があったり、破綻が少なかったりという傾向があります。
SD1.5はSDXLに比べて、画風を制御するためのEmbeddingやLoraが多かったり、以前からAIイラストをやっていた人からすると「慣れ親しんだ画風」が出るcheckpointがあったりします。
(最近はSDXLでも個性ある素晴らしい画風のモデルも出てきてますが)
SDXLをSD1.5でi2iすると、それらを兼ね備えたイラスト生成ができるのですが、2つのモデルを切り替えるのは面倒だし、わざわざt2iで生成したあとに画像を選んでi2iすること自体も面倒な時もあります。
じゃあもう生成した画像全部、自動でSDXLからSD1.5でi2iして、両方のメリットを兼ね備えた画像を大量に生成してしまおうじゃないか、というのが今回やりたいことです。
AUTOMATIC1111では基本的にできない(と思う)ので、ComfyUIを使います。
いいからworkflowだけくれ
という"分かっている"方はこちらをどうぞ。
ComfyUIよくわからん(準備編)
Comfy苦手…良く分からないからインストールもしてない…という方へ。
では、初期状態から生成ができるようになるまで解説しましょう!
ComfyUIのインストール自体は色々な方が紹介しているので割愛しますが、私はStability Matrixを使ってます。
ComfyUIだけじゃなくAUTOMATIC1111(Stable Diffusion WebUI)も相変わらず使うので、モデルの共有ができて超便利。
多分この記事に従っていけばインストールできます。
私の画面はこんな感じ。
ComfyUIのインストールが終わってWeb UIを起動すると、以下のような画面が表示されます。
ComfyUIの良いところの一つは、上述で公開したようなworkflow.jsonファイルを画面にドラッグアンドドロップすればワークフローがコピーできるところです。
つまり、他の人が作った「生成の仕組み」を、そのまま共有できます。
しかし、今回のworkflow.jsonファイルを試してみると、環境を作ったばかりだと以下のような画面が出てエラーが表示されます。
今回使うワークフローには「CR Text」というCustomノードが使われています。これはExtensionのようなもので、個別にインストールする必要があります。
しかし、具体的にCR Textがどこのページから手に入るのか非常に分かりにくい。そこで、そのあたりを勝手にやってくれる便利すぎるツールをインストールします。「ComfyUI-Manager」といいます。
gitが使える人は、readmeに従って、Stability Matrix内のComfyUI/custom_nodesにリポジトリをgit cloneすればOKです。
gitが使えない人は、Codeという緑色ボタンを押し、Download ZIPでコードを持って来ましょう。
この状態で、ComfyUIのWebUIを再起動すると、相変わらずエラーは表示されますが、右に「Manager」や「Share」の表示が追加されていれば成功です。
ここからがComfyUIの凄いところですが、「Manager」を押して「Install Missing Custom Nodes」を押すと
以下のような画面が表示されます。
これは、現在表示されているワークフローには存在するが、インストールされていないCustomノードのリストです。
「ComfyUI_Comfyroll_CustomNodes」というCustomノードが出てきました。
Installボタンを押して、インストールが完了したらWebUIを再起動します。画面を閉じていない場合は再起動後にしっかりブラウザの更新ボタンを押しましょう。
これで、「CR Text」が使えるようになりました。
つまり、先ほどインストールした「ComfyUI_Comfyroll_CustomNodes」に、「CR Text」が含まれていたのでした。
今回に限らず、何か他の人が共有しているワークフローを使うときにも同じことができます。
ちなみにComfyUI Managerは、新しく何かワークフローを作りたい時に、特定のCustomノードを検索してインストールする時も非常に便利です。(というかそっちがメイン)
色々と調べて使ってみてください。
ComfyUIよくわからん(ワークフロー解説編)
エラーは直ったけど、何をどうやって設定するの…という方へ。
ComfyUIは、AUTOMATIC1111(Stable Diffusion WebUI)などのWebUIで自動でやってくれていた処理を、もっと細かく分割してノードという形にしていて、それらを繋げることで処理の自由度をあげることができます。
ComfyUIを理解する一番の近道は、AUTOMATIC1111で生成した画像を、ComfyUIの画面にドラッグアンドドロップすることです。
これをすると、一般的なt2iの生成がどのようなノードの繋がりで作られているかが分かります。
LoraやEmbeddingを使った画像や、Hires.fixなどで画像を作って、見てみましょう。
i2iやinpaintされた画像のドラッグアンドドロップには対応していなかった気がするので、それらの処理がどうやってComfyUI上で再現できるかはググって理解してください。(まあComfyUIでInpaintは死ぬほど使いにくいと思っているので非推奨)
そのあたり理解していただいた前提で、今回のワークフローを解説します。
初期画像サイズと、一度に生成する枚数を指定します。
SDXLのモデル、VAEの指定と、生成方法の設定をします。
SDXLで生成した画像をi2iする前にアップスケールする場合の倍率指定です。(画像は2倍設定)
SD1.5でi2iする設定です。今回はここでLoraも入れています。
denoiseは調整してもいいかも。(1.0に近いほどSD1.5の強度が強くなります)
プロンプトの設定はこちら。
今回はSDXLとSD1.5で同じポジティブプロンプトを使い、個別のネガティブプロンプトを使っています。ノードの繋がりを見れば分かるかと思います。
勿論、それぞれ別だったり完全に共通のプロンプトにすることもできるので、その場合はノードを繋ぎ変えたりしてください。
準備が完了したら「Queue Prompt」を押して生成しましょう。
効果
SDXLにはAnimagine XL 3.1、
SD1.5にはオリジナルのマージモデルを使っています。
Animagine XL 3.1は結構剣を持つのが上手だったり、剣の構えの自由度も上がっている、素晴らしいモデルです。
一方で、好みは勿論あると思いますが、やっぱり画風はSD1.5の方が好きです。
私自身、「うちの子」をテーマに生成しているというのも大きく、「いつもの顔だ」と安心できます。
以上、似たような悩みを持ってる人がいるかもしれないので、その手助けとなれば。
ComfyUIはこんな感じに、何かを自動化することに非常に長けているので、おすすめです。是非遊んでみてください。
お読みいただきありがとうございました。