【入門】画像生成の革命!Control-Netの使い方(Stable Diffusion Web UI)

当ページのリンクには広告が含まれています。

Stable Diffusion Web UI を使えば、プロンプトや既存の画像から様々な画像を生成することは可能ですが、ポーズに関してはなかなか思い通りにならないことも多いですね。

img2img でもそれっぽい事はできますが、Control Netを使えば確実に同じポーズで画像生成ができるようになります。

それ以外にも、人物の顔を引き継いで(顔を固定して)新たな画像を生成する機能や、画像の高画素化など、画像生成で痒いとこに手が届く便利機能が数多く搭載されています。

しかし、Control Netには数多くの機能があり、バージョンアップや拡張機能の追加が行われているため、全てを紹介しきれません。

そこで、本記事では代表的な機能の中から、入門者が知っておくと便利な機能に限定して詳しく紹介したいと思います。

目次

Control Netとは

Control Netとは、Stable Diffusion WebUIの拡張機能の1つで、あらかじめ用意した画像からポーズ、輪郭、奥行きなどの情報(形状情報)を抽出し、それを用いて画像生成する技術です。

Control Netでは、用意した画像からどのような形状情報を抽出するかを指定する「プリプロセッサ(前処理)」と、それに対応したモデルを選択することで、元の画像の特徴を持った画像を新たに生成できるようになっています。

コントロールネット概念図

Control Net でいうモデルは、Stable Diffusion WebUI で指定する生成モデルと置き換わるのではなく、あくまでもプリプロセッサで処理された結果をインプットとしてControl Net内で使われるものです。

Control Netは、Stable Diffusion WebUI で設定した情報(プロンプト、パラメータ、モデルなど)と協力しあいながら画像生成してくれるので、txt2img や img2img、その他の機能と組み合わせることが可能です。

なお、本記事紹介する機能は、以下の通りです。

今回紹介するコントロールネットの種類

使えるようになるまでの手順

Control Net を使えるようにするには、次の4つの手順を実行する必要があります。

インストール手順

インストール方法

それでは、4つの手順についてスクリーンショットをまじえて解説していきましょう。

Control Net をインストール

Control Net は次のURLにアップロードされています。 

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

stable diffusion の Extensionsタブを選択し、その中にあるInstall from URL タブを選択します。あとは、下記のURLを貼り付け、Install ボタンをクリックして下さい。

コントロールネットインストール画面1

stable diffusion を再起動

インストールが完了したら、Installed タブを選択し、「Apply and restart UI」ボタンをクリックしておきましょう。

コントロールネットインストール画面2

環境によっては、下記のエラーが発生してリスタートできない場合があります。この時は焦らず webui.bat を実行して、stable diffusion を立ち上げ直してください。

エラー画面

ブラウザ側もエラーになっていると思いますが、stable diffusion が立ち上がったら、ブラウザのリロードアイコンをクリックすれば治ります。

リドロー画面

Control Net用モデルのダウンロード

Control Net用のモデルは Hugging Face からダウンロードします。

https://huggingface.co/

Hugging Face のサイトに移動したら、controlnet で検索し、表示される ControlNet-v1-1を選択してください。

尚、ControlNet-v1-1は2023年6月時点の最新版なので、将来バージョンアップされると v1 が v2になったり v3になったりします。

その時は、新しいバージョンを入手するようにしてください。

コントロールネットモデルダウンロード画面1

ControlNet-v1-1 のダウンロード画面に移動したら、Files and versionsタブを選択します。

すると、拡張子pthとyaml のファイルがたくさん表示されますので、拡張子 pth の方をダウンロードして下さい。yaml をダウンロードしても構いませんが、使うことはありません。

拡張子pth と yaml を見分けるのが面倒だと思いますが、赤文字で「LFS」と書かれている行がpthファイルであり、この「LFS」をクリックするとダウンロードできます

コントロールネットモデルダウンロード画面2

他のサイトでは、 ControlNet-modules-safetensors からモデルをダウンロードせよと書かれている場合もあります。

こちらは本家(前述)が公開しているモデルを safetensors 形式のフォーマットに変換したもの(セキュリティを強化したもの)なので、どちらを使っても構いません。ただ、本家のモデルが全て変換されているわけではないので、その点はご注意ください。

コントロールネットモデルダウンロード画面3

ダウンロードしたモデル指定フォルダにコピー

モデルのダウンロードが終わったら、stable-diffusion-webui がインストールされているフォルダを起点に、 extensions→sd-webui-controlnet→models にモデルファイルをコピーします。

フォルダコピー図

以上でインストール作業は終了です。

Control Netの使い方

ここからは Control Net の使い方について解説致します。

Control Netの呼び出し方

stable diffusion web ui の txt2img タブの下あたりに、ControlNet v1.1.215 と表示されていると思います(新しいバージョンをインストールされた方は、そのバージョンが表示されます)。

下図の赤枠の部分をクリックすると、Control Net のパラメータ設定画面が表示されます。

パラメータ設定画面

Control Netのパラメータ設定画面

下記がパラメータ表示画面です。ControlNet v1.1.215 の画面であるため、バージョンによって多少異なるかと思います。

パラメータ設定画面詳細
①画像のアップロードここにポーズや棒人形など、元となる画像をドラッグ&ドロップします。
②Control-Netの有効化Control Netを使う場合、ここに必ずチェックを入れて下さい。
③プリプロセッサ(前処理)選択元となる画像から輪郭や骨格などの形状情報のどれを抽出したいかを選びます。
④モデル選択抽出したい形状情報に合わせて、モデルを選択します。
⑤プリプロセッサとモデルのフィルター例えば、OpenPose をクリックすると、プリプロセッサとモデルそれぞれに OpenPoseに関係するものだけが選べるようになります。
「よく使うプリプロセッサとモデルの組み合わせをボタン1つで選択できる」と考えていいでしょう。
⑥リロードボタンモデルのドロップダウンリストが表示されない場合、ここをクリックすると表示できます。
⑦再現度及びステップの指定Control Weitは元の画像をどれくらい生成画像に反映させるかの指定です。
Starting ~と Ending~は、画像生成を行うステップにおいて、Control Net の機能をどこからどこまで反映させるかの指定です。
⑧プロンプトとControlNetの優先度指定画像生成する際、プロンプトとControl Net のどちらの指示に重きを置くかを指定します。
⑨生成画像のリサイズ指定元画像と生成画像の縦横比(アスペクト比)が異なる場合、どう生成させたいかの指定です。
Just Resize は、アスペクト比を無視して画像を生成します。
Crop and Resize は、アスペクト比を維持しますが、余白部分は黒く塗りつぶします。
Resize and Fillもアスペクト比を維持しますが、余白部分は画像を自動生成してくれます。

①プリプロセッサとモデルのフィルター には多くのボタンが並んでいますが、このボタンをクリックすことで、プリプロセッサとモデルのドロップダウンリストがフィルタリングされます。

例えば、Cannyをクリックすると、プリプロセッサには Canny、モデルには Control_v11p_sd15_canny が選択された状態になります。

OpenPose をクリックすると、プリプロセッサは openpose、モデルは control_v11p_sd15_openpose が選択された状態になります。この時、プリプロセッサのドロップダウンリストを表示させると、open pose、openpose_face、openpose_faceonly_・・・という具合に、openpose で使用できるプリプロセッサの候補だけが表示されるようになります。

パラメータ設定画面・プリプロセッサとモデル選択

Control Netを使った画像生成の方法

Control Net はあくまでも補助的な機能となるため、従来通りプロンプトとパラメータを指定します。

次に、ポーズに使いたい画像(形状情報を抽出する元の画像)をドラッグ&ドロップし、それに応じた Control Netのパラメータを設定(プリプロセッサやモデルの選択)を行い、最後にGenerateボタンで画像を生成します。

 

コントロールネットの使い方

輪郭抽出によるポーズ指定

元の画像があった場合、一番確実にポーズ指定が出来る方法です。

  • プリプロセッサ:canny
  • モデル:control_v11p_sd15_canny

生成される画像、ポーズだけでなく顔や髪型、服装まで類似します。また、抽出された輪郭画像も同時に出力されるため、これを保存しておくことで再利用できます。

輪郭抽出のイメージ

骨格検出によるポーズ指定

元の画像から骨格データ、いわゆる棒人間を作成後、それを使って画像を生成します。

  • プリプロセッサ:openpose
  • モデル:control_v11p_sd15_openpose

ポーズはまねてくれますが、衣装や背景は全く別のものが生成されるため、ポーズだけ引き継ぎたい場合に使います。また、棒人間も生成されるので、これを保存しておくと再利用できます。

骨格抽出のイメージ

骨格データ(棒人間)によるポーズ指定

棒人間(骨格データ)を使って画像を生成します。この場合はプリプロセッサは使わないので、none を指定しておきましょう。

  • プリプロセッサ:none
  • モデル:control_v11p_sd15_openpose

生成画像にあまりポーズが反映されていない場合は、Just Resizeを選択すると改善できます。

棒人間によるポーズ再現

フリー画像の棒人間は CIVITAI で多数公開されています。pose で検索するとヒットしますので、気に入ったものをダウンロードしましょう。

棒人間フリー画像ダウンロード画面

ファイルはZip形式で圧縮されていて、1つのファイルに数百のポーズが格納されていることもあります。

ちなみに、今回の記事で使ったポーズ(骨格データ)は、こちらからダウンロードできます。

その他にも数多くのポーズ集が公開されていますので、興味のある方は「【知らなきゃ損】stable diffusionで使える棒人間ポーズ集はこれだ!」をご一読ください。

指定した範囲の画像生成

stable diffusion web ui の img2img のinpaint と同じ操作で同じことが出来ますが、こちらの方が高性能です。

  • プリプロセッサ:inpaint_only
  • モデル:control_v11p_sd15_inpaint
指定箇所の再生成

荒い画像の高画質化(繊細化)

同様の機能として画像を拡大しつつ詳細部分を生成する Hires. fix がありますが、こちらは更に画像を拡大できるだけでなく、メモリ不足によるエラーも発生しにくくなっています。

  • プリプロセッサ:tile_resample
  • モデル:control_v11p_sd15_tile
画像の高解像度化

512×512の画像だと顔が崩れがちですが、Tile を使って1024×1024 で生成すると、綺麗に生成されていることが分かります。

高解像度化の結果イメージ

顔を固定した画像生成

生成させた顔が気に入ったからといって、それ引き次いで別の画像を生成する場合、img2img で出来ないことはないですが、顔以外を塗りつぶす操作が非常に面倒でした。

Control Netを使えば、顔を引き継いだまま色々な画像を生成できるため、非常に便利です。

  • プリプロセッサ:reference_onty
  • モデル:なし(選択不可)
顔を固定した画像生成

まとめ

今回は、Control Netのインストール方法と使い方について解説しました。

Control Netは元の画像からポーズや輪郭、奥行きなどの形状情報を抽出し、画像生成に反映させる技術です。

どの形状情報を抜き出すかをプリプロセッサのドロップダウンリストで選択し、それに応じたモデルを選択するすることで、元画像に関する様々な情報を生成画像に反映することが可能です。

Control Netは一般的にポーズ指定の代表的な方法として捉えられがちですが、実は顔を固定したまま様々な画像を生成したり、高画質化するといった機能も搭載されています。

stable diffusion web ui だけでは苦労していたことが簡単に出来るようになりますので、是非みなさんもインストールして、使ってみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次