【枝記事】ControlNet の機能を用途別に全て解説
はじめに
今回はこちら↑の親記事からの枝記事として作成された物です。
ControlNet 自体の紹介や導入法は親記事↑の方でご確認ください。
今回の内容は 2023/10/18時点 の ControlNet v1.1.410 においての使用感で書かれています。
また、今回は私がメインで使用している SD1.5 モデルで検証しています。
SDXL でしか使えないものに関しては SDXL で使用して解説します。
今回は主に、ControlNetのUIで選択できるこちらの内容を用途別にまとめてご紹介していきます。
最初の 【All】 は自由にPreprocessor と Model を選択できるという状態です。
親記事でも紹介した通り、Preprocessor 部分を None にして、用意したdetectmapに対応したモデルだけ合わせることで直接画像を生成できたりします。
事前に detectmap を用意できていた場合はALLから直接選んでも良いかもしれませんね。
また、ControlNet用のモデルは今後も増えていくと思いますので、好みのものを探して使ってください。
基本的には作画モデルに対応したものをモデル名で見て選べば良いでしょう。
Stable Diffusion1.5モデルをお使いなら sd15 と書いてあるものを、SDXLモデルをお使いなら xl と書いてあるモデルを選べばとりあえず使えるはずです。
今回はお勧めモデルとかではなく、機能を用途別に選びやすくするのが目的の記事となります。
やりたいことを目次から選んでジャンプしてくださいね。
◆人物のポーズを抽出して再現したい
OpenPose(棒人間)
親記事でも紹介した通り、かなり有名な機能です。
画像から棒人間のような detectmapでポーズを抽出し、画像を生成することができます。
優れた利点としては、ポーズに特化した抽出であるため、髪飾りや衣装なんかの描画は自由に行える点が挙げられます。
ビキニの女の子から、フリフリ盛り盛りのゴシックドレス、ロボット化した腕なんかまで余裕で対応可能です。
OpenPose で使える Preprocessor には他にもこんな種類があります。
・顔の位置と表情のみを抽出する openpose_faceonly
・ポーズと顔の表情を抽出する openpose_face
・ポーズと手の形を抽出する openpose_hand
・上記全てを同時に網羅した openpose_full
などがあります。
複数の Controlnet を使う際にもポーズ担当で使いやすいので覚えておきましょう。
◆画像から線を抽出して再現したい
この場合は以下の機能が該当するかと思います。
Canny ザクっと線画抽出
Lineart 繊細に線画抽出
SoftEdge ぼやっと線画抽出
Scribble/Sketch 落書きからでも上手な絵に
MLSD 直線のみ抽出・背景の構造物向き
1. Canny ザクっと線画抽出
Cannyはザクっとした線で画像の内容を抽出し、適用します。
かなり初期からある機能で、追加promptでの変化の自由度もわりと高いです。
今回は【 笑顔、金髪、ピンクのメイド服 】と追記しました。
また、Canny の中には『白背景に黒線画』の画像から抽出するのに特化した invert (from white bg ' black line) も入っています。
とはいえ、こういった元画像からでも普通にCannyでも再現できてしまうので、あまり使う頻度は高くないかもしれません。
2. Lineart 繊細に線画抽出
Lineart にも様々な種類があり、繊細で再現度の高いものから、ざっくりとした可変自由度の高いものまで存在します。
すべての例を追っていきましょう。
lineart_realistic は恐らく昔のデフォルトだったためか、detectmapを自動保存にしている場合、「lineart」という名前のフォルダに保存されます。
detectmapを自動保存にしている場合、lineart_standard と共用で「lineart_standard」という名前のフォルダに保存されます。
detectmapを自動保存にしている場合、Canny の物と共用で「invert」という名前のフォルダに保存されます。
おそらく画像をモノクロ反転させただけのdetectmapなので、再現度はかなり高そう。
3. SoftEdge ぼやっと線画抽出
softedge シリーズのデフォルト設定。
最も細かく線を拾うことができるそうです。
detectmap の保存フォルダ名は 「pidinet」になってます。
detectmap の保存フォルダ名は 「hed」になってます。
detectmap の保存フォルダ名は 「hed_safe」になってます。
detectmap の保存フォルダ名は 「pidinet_safe」になってます。
4. Scribble/Sketch 落書きからでも上手な絵に
Scribble/Sketch シリーズは驚きの ビフォー・アフターになる、自由度と解釈度のかなり高いプリプロセッサ群です。
detectmap の保存フォルダ名は 「pidinet_scribble」になってます。
detectmap の保存フォルダ名は 「scribble_hed」になってます。
detectmap の保存フォルダ名は 「scribble_xdog」になってます。
detectmap の保存フォルダ名は 「pidinet_sketch」になってます。
Canny や Lineart の時と同じものですね。
detectmapを自動保存にしている場合、共用で「invert」という名前のフォルダに保存されます。
明らかに手の位置が崩壊した線画を選びましたが、しっかりと修正されているのがありがたいですね。
T2I-Adapter 内の Preprocessor の t2ia_sketch_pidi も似た機能なんですが、今回はあまりうまく使えませんでした。
5. MLSD 直線のみ抽出・背景の構造物向き
MLSD は画像から直線のみを抜き出して反映させるため、人口構造物なんかに向いています。
逆に、直線が読めないような元画像の場合、ほぼ効果を為しません。
◆立体感を抽出して適用したい
この場合は以下の機能が該当するかと思います。
Depth 画像の奥行きを推定して深度マップを作成
NormalMap 表面の凹凸検出、3D向ポリゴンぽい
順番に見ていきましょう。
1. Depth 画像の奥行きを推定して深度マップを作成
見ての通り、人物がシルエットのようになっていますが、近くの背景に少し3Dぽさがありますね。
遠景は真っ黒なので、そのあたりはpromptだけで好きに作画できます。
背景まで結構読み取ろうとしているのが見て取れます。
どうもグランドキャニオンの地平線を再現しようとしているようで、画面の高さ的に建造物が出来上がる頻度が高かったです。
白い砂浜を指定しても、謎の洗濯物がかかっていたりと、depth の中では可変自由度は低いほうでしょう。
遠景が出しにくい印象です。
名前の通り、depth_leresの強化版といったところ。
ごちゃっとした屋内がお望みなら向いているかもしれませんね。
画面の情報量は再現しやすいかもしれません。
デフォルトの depth_midas に次いで扱いやすそうな印象でした。
遠景は黒いのでしっかりprompotで変化が出せますね。
2. NormalMap 表面の凹凸検出、3D技術ぽいやつ
ノーマルマップとは3Dポリゴンの表面に、疑似的な凹凸を表現できる技術です。
そのようなものを画像から抽出し、適用します。
最も遠いであろう地平線と空の境目あがりが異様に濃く描写されてしまい、その辺りがどうにも融通の利かない感じになってしまっていました。
そういった場合は適用度を下げたりした方が良いのかもしれませんね。
感覚的には depth_leres あたりが近い感覚です。
detectmap の保存フォルダ名は 「normal_bae」になってます。
背景の自由度は最も高いですね。
depth_midas にも近い感覚でした。
detectmap の保存フォルダ名は 「normal_map」になってます。
◆オブジェクトの位置や形を引き継ぎたい
Segmentation セグメント(区分)を解析、適用する
Segmentationシリーズは、画像から要素を解析し、そのシルエットと内容を引き継ぐことができます。
detectmap の保存フォルダ名は 「oneformer_ade20k」
detectmap の保存フォルダ名は 「oneformer_coco」
detectmap の保存フォルダ名は 「segmentation」
以前はデフォルトだったんでしょうね。
ここから先は
Amazonギフトカード5,000円分が当たる
この記事が気に入ったらチップで応援してみませんか?