ポーズを指定して画像を生成できる「ControlNet」の使い方【Stable Diffusion web UI】

ControlNetの使い方Stable Diffusion

今回も画像生成AIに関する話題で、タイトルの通り

ポーズや構図をきっちり指定して画像を生成できる「ControlNet」の使い方

を丁寧にご紹介するという内容になっています。

画像生成AIを使ってイラストを生成する際、ポーズや構図を決めるときは

ポーズを表す英単語をプロンプト(呪文)に含める

という方法が主流です。この方法ではかなりザックリしたポーズ・構図を指定することはできるものの、単語で指定することもあって思い通りのポーズを完全再現したイラストを生成するのは困難でした。

ところが、つい先日その問題を解決する「ControlNet」と呼ばれる新技術が公開されて大変話題になりました。しかも速攻でStable Diffusion web UI用の無料の拡張機能も開発されて、誰でも簡単に使えるようになったとのことだったのでさっそく試してみることにしました。

ここではこのControlNetの使い方について解説していきますね。

ControlNetを使ったポーズ指定の例

まずはじめに、私が実際にControlNetを使ってポーズを指定した美少女イラストをご覧頂こうと思います。

ControlNetでは下のような元画像を用意して呪文を唱えると…

画像提供:ぱくたそ 様
https://www.pakutaso.com/

下のようにほぼ同じポーズのイラストが生成されます。

ControlNetを使って生成したイラストの例(2) ControlNetを使って生成したイラストの例(3)

ControlNetのすごいところはポーズや構図がかなり厳密に再現される点です。つまり欲しいポーズのイラストが決め打ちで出てくるので、今までのように何度もガチャを引く必要はありません。

ポーズ指定以外の活用例

ちなみに上記では一番分かりやすいポーズ指定を例に挙げていますが、ControlNetを使えば他にも

  • 線画だけのイラストを着色する
    くまさんの線画→ ControlNetで線画に着色した例
  • キャラクターの特徴を維持したまま色や画風だけ変える
    ControlNetで線画に着色した例 → ControlNetで色を変更した例
  • 落書きからリアルな画像を作る
    くまさんの線画 → Controlnetで作ったリアルな肖像画の例

といったこともできるのでとても汎用性が高い技術となっています。

Stable Diffusion web UIへのインストール方法

次にControlNetはStable Diffusion web UIに拡張機能をインストールすれば簡単に使うことができるので、その方法をご説明します。

拡張機能のインストール

まずは拡張機能をインストールします。やり方は簡単で「拡張機能」タブ→「URLからインポート」と進み、下のURLを入力して「インストール」ボタンを押すだけです。

https://github.com/Mikubill/sd-webui-controlnet.git

web UI用のControlNet拡張機能のインストール方法

あとはweb UIを再読み込みすれば、txt2img・img2img画面の左下にControlNetの設定欄が出現します。

web UI用のControlNet拡張機能の設定欄

必要なControlNetモデルのダウンロード

次にControlNetを使うには専用のモデルファイルが必要なので、下記ページから使うものを選んでダウンロードします。

webui/ControlNet-modules-safetensors at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

執筆時点ではモデルが全部で8種類あり、それぞれ使用するアルゴリズムが異なります。超ざっくり説明すると下記のとおりなので好きなものを選んでください。

  1. canny:単純な輪郭検出アルゴリズムを使うモデル
  2. depth:画像の深度情報を元に画像生成を行うモデル
  3. hed:色変更やスタイル設定に適したモデル
  4. mlsd:直線的な輪郭の検出アルゴリズムを使うモデル
  5. normal:法線マップ(ノーマルマップ)を使用するモデル
  6. openpose:ポーズ検出を使って画像生成を行うモデル
  7. scribble:落書きを元に画像生成を行うモデル
  8. seg:セマンティックセグメンテーションを使って画像生成を行うモデル

詳しい説明は下記ページ(外部リンク、英語)にあります。

GitHub - lllyasviel/ControlNet: Let us control diffusion models
Let us control diffusion models. Contribute to lllyasviel/ControlNet development by creating an account on GitHub.

モデルを8つもダウンロードするのがダルい、とか英語の説明を読むのが面倒くさい…という方には、シンプルで分かりやすいcannyモデルが一番おすすめです。ダウンロードできたらモデルファイルを下記フォルダに移動させてください。

sd.webui/webui/extensions/sd-webui-controlnet/models

これでインストール作業は完了です。

ControlNetの使い方

さて前置きが長くなってしまいましたがControlNetの使い方について説明していきます。ただし先ほど選択したモデルによって多少使い方が違うようなので、ここでは先ほどおすすめしたcannyモデルの場合についてご説明します。

主な手順は次のとおりです。

  1. 必要な設定を行う
  2. 入力画像を指定する
  3. いつも通り呪文を入力して生成ボタンを押す

手順1:必要な設定を行う

まずは必要な設定を行います。ControlNetの設定欄を展開し、次の画像のように設定を行ってください。

ControlNetの使い方

  • Enableにチェックを入れる
  • Preprocessorを選択する(ここでは例としてcannyを選択)
  • Preprocessorに対応したモデルを選択する

手順2:入力画像を指定する

お次はポーズの元となる画像を指定します。指定方法は「ここに画像をドロップ」と書かれた部分に任意の画像をドラッグ&ドロップするだけです。ここでは次の画像をお借りして入力画像としました。

画像提供:ぱくたそ 様
https://www.pakutaso.com/

手順3:呪文を入力して生成ボタンを押す

あとは通常通り呪文を入力して生成ボタンを押せばOKです。下のようなプロンプトを入力すると…

super fine illustration, an extremely cute and beautiful school girl, highly detailed beautiful face and eyes

次のようなイラストが生成されました。

ControlNetを使って生成したイラストの例(1)

キャラクターが元画像と同じポーズをとっているのが分かります。

おわりに

以上、ControlNetの使い方を一通りご説明しました。これがあればポーズ指定で何度も試行錯誤をしなくても済み、とても便利なのでぜひ皆さんも試してみてください。

この記事が何かしらお役に立てば幸いです。