SoreNutsからのお知らせ
新規記事
5/1にWildcardでプロンプトとLoRAのランダム化【ComfyUI】を公開!
4/19に顔だけLoRAやモデルを変えて再生成できる神機能【ComfyUI】を公開!
更新記事
5/1に服装のプロンプト(呪文)一覧を更新!
4/21に表情・目の形のプロンプト(呪文)一覧を更新!
Canny, Lineart, SoftEdge, Scribble/Sketchの比較です。Stable Diffuson Web UI(Automatic1111)の拡張機能ControlNetで線画に関係したコントロールタイプを比較していきます。
そもそもControlNetが必要か
一番最初に疑問に思うのが何故ControlNetを使ってimg2imgする必要があるのか。
ControlNetを使うとどうなるのか、比較しながら説明します。
↓txt2imgで640×640の画像を生成しました。※手と口を少し修正
これを”img2img”で高解像度化、高精細化したい場合に「Denoising strength」の値を調整するのですが、この値を下げると元画像(上の画像)に近づきます。
つまり「0」にすると元画像と全く同じものが出来上がります。
逆に値を上げて「1」にすると、全く別のものが生成されます。
では中間の「0.5」にするとどうなるのでしょうか。解像度は1.5倍の960×960で生成します。
高精細化されています。しかし、目と口を見ると分かりやすいですが、形状が変わっています。
「元の形が良かったのに」こんな場合にControlNetが活躍します。
同じような条件でControlNetを使って生成してみます。
元の形状を保ちながら高解像度化、高精細化することができました。
このように生成される内容を微細に調整することができるのがControlNetです。
4種類の線画タイプ
「ControlNet」にはコントロールタイプ(種類)が沢山あります。
更新頻度が非常に高いので、日々モデルが追加されています。
この記事ではこの中で「線画」が生成できるコントロールタイプを比較していこうと思います。
Canny、Lineart、SoftEdge、Scribble/Sketchの4種類があります。
Canny
今回はこちらの画像を用意しました。
比較が分かりやすいように左下と右上に後付けで要素を足しています。
この画像のサイズは「800×640」です。
こちらを2.25倍の「1800×1440」にimg2imgで高解像度化して検証します。
まずはControlNetを “使わずに” 生成してみます。
精細化されましたが、元の画像から形状が大きく変わってしまいます。
やはりControlNetは使いたいところです。
ではまずCannyを使っての生成をしてみましょう。
元の形状のまま高解像度化できました。Cannyはとても扱いやすいですね。
Cannyにしかない設定の解説
Canny Low Threshold | 弱いエッジを調整できます。 必ずしもエッジであるとは限らない(ノイズの可能性もある)部分です。 |
Canny High Threshold | 強いエッジを調整できます。 非常に明確なエッジを示すピクセルで、色や明るさの変化が非常に急激なピクセルを指します。 |
Lineart
続いてLineartを使っていきますが、種類が「5つ」ありますので、それぞれ検証していきます。
lineart_anime
※これ以降全て同じ設定です。
小さな色の変化を検出していませんね。
lineart_anime_denoise
lineart_animeからノイズを除去したものですね。
「denoise」の意味: ノイズやグレインを取り除くための技術
lineart_anime_coarse
使い道不明
「coarse」の意味: 一般的に「粗い」「荒い」といった意味合い
lineart_realistic
線の強弱まで再現されています。
lineart_standard (from white bg & black line)
面白い結果になりました。ついに一番薄い「あ」が検出されました。
しかし、ほとんどの色の差を検出しているせいか、少し高精細化が足りていません。
設定を少し変えて生成してみましょう。
lineart_standardと
Cannyを使ってみます。Control Weightを下げています。
元の絵に非常に近い画像が生成できました。
ほとんど使っていませんでしたが意外と使い道がありそうです。
元の画像
Tips: 複数のコントロールタイプを同時に使う方法
Settings→ControlNetにMulti-ControlNetの数を指定できる項目があります。
こちらを増やすことでタブが増えて複数のコントロールタイプを使うことができるようになります。
SoftEdge
続いて4種類のSoftEdgeを見ていきましょう。
softedge_hed
筆者が一番使っているコントロールタイプです。
こちらも一番薄い「あ」が検出されていますね。Control Weightを「1」で使うと少し精細化が足りなくなるので、「0.5」前後にして使う方法もあります。
今回はControl Weightは統一して「1」で生成します。
Control Weight「0.5」にして生成した場合。
softedge_hedsafe
softedge_hedにdenoise処理をかけたものですね。
softedge_pidinet
形状に関してはhedと違いが分かりませんが、pidinetとhedでは彩度や色に微細な変化があることに注意してください。
softedge_pidisafe
こちらもdenoise処理をかけたものですね。
Scribble/Sketch
「Scribble」は “雑に描かれたもの” という意味があります。
4種類のScribbleとSketchタイプを見ていきましょう。
scribble_hed
あえて元の形状を残さずに生成する方法ですね。
scribble_pidinet
こちらも同じですね。
scribble_xdog
基本的にはxdogも同じです。
しかしこのコントロールタイプには専用のオプションが用意されています。
まずはデフォルト設定のまま生成してみましょう。
専用の設定を変更してみます。
XDoG Threshold: Cannyと同じように色の検出範囲の閾値を変更できます。
値を下げることで小さな色の変化も検出できるようになります。
XDoG Threshold「6」で生成してみます。
設定を変えても、ある程度形状を残さずに生成しているみたいですね。
「scribble」の意味を詳しく
- 動詞として:
- 速く、雑に、または手際悪く書くや描くこと。特に、子供や急いで書いたときのような不明瞭な文字や図形に使います。
- 名詞として:
- 雑に書かれたものや描かれたもの。
- 手際悪く書かれた文字や図形。
t2ia_sketch_pidi
小さい色の変化を検出していないみたいです。
こちらもあえて形状を残さない生成方法みたいですね。
ControlNetとモデルのダウンロード方法
ControlNetをそもそも入れていない方
Extensionsタブから
Availableタブに移動してLoad from:をクリックした後に
sd-webui-controlnetと入力して
sd-webui-controlnetをインストールしましょう。
これだけではControlNetは使えないのでモデルをダウンロードしましょう。
ControlNetのモデルのダウンロード先です。
https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main
ご自身が必要なモデルを選んでダウンロードします。右にある矢印アイコンからダウンロードできます。
ControlNetの全ての基本的なモデルを一括でダウンロードしたい方はこちらを参考にしてみてください。
ダウンロードしたモデルの移動先です。
stable-diffusion-webui\extensions\sd-webui-controlnet\models
モデルを移動した後にStable Diffusionを起動している場合は、モデルを認識させるために一度開きなおしましょう。
ControlNetの基本的な使い方img2img編
↓Enable(有効化)にチェックを入れることでオンオフを切り替えれます。
Low VRAMは8GB以下のGPUを使っている場合チェックを入れましょう。
Pixel PerfectはPreprocessor(前処理プログラム)の解像度を自動で設定してくれるようになります。
Upload independent control imageにチェックを入れると
画像をドロップすることができるようになります。
画像をドロップした後に
↑衝撃アイコンをクリックすると
↓Preprocessorを見ることができるようになります。
※重要: 画像をセットしない場合は、自動的にimg2imgの画像を使ってくれます。
生成したPreprocessorをダウンロードすることもできます。
あとは使いたいControl Typeを選びましょう。
ControlNetのモデルを入れている場合、対応したモデルが自動的にセットされます。
Control Modeについて
Balanced:
- ControlNetはCFGスケールの両側で動作します。
My prompt is more important:
- こちらの設定を選ぶと、ユーザーが入力するプロンプトの情報がより重要とされる設定です。
ControlNet is more important:
- この設定を選ぶと、ControlNetがCFGスケールのConditional Side(条件付き側)のみで動作します。
基本的にデフォルトのBalancedで問題ないです。
ControlNetの設定項目
Resize mode
ControlNet以外の設定ですが、重要なので解説します。
Just resize(latent upscale)か、それ以外の2択しかないですが大きな違いがあります。
「Latent upscale」というのは”latent space image”(潜在空間画像)という潜在空間を利用したアップスケーリングの手法です。
高精細化しやすい特徴があります。(主に描き込み量が増えます)
比較してみましょう。
元の画像「800×640」
img2imgで2倍の「1600×1280」にします。
↓少し分かりにくいですがLatent upscaleの方が描き込み量は多くなります。
どちらを使うかはControlNetの設定や画像、人それぞれの好みによって大きく変わるので試行錯誤して最適解を見つけましょう。
筆者はほとんどLatent upscale以外を使っています。Latent upscaleはガチャ要素が多くなりがちで少々使いづらいです。
Denoising strength
こちらも重要なので少し解説。
0.6前後がおすすめです。
値を上げると元の画像の色や形状が残らなくなっていきます。
Control Weight
Control Weightは形状に影響します。
Control Weightが”0.3″など低くなるにつれて元の画像の形状を残さないようになっていきます。
ControlNetを使う場合、Denoising strengthは主に”色“に影響するのに対して
Control Weightは”形状“に影響する、と覚えておくと良いと思います。
元画像の形状を残したくない場合は大きく下げて使いましょう。
※0.2~0.4
1以上に上げることもできますが、色が薄れていくだけなので基本1以上で使う意味はないでしょう。
Starting Control Step
ControlNetが適用を開始するステップを調整できます。
この値を上げると形状が崩壊するためimg2imgではまず調整することはないと思います。
Ending Control Step
ControlNetの適用が終了するステップを調整できます。
この値を下げることにより元画像の形状を残さないようにすることができますが、Weightを調整するだけで事足りるので、こちらは気にする必要はあまりありません。
基本はデフォルトの”1″で問題ありません。
Preprocessor Resolution
Preprocessorは「前処理をするもの」という意味です。
白黒の画像のことですね。
Pixel Perfectにチェックを入れることで自動的に推奨される解像度に設定されます。
手動で設定する場合、短辺に数値を合わせましょう。
※作りたい画像が1600×1200の場合、1200に合わせる。この場合同じ1600×1200のPreprocessorが作られる。
掲示板