たねやつの木

Photographs, Keyboards and Programming

【ComfyUI画像生成】ControlNetでポーズや構図を正確に指定する

こんにちは、たねやつです。

ComfyUI講座の続きです。前回はLoRAを使ってキャラクターや画風を適用する方法を学びました。今回は、画像生成におけるもう一つの革命的な技術、「ControlNet」をComfyUIで利用する方法を解説します。

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モデルの配置

まず、ダウンロードしたControlNetモデルをComfyUIが読み込める場所に配置します。

  1. ComfyUIフォルダの中のmodelsフォルダを開きます。
  2. さらにその中のcontrolnetフォルダを開きます。
  3. このComfyUI/models/controlnet/に、ダウンロードしたControlNetモデル(.pth.safetensorsファイル)をコピーします。

ControlNet用のワークフロー構築

これまでのワークフローに、ControlNet関連のノードを追加していきます。説明が煩雑になるので画像を確認してください。

前回使用したLoRAはCtrl Bでバイパスするようにしておきます。こうするとつながりを維持しつつオンオフできるので便利ですね。

ここで行っている作業は要するに、単一のモデル(SD-XL)を使用して1枚目の画像を生成 → そこからOpenpose用の画像を生成して、同じモデル・プロンプトで別シードで画像を生成しなおすという感じです。

画像の生成

下の画像が2枚目の生成画像なのですが、1枚目と同じポーズをしていますね。こういった感じで参考となる画像さえあれば同じポーズをした画像を生成することができるということです。

最後に

今回は、ControlNetを使ってポーズを正確にコントロールする方法を解説しました。これにより、画像生成のランダム性が大きく減り、「こういう絵が欲しい」という意図をよりダイレクトに反映できるようになります。

OpenPose以外にも、輪郭線を抽出するCannyや、深度情報を抽出するDepthなど、様々な種類のControlNetモデルがあります。これらを使い分けることで、さらに多彩な表現が可能になります。

次の記事

次回は、1枚の画像からキャラクターの顔や服装の特徴を学習し、別の構図でそのキャラクターを登場させることができる「IPAdapter」という技術を紹介します。

www.taneyats.com