【2024.10.06更新】スケッチ読み取りCN「XDoG-sketch」を追加しました。

こんにちは、スタジオ真榊です。こちらの記事は、SDXL向けControlnetの基本的知識や導入方法、おすすめのモデル、実際の使い方を紹介する大型特集です。ラフを線画化したり、線画を着色してもらったり、写真をイラスト風に変えたり、特定の部位だけを描き変えたり、高精細にアップスケールしたりと、各モデルのさまざまな活用方法を紹介しています。

デモとして使用するwebUIは「Forge」、モデルは「AnimagineXL3.1」です。SDXL用のControlnetはSD1.5系の学習モデルでは使用できませんので、SD1.5系モデルを利用される方はこちらの記事をご参照ください。

Controlnetとは?

「Controlnet(以下、CN)」は、ある画像をStableDiffusionに参照させ、その画像に描かれたものの輪郭や立体感などを抽出することで、それをベースにした画像を生成できる技術のことです。輪郭だけを維持しながら別のイラストにできる「Canny」や「Lineart」、ラフを清書できる「Scribble」、立体情報を与えて生成画像を操作できる「Depth」など、さまざまな学習を施された「Controlnetモデル」がウェブ上で流通しています。また、それらが入力画像を認識するための下ごしらえをする「プリプロセッサ(前処理機能)」というものが個別に用意されており、これらを使いこなすことで、さまざまな絵作りができるようになるわけです。

「Canny」で輪郭を継承し、プロンプトを「blonde hair,red eyes」に変更した例

▲「Canny」で輪郭を継承し、プロンプトを「blonde hair,red eyes」に変更した例

SD1.5系のCNモデルに比べると、後発のSDXL用CNモデルはなかなか精度が担保できなかったのですが、2024年5月ごろから高品質なモデルが日本の個人発で次々に公開され、ラフのオート線画化や線画の着色といったことが実用レベルでできるようになってきました。この記事では、公開されているモデルを網羅するのではなく、普段特に有用であると感じているモデルに絞って、できることや具体的な使い方を解説していきたいと思います。

インストール&アップデート方法(For A1111)

Automatic1111版SDwebUIでControlnetを使うには、事前に拡張機能をインストールする必要があります。Controlnet開発者が公開したwebUI「Forge」では、デフォルト機能として最初からControlnetが使えるので、次の項目へ飛んで構いません。

インストールは簡単。SDwebUIの「拡張機能」タブから「URLからインストール」をクリックし、「拡張機能のリポジトリのURL」欄に「https://github.com/Mikubill/sd-webui-controlnet.git」と入力します。

インストール&アップデート方法(For A1111):図版1

インストールボタンを押して少し待つと、入力欄の下にインストール完了を告げるメッセージが表示されるので、2つ隣の「インストール済」タブに移動し、「アップデートを確認」ボタンをクリック。読み込みが終了したら、「適用して UI を再起動」ボタンを押せばOKです。txt2imgの画面の下の方に「controlnet v〇〇...◀」というタブができていれば成功です。(Forgeの場合はデフォルトで"ControlNet Integrated ◀"というタブが存在します)

インストール&アップデート方法(For A1111):図版2

アップデートの有無も確認しておきましょう。webUIの「拡張機能」から「アップデートを確認」をクリック。「sd-webui-controlnet」の欄の右端にある「アップデート」のところに「更新あり」と出たら、「適用してUIを再起動」すればOKです。

CNモデルのダウンロード先

Controlnetを使うためには、checkpointやLoRAのように「Controlnetモデル(以下、CNモデル)」を所定のフォルダにダウンロードする必要があります。CannyやDepth用のSDXL向けCNモデル(拡張子:safetensors)は、代表的なものがこちらのリンク先でまとめられているほか、個人配布のモデルをCivitaiなどでDLすることができます(後述)

ファイル名に「xl」とあるのがSDXL用、「sd15」とあるのがSD1.5用のCNモデルですので、混同しないよう注意。同じモデルでもfullやsmallといった学習方法のバージョン違いがあり、基本的にファイルサイズが大きいほど性能が良い傾向にあります。

(※初めてでどれをDLしたらいいか分からない方は、とりあえず容量が軽めで使いやすい輪郭継承モデル「kohya_controllllite_xl_canny_anime.safetensors」を保存しておいて、慣れてから需要に応じて必要なモデルをDLするとよいでしょう)

CNモデルのダウンロード先:図版1

「LFS」の隣にある下矢印をクリックすればダウンロードが始まります。ダウンロード先は、使用するwebUIによって異なりますが、基本的にはwebUIのインストールフォルダの中から「models」フォルダを探して、その中にある「Controlnet」フォルダに置けば大丈夫です。

StabilityMatrixを利用してwebUIをインストールした方は「Data/Models/Controlnet」フォルダの中に配置すれば、どのwebUIからでも利用できます。このモデル格納フォルダは、StabilityMatrixの「Checkpoints」画面から、右上の「モデルフォルダ」をクリックすることでも開くことができます。(詳しくは下記記事参照)

こちらがForgeのControlnet画面ですが、CNモデルを正しいフォルダに配置できていれば、このように操作画面右列の「モデル」一覧をクリックすると、名前が一覧表示されます。(正しく配置しているはずなのに表示されない場合は、横の青い更新ボタンを押してみましょう)

CNモデルのダウンロード先:図版2

Controlnet画面の見方

【A1111版】

Unit0~Unit3と、タブが横に並ぶのが特徴。基本的にはUnit0の一つしか使わないが、別のタブも使うと複数のCNを併用することもできる。タブの数は設定欄の「Multi-ControlNet: ControlNet unit number (requires restart)」から増減できる。

Controlnet画面の見方:図版1

【Forge版】

1つめの「Unit0」がまず大きく表示されているのがForge版の特徴。2つ目以降のCNを適用したい場合は画面下にUnit1以降が並んでいる。A1111版と同じ設定欄で増減可。

Controlnet画面の見方:図版2

text to imageか、image to image画面で画像生成をする際、CNメニューの「有効化」にチェックを入れることで、生成過程にControlnetを影響させることができます。

具体的手順は次の通り。

「有効化」にチェックを入れ、入力画像欄に参照させたい画像を読み込ませる。(複数のUnitを有効化することで、複数のCNを同時に影響させることもできる)

「プリプロセッサ」を選び、これから利用するCNモデルに適した下処理をする。使用するモデルによって、「白背景に黒線」「黒背景に白線」「normalmap」「depth」などと適切な下処理が異なるので、組み合わせを覚えよう。

あとは通常の生成時と同様、プロンプトやSTEP数、キャンバスサイズなどを設定して生成すると、CNの影響を受けた画像が生成される。

A1111とForgeで微妙に見た目の違いがありますが、使い方はほぼ同じです。

Controlnet画面の見方:図版3

・有効化

ここにチェックを入れることで、Controlnet機能を発動できる。入れ忘れ・入れっぱなしに注意。

・低VRAM(A1111版のみ)

グラフィックボードのメモリ(VRAM)が8GB以下の場合はこちらにチェックを入れると、画像の生成速度が大きく下がる代わりに、VRAM不足の環境でもエラーを回避して生成することができる。VRAM4GBでも動作したとの報告あり。

・Pixel Perfect

プリプロセッサによっては、抽出する解像度(Preprocessor resolution)を手動で設定する必要があるが、ここにチェックを入れておくと、自動で最適なプリプロセッサ解像度が計算される。適当にONにしておいて問題なし

・Allow Preview

ここにチェックを入れて、プリプロセッサ欄とモデル欄の中間にある爆発ボタンをクリックすることで、プリプロセッサが元画像から何を抽出したかプレビューしたり、抽出画像を編集したりすることができる。プレビュー画像は右上の「↓」ボタンでダウンロードしたり、「Edit」ボタンで加工したりできる。プリプロセッサ「lineart_realistic」で抽出した線画はそこそこ高品質なので、画像編集ソフトで黒白反転させると通常の線画として画像編集に使える。

・Controlnet weight

 Controlnetの「重み」を調整できる最重要パラメータ。1(=100%)が基本で、それ以下に弱めるとControlnetで入力した抽出情報の参照度が下がる代わりに、AIが自由に描けるようになるので、一般に品質は上がる。

 プリプロセッサやモデルの組み合わせ、どんな画像を作りたいか等によって適切な設定は異なり、常に「1」でよいものもあれば、0.5~0.9程度で調整するとよいものもある。複数のCNモデルを「1」で適用すると、拘束力が強すぎてガビガビの生成結果になりやすいので、適宜弱めよう。

・StartingControlStep / EndingControlStep

 Controlnetの効果がステップ全体のどの範囲に効かせるか選ぶことができる。

0が0%、1が100%を意味しており、デフォルトでは「0でスタート、1でエンド」。こうしておくとノイズ状態(0%)から生成終了(100%)まで全てのステップにCNの効果が及ぶが、例えばスタートを「0.8」にすることで、全体の80%に当たるステップ数から影響が出始める。(画像生成の最後の20%だけ影響する)

 なぜこんな機能が必要かというと、ステップ全体に効かせると画像生成に制約が掛かりすぎて品質が低下してしまうことがあるため。例えば、キャラクターの手の輪郭だけをLineartで指示したいのに、全ステップにその輪郭が効いてしまうと「手しかないイラスト」ができてしまうようなケースが起こる。

 モデルによって適切な設定は異なるが、基本は「スタート0エンド1」もしくは「スタート0.1エンド0.8」程度にしておき、品質低下や不都合が生じたらcontrol weightと合わせて調整するといい。CNが上手な人はこのパラメータの扱いがうまい。

・Preprocessor resolution

プリプロセッサ(前処理)を行って生成する下処理画像の解像度。プリプロセッサを選ぶと下図のように表示されることがある。Pixel PerfectをONにすることで自動的に適切な数値にしてくれるので、こだわりがなければそれでOK。手動で入力する場合、数値が64の倍数でないと自動で近似値に調整されて横縦のサイズがおかしくなるなど不都合が起きるので注意。特に線画を抽出する際は、元画像と重ならなくなってしまう。

Controlnet画面の見方:図版4

・controlモード

 プロンプト指示とControlnetの指示のどちらかをより強く影響させることができる。デフォルトでは両方を取り入れる「バランス」モードになっているが、「my prompt is more important」を選ぶとControlnetの拘束よりもプロンプト再現を優先してくれる。CNモデルによってこのモード別の生成結果は大きく変わるので、XYZ Plotを使ってテストしてみるとよい。

 Lineart系のCNで線画をしっかり保持したいならControlnet is more important、線画をほどよく無視して自由にキレイな絵を生成したいなら「My prompt~」を選ぶとよいことになるが、経験上「バランス」が一番CNに忠実な結果になることが多い。

「Controlnet is~」より、なぜか「Balance」の方が原画に近い結果になるケース

▲「Controlnet is~」より、なぜか「Balance」の方が原画に近い結果になるケース

・Hires-Fix Option

Controlnet画面の見方:図版5

Hires(高解像度補助)をONにしたときだけ現れるメニュー。Hiresは通常生成をしたのちに高解像度化処理を掛けるが、Controlnetを2段階のうちどちらに掛けるかを選ぶことができる。