見出し画像

今から始めても遅くない!ComfyUI初心者ガイド - ②フロー作成の考え方



はじめに


前回の記事では、ComfyUIの基礎を学びました。

今回は、「何故そのようなフローになるのか」という所がキーポイントになります。
ゼロから組み上げる際に、知識が無い状態からだと、どのように組んでいいのかが分かりません。

そこで、ComfyUIを用いて画像生成AIのフロー作成の考え方にフォーカスを当ててみます。


画像生成AIの処理工程を学ぶ


ComfyUIでフローをゼロから作る際に重要になってくるのが、画像生成AIの工程になります。

現在、主に使用されている拡散モデルベース(SD1.x/SDXL等)やTransformerモデルベース(SD3/FLUX.1等)は、詳細なプロセスは全く異なりますが、どちらも拡散プロセスがあることに変わりはありません。

SD1.xやSDXLではU-Netを利用した拡散モデル、SD3やFLUX.1はTransformerベースの拡散変換器(DiT/MMDiTが含まれる)を利用しています。

この大枠を理解することで、ComfyUIの画像生成フローへの理解も深まります。
またその逆も然りです。

ComfyUIの画像生成フローを理解することで、拡散モデルへの理解も深まります。


何故、画像生成フローへの理解が必要なのか


ComfyUIでフローをゼロから作る際に重要になってくるのが、画像生成AIのプロセスになります。

「通常利用するのに、ここまで理解する必要あるのか?」という声もあるかと思います。
確かに、ライトユーズな使い方であれば、特段意識する必要はないと思います。

しかし近年、AI技術は数か月毎に目まぐるしい進化を遂げており、その新技術を取り入れていきたい!他のユーザと差別化を図りたい!と思っている方は、ベースとなる一連のプロセスを少なからず把握しておかなければ、新技術が出た際に柔軟に対応できなくなります。

何故かというと、ここ1年で進化を遂げてきた新技術の傾向を見ても、既存技術がベースにあり、その盤上で構成され、改良されてきているものが多いためです。

その為、これから出てくる新技術に柔軟に対応していく為には、ベース技術への理解を深める必要があると思われるからです。


画像生成フローの大枠


まず、SD1.x~SDXLまでのアーキテクチャを例に取り上げてみましょう。

StableDiffusionのプロセス概要

私の記事にちょくちょく出てくるこの図。
これを見て、よくわからん!という方も多いと思います。

なので、簡単に略図フローを作ってみました。

画像生成フローの概略

色々と難しい単語や構成を図解しても分かりにくくなると思ったので、要点だけ纏めてめっちゃ端折ってます。

イメージ的にはこんな感じです。

これを、ComfyUIのフローに割り当てて、図解してみます。

画像生成フローとComfyUIノードの関係図

こう当ててみると、分かりやすくなってきませんか?

このフローが、ComfyUIにおいて基本的なベースになります。


複雑なフローへの応用


ここまで基礎となるフローへの習熟の仕方と構成をお伝えしてきました。
ここからは、より複雑なフローへの応用を考えてみましょう。

画像生成の基本的なフローは定型化されています。
ComfyUIのデフォルトのワークフローでも、画一化されているのが確認できます。

ComfyUIのデフォルトワークフロー

ComfyUIのデフォルトのワークフローを用いて、高度なワークフローを作っていきます。
皆さんも一緒に考えながら作っていきましょう。

以下の要件に沿って作っていきたいと思います。

  • 外部アップスケールモデルを利用する

  • アップスケール倍率で指定出来るようにする

  • アップスケールモデルの倍率適用をさせない
    ※例えば、4x-UltraSharpだと適用倍率が4倍であるが、これを適用させない

  • アップスケール前の画像もプレビューとして表示させる

  • FreeUの適用をする(今回はFreeU_V2を使用する)

  • LoRAを適用する(今回はLoad LoRAを使用する)

アップスケールに関しては、A1111 WebUIのHires.fixとUpscaleに近いものを作ろうという感じです。

ちなみに、アップスケールモデルの倍率適用を制御するには、標準装備のノードのみだと再現が難しい為、ComfyUI-Managerを利用して、必要なカスタムノードも導入して作成する必要があります。

ComfyUI-Managerでカスタムノードを探す際は、以下から検索可能です。

ComfyUI-Manager
Custom Nodes Manager

今回、以下カスタムノードとして利用します。

このカスタムノード内にある、「Upscale by Factor with Model」を使用します。

これは、アップスケールモデルを指定して、アップスケール方式(Upscale Method)とアップスケールモデル適用係数(Factor)を指定することができます。

このノードを利用することで、A1111 WebUIに近い挙動をすることができます。

では、作っていきましょう!

恐らく、ComfyUIを始めたばかりの方はLoad LoRAとFreeUの接続に悩むのではないでしょうか。
接続パターンは2パターンあります。

Load LoRAを先に接続するパターン
FreeUを先に接続するパターン

どちらでも生成は可能ですが、構図変化がある可能性があります。

これは、FreeUの適用範囲が異なる為です。
ベースモデルのみに適用させるか、ベースモデル+LoRAに適用させるか、お好みで構成することができます。

今回は、接続方法について、1つずつの解説は割愛します。
接続方法については、前回の記事を参考に繋げてみてください!

完成系がこちらになります。
このサンプルでは、ベースモデル+LoRAにFreeUを適用させています。

完成系のワークフロー

前回記事のワークフローよりも少し複雑になったかと思います。

では、いくつか生成してみます。

ワークフロー実行
出力イメージ
Upscaling後の出力画像

前回記事のアップスケールよりも、綺麗にアップスケール出来ていますね。

皆さんは、ワークフローの構築できましたでしょうか。

今回構築したワークフローを載せておきますので、自身が作成したワークフローとの差分を見るなり、ご自由にお使いください。


総括


自身でワークフローを作っていくにあたって、どこにどう配置してどのような機能があるか、というのはやはりある程度の経験値が必要になります。

なので、実際に作ったり他の方が作ったワークフローを修正したりしないと分からないことが数多くあります。

しかし、それらを考える為には基本構造が分かっていないと応用することができません。


おわりに


如何でしたでしょうか。
今回は、ComfyUIを使用するにあたって、ワークフローの構築の基礎的な考え方と、その応用について学びました。
まだまだComfyUIでは複雑なことができるので、順次お伝えして、ComfyUI初心者の方のお役に立てればと思います。

是非、皆さんもComfyUIを使ってみましょう!(宣伝)


いいなと思ったら応援しよう!

とーふのかけら
よろしければサポートお願いします!✨ 頂いたサポート費用は活動費(電気代や設備費用)に使わさせて頂きます!✨

この記事が参加している募集