問題の概要:ComfyUI ControlNetノードの設定エラーと一般的な課題
ComfyUIは、Stable Diffusionのワークフローをノードベースで構築できる強力なツールです。その中でも、画像のポーズ、輪郭、深度などを制御するControlNetは、生成画像の精度を飛躍的に高める重要な機能です。しかし、ControlNetノードを初めて使用するユーザーや、環境を新しく構築したユーザーは、以下のようなエラーや設定の壁に直面することが少なくありません。
- 「Load failed」エラー: ControlNetモデルファイル(.pth, .safetensors)の読み込みに失敗する。
- ノードが見つからない: ノードメニューに「Apply ControlNet」や「ControlNet Loader」が表示されない。
- プリプロセッサ(前処理)が動作しない: CannyやOpenPoseなどの前処理ノードを実行しても、期待したコントロールマップ(制御画像)が生成されない。
- モデルとプリプロセッサの不一致: 深度マップを生成したのに、線画用のControlNetモデルを適用してしまい、効果が得られない。
これらの問題は、モデルファイルの配置ミスや、依存ライブラリの不足、ノードの基本的な接続方法の誤解に起因することがほとんどです。本記事では、これらの課題をステップバイステップで解決する方法を解説します。
原因の解説:なぜControlNetノードはエラーを起こすのか?
ComfyUIにおけるControlNet関連のエラーの主な原因は、以下の3つに大別できます。
1. モデルファイルのパスまたは形式の問題
ComfyUIは、`ComfyUI/models/controlnet/` ディレクトリ以下に配置されたControlNetモデルファイルを自動的にスキャンします。ここにファイルが存在しない、またはファイルが破損している場合、「Load failed」エラーが発生します。また、モデルファイルの形式(.pth, .safetensors)がサポートされていない場合も同様のエラーとなります。
2. カスタムノードの未インストール
標準のComfyUIには最小限のControlNetノードしか含まれていない場合があります。より高度なプリプロセッサ(例:DW OpenPose, MLSD)や、専用のローダーノードを使用するためには、コミュニティによって開発されたカスタムノードをインストールする必要があります。
3. 依存Pythonパッケージの不足
多くのプリプロセッサノードは、OpenCV, scikit-image, mediapipeなどの外部Pythonライブラリに依存しています。これらのライブラリが仮想環境にインストールされていないと、ノードはエラーを出力したり、何も処理を行わなかったりします。
解決方法:ステップバイステップでの設定とトラブルシューティング
ステップ1:ControlNetモデルファイルの正しい配置
まず、Hugging FaceやCivitAIなどから必要なControlNetモデル(例:control_v11p_sd15_canny.pth, control_v11p_sd15_openpose.safetensors)をダウンロードします。ダウンロードしたファイルを、ComfyUIの以下のディレクトリに配置してください。
ComfyUI/
├── models/
│ ├── checkpoints/ # メインのStable Diffusionモデル
│ ├── vae/ # VAEモデル
│ ├── loras/ # LoRAモデル
│ └── controlnet/ # ★ControlNetモデルをここに配置★
│ ├── control_v11p_sd15_canny.pth
│ └── control_v11p_sd15_openpose.safetensors
└── ...
配置後、ComfyUIを再起動(または「Refresh」ボタンを押下)すると、ControlNet Loaderノードのドロップダウンメニューにモデル名が表示されます。
ステップ2:必須カスタムノードのインストール
ComfyUI Managerがインストールされていれば、GUIから簡単にノードを追加できます。もしCLIからインストールする場合は、以下のように`custom_nodes`ディレクトリでgit cloneを行います。
# ComfyUIディレクトリに移動
cd /path/to/ComfyUI
# custom_nodesディレクトリがなければ作成
mkdir -p custom_nodes
cd custom_nodes
# 人気のControlNet関連カスタムノードをインストール例
git clone https://github.com/Fannovel16/comfyui_controlnet_aux.git
# インストール後、ComfyUIを再起動
これにより、多様なプリプロセッサノード(例:Canny, Depth, Normal Map, OpenPose, Lineart)が利用可能になります。
ステップ3:依存ライブラリのインストール
カスタムノードをインストールした後もプリプロセッサが動作しない場合は、必要なPythonパッケージが不足している可能性が高いです。ComfyUIのPython環境で以下のコマンドを実行してインストールします。
# ComfyUIの仮想環境をアクティベート後(環境に応じて)
pip install opencv-python
pip install scikit-image
pip install mediapipe # OpenPose系プリプロセッサに必要
# 場合によっては
pip install timm
pip install transformers
インストール後、ComfyUIを完全に再起動してください。
ステップ4:基本的なワークフローの構築と接続
ファイルとノードが正しく設定されたら、以下の順序でノードを接続します。これが最も基本的なControlNetワークフローの骨格です。
- ControlNet Loader: 使用するControlNetモデル(例:canny)を選択。
- プリプロセッサノード(例:Canny Edge Detection): 入力画像からコントロールマップ(白黒の線画など)を生成。
- Apply ControlNetノード: 「positive」と「negative」のコンディショニング(CLIP Text Encodeからの出力)と、プリプロセッサからの画像、ControlNet Loaderからのモデルを接続。
- KSampler: Apply ControlNetから出力されたコンディショニングを「positive」と「negative」に接続し、画像を生成。
最も多い接続ミスは、Apply ControlNetノードの入出力を間違えることです。正しい接続先を確認しましょう。
コード例・コマンド例:具体的なエラーと対処コマンド
エラー例1: “Load failed” またはモデルがリストに表示されない
エラーメッセージ: コンソールに `WARNING: ControlNet model [モデル名] not found` と表示される。
対処方法: モデルファイルの配置場所とファイル名を再確認。以下のコマンドで、ComfyUIがスキャンしているディレクトリを確認できます(ComfyUIの起動時のログにも出力されます)。
# ComfyUIのPython環境で実行
import folder_paths
print(folder_paths.get_folder_paths("controlnet"))
出力されたパスにモデルファイルが存在するか確認してください。
エラー例2: プリプロセッサノード実行時のAttributeError
エラーメッセージ: `AttributeError: module ‘cv2’ has no attribute ‘COLOR_BGR2GRAY’` など、OpenCV関連のエラー。
対処方法: OpenCVのバージョン不一致やインストール不備。以下のコマンドでOpenCVを再インストールします。
pip uninstall opencv-python opencv-python-headless -y
pip install opencv-python
エラー例3: 生成画像がControlNetの影響を受けない
状況: ワークフローはエラーなく実行されるが、生成画像が入力画像(ポーズや輪郭)とまったく連動していない。
原因と対処: Apply ControlNetノードの出力をKSamplerに接続していない、または「strength」パラメータが0に設定されている可能性が高いです。ノード接続を下図のように確認し、Apply ControlNetの「strength」を0.5〜1.0の間で調整してみてください。強度が弱すぎると効果が目立ちません。
# ワークフローの視覚的接続例(疑似コード)
[CLIP Text Encode (Positive)] ───┐
[CLIP Text Encode (Negative)] ───┼──→ [Apply ControlNet] ─→ [KSampler] ─→ [VAE Decode] ─→ Image
[ControlNet Loader] ─────────────┘
[プリプロセッサ画像] ─────────────┘
まとめ・補足情報
ComfyUIのControlNetは、一度正しく設定してしまえば、Stable Diffusionの生成を驚くほど正確にコントロールできる強力なツールです。トラブルのほとんどは、①モデルファイルの配置ミス、②カスタムノードと依存ライブラリの不足、③ノードの基本的な接続ミスの3点に集約されます。
問題が発生した場合は、まずComfyUIのコンソールログを確認する習慣をつけましょう。Pythonのトレースバックエラーは、どのファイルのどの行で、何が不足しているかを具体的に教えてくれます。また、ComfyUI Managerを活用すれば、カスタムノードのインストールと更新が格段に容易になります。
最後に、ControlNetを使用する際は、使用するモデルと対応するプリプロセッサを組み合わせることを忘れないでください(例:CannyモデルにはCannyエッジ検出を、OpenPoseモデルにはOpenPoseプリプロセッサを)。この組み合わせを間違えると、技術的にはエラーが出なくても、期待した制御効果は得られません。基本を押さえ、段階的に複雑なワークフローに挑戦していくことが、ComfyUIとControlNetをマスターする近道です。