見出し画像

【初心者向け】ComfyUI Portable ControlNet入門(Canny・SoftEdge・Depth・OpenPose+JSON配布)

1.はじめに

ComfyUIで画像生成を行っていると、「構図だけを参考にしたい」「ポーズを固定したい」「元画像の雰囲気を活かしたい」といった細かな制御を行いたくなる場面が増えてきます。そうしたニーズに応える機能がControlNetです。

ControlNetを使用することで、輪郭・立体構造・ポーズといった情報を条件として与えながら画像生成を行うことができ、単なるプロンプト生成よりも安定した結果を得ることができます。本記事では、代表的なControlNetであるCanny・SoftEdge・Depth・OpenPoseの特徴と使い分けを解説し、それぞれの再現用JSONも配布します。

また、OpenPoseについては「ボーン画像から直接生成する方法」と「既存画像から骨格を抽出して生成する方法」の2種類のワークフローを用意しています。さらに応用例として、CannyとLoRAを組み合わせてキャラクターを差し替える実例も紹介します。

2.動作環境(筆者PC)

参考までに、筆者のPCスペックです。

  • CPU:Ryzen 5 5600X

  • GPU:GeForce RTX 4060

  • メモリ:DDR4 32GB

  • OS:Windows 11

※本記事のワークフローは上記環境で動作確認しています。

3.ControlNetとは何か

ControlNetは、画像の構造情報を条件として与えながら生成を行う仕組みです。
プロンプトだけでは再現が難しい構図やポーズを安定して再現できるのが最大の特徴です。
代表的な制御方法として、輪郭を利用するCanny、柔らかい輪郭を抽出するSoftEdge、奥行きを利用するDepth、骨格を指定するOpenPoseなどがあります。

3-1.ControlNetモデルのダウンロード

ControlNetを使用するためには、対応するControlNetモデルをダウンロードしてComfyUIのフォルダに配置する必要があります。

HuggingFaceではファイル名が共通になっていることが多く、そのままだと後で見分けがつかなくなるため、ダウンロード後に分かりやすい名前へリネームしてから配置することをおすすめします。

ここではSDXL環境で使用できる代表的なControlNetモデルを紹介します。

Canny
https://huggingface.co/diffusers/controlnet-canny-sdxl-1.0

Files and versions から以下のファイルをダウンロードします。
diffusion_pytorch_model.fp16.safetensors

Depth
https://huggingface.co/diffusers/controlnet-depth-sdxl-1.0

Files and versions から以下のファイルをダウンロードします。diffusion_pytorch_model.fp16.safetensors

OpenPose

https://huggingface.co/thibaud/controlnet-openpose-sdxl-1.0

Files and versions から以下のファイルをダウンロードします。
control-lora-openposeXL2-rank256.safetensors

SoftEdge

https://huggingface.co/SargeZT/controlnet-sd-xl-1.0-softedge-dexined

Files and versions から以下のファイルをダウンロードします。
controlnet-sd-xl-1.0-softedge-dexined.safetensors

ダウンロードしたモデルはリネームして、以下のフォルダに配置します。

ComfyUI/models/controlnet

配置後、ComfyUIを再起動するとControlNetLoaderノードからモデルを選択できるようになります。

3-2.ControlNet用プリプロセッサ

ControlNetを使用する場合、元画像から輪郭・奥行き・骨格などの情報を抽出する「プリプロセッサ」が必要になります。ComfyUIでは以下の拡張を導入することで利用可能になります。

ComfyUI Managerを使用している場合は、Managerから「controlnet_aux」で検索することで簡単にインストールできます。

イメージ1


インストール後、ComfyUIを再起動すると各種プリプロセッサノード(Canny / SoftEdge / Depth / OpenPoseなど)が使用できるようになります。

3-3.Depthモデル(Depth Anything)

Depthを使用する場合は、奥行き情報を生成するモデルが必要になります。代表的なモデルとして「Depth Anything」があります。

https://huggingface.co/LiheYoung/depth-anything-large-hf

ComfyUI Managerを使用している場合

ComfyUI Managerを利用している場合、多くの環境では必要なモデルが自動でダウンロードされるため、基本的に手動で配置する必要はありません。

手動で配置する場合

手動でモデルを配置する場合は、以下のファイルをダウンロードします。

pytorch_model.bin

ダウンロードしたファイルは以下のフォルダに配置します。

ComfyUI/models/controlnet_aux

※フォルダが存在しない場合は、自分で作成しても問題ありません。

4.ControlNetの種類と使い分け

4-1. Canny(輪郭ベースの制御)

Cannyは画像の輪郭線を抽出し、その構図をベースに新しい画像を生成するControlNetです。元画像のポーズや構図を大まかに保ちつつ、衣装やキャラクターだけを変更したい場合に特に有効です。
輪郭のみを参照するため自由度が高く、LoRAとの相性も良いのが特徴です。TRPG立ち絵やキャラクター差し替え用途では最も扱いやすいControlNetと言えます。

イメージ2(元画像)
イメージ3

4-2. SoftEdge(柔らかい輪郭制御)

SoftEdgeはCannyよりも柔らかいエッジ情報を利用して生成を行うControlNetです。輪郭だけでなく陰影や塗りの雰囲気もある程度維持されるため、元画像の質感を残したい場合に向いています。
Cannyより自然な仕上がりになりやすい一方で、構図の拘束力はやや弱くなる傾向があります。

イメージ4(若干衣装が崩れてますが、おおむね良好)

4-3. Depth(立体構造の制御)

Depthは画像の奥行き情報をもとに立体構造を再現するControlNetです。体の向きやカメラアングルを安定させたい場合に非常に有効で、人物の向きや姿勢が崩れにくくなります。
ただし、立体構造を強く参照するため、元画像の体型や衣装の影響を受けやすい点には注意が必要です。構図だけでなく全体の形状をある程度引き継ぎたい場合に適しています。

イメージ5(構造にもよりますが、プロンプトで調整が必要です)

4-4. OpenPose(骨格ベースの制御)

OpenPoseは人物の骨格情報をもとにポーズを指定できるControlNetです。元画像が無くても、棒人間のような骨格画像からポーズを直接指定できるのが最大の特徴です。
ただしSDXL環境ではポーズの拘束力がやや弱く感じられる場合があります。より厳密にポーズを固定したい場合は、SD1.5でOpenPoseを適用して骨格を作成し、その後SDXLで仕上げる構成が実用的です。

イメージ6(SDXl系だとOpenposeのみは少々難しめ、プロンプトの影響で背景も出ている)

5.JSON配布&読み込み

本記事では、以下のControlNet構成を再現できるJSONを配布します。ComfyUIにドラッグ&ドロップすることで、そのまま同じワークフローを読み込むことができます。

・Canny用ワークフローJSON

・SoftEdge用ワークフローJSON

・Depth用ワークフローJSON

・OpenPose(ボーン画像入力)用ワークフローJSON


・OpenPose(画像から骨格抽出)用ワークフローJSON

使用するモデルやLoRAは環境によって異なるため、各自の環境に合わせてCheckpointやLoRAの指定を変更してください。

6.各ControlNetの生成例

同じ元画像を使用してControlNetを切り替えることで、生成結果の違いを確認できます。

Cannyは構図や輪郭を強く維持しながらキャラクターを差し替える用途に向いています。
SoftEdgeは輪郭をやや柔らかく抽出するため、元画像の雰囲気や質感を残した自然な変換が得意です。
Depthは奥行き情報をもとに生成するため、体の向きや空間構造を安定させやすい特徴があります。
OpenPoseは人体の骨格を直接指定できるため、ポーズを厳密にコントロールしたい場合に有効です。

用途に応じてこれらを使い分けることで、生成結果をより安定させることができます。

6-1.ControlNetの主な設定項目

ControlNetでは、主に次のパラメータを調整することで生成結果をコントロールできます。

Weight(強度)

ControlNetの影響度を調整します。
0.3〜0.5
元画像の影響を弱めたい場合
0.6〜0.8
バランス型
0.9〜1.2
元画像の構図を強く維持

Cannyなど輪郭を保ちたい場合は高め、SoftEdgeなど雰囲気を重視する場合はやや低めにすると自然になりやすいです。

Start / End

ControlNetが適用される生成ステップの範囲です。
Start = 0
End = 1
にすると生成の最初から最後までControlNetが適用されます。
構図だけ固定したい場合は
End = 0.6〜0.8
程度にすることで、後半の生成で自由度を持たせることができます。

Resolution

ControlNetが画像情報を解析する解像度です。
512〜1024が一般的です。
高すぎると処理が重くなり、低すぎると構造が崩れやすくなります。

6-2.各ControlNetのおすすめ設定

Canny
Weight : 0.8〜1.1
Start : 0
End : 1
Resolution : 512〜768

輪郭を強く維持したい場合に適しています。キャラクター差し替えなどの用途で安定しやすい設定です。

SoftEdge
Weight : 0.6〜0.8
Start : 0
End : 0.8
Resolution : 512〜768

元画像の雰囲気を残しながら自然に変換できます。

Depth
Weight : 0.7〜1.0
Start : 0
End : 1
Resolution : 768〜1024

体の向きや奥行き情報を安定させたい場合に有効です。

OpenPose
Weight : 0.9〜1.2
Start : 0
End : 1
Resolution : 512

ポーズを正確に維持したい場合に使用します。

7.OpenPoseの2つの使い方

OpenPoseは人体の骨格情報をもとにポーズを指定できるControlNetです。
キャラクターのポーズを維持したまま画像を生成したい場合に使用します。
OpenPoseには主に2つの使い方があります。

7-1. ボーン画像から直接生成

OpenPoseでは、あらかじめ用意した骨格画像を入力として使用し、そのポーズをもとに画像を生成することができます。
この方法では元画像に依存せず、骨格情報のみからポーズを指定できるため、完全に新しいポーズを作りたい場合に適しています。
例えば

・ポーズ素材サイトのボーン画像
・OpenPose用に作成した骨格画像

などを入力として使用します。
この方法の特徴は次の通りです。

・元画像に影響されない
・ポーズを完全に指定できる
・構図の自由度が高い

ただし、ポーズ情報しか存在しないため、体の向きや奥行きなどの情報はモデル側の推測に依存する場合があります。

7-2. 画像から骨格を抽出して生成

既存の画像から骨格を自動抽出し、そのポーズを再利用して生成する方法です。
この方法では、まずOpenPoseのプリプロセッサを使用して元画像から骨格情報を抽出します。その骨格データをControlNetに入力することで、同じポーズを別のキャラクターに適用できます。
例えば次のような用途で使用できます。

・好きなイラストのポーズを再利用する
・写真のポーズをキャラクター生成に使用する
・既存キャラクターのポーズを別キャラに適用する

この方法の特徴は次の通りです。

・元画像のポーズをそのまま利用できる
・ポーズの再現性が高い
・構図を安定させやすい

ただし、元画像の骨格検出がうまくいかない場合、腕や脚の位置が崩れることがあります。その場合は別の画像を使用するか、骨格画像を手動で修正することで改善することがあります。

8.まとめ

本記事では、Canny・SoftEdge・Depth・OpenPoseの特徴と使い分けについて解説し、それぞれの再現用JSONを配布しました。
ControlNetを使用することで、プロンプトだけでは難しい構図・ポーズ・奥行きといった要素を安定して再現できるようになります。
まずはCannyやSoftEdgeなど比較的扱いやすいControlNetから試してみると、生成結果の変化を理解しやすくなります。慣れてきたらDepthやOpenPoseを組み合わせることで、より意図に近い画像生成が可能になります。
ControlNetを活用したワークフロー構築の参考になれば幸いです。

9.関連記事

次に読むおすすめ記事
顔・手・アクセサリなどの崩れを修正したい場合はInpaintが重要です。
仕上げのクオリティを一段上げる工程です。

⑦ Inpaint(部分修正)
https://note.com/like_badger8355/n/nfad3edb2d410

⑧ 2種類のLoRAを同時に適用する方法
https://note.com/like_badger8355/n/nf5579e517e04

今までの記事

① ComfyUI Portableの導入方法
https://note.com/like_badger8355/n/ndf216fce9ab6

② VRAM別おすすめ起動設定
https://note.com/like_badger8355/n/nab031e6f22d2

③ LoRA導入とアップスケール手順
https://note.com/like_badger8355/n/n5a3511cfcab7

④高解像度画像生成ワークフロー(Ultimate SD Upscale+FaceDetailer)
https://note.com/like_badger8355/n/n71306ca4f45a

⑤ 構図を活かしてキャラを作り直すi2iワークフロー
https://note.com/like_badger8355/n/nadcf58caf08f

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