【Stable Diffusion】拡張機能ControlNetの使い方を解説!
- ※当ブログはアフィリエイト・アドセンスによる収益で運営されています。
こういったお悩みにお答えします。
Stable Diffusionで思いどおりのイラストを生成するのは至難の業。ガチャを繰り返して時間だけが過ぎ去っていく…なんて経験がある方も多いのでは。
この記事では
- 【Stable Diffusion】拡張機能『ControlNet』の特徴とは?
- ControlNetの基本的な使い方
- ControlNetで使える13の機能
- ControlNetの導入方法
- Multi ControlNetで複数のModelを組み合わせた使い方も可能
- もっとスムーズにイラストを生成したいなら…
- 生成した大量のイラストを簡単に管理する方法
これらについて解説していくので、最後まで読むとControlNetを使ってあなたの頭の中にあるイメージどおりのイラストを生成する方法がわかります。
この記事ではControlNetという拡張機能を紹介していますが、他にもおすすめの拡張機能を知りたい方は以下の記事も合わせてお読みください。
>>Stable Diffusionでおすすめの拡張機能(Extensions)を紹介!
【Stable Diffusion】拡張機能『ControlNet』の特徴とは?
ControlNetは、『こんなイラストを描いて!』というあなたの指示をさまざまな方法でStable Diffusionに伝えてくれる拡張機能です。
例えば
棒人間イラストを使ってポーズを指定したり
線画を指定したり
深度マップで対象の形を指定したりと、あなたが生成したいイラストの特徴をより正確に伝えることができるのです。
頑張ってプロンプトで指示を出しても、思いどおりのイラストがなかなか生成されずに困った経験がある方も多いでしょう。
それもそのはず。あなただって
- 顔は正面を向いて
- 右肘は下に曲げて
- 左肘は上に曲げて
- 右ひざは外向きに曲げて
- 左ひざはそんなに曲げないで
- 足はけっこう開いて…
こんな人物のイラストを描けと言われても、なかなか難しいですよね。
それに対して
『このポーズで描いて!』と言われればイメージしやすいはず。AIも同じです。
ControlNetを使うことで、プロンプトではとても指示しきれない内容を伝えることが可能になります。
ControlNetは数ある拡張機能の中でも最も重要と言えるほどのツール。まだ導入していない方は今すぐダウンロードしましょう。あなたが生成できるイラストの幅がケタ違いに広がりますよ。
ControlNetの基本的な使い方
ControlNetを使うときは、『Enable』にチェックを入れたうえで
- Preprocessor
- Model
この2つを選択してイラストを生成します。
Preprocessorは、元となる画像から特定の要素を『抽出』するためのもの。例えば、Preprocessorで『openpose』を選ぶと
棒人間のイラストが
『canny』を選ぶと線画が抽出されます。
こうして抽出された要素を元に、選んだModelでイラストが描かれるという流れ。そのため、基本的にPreprocessorとModelの種類は合わせておきましょう。
- Preprocessor:openpose
- Model:canny
のようなちぐはぐな設定だと、Stable Diffusionに対して
『(openposeで抽出された)このイラストが線画だよ!これに従って描いてね』というめちゃくちゃな指示になるため、的外れなイラストしか生成されません。
なおベースにする画像が抽出後のものである場合、Preprocessorは『none(なし)』でOKです。すでに抽出は終わっているわけですからね。
ControlNetで使える12の機能
ControlNetには、『experimental(実験中)』のものを除いて以下11個のModelがあります。さらに5月に入ってからは『reference only』などのPreprocessorも追加されています。
この記事では
- openpose
- canny
- depth
- mlsd
- scribble
- tile
- inpaint
- lineart
- lineart_anime
- normalbae
- Segmentation
- softedge
- reference
これら13個の機能について順番に解説していきます。PreprocessorとModelをあえてごっちゃにしていますがご了承ください。『openpose』と書いてある場合、PreprocessorもModelもopenposeであることを想定しています。
openpose
openposeはControlNetの中でも代表的な機能。『openpose以外はよくわからん』という方もいるのではないでしょうか。
openposeを使うと
棒人間イラストの形式でキャラクターのポーズを制御することができます。
これをもとにイラストを生成すると
棒人間のポーズをきちんと反映してくれていますね。
非常に汎用性が高く使い勝手がいい機能なので、これからControlNetを導入する方はまずopenposeを試してみるのがおすすめです。美少女など人物のイラストをメインに生成する方は、なおさら手放せない機能になるでしょう。
openposeの詳しい解説や使い方については以下の記事で解説しています。
>>【Stable Diffusion】ControlNetでポーズ・構図を指定できる『openpose』の使い方!
canny
cannyは抽出した『線画』の情報をもとにイラストを生成する機能です。
キャラクターの輪郭を保ったまま他の部分(色など)を変える場合におすすめ。
ランダムで髪の色を変えてみて気に入ったイラストを探す、なんてことも可能です。openposeと違って背景や髪の毛の輪郭も(線画で表現されている範囲で)保たれるのが特徴ですね。
cannyの詳しい解説や使い方については以下の記事で解説しています。
>>【Stable Diffusion】ControlNetの線画用モデル『canny』の使い方を解説!
depth
depthは深度情報をもとにイラストを生成する機能。
『深度情報』という言葉ではイメージしづらい方も多いと思いますが
手前の部分は白く・奥に行くほど黒く描画したイラスト(深度マップ)がベースになります。
奥行きについて正確に抽出できるのがdepthのメリット。openposeではうまく表現できない『体の重なり』などを正確に描画してほしい場合に選択しましょう。
depthの詳しい解説や使い方については以下の記事で解説しています。
>>【Stable Diffusion】ControlNetの深度情報用モデル『depth』の使い方を解説!
mlsd
mlsdは直線部分のみを抽出する機能。部屋の内装など、直線的な無機物を描画するのに適しています。
どのイラストもソファー・窓枠・絵画などがすべて同じ位置・大きさに配置されていますよね。
人物のイラストは曲線が多いため適していませんが、後述するMulti ControlNetを使うと
openposeなどでポーズを指定しつつ
mlsdで部屋を指定することによって
思いどおりのシチュエーションのイラストを生成することができます。
mlsdの詳しい解説や使い方については以下の記事で解説しています。
>>【Stable Diffusion】ControlNetで直線を抽出できる『MLSD』の使い方!
scribble
scribbleはラフ描きからイラストを生成する機能。cannyよりもかなり雑な抽出になっていますね。
大まかな構図や配置をふわっと指示したい場合におすすめです。
また、雑なラフ描きからイラストを生成できるということは
へたくそな手描きイラストでもベースにできるということ。
筆者が10秒で描いた落書きからでも、きちんとイラストを生成してくれます。
scribbleの詳しい解説や使い方については以下の記事で解説しています。
>>【Stable Diffusion】ControlNetのラフ描き用モデル『scribble』の使い方!
tile
Tile(Tile resample)はイラストをきれいにアップスケールするときに使用する機能。Tile resampleによって元イラストの絵柄を維持できるため、Denoising strengthを高く設定することができるのが強みです。
拡張機能の『Tile Diffusion』と合わせて使うのがおすすめ。
>>【Stable Diffusion】ControlNet1.1用モデル『Tile_resample』の使い方を解説!
inpaint
inpaintは元のイラストを部分的に修復する機能です。同名の機能がimg2imgにもありますね。
公式によると、通常のinpaint機能よりも破綻が少なく修復できるとのこと。
試しにこのイラストを修復してみましょう。
ControlNetに画像を放り込み、顔の部分をマスクで覆うと
修復されたイラストが生成されました。破綻もなく、元のイラストも尊重してくれているのがわかりますね。
lineart
lineartは元のイラストから抽出した線画を元にイラストを生成する機能です。『線画をベースにする』という点でcannyと同じですが、lineartは手書き風の柔らかい線になっているのが特徴です。
あまり細かな部分は拾わないので、『元イラストをざっくりと再現したい』という場合におすすめ。
lineart_anime
lineartよりも少し薄い印象。塗りがよりアニメっぽくなるのが通常のlineartとの違いです。
なおModelをlineart_animeにしてイラストを生成するときは、Clip skipを2にしておくのがおすすめ。
『Clip skipってなに?』という方は以下の記事も合わせてお読みください。
>>【Stable Diffusion】Clip Skipの意味とは?設定方法を解説!
normalbae
normalbaeは元イラストの法線情報を抽出し、イラストを生成する機能です。
法線情報とはx,y,z方向をそれぞれ赤・緑・青で表現したもの。立体感を再現することができます。
segmentation
segmentationは元イラストを要素(パーツ)ごとに分割・抽出する機能です。
この部屋の内装をsegmentationで抽出すると
ソファーやクッションなどがきれいに色分けされています。
その一方、人物を再現するには不向きなので、目的によって他の機能と使い分けましょう。
softedge
softedgeはもともとHedと呼ばれていた機能で、元イラストの主線を抽出してくれます。
cannyと似たような機能ですが、softedgeの方がより細かな部分まで(細い線で)要素を拾っています。cannyよりも元のイラストを詳細に再現したい場合におすすめ。
reference
referenceは元イラストの画風を維持したまま新しいイラストを生成してくれる機能。専用のModelはなく、Preprocessorのみが実装されています。
描かれるキャラクターの姿が(ある程度)固定されるため、ストーリー仕立てのイラストも生成しやすくなるでしょう。
referenceの詳しい解説や使い方については以下の記事で解説しています。
>>【Stable Diffusion】画風・スタイルを再現する『reference-only』の使い方!
ControlNetの導入方法
ControlNetの導入は
- ControlNet本体のインストール
- Modelのダウンロード
この2STEPで進めていきます。
ControlNet本体のインストール
Stable Diffusion web UIの操作画面で『Extension』→『Install from URL』タブを選択し
- https://github.com/Mikubill/sd-webui-controlnet
このURLをコピペしてください。
下にある『Install』ボタンを押すと、自動でインストールが始まります。
インストールが完了したら『installed』のタブに移動し、『Apply and restart UI』のボタンをクリックしましょう。Stable Diffusionが再起動され、ControlNetが適用されます。
再起動後、操作画面の左下に『ControlNet』という項目が追加されていれば導入完了です。
ControlNetで使用するModelのダウンロード
ControlNet本体のインストールが完了したら、次はModelをダウンロードしていきます。
例えば、openposeのModelを入手する場合は
出典元:Hugging face
Hugging faceに飛び
- control_v11p_sd15_openpose_fp16.safetensors
という約700MBのファイルを入手してください。
ダウンロードが完了したら
『stable-diffusion-webui』→『extensions』→『sd-webui-controlnet』→『models』の中に放り込ます。フォルダ内にはすでにたくさんのYAMLファイルがありますが気にしなくてOKです。
openpose以外のModelについても同様の手順で導入できるので、気になったものはダウンロードしておきましょう。
Multi ControlNetで複数のModelを組み合わせた使い方も可能
ここまでControlNetのModel単体の使い方を解説してきましたが、Multi ControlNetという拡張機能を使うことで複数の機能を同時に使用することができます。これがめちゃくちゃ便利。
例えば
- reference onlyで画風を、openposeでポーズを指定
- openposeとdepthでより正確にポーズを指定
- openposeでポーズを、Segmentationで背景を指示
などなど、例を挙げていけばキリがありません。3つ以上のControlNet用モデルを併用することもできるため、可能性は無限大。
Multi ControlNetを使いこなせば、あなたがイメージするイラストを生成するのに大きく役立ってくれるでしょう。
Multi ControlNetの使い方や導入方法については以下の記事で解説しています。
>>【Stable Diffusion】Multi ControlNetとは?使い方と導入方法を解説!
ControlNetとimg2imgってどう違うの?
ControlNetとimg2imgの違いは、Stable Diffusionへ渡す情報の種類です。
img2imgは元となる画像の『色情報』を渡しているのに対し、ControlNetでは
- openpose:棒人間
- cannyなど:線画
- depth:深度
など、Modelに応じた情報をもとに新しいイラストを生成することができます。
まあ論より証拠ということで、それぞれの生成結果を見比べてみましょう。
この画像をベースにしてControlNetのopenpose機能でイラストを生成すると
このような結果でした。ポーズの再現はほぼ完ぺきと言っていいでしょう。しかし、元画像での色使いは完全に無視しています。
それに対してimg2imgで生成すると
構図がばらけてしまっている一方、(特に背景の)色は元の画像と似ていますよね。
- キャラクターポーズや構図を活かしたい → openpose
- 色や雰囲気を活かしたい → img2img
というふうに、あなたが重視する項目によってimg2imgとControlNetの各モデルを使い分けるのがおすすめ。
それぞれ長所・短所はあるものの、ControlNetの方が便利な場面も多いのでぜひ導入してみてください。
もっとスムーズにイラストを生成したいなら…
もしあなたがもっと快適にAIイラストを生成したいなら、グラボを見直してみるのがおすすめです。
グラボはAIイラストを生成するうえで最も重要なパーツ。いくらCPUやメモリが高性能でもグラボがしょぼかったら致命的です。
本格的に取り組んでいくのなら、グラボにはケチらず投資しましょう。最低でも12GBのVRAMは確保しておきたいところ。VRAMが2GB・4GBくらいしかない古いグラボだと高解像度化や学習に大きな支障が出てしまいます。
コスパを重視する方・予算が5万円以下の方はRTX 3060一択と言っていいでしょう。
もう少し予算が確保できて、さらにハイスペックなグラボに興味がある方は以下の記事もお読みください。きっとあなたに合ったグラボが見つかりますよ。
>>【コスパ重視】Stable Diffusionにおすすめのグラボ3選!
PCごと買い替えを検討している方は以下の記事をお読みください。快適にStable Diffusionを使えるマシン3選を紹介しています。
>>Stable Diffusionにおすすめのパソコン3選と推奨スペックを解説!
生成した大量のイラストを簡単に管理する方法
Stable Diffusionで生成した大量のイラストを効率的に管理するなら『Eagle』というツールがおすすめ。
イラストを生成するとメタデータが自動でEagleに送られ、タグやメモとして保存されます。このタグを使うことで検索や管理がとても楽ちん。
例えば『a dog』というタグで検索すると、そのプロンプトで生成されたイラストだけを表示することができます。『あのイラストどんなプロンプトで生成したっけ?』『LoRAのトリガーワード忘れた』なんて迷わずに済みますよ。
Eagleは本来『約4,000円・買い切り型』の有料ツールですが、30日間の無料体験ができるので、とりあえず試してみてください。
『【Stable Diffusion】拡張機能ControlNetの使い方を解説!』のまとめ
- ControlNetではさまざまな角度からイラストの指示を出せる
- 生成したいイラストの特徴に合わせてModelを選ぼう
- Multi ControlNetで複数の機能を組み合わせることも可能
ここまでお読みいただきありがとうございました!
他にもわからないことがあったら以下の記事をお読みください。初心者向けにStable Diffusionの使い方を一から解説しています。