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