たねやつの木
こんにちは、たねやつです。
ComfyUI講座の続きです。前回はLoRAを使ってキャラクターや画風を適用する方法を学びました。今回は、画像生成におけるもう一つの革命的な技術、「ControlNet」をComfyUIで利用する方法を解説します。
ControlNetを使うと、参照する画像から骨格(ポーズ)や輪郭、奥行きなどの情報を抽出し、それをガイドにして新しい画像を生成することができます。「こういうポーズのキャラクターを描いてほしい!」という願いを、驚くほど正確に実現してくれる強力なツールです。
- 前の記事
- この記事でできること
- 事前に必要なもの
- 手順
- ControlNetモデルの配置
- ControlNet用のワークフロー構築
- 画像の生成
- 最後に
- 次の記事
www.taneyats.com
この記事でできること- ControlNetの基本的な仕組みがわかる
- ComfyUIでControlNetを使ったワークフローを組める
- 参照画像からポーズを抽出して、同じポーズの別キャラクターを生成できる
- これまでのワークフロー: 02_lora.mdで作成したもの。
- ControlNet Preprocessors (カスタムノード): OpenPose Preprocessorなどの前処理ノードは、標準のComfyUIには含まれていません。別途カスタムノード comfyui_controlnet_aux を導入する必要があります。
- ComfyUI-Managerを利用するのが最も簡単です。「Install Custom Nodes」からcomfyui_controlnet_auxを検索してインストールしてください。
- ControlNetモデル (Apply用): ControlNetを適用するためのモデルです。今回はSDXL用のOpenPoseモデルを使用します。
- OpenPoseXL2.safetensors を上記リンクからダウンロードし、ComfyUI/models/controlnet/に配置します。
まず、ダウンロードしたControlNetモデルをComfyUIが読み込める場所に配置します。
- ComfyUIフォルダの中のmodelsフォルダを開きます。
- さらにその中のcontrolnetフォルダを開きます。
- このComfyUI/models/controlnet/に、ダウンロードしたControlNetモデル(.pthや.safetensorsファイル)をコピーします。
これまでのワークフローに、ControlNet関連のノードを追加していきます。説明が煩雑になるので画像を確認してください。
前回使用したLoRAはCtrl Bでバイパスするようにしておきます。こうするとつながりを維持しつつオンオフできるので便利ですね。
ここで行っている作業は要するに、単一のモデル(SD-XL)を使用して1枚目の画像を生成 → そこからOpenpose用の画像を生成して、同じモデル・プロンプトで別シードで画像を生成しなおすという感じです。
画像の生成下の画像が2枚目の生成画像なのですが、1枚目と同じポーズをしていますね。こういった感じで参考となる画像さえあれば同じポーズをした画像を生成することができるということです。
最後に今回は、ControlNetを使ってポーズを正確にコントロールする方法を解説しました。これにより、画像生成のランダム性が大きく減り、「こういう絵が欲しい」という意図をよりダイレクトに反映できるようになります。
OpenPose以外にも、輪郭線を抽出するCannyや、深度情報を抽出するDepthなど、様々な種類のControlNetモデルがあります。これらを使い分けることで、さらに多彩な表現が可能になります。
次の記事次回は、1枚の画像からキャラクターの顔や服装の特徴を学習し、別の構図でそのキャラクターを登場させることができる「IPAdapter」という技術を紹介します。
www.taneyats.com