ControlNet Depthの使い方と解説。Preprocessorや類似手法との違いについても解説

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

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

ControlNet Depthとは?

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

プロンプトから画像を生成する場合と比べると、Depthでは立体構造や構図を参照画像で指定できるようになります。構図を維持した状態で様々なパターンの画像を生成したい場合はDepthがおすすめです。

ControlNet Normal Map類似手法との違い

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

  • Normal Map(法線マップ)
  • Segmentation(セグメンテーション)

Normal Mapは立体構造をRGB(赤緑青)に対応させた画像のことです。ControlNetではNormal Mapを推論して抽出するので画像から立体構造を保持した状態で画像を生成することができます。Depthと比べるとNormal Mapは詳細に凹凸を抽出できます。一方で顔などの細かいデティールや背景を変更したい場合はDepthのほうが向いています。

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

ControlNet Depthでできること

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

テクスチャの変更

左は参照画像で、右が生成した画像です。浮世絵がリアルな写真に変更できました。解説は後ほど。

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

左は参照画像で右が生成した画像です。グラビア写真のように変換してみました。解説は後ほど。

ControlNet Depthの利用方法

ControlNet Depthの事前準備

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

ControlNet Depthのインストール方法

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

  • control_v11p_sd15_depth.pth
  • control_v11p_sd15_depth.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 Depthの使い方

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

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

ControlNet Depthの具体的な使い方

テクスチャの変更

まずはControlNetのメニューを設定します。

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

プロンプトをwave,ocean,fujiを入力して画像を生成します。

画像を変えて同様にControlNetに設定をし

プロンプトにPhoto of red mountain Fuji.を入力して画像を生成します。

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

次は参照画像と同様の構図で画像を生成してみます。まずはControlNetのメニューを設定します。先ほどと同様の設定です。

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

プロンプトをPhoto of beautiful Japanese woman on the beach. white bikiniとして画像を生成してみます。

ControlNet Depthの設定について

Preprocessorについて

depth_leres
depth_leresは、通常の「Depth」とほぼ同じですが、オプションを微調整する能力が向上しています。これは、特に物体を「近く」や「遠く」に配置するのに適していますが、細かい詳細は失われることがあります。
depth_leres++
depth_leresの改良版と考えられます。詳細な情報は見つかりませんでしたが、ControlNetのプリプロセッサとして使用できることが示唆されています。
depth_midas
depth_midasは、画像からデプス情報を推定するために使用されるプリプロセッサです。デプスマップでは、明るい領域が「近く」、暗い領域が「遠く」になります。
depth_zoe
depth_zoeは、単一の画像からメトリックデプス推定を行う深層学習モデルで、ZoeDepthとも呼ばれます。相対デプスとメトリックデプスを組み合わせることで、ゼロショット転送を実現しています。

コメント