CFG
https://www.youtube.com/watch?v=kuhO9zAzetk
CFG(Classifier-Flee Guidance)とは?
めちゃめちゃに単純化するとこう
https://gyazo.com/059e3e21912bf25cff9616af144e1c47
🚨CFGnormはweb UIのCFGの値とは別物なので注意
UnconditionalとConditionalのバランスを調整するもの
Conditional termというのはプロンプトがエンコーダー(Stable DiffusionではCLIP)を通って出てくるもの https://gyazo.com/6a84f8a9b3a47ee7a34407ac98aedab5
CFGが0のとき、Unconditionlだけを元に、つまりプロンプトを無視して、ランダムなノイズからランダムな画像をただ生成する
CFGを大きくしていくと、Unconditional termが負の値になり、生成画像の多様性が下がっていく(=プロンプトに従う)
https://gyazo.com/6e1e60501680e62889cefb2b633913f7
Goal termへの接近が難しくなるため、出力イメージに歪みが生じてくる
目標に近づくにつれて、出力画像が目的に合わせて変形されるため、歪みが生じる
実践編
一般的に
低い(過ぎる)CFGはコントラストが弱く色が淡い
高い(過ぎる)CFGはコントラストが強く彩度が高い
https://gyazo.com/6231d989efa0d63f87513e41d614fbda
プロンプトに関係なく、良く見える場所は緑、逆は赤
この分布具合からサンプラーをいくつかのグループに分けられる
DPM fastは特殊
https://gyazo.com/042c36aca187f4c3479727d293bb84bb
3~4の低いCFGでしか使えない
CFG 7でも安定した画像を出したければ30ステップ以上必要になる
Group1 - Part1
DPM++2M / DPM++2M Karras
https://gyazo.com/2726d797e03185230ce53475d48d707b
Group1 - Part2
Heun / DDIM
https://gyazo.com/a8f697303d5e079e6a469ac4b2a2ce14
DPM adapter以外ではCFGに対して最も堅牢
強くしても崩れることがない
Group 2
Euler a / DPM++ 2S a / DPM++ 2S a Karras
https://gyazo.com/ed3fa863b0b4074290c8e712dd359ca8
DPM++ SDE / DPM++ SDE Karras
https://gyazo.com/995adc179f0ab4060f2d523e4d0a7a5d
CFGが20を超えると高いステップ数が必要になる
Hires.fixを掛けると黄色ゾーンで発生するダメージをある程度軽減してくれる
研究的にはClassifier-Free Diffusion Guidanceが初かと思ったけどGLIDEは2021年だからもっと前だ
つまりClassifier-Free Diffusion GuidanceとCFGは別物
それ以前は以前はclassfier guidenceを使っている