「ControlNet 1.1」の新機能まとめ!新しいモデルや改善点を紹介【Stable Diffusion】

ControlNet v1.1 新機能まとめ 画像生成AI

今回もStable DiffusionのControlNetに関する話題で

ControlNet 1.1の新機能

を一通りまとめてご紹介するという内容になっています。

ControlNetは生成する画像のポーズ指定など幅広い用途に使える技術であり、すでに活用なさっている方も多いと思います。そのような中で、つい先日ControlNetの新しいバージョンがStable Diffusion web UI用の拡張機能に実装されて色々な新機能・改善が盛り込まれたので早速使ってみることにしました。

ここではこのCotrolNet 1.1の新機能や改善点について分かりやすく解説していきますね。

2023/05/15追記:
細かいアップデートによりさらに新機能が増えているので、その辺についても折を見てご紹介しようと思います。とりあえず下記の内容は5月頭くらいまでの情報です。

※なお「ControlNetって何?」という方は、下記の記事で詳しくご説明していますのでまずはそちらをご覧ください。

ポーズを指定して画像を生成できる「ControlNet」の使い方【Stable Diffusion web UI】
今回も画像生成AIに関する話題で、タイトルの通りポーズや構図をきっちり指定して画像を生成できる「ControlNet」の使い方を丁寧にご紹介するという内容になっています。画像生成AIを使ってイラストを生成する際、ポーズや構図を決めるときはポ...

ControlNet 1.1で新しく追加されたモデルについて

まずControlNet 1.1では新しく次の6つのモデルが追加されました。

  1. Lineart
  2. Anime Lineart
  3. Shuffle
  4. Instruct Pix2Pix
  5. Inpaint
  6. Tile

それぞれサンプルイラストを交えながらご紹介します。

Lineart

  • モデル:control_v11p_sd15_lineart
  • プリプロセッサ:
    • lineart_coarse
    • lineart_realistic
    • lineart_standard

入力画像を一旦線画に変換し、それを元に画像生成を行うモデルです。プリプロセッサを無効にして手描きの線画を入力することもできます。

入力画像 プリプロセッサの出力 生成したイラストの例
女性の写真(1) lineartプリプロセッサの出力例1 Lineartで生成した美少女イラストの例1
女性の写真(2) lineartプリプロセッサの出力例2 Lineartで生成した美少女イラストの例2
※上記2点の入力画像の出典:ぱくたそ 様(https://www.pakutaso.com/)

1枚目はかなり上手く描けていますが、2枚目の画像ではピースサインが上手く反映されなかったようで別のオブジェクトにすり替わってしまいました。

Anime Lineart

  • モデル:control_v11p_sd15s2_lineart_anime
  • プリプロセッサ:lineart_anime

先ほどのLineartのイラスト向けのモデルです。線画の色塗り等に適していると思います。

入力画像 プリプロセッサの出力 生成したイラストの例
ControlNetで清書した「くまみちゃん」の線画 lineart-animeプリプロセッサの出力結果の例 Anime Lineartを使って着色したイラストの例

きれいな線画を入力画像にすることが前提になっているようなので、落書きみたいな線画しか用意できない場合は一旦Scribbleで清書してから色を塗るやり方(下記の記事)を採用するといいでしょう。

AIで適当な線画を清書し、さらに色を塗って高品質なイラストに仕上げる方法【ControlNet活用術】
今回はAIを使ったイラスト制作作業の効率化に関する話題で、タイトルの通り適当に描いた線画だけを用意して、あとはAIにお任せで高品質なイラストを完成させる方法をまとめてみるという内容になっています。以前、画像生成AIの新しい技術であるCont...

Shuffle(実験的機能)

  • モデル:control_v11e_sd15_shuffle
  • プリプロセッサ:shuffle(「なし」でも可)

入力画像をシャッフルして再構成するモデルです。入力画像のスタイルを維持したまま別のモチーフに再構成する場合に使えます。執筆時点では実験的な機能となっています。

入力画像 生成したイラストの例
美少女イラスト shuffleを使って生成した美少年のイラストの例

上記の例では美少女を美少年に再構成してみました。何となく雰囲気を保ったまま少年になりましたね。

Instruct Pix2Pix(実験的機能)

  • モデル:control_v11e_sd15_ip2p
  • プリプロセッサ:なし

「Instruct Pix2Pix」という手法を使って画像を描き換えるモデルです。「この画像をこういう風に変更しろ」というプロンプトを与えるとその通りの画像を生成してくれます。執筆時点では実験的な機能となっています。

入力画像 生成したイラストの例
美少女イラスト Instruct Pix2Pixを使って色変更を行った美少女イラストの例
プロンプト:make her color red

恥ずかしながら最初は使い方がよく分からなかったのですが、

  1. img2imgの画像欄に元画像を入れる
  2. ControlNetの入力画像を空欄にする
  3. プロンプトに「どう変更するかの命令」を記入する

というやり方で使えるようになりました。どうやらtxt2imgじゃなくてimg2imgで使うのが前提のようですね。

Inpaint

  • モデル:control_v11p_sd15_inpaint
  • プリプロセッサ:inpaint_global_harmonious

画像の一部を修正する「Inpainting」の手法を使うモデルです。入力画像の一部を塗りつぶすと、そこだけを変更することができます。一見するとInpaintingそのものですがtxt2imgでも使えます。

入力画像 塗りつぶし箇所 生成したイラストの例
美少女イラスト Inpaintの塗りつぶし箇所 Inpaintで表情を笑顔に変更した美少女イラストの例

Tile(実験的機能)

  • モデル:control_v11f1e_sd15_tile
  • プリプロセッサ:tile_resample

高解像度の画像を生成する際にディテールをうまく補完するためのモデルです。高解像度の画像を生成する際、画像を「タイル状」に生成してそれを合体させるやり方がある(例えば拡張機能の「Tiled Diffusion」が有名)のですが、その手法にまつわる問題点を解決するために開発されたとのこと。ControlNet1.1が出たばかりのときは未完成でしたが、アップデートで実験的機能になりました。

小さい入力画像(128px) 生成した高解像度のイラストの例(1024px)
サイズが小さいイラストの例 tileで生成した高解像度の美少女イラストの例
(※拡大できます)

入力画像の大きさをいくつか試してみたところ、例えば64px程度だと小さすぎて生成結果がぼやけてしまいましたが、128px程度にしたらとてもきれいな美少女イラストが生成されました。小さな画像を元に高解像度の画像を生成したいときに便利ですね。

CotronNet 1.1で改善・機能追加が行われたモデルについて

次にControlNet 1.1では旧バージョンからあったモデルに関しても、改善されたり機能追加が行われたりしました。

  • Depth
  • Normal
  • Canny
  • MLSD
  • Scribble
  • Soft Edge(※旧「HED」)
  • Segmentation
  • Openpose

それぞれ詳しく見ていきましょう。

Depth

  • モデル:control_v11f1p_sd15_depth
  • プリプロセッサ:
    • depth_leres
    • depth_midas
    • depth_zoe

入力画像の深度情報を元に画像生成を行うモデルです。旧バージョンではプリプロセッサによって生成される深度マップが「ぼやけた感じ」になる等の問題がありましたが、それが改善されたようです。

入力画像 プリプロセッサの出力 生成したイラストの例
女性の写真(1) 深度マップの例1 Depthを使って生成した美少女イラストの例(1)
女性の写真(2) 深度マップの例2 Depthを使って生成した美少女イラストの例(2)

結果を見てみると手の指(ピースサイン)がとても上手く描けているのが分かります。以前ご紹介した拡張機能「Depth map library and poser」でも手の描画に深度マップを使っているので、手を上手く描かせたい場合はこのDepthモデルが有効でしょう。

Normal

  • モデル:control_v11p_sd15_normalbae
  • プリプロセッサ:
    • normal_bae
    • normal_midas

入力画像の法線情報(端的にいうと凸凹)を元に画像生成を行うモデルです。CotrolNet 1.1では旧バージョンよりもずっと合理的なアルゴリズムが採用されたとのこと。

入力画像 プリプロセッサの出力 生成したイラストの例
女性の写真(1) 法線マップの例1 Normalを使って生成した美少女イラストの例(1)
女性の写真(2) 法線マップの例2 Normalを使って生成した美少女イラストの例(2)

Canny

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

入力画像の輪郭を抽出して画像生成を行う最も基本的なモデルです。ControlNet 1.1ではモデルの質が向上したようです。

入力画像 プリプロセッサの出力 生成したイラストの例
女性の写真(1) cannyプリプロセッサの出力例1 Cannyを使って生成した美少女イラストの例1
女性の写真(2) cannyプリプロセッサの出力例2 Cannyを使って生成した美少女イラストの例2

MLSD

  • モデル:control_v11p_sd15_mlsd
  • プリプロセッサ:mlsd

入力画像の直線を抽出して画像生成を行うモデルで、主に建物や部屋などの構造物に対して使うと効果的です。こちらもアップデートでモデルの質が向上したようです。

入力画像 プリプロセッサの出力 生成したイラストの例
きれいな部屋の写真 mlsdプリプロセッサの出力例 MLSDを使った部屋のイラストの生成例
※上記1点の入力画像の出典:ぱくたそ 様(https://www.pakutaso.com/)

Scribble

  • モデル:control_v11p_sd15_scribble
  • プリプロセッサ:
    • scribble_hed
    • scribble_pidinet
    • scribble_xdog

落書きを元に画像生成を行うモデルです。アップデートによりモデルの質が向上し、太い線画でも上手く機能するようになった等の改善が行われました。

入力画像 プリプロセッサの出力 生成したイラストの例
筆者が適当に描いた「くまみちゃん」の線画 scribbleプリプロセッサの出力例 Scribbleを使って生成した美少女イラストの例

Soft Edge(※旧HED)

  • モデル:control_v11p_sd15_softedge
  • プリプロセッサ:
    • softedge_hed
    • softedge_hedsafe
    • softedge_pidinet
    • softedge_pidisafe

やわらかい輪郭線を生成し、それを元に画像生成を行うモデルです。旧バージョンでは「HED」と呼ばれていましたが名称が変わりました。アップデートにより大幅な改善が行われ使い勝手が向上したとのことです。

入力画像 プリプロセッサの出力 生成したイラストの例
美少女イラスト softedgeプリプロセッサの出力例 softedgeで美少女イラストに変更を加えた場合の例

Segmentation

  • モデル:control_v11p_sd15_seg
  • プリプロセッサ:
    • seg_ofade20k
    • seg_ofcoco
    • seg_ufade20k

セマンティックセグメンテーション」という手法を使うモデルです。入力画像を物体ごとに識別・分割し、それを元に画像生成を行います。アップデートにより新しいプリプロセッサを使えるようになりました。

入力画像 プリプロセッサの出力 生成したイラストの例
きれいな部屋の写真 segmentationプリプロセッサの出力例 Segmentationを使った部屋のイラストの生成例

ベッドだけでなく照明や窓・カーテンなどがちゃんと認識されて生成結果に反映されていることが分かりますね。

Openpose

  • モデル:control_v11p_sd15_openpose
  • プリプロセッサ:
    • openpose
    • openpose_face
    • openpose_faceonly
    • openpose_full
    • openpose_hand

被写体のポーズを認識し、棒人間を生成してそれを元に画像生成を行う人気のモデルです。アップデートにより手や顔の認識・制御が可能になったほか、モデルの質が向上しています。

入力画像 プリプロセッサの出力 生成したイラストの例
女性の写真(1) openposeプリプロセッサの出力例1 Openposeを使って生成した美少女イラストの例(1)
女性の写真(2) openposeプリプロセッサの出力例2 Openposeを使って生成した美少女イラストの例(2)

顔や手の認識ができるようになりとても便利になりました。顔認識は後述するMediaPipeFaceを使うなど他のやり方もありますが、Multi ControlNetを使わなくても顔・手・ポーズの3点セットを一度に全部認識してくれる点はOpenposeの強みでしょう。

基本的に表情や姿勢などをかなり高精度に認識してくれますが、2枚目の画像の場合はピースサインを上手く認識できなかったようです。途中で体の一部が隠れたり見切れたりしていると認識に失敗することがあるようですね。

その他の新機能について

MediaPipeFaceをサポート

  • モデル:control_v2p_sd15_mediapipe_face
  • プリプロセッサ:mediapipe_face

被写体の表情を認識・制御できる「MediaPipeFace」のサポートが追加されました。このモデルは他のモデルとは別の場所からダウンロードする必要がありますが、プリプロセッサはControlNet 1.1から標準で搭載されています。詳細は別の記事に書いたのでそちらをご覧ください。

キャラクターの表情を制御できる「MediaPipeFace」の使い方【ControlNet】
今回はControlNetに関する話題で、タイトルの通りキャラクターの表情を制御できる「ControlNet MediaPipeFace」の使い方をご紹介するという内容になっています。ControlNetはキャラクターのポーズ等をきっちり指...

結局どれがオススメ?

個人的なオススメは下記のとおりです。

  • シンプルで分かりやすいCanny
  • 棒人間でポーズを指定できるOpenpose
  • イラスト制作に便利なAnime Lineart
  • 落書きを清書できるScribble

またそのほか、次点で

  • Depth
  • Soft Edge

あたりもおすすめです。参考になさってください。

おわりに

以上、ControlNet 1.1の新機能や改善点などをご紹介しました。色々な新機能が追加されたり、既存のモデルの改善が行われたりしてとても便利なのでぜひ皆さんも新しいControlNetを使ってみてください。

なおControlNet 1.1になってからプリプロセッサの種類が多くなったので「どれを使えばいいんだろう…?」と迷ってしまう方も多いことでしょう。そのような方のためにプリプロセッサのまとめ記事を書きました。そちらも併せてご覧いただければと思います。

ControlNet 1.1のプリプロセッサまとめ!出力結果を比較してみた【Stable Diffusion】
今回もStable DiffusionのControlNetに関する話題で、タイトルのとおりControlNet 1.1の各プリプロセッサの特徴・出力結果の違いを一通りまとめて比較してみるという内容になっています。ControlNet 1....

この記事が何かしらお役に立てば幸いです。