こんにちは、たねやつです。
ComfyUI講座の続きです。前回はLoRAを使ってキャラクターや画風を適用する方法を学びました。今回は、画像生成におけるもう一つの革命的な技術、「ControlNet」をComfyUIで利用する方法を解説します。
ControlNetを使うと、参照する画像から骨格(ポーズ)や輪郭、奥行きなどの情報を抽出し、それをガイドにして新しい画像を生成することができます。「こういうポーズのキャラクターを描いてほしい!」という願いを、驚くほど正確に実現してくれる強力なツールです。
前の記事
この記事でできること
- ControlNetの基本的な仕組みがわかる
- ComfyUIでControlNetを使ったワークフローを組める
- 参照画像からポーズを抽出して、同じポーズの別キャラクターを生成できる
事前に必要なもの
- これまでのワークフロー:
02_lora.mdで作成したもの。 - ControlNet Preprocessors (カスタムノード):
OpenPose Preprocessorなどの前処理ノードは、標準のComfyUIには含まれていません。別途カスタムノードcomfyui_controlnet_auxを導入する必要があります。- ComfyUI-Managerを利用するのが最も簡単です。「Install Custom Nodes」から
comfyui_controlnet_auxを検索してインストールしてください。
- ComfyUI-Managerを利用するのが最も簡単です。「Install Custom Nodes」から
- ControlNetモデル (Apply用): ControlNetを適用するためのモデルです。今回はSDXL用のOpenPoseモデルを使用します。
- OpenPoseXL2.safetensors を上記リンクからダウンロードし、
ComfyUI/models/controlnet/に配置します。
- OpenPoseXL2.safetensors を上記リンクからダウンロードし、
手順
ControlNetモデルの配置
まず、ダウンロードしたControlNetモデルをComfyUIが読み込める場所に配置します。
ComfyUIフォルダの中のmodelsフォルダを開きます。- さらにその中の
controlnetフォルダを開きます。 - この
ComfyUI/models/controlnet/に、ダウンロードしたControlNetモデル(.pthや.safetensorsファイル)をコピーします。
ControlNet用のワークフロー構築
これまでのワークフローに、ControlNet関連のノードを追加していきます。説明が煩雑になるので画像を確認してください。

前回使用したLoRAはCtrl Bでバイパスするようにしておきます。こうするとつながりを維持しつつオンオフできるので便利ですね。
ここで行っている作業は要するに、単一のモデル(SD-XL)を使用して1枚目の画像を生成 → そこからOpenpose用の画像を生成して、同じモデル・プロンプトで別シードで画像を生成しなおすという感じです。
画像の生成
下の画像が2枚目の生成画像なのですが、1枚目と同じポーズをしていますね。こういった感じで参考となる画像さえあれば同じポーズをした画像を生成することができるということです。
最後に
今回は、ControlNetを使ってポーズを正確にコントロールする方法を解説しました。これにより、画像生成のランダム性が大きく減り、「こういう絵が欲しい」という意図をよりダイレクトに反映できるようになります。
OpenPose以外にも、輪郭線を抽出するCannyや、深度情報を抽出するDepthなど、様々な種類のControlNetモデルがあります。これらを使い分けることで、さらに多彩な表現が可能になります。
次の記事
次回は、1枚の画像からキャラクターの顔や服装の特徴を学習し、別の構図でそのキャラクターを登場させることができる「IPAdapter」という技術を紹介します。