◆はじめに
こんにちは。
今回はStable Diffusion向けに新たに公開されたGUI「stable-diffusion-webui-forge」で追加されているTurbo系のSamplerについて、出力される画像を比較してみたいと思います。
ちなみにタイトル打つときに思ったのですが、「件」ってパっと変換されなくてモヤモヤしません?
「けん」って打つと「剣」やら「県」やら出てきて、もう「まともに変換されなくて文章が打てなーーーい!!」(Ken Watanabeもご立腹)
なので「くだん」って打つことにしているのですが、これはこれで「九段」が真っ先に出てきます。プロ棋士しか使わなくないですか?九段。
ぜひ、みなさん「件」を打つときのおすすめの変換方法を教えてください。
(何の話?)
◆Samplerの検証
□前提条件
今回は、以前検証したときの条件を極力使おうと思います。
他のSamplerについて比較した記事はこちら⇊
条件に使用している数値やプロンプトの説明は前の記事でつらつらと書いているので、今回は省略してサクッと行きたいと思います。
変更点は、Forgeを使っていること、modelとpromptが少し変化していることです。
●DPM++ 2M Karras (基準)
●DDPM
●DDPM Karras
●Euler A Turbo
●DPM++ 2M Turbo
●DPM++ 2M SDE Turbo
●LCM Karras
◆考察
まず、1年以上前から広く使われているであろう「DPM++ 2M Karras」を比較の基準としてみたいと思います。
DPM++ 2M Karrasだけに着目してみると、Dynamic Promptのtoken分だけ以前より処理に時間がかかるはずなのですが、Forgeに変えて88%の生成時間になっており、生成は少し早くなっているのかな?と思います。
DDPMについてはかなり昔、一時期だけWebUIに実装されてすぐにプルダウンから無くなった覚えがあります。
DDPM自体はDDIMの元になっている拡散モデルのはずなので、他のGUIでは実装されていそうですが、クラウド環境構築の面倒くささからComfyUIなど試したことがないので分かりません笑
出力画像を見てみると、DDPM Karrasもそうですが、例えば2枚目の赤髪の女の子。
"embroidered lace midi dress with cap sleeves"というpromptがwildcardsで採用されていて、実際"cap sleeve"だけではなく"cap"の影響を受けてしまっているのですが、"cap"に対する理解がDPM++ 2M Karrasより少し薄い気がします。もしかすると、単語に対する理解が少し弱いのかもしれません。
(6枚目の髪の毛ツンツンになっているのも違和感がありますね。)
今回の主役、Turbo系についてです。
Turboということで生成時間が早くなるのかと思い「Euler a」と「Euler
A Turbo」を比較してみると、
"Time taken: 42.5 sec (Euler a) → 43.6 sec. (Euler A Turbo)"
あれ?
不思議に思い、「DPM++ 2M」と「DPM++ 2M SDE」も比較してみると…
"Time taken: 37.3 sec. (DPM++ 2M) → 38.3 sec. (Turbo)"
"Time taken: 43.9 sec. (DPM++ 2M SDE) → 1 min. 20.9 sec. (Turbo)"
やはり、時間が短くなるものではないのでしょうか。
確かに、DPM++ 2M SDE Turboは時間が長くなった分だけ出力画像もきちんとしているのですが、DPM++ 2M SDEではノイズだらけの画像でした。
そこでTurboモデルが公開されているサイトを見てみると、このような文章を発見しました。
Step数が少なくてもある程度出力が安定するけれど、Step数が大きくなってくると、同系統Samplerに比べて詳細さに欠けてくるということみたいです。(LCMとEuler aは顕著なようです。)
◆まとめ
新たに追加されたSamplerについて比較してみました。
Turbo系モデルに少し期待していたのですが、思ったよりも扱いが難しそうだと感じました。
試しに3-5 Stepsで試してみましたが、あまり安定した画像が出ず、結局少し少ないStepで出せるかな?くらいの感じでした。
私の扱い方が間違っている可能性が非常に高そうですが、まだまだこれからの技術なのかもしれませんね。今後に期待です!
また、こんな感じで気が向いたら記事にしたいと思います。
それでは、𐍅𐌰𐌻𐍂𐍉𐌼𐌰~
(ちなみに"𐍅𐌰𐌻𐍂𐍉𐌼𐌰"は「さようなら」という意味で、GPT-3.5君に未知の言語を作ってもらいました。意外とこういうこともできるんですね。)