ComfyUIのワークフローを理解する:第1章 - ワークフローの基本構成
はじめに
ComfyUIのノードの組み立て方、最初は全く分からないですよね。
私もまさにその状態です。
ComfyUIの環境が整ったら、まずは他の人が作成したワークフローを動かして、そのすごさに感動しますよね。
私もInIchiGaSanのワークフローを実際に動かして、その感動を味わいました。
しかし、動かすことに夢中になるあまり、理解が追いついていないのが現状です。
意味が分からないと、やはり自分でワークフローを作成するのは難しいですよね。
そこで、学びの一環として、InIchiGaSanが提供しているワークフローをしっかりと理解することに決めました。
特に動画生成のワークフローを理解すれば、他のワークフローの構築も容易になるのではと思います。
InIchiGaSanの3つのワークフローを徹底的に学ぶことにしました。
一つの記事にまとめるには内容が多いため、3章の連載としました。
ComfyUIのワークフローを理解する:第1章 - ワークフローの基本構成
ComfyUIのワークフローを理解する:第3章 - vid2vidのワークフローの理解ComfyUIのワークフローを理解する:第4章 - AnimateAnyoneのワークフローの理解
AnimateDiffによるvid2vidは処理が重すぎました。また、AnimateAnyoneは動作しませんでした。動画生成にはmimic motionが適していると感じています。txt2vidについて理解が進んだことで、一定のワークフローは把握できましたので、本シリーズは終了とさせていただきます。ComfyUIよりもDiffusersの方がより広い可能性を秘めているため、今後はDiffusersを利用していくことに決めました。
ワークフローとは
ComfyUIのワークフローは、画像生成プロセスを視覚的に構築するためのツールです。以下は、ComfyUIのワークフローの主な構成要素です。
キャンバス
ワークフローを構築するための背景全体。ここにノードを配置していきます。ノード
画像生成の各ステップを表す要素。例えば、モデルの読み込み、プロンプトの設定、画像の生成などの処理を行います。ノードには、入力フィールドなどのウィジェットが含まれることがあります。ワイヤー
ノード間を接続する線。情報の流れを示し、ノード同士を結びつけます。ウィジェット
操作や設定を行うための小さな部品。これらはノードの一部として使われることが多いです。ワークフロー
複数のノードを組み合わせて構築された一連の処理。これにより、画像生成のプロセスを再現可能な形で管理します。
これらの要素を組み合わせることで、ComfyUIを使って効率的に画像生成のワークフローを構築できます。
ノードの内容を理解し、ノードの繋ぎ方を把握しないと、ワークフローを作成できないことが分かります。
画像生成の基本的な流れが分からないとどこにどのノードを配置すればいいか分かりません。
画像生成の基本的な流れ
こちらの記事の推論の箇所が分かりやすいです。
こちらの動画も分かりやすいです。
テキストエンコーディング:
まず、テキストプロンプトをCLIPなどのテキストエンコーダを使ってエンコードします。これにより、テキストが潜在空間のベクトル(Latent Vector)に変換されます。
初期潜在画像の生成:
次に、VAE(Variational Autoencoder)を使って初期の潜在画像を生成します。VAEは、画像を潜在空間にエンコードし、その潜在表現をデコードして画像を生成します。
ノイズの追加と除去(KSampler):
KSamplerは、生成された潜在画像にノイズを追加し、そのノイズを除去するプロセスを繰り返します。これにより、潜在空間の画像が徐々に高品質な画像に変換されます。
最終画像の生成:
最終的に、VAEを使って潜在空間の画像をデコードし、最終的な高解像度の画像を生成します。
このプロセスにより、テキストプロンプトから高品質な画像を生成することができます。
モデル
モデルは、入力データを受け取り、そのデータに基づいて新しい画像や動画を生成するためのアルゴリズムや数学的な構造のことです。
既存のデータを学習し、そのパターンや特徴を基に新しいデータを生成します。
画像や動画生成で使用されるモデルの種類は沢山ありますが、次のポイントを理解しておけば問題なさそうです。
モデルは入力データを受け取り、新しいデータを生成する。
モデルは学習された結果であり、追加学習が可能である。
モデルによって入力データが異なり、生成されるデータも異なる。
各ステップの処理はノードが行いますが、ノードの中にはモデルを使用して処理を行うものもあります。
どのようなノードがあるかは第2章で見ていくことにして、ここではどのようなモデルがあるのかを一覧でさっと見ておきます。
画像生成・編集
BLIP_MODEL: 視覚と言語の統合理解と生成
CustomNet: カスタマイズされたオブジェクト生成
IP-Adapter: 画像をプロンプトとして使用
InstanceDiffusion: オブジェクトの位置や属性を制御
PFG: プロンプトなしで画像生成
T2I-Adapter: テキストから画像生成
T2I-Style: 特定のスタイルを適用
VAE: データの潜在表現を学習し新しいデータを生成
clip: テキストと画像のペアを学習
clip_vision: CLIPモデルの視覚部分
controlnet: 画像生成モデルの制御
depthanything: 画像の深度情報を推定
diffusion_model: ノイズを段階的に加え逆拡散プロセスで再構成
efficient_sam: オブジェクトのセグメント化
embeddings: データを低次元のベクトルに変換
gligen: テキストと画像の関係を理解し生成
sam: 任意のオブジェクトをセグメント化
unclip: 意味的に似た画像を生成
upscale: 画像の解像度を上げる
zero123: 複数の視点の画像を生成
顔認識・修復
CodeFormer: 画像や動画の顔修復
Face Recognition: 顔認識技術
GFPGAN: 顔画像の高画質化
face_restore: 顔画像の修復
facexlib: 顔画像処理ライブラリ
insightface: 顔認識や顔属性推定
Shape Predictor: 形状やランドマークの予測
動画生成・編集
animatediff: アニメーションの生成や編集
ID-Animator: ID固有の人物動画を生成
instantid: 様々なポーズやスタイルのキャラクター生成
motion lora: 動作に関連するLow-Rank Adaptation技術
その他
GroundingDINO: オープンセットの物体検出
IC-Light: 画像の光源や照明効果を調整
photomaker: 特定の人物の特徴を保持しながら画像生成
Ultralytics: YOLOシリーズの物体検出モデル
checkpoint: モデルの学習状態を保存
分かりづらいControlNet、LoRA、Motion LoRAについてもまとめました。
ControlNet
ControlNetは、Stable Diffusionの拡張機能で、画像生成プロセスにおいてよ
り詳細な制御を可能にするモデルです。これにより、プロンプトだけでは実現できない細かな条件を指定して画像を生成することができます。以下に、ControlNetの主な種類とその特徴を紹介します。
Canny
特徴: エッジ検出を行い、画像の輪郭を強調します。
用途: 線画や輪郭を基にした画像生成に使用されます。
Depth
特徴: 画像の深度情報を推定し、3D効果を持つ画像を生成します。
用途: 立体感のある画像生成に使用されます。
NormalMap
特徴: 画像の法線マップを生成し、表面の詳細な凹凸を表現します。
用途: 質感や表面のディテールを強調した画像生成に使用されます。
OpenPose
特徴: 人体のポーズを検出し、骨格情報を基に画像を生成します。
用途: 特定のポーズを取った人物の画像生成に使用されます。
MLSD
特徴: 直線検出を行い、画像内の直線的な構造を強調します。
用途: 建築物や機械など、直線が多い画像の生成に使用されます。
Lineart
特徴: 画像から線画を抽出し、線画を基にした画像を生成します。
用途: アニメ風の画像生成や色塗りに使用されます。
SoftEdge
特徴: 柔らかいエッジを検出し、滑らかな輪郭を持つ画像を生成します。
用途: 柔らかいタッチのイラストや写真の生成に使用されます。
Scribble/Sketch
特徴: 手描きのスケッチや落書きを基に画像を生成します。
用途: アート作品やコンセプトアートの生成に使用されます。
Segmentation
特徴: 画像をセグメント化し、各部分を異なるカテゴリに分類します。
用途: 特定のオブジェクトや領域を強調した画像生成に使用されます。
Shuffle
特徴: 画像のピクセルをシャッフルし、ランダムなパターンを生成します。
用途: 抽象的なアートやパターンの生成に使用されます。
Tile/Blur
特徴: 画像をタイル状に分割し、ぼかし効果を適用します。
用途: モザイクアートや背景の生成に使用されます。
Inpaint
特徴: 画像の一部を修正し、欠損部分を補完します。
用途: 画像の修復や部分的な編集に使用されます。
InstructP2P
特徴: テキスト指示に基づいて画像を生成します。
用途: 特定の指示に従った画像生成に使用されます。
Reference
特徴: 参照画像を基に新しい画像を生成します。
用途: スタイルや構図を参考にした画像生成に使用されます。
Recolor
特徴: 画像の色を変更し、異なるカラーパレットを適用します。
用途: カラーバリエーションの生成に使用されます。
Revision
特徴: 生成された画像を修正し、品質を向上させます。
用途: 画像の品質向上や微調整に使用されます。
T2I-Adapter
特徴: テキストから画像生成を行うためのアダプターモデルです。
用途: テキストプロンプトに基づいた画像生成に使用されます。
IP-Adapter
特徴: 画像をプロンプトとして使用し、テキストから画像生成を行うためのモデルです。
用途: 画像とテキストの組み合わせによる画像生成に使用されます。
LoRA(Low-Rank Adaptation)
LoRA(Low-Rank Adaptation)は、画像生成AIや大規模言語モデルを効率的に調整するための学習モデルです。LoRAを使用することで、特定のタスクやジャンルに合わせた出力が可能になります。以下に、LoRAモデルの主な種類とその特徴を紹介します。
リアル系LoRA
特徴: リアルな人物画像や風景画像の生成に特化。
用途: 写真風の画像生成やリアルなキャラクターの作成。
アニメ系LoRA
特徴: アニメ風のキャラクターや背景を生成。
用途: アニメやマンガのキャラクター作成、アニメ風のイラスト生成。
スタイル特化型LoRA
特徴: 特定のアートスタイルやデザインに特化。
用途: 3D風、映画風、絵画風など、特定のスタイルに合わせた画像生成。
キャラクター特化型LoRA
特徴: 特定のキャラクターやポーズ、服装に特化。
用途: 同一キャラクターの一貫した画像生成や、特定の服装やポーズを持つキャラクターの作成。
背景特化型LoRA
特徴: 特定の背景やシーンの生成に特化。
用途: ファンタジー風景、都市景観、自然風景などの背景画像生成。
服装特化型LoRA
特徴: 特定の服装やファッションスタイルに特化。
用途: キャラクターの服装バリエーションやファッションイラストの生成。
ポーズ特化型LoRA
特徴: 特定のポーズや動作に特化。
用途: キャラクターの動作やポーズを詳細に指定した画像生成。
動物特化型LoRA
特徴: 動物やペットの画像生成に特化。
用途: リアルな動物画像やキャラクター化された動物の生成。
ファンタジー系LoRA
特徴: ファンタジー風のキャラクターや背景を生成。
用途: ファンタジー小説やゲームのキャラクター、背景の作成。
SF系LoRA
特徴: サイエンスフィクション風のキャラクターや背景を生成。
用途: SF映画やゲームのキャラクター、背景の作成。
歴史的スタイル特化型LoRA
特徴: 特定の歴史的時代や文化に基づいたスタイルを生成。
用途: 中世ヨーロッパ、江戸時代の日本、古代エジプトなど、特定の歴史的背景を持つ画像生成。
ホラー系LoRA
特徴: ホラーやゴシック風のキャラクターや背景を生成。
用途: ホラー小説やゲームのキャラクター、背景の作成。
メカニカル系LoRA
特徴: ロボットやメカニカルなデザインに特化。
用途: SFやメカニカルデザインのキャラクター、背景の生成。
ファッション特化型LoRA
特徴: 最新のファッションや特定のスタイルに特化。
用途: ファッションイラストや広告用の画像生成。
食べ物特化型LoRA
特徴: 食べ物や料理の画像生成に特化。
用途: レシピ本や料理ブログの画像生成。
Motion LoRA(Low-Rank Adaptation for Motion)
Motion LoRA(Low-Rank Adaptation for Motion)は、画像生成AIにおいてアニメーションや動きの制御を行うためのモデルです。これにより、静止画だけでなく、動きのあるシーンやキャラクターのアニメーションを生成することが可能になります。以下に、Motion LoRAの主な種類とその特徴を紹介します。
ズームイン(Zoom In)
特徴: カメラが被写体に向かって近づく動きを生成。
用途: 被写体に焦点を当てるシーンや、緊張感を高める演出に使用。
ズームアウト(Zoom Out)
特徴: カメラが被写体から遠ざかる動きを生成。
用途: シーン全体を見せるための広がりを持たせる演出に使用。
パン左(Pan Left)
特徴: カメラが左方向に移動する動きを生成。
用途: シーンの移動や視点の変更に使用。
パン右(Pan Right)
特徴: カメラが右方向に移動する動きを生成。
用途: シーンの移動や視点の変更に使用。
ティルトダウン(Tilt Down)
特徴: カメラが下方向に傾く動きを生成。
用途: 上から下への視点移動や、地面に焦点を当てるシーンに使用。
ティルトアップ(Tilt Up)
特徴: カメラが上方向に傾く動きを生成。
用途: 下から上への視点移動や、空や建物の上部に焦点を当てるシーンに使用。
ローリング時計回り(Rolling Clockwise)
特徴: カメラが時計回りに回転する動きを生成。
用途: ダイナミックなシーンや緊張感を高める演出に使用。
ローリング反時計回り(Rolling Anticlockwise)
特徴: カメラが反時計回りに回転する動きを生成。
用途: ダイナミックなシーンや緊張感を高める演出に使用。
自分で進められない人は、DXパーティーのマンツーマンオンラインレッスンで一緒にやりましょう!
マンツーマンオンライン講師を募集しています。 特に視聴者数が少ないDX・デジタル領域に取り組んでいるYouTube配信者を積極的に募集しています。 DXパティーのレッスンとYouTubeチャンネルの収益化の両方から収益を得て、安定した収入を目指しましょう。