見出し画像

【枝記事】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 を使う際にもポーズ担当で使いやすいので覚えておきましょう。






◆画像から線を抽出して再現したい



 この場合は以下の機能が該当するかと思います。

  1. Canny ザクっと線画抽出

  2. Lineart 繊細に線画抽出

  3. SoftEdge ぼやっと線画抽出

  4. Scribble/Sketch 落書きからでも上手な絵に

  5. MLSD 直線のみ抽出・背景の構造物向き




1. Canny ザクっと線画抽出


 Cannyはザクっとした線で画像の内容を抽出し、適用します。

 かなり初期からある機能で、追加promptでの変化の自由度もわりと高いです。

 今回は【 笑顔金髪ピンクのメイド服 】と追記しました。


 また、Canny の中には『白背景に黒線画』の画像から抽出するのに特化した invert (from white bg ' black line) も入っています。

 とはいえ、こういった元画像からでも普通にCannyでも再現できてしまうので、あまり使う頻度は高くないかもしれません。






2. Lineart 繊細に線画抽出


 Lineart にも様々な種類があり、繊細で再現度の高いものから、ざっくりとした可変自由度の高いものまで存在します。

 すべての例を追っていきましょう。

デフォルトだけあってバランスの良い lineart_standard



写真のような元画像からなら lineart_realistic

 lineart_realistic は恐らく昔のデフォルトだったためか、detectmapを自動保存にしている場合、「lineart」という名前のフォルダに保存されます。



主線が太いものなら向いてそうな lineart_anime



大雑把に線をとる lineart_anime_denoise



粗いと名にある通り、ラフな抽出になる lineart_coarse



モノクロ線画からなら lineart_standard (from white bg & black line)

 detectmapを自動保存にしている場合、lineart_standard と共用「lineart_standard」という名前のフォルダに保存されます。



モノクロ線画用の invert (from white bg & black line)

 detectmapを自動保存にしている場合、Canny の物と共用「invert」という名前のフォルダに保存されます。

 おそらく画像をモノクロ反転させただけのdetectmapなので、再現度はかなり高そう。






3. SoftEdge ぼやっと線画抽出



ブラー気味な柔らかさも得られる softedge_pidinet

 softedge シリーズのデフォルト設定。
 
最も細かく線を拾うことができるそうです。

 detectmap
の保存フォルダ名は 「pidinet」になってます。



少しエッジが効いて太めの線で再現しやすい softedge_hed

detectmap の保存フォルダ名は 「hed」になってます。



softedge_hed の簡易版といった感じの softedge_hedsafe

detectmap の保存フォルダ名は 「hed_safe」になってます。




softedge_pidinet の簡易版といった感じの softedge_pidisafe

detectmap の保存フォルダ名は 「pidinet_safe」になってます。






4. Scribble/Sketch 落書きからでも上手な絵に



 Scribble/Sketch シリーズは驚きの ビフォー・アフターになる、自由度と解釈度のかなり高いプリプロセッサ群です。

デフォルトの scribble_pidinet

 detectmap の保存フォルダ名は 「pidinet_scribble」になってます。



こちらもなかなかすごい scribble_hed

 detectmap の保存フォルダ名は 「scribble_hed」になってます。



detectmap は結構忠実な scribble_xdog

 detectmap の保存フォルダ名は 「scribble_xdog」になってます。



これもscribbleの中では再現度高めの 

 detectmap の保存フォルダ名は 「pidinet_sketch」になってます。



モノクロ線画からなら invert (from white bg & black line)

 CannyLineart の時と同じものですね。
 detectmapを自動保存にしている場合、共用「invert」という名前のフォルダに保存されます。

 明らかに手の位置が崩壊した線画を選びましたが、しっかりと修正されているのがありがたいですね。


T2I-Adapter - t2ia_sketch_pidit2iadapter_sketch_sd14v1

 
 T2I-Adapter 内の Preprocessort2ia_sketch_pidi も似た機能なんですが、今回はあまりうまく使えませんでした。





5. MLSD 直線のみ抽出・背景の構造物向き


 MLSD は画像から直線のみを抜き出して反映させるため、人口構造物なんかに向いています。


 逆に、直線が読めないような元画像の場合、ほぼ効果を為しません。






◆立体感を抽出して適用したい



 この場合は以下の機能が該当するかと思います。

  1. Depth 画像の奥行きを推定して深度マップを作成

  2. NormalMap 表面の凹凸検出、3D向ポリゴンぽい

 順番に見ていきましょう。





1. Depth 画像の奥行きを推定して深度マップを作成


デフォルトの depth_midas

 見ての通り、人物がシルエットのようになっていますが、近くの背景に少し3Dぽさがありますね。
 遠景は真っ黒なので、そのあたりはpromptだけで好きに作画できます。


意外と融通が利かない depth_leres

 背景まで結構読み取ろうとしているのが見て取れます。

 どうもグランドキャニオンの地平線を再現しようとしているようで、画面の高さ的に建造物が出来上がる頻度が高かったです。

 白い砂浜を指定しても、謎の洗濯物がかかっていたりと、depth の中では可変自由度は低いほうでしょう。

 遠景が出しにくい印象です。


さらにエッジの効いた depth_leres++

 名前の通り、depth_leresの強化版といったところ。
 ごちゃっとした屋内がお望みなら向いているかもしれませんね。

 画面の情報量は再現しやすいかもしれません。



中影まで汲み取ってくれる depth_zoe

 デフォルトの depth_midas に次いで扱いやすそうな印象でした。
 遠景は黒いのでしっかりprompotで変化が出せますね。






2. NormalMap 表面の凹凸検出、3D技術ぽいやつ



デフォルトの normal_bae

 ノーマルマップとは3Dポリゴンの表面に、疑似的な凹凸を表現できる技術です。
 そのようなものを画像から抽出し、適用します。

 最も遠いであろう地平線と空の境目あがりが異様に濃く描写されてしまい、その辺りがどうにも融通の利かない感じになってしまっていました。

 そういった場合は適用度を下げたりした方が良いのかもしれませんね。
 感覚的には depth_leres あたりが近い感覚です。

 detectmap の保存フォルダ名は 「normal_bae」になってます。



近影特化の normal_midas

 背景の自由度は最も高いですね。
 depth_midas にも近い感覚でした。

 detectmap の保存フォルダ名は 「normal_map」になってます。






◆オブジェクトの位置や形を引き継ぎたい



Segmentation セグメント(区分)を解析、適用する


デフォルトの seg_ofade20k

 Segmentationシリーズは、画像から要素を解析し、そのシルエットと内容を引き継ぐことができます。

detectmap の保存フォルダ名は 「oneformer_ade20k」



遠景変化がさせやすそうな seg_ofcoco

detectmap の保存フォルダ名は 「oneformer_coco」



こちらも意外と変化が大きかった seg_ufade20k

 detectmap の保存フォルダ名は 「segmentation」
 
以前はデフォルトだったんでしょうね。



ここから先は

7,863字 / 37画像
この記事のみ ¥ 0〜

この記事が気に入ったらサポートをしてみませんか?