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を使っている
蒸留モデルと呼ばれるような低ステップでの生成に特化させたモデルやLoraを適用するとCFG1~1.5程度で従来の6~7相当の動作をするように調整されている。 また、比較的最近のモデル(NoobAI-XLなど)は4.5~5程度の低めのCFGを推奨していることが多い(恐らく大量学習によって蒸留に近いような状態になっていると思われる。) (完全な経験則だが)Wan2.1といった非蒸留の動画モデルだと逆にCFGを7くらいまでは上げないと指示を無視して全然知らん映像を出したりもする(Wan固有の現象か非蒸留の動画モデル全般に起こりうるのかは不明) そこまで上げなくても良い時(5程度)もありモデルが学習薄い所だとCFGの影響を受けやすいのだろうか…