この画像は AI によって生成されました

エッジを制御基準として使用するのと同様に、深度マップを使用して制御する方法もあります。この制御方法は、モデルにコンテンツ位置の深度情報を提供し、元の画像と同様のコンテンツ位置深度を持つ画像を生成することができます。

例えば、以下の図のように、Fluxモデルに画像を入力し、Fluxモデルによって元の画像と同様のコンテンツ位置を持つ画像を生成しました。生成された画像は、表情のわずかな変化を除いて(主に私のプロンプトが良くないため)、キャラクターの位置関係と姿勢が元の画像とほぼ同じであることがわかります。

1. Flux Depth モデルのダウンロード

Cannyと同様に、現在は2種類のFlux Depthモデルがあります。1つはFlux公式によるFlux Depth LoRAの実装で、もう1つは他のオープンソース組織によるFlux Depth Controlnetの実装です。前者はControl LoRA技術に基づいており、後者はControlNet技術に基づいています。

どちらもダウンロードして試してみることができます:

  • Flux公式は2つのDepth LoRAモデルファイルを提供しています。要件に応じて選択できます:
    • 1つは、Flux Depth LoRAとFlux Devを含むモデルです。こちらからこのモデルをダウンロードし、/models/diffusion_models/フォルダに配置します。ただし、このモデルはFlux Devモデルを含むため、かなり大きく、約24GBです。ただし、モデル読み込み時に1つのモデルのみを読み込めば良いという利点があります。
    • もう1つは、こちらから別のFlux Depth LoRAモデルをダウンロードし、models/loras/フォルダに配置できます。このモデルファイルは約1.24GBです。
  • 現在、Flux Depth Controlnetモデルを実装している2つのオープンソース組織があり、要件に応じて選択できます:
    • 最初は、Shakker-LabsとInstantXが共同で開発したDepth ControlNetモデルです。このモデルをダウンロードし、models/controlnet/フォルダに配置する必要があります。また、ダウンロード時にファイル名をinstantx_flux_depth.safetensorsに変更すると、その後の使用が容易になります。
    • もう1つは、XLabsが開発したFlux Depth controlnet v2モデルです。このモデルもダウンロードし、models/controlnet/フォルダに配置する必要があります。

2. Flux Depth LoRA ワークフロー

もし、モデルをダウンロードしたバージョンがLoRAとDevモデルを組み合わせたものであれば、前の章のFlux Edge Controlをベースにしてワークフローを修正するだけです。または、Comflowyからこのワークフローをダウンロードして使用します。

メソッドは非常に簡単です。① Diffusionノードグループ内のflux CannyをDepthモデルに置き換え、②Cannyノードを任意のDepthノード(お気に入りのDepthノードを使用できます)に置き換え、最後にDepthノードとLoad Imageノードを接続します。Depthノードの効果をプレビューしたい場合は、DepthノードとPreview Imageノードを接続して、Depthノードによって出力された深度マップを確認できます。

もし、別のFlux Depth LoRAモデルをダウンロードした場合は、Load Diffusion Modelノード(図①)の後にLoraLoaderModelOnlyノード(図②)を追加するだけです。そして、Diffusionノードグループ内のflux dev depthモデルをflux devに置き換え、LoraLoaderModelOnlyノードでダウンロードしたFlux Depth LoRAモデルを選択します。

2つのバージョンの効果はほぼ同じです。

3. Flux Depth Controlnet ワークフロー

3.1 InstantX バージョン

まず、ControlNetモデルを実行すると余分なGPUメモリを占有するため、Flux ComfyUIワークフローでGGUFバージョンのFluxワークフローをロードし、それをベースにしてワークフローを修正します。または、Comflowyからこのワークフローをダウンロードして使用します。

このバージョンでは、以下の手順を実行します:

  1. Apply ControlNet with VAEノード(図①)を追加します。それをLoad VAE(図②)、Load ControlNet Model(図②)、および任意のDepthノード(図③)に接続します。
  2. Load ControlNet ModelノードでダウンロードしたFlux Depth Controlnetモデルを選択します。
  3. 生成された画像のサイズが入力された深度マップのサイズと同じであることを確実にするため、Get Image Sizeノード(図④)を追加し、それをSD3LatentImageノード(図⑤)に接続します。そのため、生成された画像のサイズは入力された深度マップのサイズと同じになります。

また、GGUFバージョンを使用したくない場合は、ComfyUIが提供するFP8バージョンを使用することもできます。その場合は、Load VAEノードとDualCLIPLoaderノードを削除し、Load Checkpointノードに置き換えるだけです。そして、FluxモデルのFP8バージョンを選択します。

個人的には、Flux公式のDepth LoRAモデルが好きです。その効果はより優れています。

3.2 XLabs バージョン

XLabsバージョンのFlux Depth Controlnetモデルを使用するには、XLabsが開発したプラグインを使用する必要があります。そのGithubアドレスはこちらです。ComfyUIのComfyUI-Managerを通じてこのプラグインをインストールできます。詳細なインストール方法はComfyUIプラグインのインストールの記事を参照してください。

インストール後、Shakker-Labsバージョンのワークフローを修正できます。または、Comflowyからこのワークフローをダウンロードして使用します。

修正はそれほど難しくありません:

説明
KSamplerノードをXlabs Samplerノードに置き換えます。このノードには追加のcontrolnet_condition入力があります。
CLIPTextEncodeノードをCLIPTextEncodeFluxノードに置き換えます。このノードには追加のcontrolnet_condition入力があります。
Apply ControlNet VAEノードをApply Flux ControlNetノードに置き換えます。
Load ControlNet ModelノードをLoad Flux ControlNetノードに置き換えます。そして、ダウンロードしたFlux Depth Controlnetモデルを選択します。
Depthノードを追加します。お気に入りのDepthノードを使用できます。
SD3LatentImageノードを使用します。これは、SD3バージョン以外にも最も基本的なバージョンで使用できることを示すためです。

4. Flux Depth API ワークフロー

もしコンピューターの性能が十分でなく、Flux Depth モデルを実行できない場合は、ComfyUI で Comflowy の Depth API ノード を使用してみることもできます。もちろん、Comflowy で直接 Flux Depth API ノードを使用することもでき、リンク方法は非常に簡単で、1つのノードを使用するだけです。また、Flux Pro バージョンと Dev バージョンもサポートしています。

注意,このノードはAPIを使用するため、使用時に相応の料金がかかります。