Stable DiffusionにはDDIM_STEPSというパラメータがあります。
難しい説明は抜きにして数字が多ければどんどん画像の精度が上がります。
ただ、どこかで頭打ちになるためどの数字が正しいのかわかりません。
今回はDDIM_STEPSの適正値を検証してみます。
実験環境
PC環境
実験を行った我が家のPCのスペックは以下の通りです。
内容 | 詳細 |
---|---|
OS | Windows 11 Pro |
CPU | 12th Gen Intel(R) Core(TM) i5-12400 2.50 GHz |
メモリ | 32.0 GB (31.8 GB 使用可能) |
GPU | NVIDIA GeForce RTX 3060 12GB |
使用したコマンド
検証のための画像サイズは前回の記事でクオリティが高めの2種類を採用しています。
XXXXには1から順に変化がなくなるところまで数字を増やしていきます。
- 448×448用コマンド
scripts/txt2img.py --prompt "cat" --plms --n_iter 1 --W 448 --H 448 --seed 1 --ddim_steps XXXX
以下DDIM_STEPS 100の画像
- 648×320用コマンド
scripts/txt2img.py --prompt "cat" --plms --n_iter 1 --W 640 --H 320 --seed 1 --ddim_steps XXXX
以下DDIM_STEPS 100の画像
結果
448×448のサイズの画像で検証
448×448のサイズの画像で見ていきます。
DDIM_STEPS = 1
画像に問題があるようで陽気なお兄さんでフィルタされています。
DDIM_STEPS = 11
かなり崩れていますね。
DDIM_STEPS = 17
真ん中のネコがDDIM_STEPS=100の時のものと異なります。
DDIM_STEPS = 22
真ん中のネコの顔の向きが少し変わりました。
DDIM_STEPS = 31
一番左のネコの目つきが悪くなりました。
一番右側はすでに安定しています。
DDIM_STEPS = 42
左側のネコの目と真ん中がまだ変化しています。
DDIM_STEPS = 48
左側のネコの目と真ん中がまだ変化しています。
DDIM_STEPS = 60
DDIM_STEPS = 100の画像とほぼ違いがありません。
648×320のサイズの画像で検証
次に648×320を見ていきます。
収束するDDIM_STEPSに違いはあるでしょうか。
DDIM_STEPS = 1
画像に問題があるようで陽気なお兄さんでフィルタされています。
DDIM_STEPS = 11
3種類ともフィルタもかからず一応ネコと認識できるものが生成されました。
DDIM_STEPS = 17
もう完全にネコですね。違和感がないレベルです。
DDIM_STEPS = 22
一番左のネコは安定していますが真ん中と右側の2枚は迷いがあります。
DDIM_STEPS = 31
すでに冒頭で挙げさせていただきましたDDIM_STEPS = 100の時の画像とほぼ変わりません。
一番右のネコの目が少し気になる程度です。
DDIM_STEPS = 42
変化なしですね。
DDIM_STEPS = 48
真ん中の画像がまたネコ3匹になりました。
一番右も違うネコに変わりました。
DDIM_STEPS = 60
また真ん中は2匹に一番右のネコはまた入れ替わっています。
DDIM_STEPS = 72
もうこの辺りからほぼ変わりません。
まとめ
画像サイズで違いがあるかもしれませんが大体60くらいで収束しているように見えます。
ぶっちゃけDDIM_STEPS = 75でもやれば十分だと考えます。
これまで僕は100で回して画質を良くしたい場合に200にしたりしてました。
全くの無意味。時間の無駄。
ステップ数200にしたら画質良くなるかもよ。
なんて言ってた若かりし頃(3日前)の僕。
おわり
¥552(税込) へ返信する コメントをキャンセル