ControlNet NormalMap(法線マップ)構図や立体構造を維持した状態で画像を生成する

ControlNetは機能が多すぎて、どれを使って良いかわからないですよね。そんな人の悩みを解決するためにControlNetの実用例を解説しています。今回、取り上げるのはControlNet NormalMapです。本記事を読むことで次のような疑問が解消されるでしょう。

  • ControlNet NormalMapって何?
  • ControlNet NormalMapの具体的な実用例は?
  • ControlNet DepthやSegmentationなどの類似手法との違いを知りたい。

ControlNet Normal Mapとは?

Normal Mapは日本語だと法線マップとも呼ばれます。法線マップはXYZの立体構造をRGB(赤緑青)に対応させた画像のことです。ControlNet Normal Mapは画像からこの法線マップを推論して抽出するので詳細な立体構造を保持した状態で画像を生成することができます。

「プロンプトから画像を生成する」と「ControlNet Normal Map」を使用する場合の違い

プロンプトから画像を生成する場合と比べると立体構造やデティールを参照画像で指定できるようになるので、テクスチャだけを入れ替えたいときに便利な手法です。

ControlNet Normal Map類似手法との違い

類似手法としては次の2つがあります。

  • Depth(深度)
  • Segmentation(セグメンテーション)

Depthは深度ということで、画像の奥行きを抽出します。Normal Mapも似たような性質を持ちますが、Depthに比べると詳細な凹凸を抽出することができます。そのため参照画像からデティールを抽出したい場合はNormal Mapのほうが優れています。

Segmentaionは平面の構図のみを抽出するので立体構造を抽出できません。そのため立体構造が重要な場合はNormal MapかDepthを使うことになります。逆にシルエットなど立体構造が抽出できない場合は、Segmentaitionを使うことになります。

ControlNet Normal Mapでできること

  • テクスチャの変更
  • 同じ構図で画像を生成する

テクスチャの変更

左が参照画像、右が生成結果です。彫刻から実際の写真のような画像を生成することができます。

同じ構図で画像を生成する

左が参照画像、右が生成結果です。同じ構図でことなる服装や人物を生成できていることが確認できます。

ControlNet Normal Mapの利用方法

ControlNet Normal Mapの事前準備

ControlNet Normal MapはStable Diffusion Web UIの拡張機能、ControlNetの機能の1つです。 そのため、ControlNet Normal Mapを利用するためには、ControlNetがインストールされている必要があります。 もし、インストールしていない場合は以下の記事を参考にControlNetをインストールしましょう。

ControlNet Normal Mapのインストール方法

ControlNet Normal Mapの利用にはControlNet Modelが必要となります。以下のリンクから次の2つのファイルをダウンロードしてstable-diffusion-webui/models/ControlNetへ配置してください。

  • control_v11p_sd15_normalbae.pth
  • control_v11p_sd15_normalbae.yaml
lllyasviel/ControlNet-v1-1 at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

ControlNet Normal Mapの使い方

ControlNetのメニューを次の手順にしたがって設定します。

  1. 生成する画像のプロンプトを入力します。
  2. 「▼」をクリックしてControlNetのメニューを開きます。
  3. 参照画像をControlNetのメニュー画面にセットします。
  4. ControlNetを有効にするため”Enable”にチェックを入れます。
  5. Control Typeで”Normal Map”を選択します。これでPreprocessor(前処理)とControlNet Modelが設定されます。
  6. 特徴抽出ボタン「💥」をクリックして特徴抽出します。前処理が適用されて特徴抽出の結果が表示されます。
  7. これでControlNet Normal Mapが適用されるので、”Generate”をクリックして画像を生成します。

ControlNet Normal Mapの具体的な使い方

テクスチャの変更

  1. 画像をControlNetのメニュー画面にドラッグ&ドロップします。
  2. “Enable”にチェックを入れます。
  3. Control Typeの”Normal Map”を選択
  4. 特徴抽出ボタン「💥」をクリックして特徴抽出。

今回はプロンプトにはPhoto of blonde hair woman.を入力して画像を生成します。生成結果は次の通りです。

左が参照画像、右が生成結果です。

同じ構図で画像を生成する

  1. 画像をControlNetのメニュー画面にドラッグ&ドロップします。
  2. “Enable”にチェックを入れます。
  3. Control Typeの”Normal Map”を選択
  4. 特徴抽出ボタン「💥」をクリックして特徴抽出。

今回はPhoto of beautiful Japanese woman on the beach. white bikiniを入力して画像を生成します。生成結果は次の通りです。

左が参照画像、右が生成結果です。

ControlNet Normal Mapのプリプロセッサについて

  • normal_baeは、NYU-V2の視覚化方法を使用して、比較的正確なプロトコルで法線マップを推定するように訓練されたプリプロセッサです。
  • normal_midasは、Midasの深度マップから法線マップを推定するプリプロセッサです。

一般的にはnormal_baeのほうが精度が高いとされています。次の検証結果を見てみてもnormal_baeのほうが品質の高い画像が生成されています。迷ったらnormal_baeを使うことをおすすめします。

左はnormal_bae、右はnorma_midasから生成した画像です。

コメント