見出し画像

【ComfyUI+SDXL】描き込み強化を重視したHires.fixを組み込んだワークフロー

前回、AnimagineXL3.0でイラストを生成するための私のワークフローをご紹介しました。しばらくあのワークフローで生成していたのですが、いくつか気になる箇所が出てきたのでその解消を目的に、新しいワークフローを組み立ててみたので今回はそれを紹介します。


前回のワークフローで気になった箇所

前回のワークフローで気になったのは、主に以下の2点でした。

  • Kohya's HiresFixを使うと構図が単調になる

  • 最初からアップスケールした状態で生成するので、画像を選定するまでに時間がかかる

特に構図が単調になるのが問題で、「歩く」「座る」などのシンプルなプロンプトはちゃんと効いてくれるのですが、「なんかかっこいいポーズ」みたいなプロンプトになるとほぼ無視されてしまいます。
指定するプロンプトを工夫すればある程度は解消できそうですが、一部のプロンプトの効きが悪くなるのは問題なので、それを解消しつつしっかり描き込んでくれるワークフローを組んでみることにしました。

実際に組んだワークフロー

記事の最後にワークフローのjsonを置いておきます

最終的にこのようなワークフローになりました。
主にこちらのワークフローを参考にさせて頂いています。
かなり大きめのワークフローですが、よく考えられていてとても勉強になりました。

今回の記事のサムネイルに使用している画像も、こちらのワークフローを使用しています。

ワークフロー解説

それでは、このワークフローについて解説していきます。
といってもわたしはStable DiffusionやComfyUIの仕組み、イラスト生成AIについてちゃんと理解しているわけではないので、狙いが正しいのかはよくわかりませんが…。

要求するもの

まずはこのワークフローに求めたものから。

  • モデルのプロンプトへの反応を損ねないこと

  • webuiのHires.fixのように、アップスケールする際に描きこみが強化され、かつアップスケール時の破綻が少ないこと

  • 生成した画像がEagleに自動で読み込まれること

  • 複数の画像の中から、アップスケールする画像を選べること

1はKohya's HiresFixを使わなければ解決できるのですが、Kohya's HiresFixの描き込み強化は手放したくない。

Upscale前

グループノードにまとめていますが、Basic&Generation Infoでモデルとスケジューラー、画像サイズと生成する数を決めます。
よく忘れるのでAnimatineXLの推奨画像サイズをメモしておきました。

そこからmodelとclipをLoRAに接続。
個人的によく使うのでflatとboldlineのloraを読み込ませてグループノード化しています。
他のLoRAを使いたい場合や、使うLoRAの数を減らしたい場合はグループノードを解除したりして編集してみてください。
前回はここからmodelをKohya's HiresFixに直接繋いでいましたが、構図の問題があるのでここで一旦分岐。アップスケールするsamplerのみKohya's HiresFixを経由し、初回の生成用のsamplerやdetailerには、HiresFixを経由しないものを渡しています。

プレビュー&保存

こちらのセクションはプレビューと保存。
Preview Chooserを使っているので、アップスケール前に一度停止します。表示される画像の中から、アップスケールしたいものを選定してProgress selected imageボタンを押すことでdetailerやアップスケールが始まります。

Send Webp Image for Eagleにはすべてのフローを経由した画像が表示されます。その際、Eagleを起動させておくと自動で取り込まれます。
Eagleを起動していないとエラーになるので、もしEagleを使っていない場合はこのノードをSaveImageなどに差し替えてください。

Detailer

あんまりよくわかっていないのですが、アップスケール前にdetailerを経由します。一応、手と顔をdetailerで修正できるはず。
確実に破綻を防げるわけではないので、不要だなと思ったら外してしまってもいいかもしれません。

ControlNet(ノイズ法)

SD1.5(webui)にはControlNetを使って描き込みを強化するノイズ法がありました。これをComfyUI+SDXLでも使えないかなぁと試してみたのがこのセクション。
これを使うと、(極端に掛けた場合)以下のようになります。

こちらはControlNet Lineart適用前
極端に掛けるとこんな感じに
個人的にはこれくらいの塩梅が好み

ただ、SD1.5の時のようにとにかく書き込みが増えるわけではないですね。細かい部分はより細かく、ぼかした部分はよりボケるようになりました。元々SDXL自体が高画質なので、これは万人向けではないような気がします。

デフォルトでは適用されないようになっています。
興味がある方はbypassを解除して、positiveとnegativeをUpscalerに繋いでみてください。

Upscale

Upscaleセクションでは、Kohya's HiresFixのmodelを受け取って2倍にアップスケールしています。
通常のLatent Upscaleや他のHiresFix系ノードよりも描き込み量が増えますし、Kohya's HiresFix本来の使い方と比べても見劣りしない描き込み量になりました。
ここからSend Webp Image for Eagleに送られて画像が保存されます。

これだけでも横2000px程度のサイズになるので充分かなと思うのですが、さらにアップスケールしたい場合にはUltra Upscaleセクションを経由させるとさらに1.5倍拡大することができます。
ただ、さすがにこのサイズになると生成に時間が掛かるので、デフォルトではbypassしています。

まとめ

こんな感じで、描き込み量強化を狙ったHiresFixのワークフローを組んでみました。
個人的には手応えあり。
Lama Cleanerを組み込みたい欲もあるのですが、まだComfyUI版のことは全然わかっていないので、それは次の機会に。

それでは、最後にjsonファイルを置いておきますね。
ご意見、ご指摘お待ちしております!

この記事が気に入ったらサポートをしてみませんか?