Stable Diffusion『ControlNet』の使い方ガイド!導入・更新方法も

Stable Diffusion

Stable Diffusionを利用しているとき、「思った通りの画像が生成できない…」、「もう少し精度高く画像生成できないかな」、「ControlNetって聞いたことあるけど、何ができるの?」今回は、そんな方の悩みを解決します!

Stable Diffusionを用いた画像生成は、上手くプロンプトを認識しなかったり、プロンプトが反映されないことがあると思います。そういった際に、『ControlNet』という拡張機能がとても便利です。

ControlNetを使用する際の動作環境について、メモリ不足の低VRAMでも動作報告例はありますが、通常よりもVRAM消費量が増加するので注意してください。

スポンサーリンク

Stable Diffusionの拡張機能『ControlNet』とは?

『ControlNet』とは、新たな条件を指定することで細かなイラストの描写を可能にする拡張機能です。具体的には、プロンプトでは指示しきれないポーズや構図の指定などができます。数ある拡張機能の中でも最重要と言えるでしょう。

ControlNetでパースやスケッチなどを作成することも可能ですので、仕事に使える方もいらっしゃるのではないでしょうか。

『ControlNet』のメリット

ControlNetを使用すると、以下のように出力画像のスタイルやコンテンツなどを制御することができます。

  • キャラクターの特徴を維持したまま、色や画風だけ変える
  • 線画に着色・彩色する
  • 同じ顔や服装を指定する
  • ポーズや構図を指定する
  • 下書きからリアルな画像を作る
  • 写真からイラストを作る

また、ControlNetはノイズが発生した画像から高品質の画像を生成することも可能です。

Stable Diffusionの画像生成を最速で学びたいあなたへ!
  • Stable Diffusionの基礎を2時間でマスター!
  • 高スペックPCがない方向けに徹底解説。
  • ControlNetなど、必須級の拡張機能も網羅。
  • 今話題のSDXL、AI動画生成も。
  • 特典として、大人気「おすすめ拡張機能・モデル解説」「プロンプト大全」つき!
\このボタン限定!70%オフキャンペーン実施中!/
70%オフキャンペーン実施中!/

【2023年10月時点】『ControlNet』の最新バージョン

現在、2023年4月にリリースされた『ControlNet 1.1』が最新バージョンとなっています。

この最新バージョンでは、以前のバージョンのモデルが改良されたり、6つほど新しいモデルが追加されたりしています。

詳しくは、公式ページに載っていますので参考にしてください。

GitHub - lllyasviel/ControlNet-v1-1-nightly: Nightly release of ControlNet 1.1
Nightly release of ControlNet 1.1. Contribute to lllyasviel/ControlNet-v1-1-nightly development by creating an account on GitHub.
romptn Q&Aで画像生成の悩みを解決しよう!
  • Stable Diffusionのエラーが解決しない
  • 画像生成がうまくできない
  • おすすめのモデルが知りたい
など、AIに関するお悩みがあれば投稿してみてください。
詳しい人が解決してくれるかもしれません。

『ControlNet』のインストール方法

それでは、Stable DiffusionにControlNetをインストールしていきましょう!まだ、Stable Diffusionを導入できていない方やインストールできない方は、以下の記事をぜひ参考にしてください。

※Stable Diffusionが動かない、エラーやバグなどが発生する場合は再インストールやダウングレードも試してみてください。

STEP①:Stable Diffusionに『ControlNet』を導入する

以下の手順に従い、ControlNetを導入しましょう。

手順1:「Extentions」タブを開き、「Install from URL」タブをクリック。

手順2:URLの欄に『https://github.com/Mikubill/sd-webui-controlnet』を入力した後、「Install」をクリック。

手順3:「Installed」タブを開いた後、「Apply and quit」をクリックし、Stable Diffusionを再起動。

ControlNetをインストールしても該当箇所に表示されない・出てこない場合は、Stable Diffusion WebUIと、WebUIバッチの両方を再起動してみてください。

ControlNetをアンインストールする場合は、保存先である『stable-diffusion-webui』→『extensions』内から「sd-webui-controlnet」を削除する。パソコンのバッチ処理が遅く、動作が重い場合は削除するのも一つの手段です。

STEP②:『ControlNet』の「モデル」をダウンロードする

ControlNetの導入が完了したら、次は「モデル」のダウンロードです。以下サイトを参照し、希望のモデルをダウンロードしましょう。(特に無ければ、「openpose」や「canny」のモデルがオススメです。)

comfyanonymous/ControlNet-v1-1_fp16_safetensors at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

名称control_v11p_sd15_〇〇〇_fp16.safetensorsを確認し、ダウンロードのボタンを押しましょう。(〇〇〇部分に”openpose”や”canny”の記載があります。)

モデルのダウンロード完了後、『stable-diffusion-webui』→『extensions』→『sd-webui-controlnet』→『models』のフォルダ内にモデルを格納すれば準備OKです。

ダウンロードしたのにモデルが表示されない方は、格納フォルダ場所を間違えてないか確認しましょう。

『ControlNet』の基本的な使い方

ControlNetを使うときは、画像を挿入し『Enable』にチェックを入れたうえで、Preprocessor(プリプロセッサ)、Model(モデル)の2つを選択してイラストを生成します。プリプロセッサにより、元画像から特定の要素を抽出し、モデルに従ってイラストが描かれるという原理・仕組みです。

プリプロセッサモデルの種類は合わせておきましょう。

上記ControlNetの設定画面は、Stable Diffusionの「txt2img」タブの左下部にあります。

ここからは具体的なControlNetの機能(モデルの違いなど)を説明します。モデルは、アップデートの際に追加されたりするので注意が必要です。

※ControlNet内のm2mの使い方・使用方法についてはまた別の機会に解説します。

canny:「線画」を使ってポーズを指定する

cannyは、画像から線画を抽出し、その線画から新たにイラストを生成する機能です。元画像の輪郭を保ったまま、他の部分を変える際などに使用します。例えば、同じ画像のまま服装について色指定することで、色の塗り直しが行われ、様々な色を着彩することが可能です。

実際に生成した画像と元画像を比較してみると、ほとんど同様の画像で服装の色などが変化しています。

openpose:「棒人間」を使ってポーズを指定する

openposeは、画像から人体、顔、手足のキーポイント(棒人間)を検出し、イラストを生成する機能です。元画像のポーズを反映させ、色々なポーズ変更したい時などに使用します。また、立ち絵などの作成にも便利です。

非常に汎用性が高く使い勝手が良い機能ですので、気軽に試してみてください。

実際に生成した画像と元画像を比較してみると、ポーズは保ったまま、他の部分は色々と変化しています。ポーズ以外の要素はあまり適用されないようですね。

いまいち棒人間の使い方がわからない、ポーズが思い浮かばない方は、civitaiというサイト内にあるポーズ集を探してみてください。そこにはサンプル画像として多くのポーズデータがあります。

また、デザインドールというソフトを使い、3Dでポーズ指定する方法もあります。棒人間やデザインドールなどのボーン画像を使いこなしましょう!

CMU社が公開している『OpenPose』は非商用のライセンスになり、商用利用する場合は年間約250万円の値段がかかる有料コンテンツです。しかし、ControlNet内の『OpenPose』機能については、無料で商用利用が可能です。

※「openpose」の機能について、さらに詳しく知りたい方は以下の記事を参考にしてください。

depth:画像の深度を変更する

depthは、画像を深度情報に変換しそれをベースに画像を生成する機能です。元画像の奥行きを表現したい時などに使用します。例えば『体の重なり』などを描写する時などに活用すると良いと思います。

“深度マップ”では手前ほど白く、奥ほど黒く描画されています。

scribble:抽象的な線画から画像を生成する

scribbleは、手書きのような画像からイラストを生成する機能です。元画像のおおまかな構図や配置などをざっくり指示したい時に使用します。

実際に生成した画像と元画像を比較してみると、おおまかな構図は同じものの、背景や表情などが変わっています。

また、自作のラフな落描きから、画像を生成する事も可能です。自分の構想した画像を具現化する際に役立ちます。

inpaint:選択した範囲を修正する

inpaintは、元の画像を部分的に修復する機能です。画像を部分修正(例えば、手の修正など)したい際に使用します。今回は顔を切り抜き、画像を修正してみます。

実際に生成した画像と元画像を比較してみると、他の要素を維持したまま少し顔の違った女性が生成されました。

Inpaintによって、Adobe Fireflyの「ジェネレ―ティブ塗りつぶし」のような機能が実装されました。(上半身のみの画像から下半身も合成するといった”アウトペインティング”は、Outpainting mk2という拡張機能で実施可能です。)

※「Inpaint」について、さらに詳しく知りたい方は以下の記事を参考にしてください。

reference:元画像の絵柄を保持して画像を生成する

referenceは、元の画像を参照して同じようなスタイルを持つ画像を生成する機能です。同じ顔や同じキャラで色々なポーズや風景の画像を作成したい際などに使用します。

※「reference_only」を使った画像生成を紹介した記事もありますので、是非参考にしてください。

mlsd:画像から直線部分を抽出する

mlsdは、直線的な線を抽出して画像を生成する機能です。部屋や建物の構造やレイアウト、距離などを抽出して新しい画像が生成できます。背景を合成する際に便利です。

tile:画像をアップスケールする

tileは、高解像度の画像を生成するための機能です。小さい画像やぼやけた画像を高解像度化(アップスケール)したり、元の画像に変化を与えたりできます。

画像をアップスケールする際、画像の生成が上手くいかないこと(一人を指定しているのに、複数人の画像になるなど)がありますが、tileを使用すると画像が破綻しにくくなります。

「Tile」について詳しく知りたい方は、以下の記事を参考にしてください。

lineart:元画像の線画から画像を生成する

lineartは、線画を作成しそれを元に画像を生成する機能です。線画は手書き風の柔らかい線になっており、元イラストをざっくりと表現できます。

lineart_anime:lineartよりアニメっぽい画像を生成する

lineart_animeはlineartのイラスト向け版です。lineartよりアニメっぽく表現したい場合に使用します。生成したい絵柄が、リアル系かイラスト系かで使い分けると良いかもしれません。

※「lineart」については、以下の記事で詳しく解説しています。

normal:元画像の法線から画像を生成する

normalは、法線マップ(ノーマルマップ)を使って画像を生成する機能です。法線マップは元の画像から凹凸や光影、物体の質感などを表現できるものです。

segmentation:元画像を要素ごとに抽出・分割する

segmentation(seg)は、オブジェクトを識別して領域を分割し、画像を生成する機能です(セマンティックセグメンテーション)。オブジェクトを置換したり、背景を変更したりできます。

softedge:元画像の主線を抽出する

softedgeは、ソフトな輪郭を使って画像を生成する機能です。境界線がより滑らかになることで、背景と被写体がなじみ、自然な画像を生成できます。

『ControlNet』のプリプロセッサの種類とその用途

対応するプリプロセッサが複数あるモデルについて、どのプリプロセッサを使用したらよいか分かるように簡単に表でまとめました。ぜひ、参考にして使い分けてください!

『ControlNet』のパラメータ設定

次にControlNetのパラメータの項目について説明します。設定方法がイマイチわからない方は参考にしてください。

EnableControlNetの有効化。チェックの入れ忘れに注意。

Low VRAMパソコンの推奨スペックに届いていない(グラフィックボードのVRAM容量が少ない)際にチェック。デメリットとして画像の生成が遅くなり、時間がかかる。

Pixel Perfectプリプロセッサ解像度の最適化

Allow Previewチェックを入れ、プリプロセッサ欄とモデル欄の中間にある爆発マークをクリックすると、プリプロセッサによる抽出画像をプレビューすることができる。

Control WeightControlNetの「影響力」を調整できる。基本の値は”1″。

 Starting Control Step / Ending Control Step:ControlNetの効果をステップ全体のどの範囲に効かせるか調整する。

 デフォルトではStarting Control Stepが”0″、Ending Control Stepが”1″であり、ノイズ状態(0%)から生成終了(100%)まで全てのステップにControlNetが影響する。基本は「0~1」、「0~0.6」程度がオススメ。

Control Modeプロンプト指示とControlNet指示のどちらの影響をより強くするか。どちらかの指示が効かない、機能しない場合は調整が必要。

Resize Mode入力画像・ポーズ画像のアスペクト比(縦横比)が、生成画像と異なる場合の処理を調整します。

Just Resize は、アスペクト比を無視して画像を生成。

Crop and Resize は、アスペクト比を維持し、余白部分を黒く塗りつぶす。

Resize and Fillは、アスペクト比を維持し、余白部分は自動生成する。

『ControlNet』をアップデートする方法

2023年4月中頃に「ControlNet 1.1」がリリースされています。まだ、前のバージョンを使用している方やアップデートできない方は、以下を参考に最新版にバージョンアップしておきましょう。

ControlNetやその他拡張機能を更新するやり方は以下の通りです。

手順1:Stable Diffusion Web UIを起動して、「Extensions」,「Installed」のタグから「Check for updates」をクリック。

手順2:右側「Update」の列を確認し、「new commits」(もしくは「Bihind」)の記載があれば、チェックが入った状態で、「Apply and quit」をクリックし、Stable Diffusion Web UIを再起動する。

※なお、最新版の場合は「latest」と表示されます。

『ControlNet』を上手く活用するコツ

『ControlNet』は使い方を工夫すれば、より複雑な画像を生成することも可能です。例えば、以下の三つのような方法があります。

①棒人間を自分で編集してポーズを指定する

Openposeモデルには、自由に棒人間を作れるOpenpose Editorという拡張機能があります。この拡張機能を使うと、入力画像が必要ないのに加え、思い通りのポーズを指定することが可能になります。

その際、プリプロセッサを「none」にするのを忘れないでください。(もちろん、モデルはOpenposeです。)

②自分で描いた線画を清書して色塗りする

自分で描いたラフなイラストを「scribble」を使って清書した後、「canny」を使って自動着色するとクオリティの高いイラストが生成されます。「scribble」のみや「canny」のみで生成するよりも綺麗に生成できるので、ぜひ試してみてください!

※色塗りする方法については、以下の記事で詳しく解説しています。

③複数のControlNetを同時に適用する

複数のControlNetを同時に適用したい場合、『Multi ControlNet』という拡張機能を利用しましょう。例えば、二つの機能を併用すると以下のことなどが可能になります。

  • reference-onlyで画風を、openposeでポーズを指定
  • openposeとdepthでより正確にポーズを指定
  • openposeでポーズを、Segmentationで背景を指示

他にもいろいろな組み合わせが考えられます。Multi ControlNetを使いこなせば、自分が構想している画像を生成するのに大きく役立ち、Stable Diffusionでできることが増えるので、めげずに学習していきましょう!

まとめ

いかがでしたでしょうか?

『ControlNet』について使い方や導入方法などを詳しく解説してきました!

今回のポイントをまとめると、以下のようになります。

  • ControlNetとは、新たな条件を指定することで細かなイラストの描写を可能にする拡張機能でポーズや構図の指定が可能になる。
  • ControlNetの基本的な使い方は、画像を挿入し『Enable』にチェックを入れたうえで、Preprocessor(プリプロセッサ)、Model(モデル)の2つを選択してイラストを生成する。
  • ControlNetの機能は複数あるが、「openpose」や「canny」は使いやすくオススメ。
  • ControlNetを上手く使うコツとして、「棒人間を自分で調節し、ポーズを指定する」、「自分で描いた線画を清書し、色塗りする」、「複数のControlNetを同時に適用する」などがある。

今回の記事を参考して、Stable DiffusionでControlNetを活用して画像生成をしてみてください!

romptn Q&Aで画像生成の悩みを解決しよう!
  • Stable Diffusionのエラーが解決しない
  • 画像生成がうまくできない
  • おすすめのモデルが知りたい
など、AIに関するお悩みがあれば投稿してみてください。
詳しい人が解決してくれるかもしれません。