1. 問題の概要:ComfyUI ControlNetノードの設定エラーと一般的な課題
ComfyUIは、Stable Diffusionのワークフローをノードベースで構築できる強力なツールです。その中でも、画像のポーズ、輪郭、深度などを制御するControlNetは、生成画像の精度を飛躍的に高める重要な機能です。しかし、ControlNetノードを初めて使用するユーザーや、環境をアップデートしたユーザーは、以下のようなエラーや設定の課題によく遭遇します。
- 「Load failed」エラー: ControlNetモデルファイル(.pth, .safetensors)の読み込みに失敗する。
- ノードが見つからない: ノードメニューに「Apply ControlNet」や「ControlNetLoader」が表示されない。
- プリプロセッサ(前処理)が動作しない: OpenPoseやCannyなどのプリプロセッサを適用しても、期待したコントロール画像(例:白黒の輪郭線)が生成されない。
- 画像が生成されない、または崩れる: ControlNetを適用すると真っ黒な画像が出力されたり、ノイズだらけの画像になってしまう。
これらの問題は、モデルファイルの配置ミス、依存ライブラリの不足、ノード設定の誤りなど、いくつかの典型的な原因に起因しています。
2. 原因の解説
上記の問題が発生する主な原因は以下の通りです。
2.1. モデルファイルのパスまたは形式の問題
「Load failed」エラーの最も一般的な原因です。ComfyUIは、`ComfyUI/models/controlnet/` ディレクトリ内のモデルファイルを探します。ここにファイルが存在しない、またはファイルが破損している場合にエラーが発生します。また、モデルファイルの形式(.safetensors vs .pth)によっては互換性の問題が生じることもあります。
2.2. Custom Nodes(カスタムノード)のインストール不足
ComfyUIの基本インストールには、最新のControlNetノードが含まれていない場合があります。多くのユーザーは、コミュニティで開発されたカスタムノード(例:ComfyUI-Impact-Pack, ControlNet Auxiliary Preprocessors)をインストールすることで、より多様なプリプロセッサやノードを利用しています。これらがインストールされていないと、必要なノードが見つからなかったり、プリプロセッサが機能しなかったりします。
2.3. 依存ライブラリの欠如
一部のプリプロセッサ(特にOpenPoseやDepth)は、背後で特定のPythonライブラリ(例:openCV, mediapipe, scikit-image)を必要とします。これらが仮想環境にインストールされていないと、プリプロセッサはエラーなく実行されたように見えても、実質的には何も処理されていない(デフォルト画像がパススルーされる)ことがあります。
2.4. ワークフロー内の接続またはパラメータ設定ミス
ControlNetの「strength」(制御の強度)や「start/end percent」の設定が極端すぎると、画像が崩壊する原因になります。また、プリプロセッサノードから出力された画像を、Apply ControlNetノードの正しい入力ポートに接続していないという単純なミスもよくあります。
3. 解決方法:ステップバイステップガイド
ステップ1: ControlNetモデルファイルの正しい配置
まず、モデルファイルが正しい場所にあることを確認します。
ComfyUI/
├── models/
│ ├── checkpoints/ # Stable Diffusionモデル
│ ├── vae/ # VAEモデル
│ ├── loras/ # LoRAモデル
│ └── controlnet/ # ★ControlNetモデルはここに配置★
│ ├── control_v11p_sd15_canny.pth
│ ├── control_v11p_sd15_openpose.pth
│ └── control_v11f1p_sd15_depth.safetensors
└── ...
Hugging FaceやCivitAIからダウンロードしたControlNetモデルファイル(.pthまたは.safetensors)を上記の `controlnet/` ディレクトリにコピーしてください。
ステップ2: カスタムノードのインストール(推奨)
より豊富な機能を利用するために、ComfyUI Managerまたは手動でカスタムノードをインストールします。
ComfyUI Managerを使用する場合(最も簡単):
# ComfyUIのルートディレクトリで
cd custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Manager.git
# ComfyUIを再起動後、UI内から他のノードを検索・インストール可能に
重要なカスタムノードを手動でインストールする場合:
cd custom_nodes
# プリプロセッサノード集
git clone https://github.com/Fannovel16/comfyui_controlnet_aux.git
# Impact Pack (多くの便利なノードを含む)
git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack.git
インストール後、ComfyUIを完全に再起動してください(ターミナルでCtrl+Cで停止し、再度起動)。
ステップ3: 依存ライブラリのインストール
特に `comfyui_controlnet_aux` をインストールした後は、追加のPythonパッケージが必要です。ComfyUIのルートディレクトリで以下のコマンドを実行します。
# Windows (ComfyUI Portable版以外)
.python_embededpython.exe -m pip install -r custom_nodescomfyui_controlnet_auxrequirements.txt
# または一般的なvenv環境の場合
pip install opencv-python mediapipe scikit-image
# エラーが出る場合は、ヘッドレス版を試す
pip install opencv-python-headless
ステップ4: 基本的なワークフローの構築と確認
1. Load Checkpoint ノードでベースモデルを読み込みます。
2. ControlNetLoader ノードで使用したいControlNetモデル(例:Canny)を選択・読み込みます。
3. CLIP Text Encode ノードでプロンプトを入力します。
4. ControlNet Apply ノードを配置し、以下のように接続します。
- conditioning: CLIP Text Encodeの出力を入力。
- control_net: ControlNetLoaderの出力を入力。
- image: コントロールしたい画像(例:Cannyエッジ検出後の画像)を入力。
5. KSampler にControlNet Applyの出力(conditioning)を接続し、画像を生成します。
重要パラメータ: Apply ControlNetノードの strength は最初は1.0から始め、効果が強すぎる場合は0.5-0.8程度に下げて調整します。
4. 具体的なエラーメッセージと対処コード例
エラー例1: 「It seems that you don’t have the required model in the specified folder」
対処: ステップ1を確認。モデルファイル名がUIの選択肢と完全に一致しているか確認してください。場合によっては、.safetensors形式のモデルを再ダウンロードする必要があります。
エラー例2: プリプロセッサを適用しても画像が変わらない
対処: 依存ライブラリがインストールされているか確認します。以下のコードで、ComfyUIのPython環境からOpenCVがインポートできるかテストできます。
# ComfyUIのpython環境で実行
import cv2
print(cv2.__version__) # バージョンが表示されればOK
# エラーがでたら、ステップ3を実行
エラー例3: ノードメニューに「ControlNetLoader」が見つからない
対処: ComfyUIのバージョンが古い可能性があります。最新版にアップデートしてください。
cd ComfyUI
git pull
# カスタムノードも更新する場合
cd custom_nodes
for /d %i in (*) do cd "%i" && git pull && cd..
5. まとめ・補足情報
ComfyUIのControlNetは、一度正しく設定すれば、画像生成の制御において非常に強力な武器となります。トラブルのほとんどは、モデルファイルの配置ディレクトリ、カスタムノードと依存ライブラリのインストール、ワークフローの基本的な接続ルールの3点を押さえることで解決できます。
問題が発生した場合は、以下の順序で確認することをお勧めします:
1. ターミナルまたはコマンドプロンプトのエラーログを最初に詳細に読む。
2. `ComfyUI/models/controlnet/` ディレクトリを確認。
3. ComfyUIを完全再起動(キャッシュが原因の場合がある)。
4. シンプルなワークフローから段階的に構築し、どこで失敗するか特定する。
また、コミュニティが提供するプリセットワークフロー(.jsonファイル)をインポートして、正しい接続方法を学ぶことも非常に有効です。ControlNetのパラメータ調整には経験が必要ですので、`strength` や `start/end percent` を少しずつ変化させながら、モデルとプロンプトに最適なバランスを見つけていってください。