ComfyUI_examples : Flux Examples の Regular Full Version : Flux Dev セクションで提供されている、FLUX.1 dev 用ワークフローで使用されているノードについて説明します。
FLUX.1 : ComfyUI 公式 FLUX.1 dev 用ワークフロー詳細
作成 : Masashi Okumura (@ClassCat)
作成日時 : 08/16/2024
* 本記事は comfyanonymous.github.io/ComfyUI_examples の FLUX 用ワークフローと、ComfyUI Wiki を参考にしています :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
◆ お問合せ : 本件に関するお問合せは下記までお願いします。
- クラスキャット セールス・インフォメーション
- sales-info@classcat.com
- ClassCatJP
FLUX.1 : ComfyUI 公式 FLUX.1 dev 用ワークフロー詳細
この記事では、ComfyUI_examples : Flux Examples の Regular Full Version : Flux Dev セクションで提供されている、以下の FLUX.1 dev 用ワークフローで使用されているノードについて説明します :
(FLUX.1 schnell 用ワークフローは既存のノードのみで構成されていましたが、) FLUX.1 dev 用ワークフローは FLUX 固有の新規ノードも利用して構成されています。これらのノードの導入により、FLUX のサンプリングプロセスが制御しやすくなっています。
※ FLUX.1 dev のワークフローでのみ使用されているノード名は グリーン で表記しています。
※ FLUX.1 schnell のワークフローは こちら です。
ローダー・ノード
モデル本体、CLIP、そして VAE をロードするためのノード群です。
これらは、”Load Diffusion Model” ノードでロードするファイル名が異なる以外は、FLUX.1 schnell のワークフローと同様です。
Load Diffusion Model
Load Diffusion Model ノードは以前は UNET Loader ノードと呼称されていました。U-Net モデルを名前でロードするように設計されており、システム内で事前訓練済み U-Net アーキテクチャの使用を簡単にします。
モデルファイルは ComfyUI/models/unet に配置されている必要があります。
DualClipLoader
DualCLIPLoader ノードは、2 つの CLIP モデルを同時にロードするように設計されており、両方のモデルの機能の統合や比較を必要とする操作を簡単にします。
キッチンで料理を準備していて、塩と胡椒 (こしょう) の 2 つの異なるスパイスの瓶があるとします。それぞれのスパイスは料理に独特な風味を与えます。そして、両方の瓶を同時に使用して料理に味付けすることを可能にする特別なツールがあると想像してください。
これは DualCLIPLoader ノードに類似しています。2 つの異なる CLIP モデルを同時にロードして使用することを可能にしますので、それらの独自の機能とスタイルを組み合わせてより多用途で洗練された AI 生成アートを作成することができます。
Load VAE
Load VAE ノードは、変分オートエンコーダ (VAE) モデルをロードするために設計されており、標準 VAE と近似 VAE の両方を処理できるように特にカスタマイズされています。
名前による VAE のロードをサポートし、’taesd’ と ‘taesdxl’ モデルに特化された処理も含み、VAE の特定の設定に基づいて動的に調整します。
補助的ノード (出力のみを持つノード)
(変更可能なプロパティは持ちますが、) 他のノードからの入力はなく、他のノードへの出力のみを持つノード群です :
RandomNoise
RandomNoise ノードは与えられたシードに基づいてランダムノイズを生成します。シード値 (noise_seed) を使用して一貫して再生成可能なランダム化された要素を提供することで、変動性をプロセスに導入するように設計されています。
Width / Height
Width / Height ノードはプロパティ設定変更を簡単にするための便宜上のもので、FLUX.1 特有のノードではありません。
KSampler Select
KSamplerSelect ノードは、euler のような指定されたサンプラー名に基づいて特定のサンプラーを選択するように設計されています。サンプラー選択の複雑さを抽象化し、ユーザがタスクに合わせて様々なサンプリング・ストラテジー間で簡単に切り替えることを可能にします。
主要ノード (入力と出力の両方を持つノード)
他のノードからの入力と、他のノードへの出力の両方を持つノード群について説明します。
EmptySD3LatentImage
Width / Height ノードからの入力を使用して、指定された次元とバッチサイズのブランクの潜在空間表現を生成するように設計されています。
ModelSamplingFlux
FLUX 用のシフト・パラメータを統合することでモデルのサンプリング機能を強化し、サンプリング過程を細かく制御できるように設計されています。max_shift, base_shift は画像生成の際のシフト量を調整するパラメータで、画像生成の安定性と柔軟性のバランスが取れます。
※ このケースでは、出力 ‘model’ は “Basic guider” と “Basic scheduler” への入力になります。
Clip Text Encode (Prompt)
CLIPTextEncode ノードは、CLIP モデルを使用してテキスト入力をエンコードし、テキストを生成タスクで条件付けに利用できるような形式に変換する ように設計されています。それはテキストのトークン化とエンコーディングの複雑さを抽象化し、テキストベースの条件付けベクトルを生成するための合理的なインターフェイスを提供します。
入力
- ‘text’ パラメータはエンコードされるテキスト入力です。これはエンコーディング・プロセスの情報の主要ソースであるため、出力条件付けベクトルを決定する上で重要な役割を果たします。
- ‘clip’ パラメータはテキストのトークン化とエンコーディングに使用される CLIP モデルを表します。これはテキスト入力を条件付けベクトルに変換するために不可欠で、生成出力の品質と関連性に影響します。
※ このケースでは、DualClipLoader ノードからの出力が入力になります。
出力
- 出力 ‘conditioning’ は CLIP モデルによりエンコードされた、入力テキストのベクトル表現です。関連性と一貫性のある出力を生成するために生成モデルをガイドするための重要なコンポーネントとして機能します。
※ このケースでは、この出力は FluxGuidance への入力になります。
FluxGuidance
FluxGuidance ノードは FLUX 用の新規ノードで、FLUX.1 の CFG ガイダンスの調整を可能にします。
このワークフローでは、”Clip Text Encode” ノードと “BasicGuider” ノードの間に FluxGuidance ノードを挟んでいます。
※ この出力は “Basic Guider” への入力になります。
BasicGuider
BasicGuider ノードは、モデルと条件付け入力を利用して、AI アート生成におけるガイダンス・プロセスを簡単にするように設計されています。その主目的は、モデルへの条件付けの適用を効率化することで、生成されたアートが指定された条件に従うことを確実にします。このノードは、特定のプロンプトや条件を使用して AI モデルの出力に影響を与え、創造プロセスをより制御された予測可能なものしたいアーティストに特に役立ちます。BasicGuider の使用により、条件付けをモデルに簡単に設定し適用することができて、生成されたアートワークの品質と関連性を強化できます。
※ このケースでは、入力は (ModelSamplingFlux の出力) ‘model’ と (FluxGuidance の出力) ‘conditioning’ で、
出力は SamplerCustomAdvanced への ‘guider’ です。
BasicScheduler
BasicScheduler ノードは、提供されるスケジューラ、モデルとノイズ除去パラメータに基づいて、拡散モデル用のシグマ値のシークエンスを計算するように設計されています。拡散過程を調整するためにノイズ除去因子に基づいて合計ステップ数を動的に調整します。
※ FLUX.1 dev のデフォルトは 20 ステップです。
※ このケースでは、入力は (ModelSamplingFlux の出力) ‘model’、出力は SamplerCustomAdvanced への ‘sigmas’ です。
SamplerCustomAdvanced
SamplerCustom ノードは、柔軟でカスタマイズ可能なサンプリング機構を提供するように設計されています。特定のニーズに合わせて、ユーザが様々なサンプリング・ストラテジーを選択して構成することを可能にし、サンプリング過程の適応性や効率性を強化します
そして SamplerCustomAdvanced ノードは、生成モデル・フレームワーク内でのサンプリング過程のための高度なカスタマイズ・オプションを提供します。特定の要件や実験的なセットアップに対して調整可能な洗練されたサンプリング・ストラテジーの実装を可能にし、生成モデリングのタスクの柔軟性と効果性を強化します。
入力
- ‘noise’ パラメータは、サンプリングプロセスを摂動させるために使用されるノイズで、変動を導入して生成モデルの空間をより徹底的に探索する方法を提供します。
※ このケースでは、RandomNoise ノードの出力が該当します。
- ‘guider’ パラメータは、生成を望ましい結果に向けるか、望ましくないものから遠ざけるような、サンプリング過程のためのガイディング (誘導) 機構を指定します。
* BasicGuider ノード出力。
- ‘sampler’ パラメータは、使用される特定のサンプリング・アルゴリズムやストラテジーを定義し、サンプリング過程のカスタマイズを可能にします。
* KSamplerSelect ノード出力。
- ‘sigmas’ パラメータは、サンプリング過程の異なるステップで適用されるノイズレベルを表し、変動の導入に対する制御の微調整を可能にします。
* BasicScheduler ノード出力。
- ‘latent_image’ パラメータは、サンプリング過程用の初期状態あるいはコンテキストを提供し、生成のための基底 (basis) として機能します。
* EmptySD3LatentImage ノード出力。
出力
- ‘output’ は、サンプリング過程の結果を提供します、これは指定されたサンプリング・ストラテジーを提供した後の生成されたデータを反映しています。
※ このケースでは、VAE Decoder ノードへの入力 ‘samples’ になります。
- ‘denoised_output’ は、ノイズ削減された生成データを提供し、よりクリアで洗練された結果の実現におけるサンプリング・ストラテジーの有効性を示します。
※ このケースでは使用しません。
VAE Decode
VAEDecode ノードは、指定された変分オートエンコーダ (VAE) を使用して潜在表現を画像にデコードするように設計されています。
圧縮されたデータ表現から画像を生成し、潜在空間エンコーディングから画像の再構築を簡単にするような目的で機能します。
入力
- ‘samples’ パラメータは、画像にデコードされる潜在表現を表します。これは (そこから) 画像が再構築される圧縮データを提供しますので、デコーディング処理に対して重要です。
※ このケースでは、SamplerCustomAdvanced ノードの出力です。
- ‘vae’ パラメータは潜在表現を画像にデコードするために使用される変分オートエンコーダ・モデルを指定します。それはデコーディング機構と再構築された画像の品質を決定するために不可欠です。
出力
- ‘image’ 出力は、指定された VAE モデルを使用して、提供された潜在表現から再構築された画像です。
画像保存ノード
Save Image
SaveImage ノードは、画像をディスクに保存するように設計されています。テンソルから適切な画像形式に画像を変換し、オプションのメタデータを適用し、そして設定可能な圧縮レベルで画像を指定された位置に書き込むプロセスを処理します。
以上