1. HOME»
  2. AI»
  3. AI画像生成»
  4. ControlNetの使い方。ポーズから画像を生成しよう!(Stable Diffusion WebUI)

ControlNetの使い方。ポーズから画像を生成しよう!(Stable Diffusion WebUI)

AIによる画像生成では、いくら呪文を入力しても、思い通りのポーズにするのはやはり大変です。
そこで今回は、ControlNetを使って、ポーズから画像を生成する方法を紹介します。

目次
  1. ControlNetについて
  2. 人のポーズ画像を作るには?
  3. 「Stable Diffusion web UI」で「ControlNet」を使う方法(Google Colab)
  4. まとめ

ControlNetについて

キャラクターのイラストを生成したいとき、これまでの画像生成AIでは、自分の思うポーズになるようになんども呪文を試す必要がありました。

しかし、ControlNetを使うことで、自分の思うポーズをかんたんに作ることができます。

向かって左側の画像は、「MakeHuman」というアプリを使って人の姿を作成し、Blenderでポーズを作りました。
その画像を「Stable Diffusion Web UI」に読み込むことで、右側のようなイラストを生成しています。

人のポーズ画像を作るには?

今回の場合、AIイラストの生成に、ポーズをとった人の画像が必要になります。
さまざまな方法が考えられますが、やはり3Dモデルを使ってポーズを作るのが、一番いい方法だと思います。

Windowsユーザであれば、デザインドール(https://terawell.net/ja/index.php)というアプリを使っている方が多いようです。

ただ、デザインドールは、Macに対応していません。

私は普段Macを使っていますが、私の場合、MakeHuman(http://www.makehumancommunity.org/)を使って人の3Dモデルを作成し、Blender(https://www.blender.org/)でポーズを作る方法にしました。

下はMakeHumanで人の3Dモデルを作っているところの画面です。

それをfbx形式で書き出し、Blenderで可愛らしいポーズをとらせてみたところが、下の画像です。

ここで紹介したアプリは無料ですので、興味があればぜひお試しください。

「Stable Diffusion web UI」で「ControlNet」を使う方法(Google Colab)

では、「Stable Diffusion web UI(https://github.com/AUTOMATIC1111/stable-diffusion-webui)」上で「ControlNet」を使ってみましょう。

今回は、Google Colab上で作業をしていきたいと思います。(M1 Mac上ではエラーが発生してしまいました)
AUTOMATIC1111さんの「Stable Diffusion web UI」を、Colabで動かす方法は、下の記事に詳しく書いております。

ここでは、「Mikubill/sd-webui-controlnet(https://github.com/Mikubill/sd-webui-controlnet)」を使わせていただく方法にしようと思います。

「sd-webui-controlnet」は、AUTOMATIC1111さんの「Stable Diffusion web UI」で「ControlNet」を使えるようにしてくれる拡張機能です。extensionsディレクトリに置くことで使えるようになります。

stable-diffusion-webui/
|-- …省略…
|-- extensions/
|   `-- sd-webui-controlnet/
|-- ……
`-- …省略…

また、ControlNetのモデルも必要になります。
今回は「webui/ControlNet-modules-safetensors(https://huggingface.co/webui/ControlNet-modules-safetensors)」を使います。

ControlNet-modules-safetensorsの、使いたいファイル、またはすべてを「sd-webui-controlnet」のmodelsディレクトリに配置します。

stable-diffusion-webui/
|-- …省略…
|-- extensions/
|   `-- sd-webui-controlnet/
|       `-- models/
|           |-- control_canny-fp16.safetensors
|           |-- control_depth-fp16.safetensors
|           |-- control_hed-fp16.safetensors
|           |-- control_mlsd-fp16.safetensors
|           |-- control_normal-fp16.safetensors
|           |-- control_openpose-fp16.safetensors
|           |-- control_scribble-fp16.safetensors
|           `-- control_seg-fp16.safetensors
|-- ……
`-- …省略…

以上のことを踏まえて、Colabでは、以下のようなコードを実行しましょう。
これは例として、モデルに「Basil Mix」、VAEに「vae-ft-mse-840000-ema-pruned.safetensors」を使っているので、3〜4行目を、お好みのものに変えてお使いください。

!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

!wget https://huggingface.co/nuigurumi/basil_mix/resolve/main/Basil_mix_fixed.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/Basil_mix_fixed.safetensors
!wget https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -O /content/stable-diffusion-webui/models/VAE/vae-ft-mse-840000-ema-pruned.safetensors

%cd /content/stable-diffusion-webui/extensions/
!git clone https://github.com/Mikubill/sd-webui-controlnet
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_canny-fp16.safetensors -O /content/stable-diffusion-webui/extensions/sd-webui-controlnet/models/control_canny-fp16.safetensors
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_depth-fp16.safetensors -O /content/stable-diffusion-webui/extensions/sd-webui-controlnet/models/control_depth-fp16.safetensors
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_hed-fp16.safetensors -O /content/stable-diffusion-webui/extensions/sd-webui-controlnet/models/control_hed-fp16.safetensors
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_mlsd-fp16.safetensors -O /content/stable-diffusion-webui/extensions/sd-webui-controlnet/models/control_mlsd-fp16.safetensors
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_normal-fp16.safetensors -O /content/stable-diffusion-webui/extensions/sd-webui-controlnet/models/control_normal-fp16.safetensors
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_openpose-fp16.safetensors -O /content/stable-diffusion-webui/extensions/sd-webui-controlnet/models/control_openpose-fp16.safetensors
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_scribble-fp16.safetensors -O /content/stable-diffusion-webui/extensions/sd-webui-controlnet/models/control_scribble-fp16.safetensors
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_seg-fp16.safetensors -O /content/stable-diffusion-webui/extensions/sd-webui-controlnet/models/control_seg-fp16.safetensors

%cd /content/stable-diffusion-webui

!python launch.py --share --xformers --enable-insecure-extension-access

しばらく待ち、リンクが表示されますので、クリックします。
すると「Stable Diffusion web UI」の画面には、「ControlNet」という項目が追加されているはずです。

この項目を開くと次のようになり、ここから操作することができます。

ここでは、デザインドール、MakeHuman、Blenderなどのアプリの使い方は省略させていただくのですが、さきほど作ったポーズの画像はこちらです。

ControlNetの設定は、以下のようにしました。

  • ポーズ画像をアップロード
  • Enableにチェック
  • Preprocessor:openpose
  • Model:control_openpose-fp16
  • Canvas Width:ポーズ画像の横幅(512)
  • Canvas Height:ポーズ画像の縦幅(512)

あとはお好みでプロンプトなどを入力し、Generateをクリックすることで、ポーズ画像と同じポーズをしたキャラクターを生成することができます。

あとは、お好みの画像が生成されるまで、なんども試しましょう。
私の場合、いろんな呪文、モデル、設定などを試して、こんなふうな画像を生成することができました。

まとめ

AIによる画像生成では、キャラクターを自分の思うポーズにするのは、とても大変です。
しかし、ControlNetを使うことで、自分の思うポーズを作りやすくなります。

ポーズ画像は、デザインドールや、MakeHumanとBlenderなどのアプリで作ることができます。

オリジナルゲーム.com