画像生成を高速化したい!
LCMの使い方を教えて!
通常のCheckpointモデルでは「Sampling steps」を「5」に設定して画像生成すると
ぼやけた画像で生成されて人物を綺麗に生成することが出来ません。
LCMのCheckpointモデルを使用することで
「Sampling steps」を「5」に設定して画像生成した時に
綺麗に人物を生成することが出来ます。
この記事では
綺麗な画像生成を高速化できるLCMの使い方について解説するので
参考にして使用してみてください!
「blue_pencil-XL-LCM」のCheckpointモデルを導入する
LCMのCheckpointモデルはいくつかあるのですが
ここでは例として、LCM(Latent Consistency Model)がマージされている
「blue_pencil-XL-LCM」のCheckpointモデルを導入してから使用していきます。
「blue_pencil-XL-LCM」は、CIVITAIからダウンロードすることが出来ます。
以下のリンクにアクセスしてください。
ローカルの方は、アクセスしたら右側にある「ダウンロードアイコン」をクリックしてファイルをダウンロードしてください。
ファイルは通常のCheckpointモデルと同じように「models/Stable-diffusion/」の中に入れてください。
Google Colabの方は、ダウンロードURLが必要なので
「ダウンロードアイコン」をクリックしてから「Model SafeTensor」の場所で右クリックしてください。
Google Chromeの場合ですが、「リンクのアドレスをコピー」をクリックしてダウンロードURLをコピーしてください。
「sdxl_vae」を導入する
次はVAEである「sdxl_vae」を導入しましょう。
以下のリンクにアクセスしてください。
ローカルの方は
「sdxl_vae.safetensors」の右側にある「ダウンロードアイコン」をクリックして
ファイルをダウンロードしてください。
Google Colabの方は、「ダウンロードアイコン」の場所を右クリックしてから
「リンクのアドレスをコピー」をクリックしてダウンロードURLをコピーしてください。
コードを追加する(Google Colabの場合)
Google Colabを使っている方は、「blue_pencil-XL-LCM」と「sdxl_vae」を導入するコードを追加しましょう。
以下のコードでは、「blue_pencil-XL-LCM」のCheckpointモデルを使用できるコードになっているので、コピペして参考にしてください。
#blue_pencil-XL-LCM
!wget https://civitai.com/api/download/models/247022 -O /content/stable-diffusion-webui/models/Stable-diffusion/blue_pencil-XL-LCM.safetensors
以下のコードでは、「sdxl_vae」のVAEを使用できるコードになっています。
#sdxl_vae
!wget https://huggingface.co/stabilityai/sdxl-vae/resolve/main/sdxl_vae.safetensors?download=true -O /content/stable-diffusion-webui/models/VAE/sdxl_vae.safetensors
以下の画像のように、「blue_pencil-XL-LCM」と「sdxl_vae」のコードを追加したら
Stable Diffusion Web UIを起動してください。
「blue_pencil-XL-LCM」で画像生成する
Stable Diffusion Web UIを起動したら
最初に「sdxl_vae」のVAEを設定しましょう。
以下の手順に沿ってVAEを設定してください。
①「Settings」をクリックする
②左側にある「VAE」をクリックする
③「SD VAE」項目で「sdxl_vae.safetensors」を選択する
④「Apply settings」をクリックする
これでVAEの設定は完了です。
通常のCheckpointモデルから「blue_pencil-XL-LCM」のCheckpointモデルに変更した時、
または、VAEである「sdxl.vae」から別のVAEに変更しようとすると
必ずと言っていいほどエラーが発生するので、エラーが出た場合はStable Diffusion Web UIを再起動してください。
プロンプトとネガティブプロンプトに呪文を入力してください。
「blue_pencil-XL-LCM」のモデルでは
「Sampling method」の設定を、「DPM++ SDE Karras」「 DPM++ 2S a Karras」「Eular a」の3つの中から1つ選択してください。
他の「Sampling method」にするとクオリティが劣化します。
「DPM++ SDE Karras」が綺麗に生成されやすいのでおすすめです!
モデルによっては、最適な「Sampling method」が変わる場合があります。
CIVITAIの各モデル内にある説明文には、推奨している「Sampling method」が記載されている場合があるので、確認してみるといいです。
「Sampling steps」は「5」くらいに設定しましょう。
SDXLの標準画像サイズは、「縦:1024」「横:1024」以上なので「縦:1024」「横:1024」にしてください。
「CFG Scale」は「1〜2.5」に設定してください。
「blue_pencil-XL-LCM」のモデルURLにある説明文でも、推奨値が記載されているので確認してみてください。
以下の画像では、LCMではない通常のCheckpointモデルを使用して「Sampling step」を「5」にして生成した結果と
LCMである「blue_pencil-XL-LCM」のCheckpointモデルを使用して「Sampling step」を「5」に設定して生成した比較結果になります。
LCMではない通常のCheckpointよりも、LCMの方では綺麗に生成することが出来ています。
以下の画像では、LCMではない通常のCheckpointモデルを使用して
「Sampling steps」の数値を「1〜5」まで生成した結果になります。
「5」まで綺麗な人物で画像生成することが出来ていません。
以下の画像では、LCMである「blue_pencil-XL-LCM」のCheckpointモデルを使用して
「Sampling steps」の数値を「1〜5」まで生成した結果になります。
こちらでは「3」から綺麗な人物で画像生成できています。
早い段階から綺麗に生成できていますね。
上記画像のように
LCMではない通常のCheckpointモデルと
LCMの「blue_pencil-XL-LCM」モデルを使って全く同じSampling stepsの数値で画像生成すると
生成時間は同じでしたが(生成時間は環境によって異なります)
「blue_pencil-XL-LCM」では、少ない「Sampling steps」の数値で綺麗に画像生成することが出来ています。
「Sampling steps」の数値は上げていくほど、生成までに時間がかかります。
LCMではない通常のCheckpointモデルで綺麗に画像生成しようとすると
「Sampling steps」の数値は「20」くらいに設定しないといけないので、その分時間がかかってしまいます。
ですから、例えば
LCMではない通常のCheckpointモデルで綺麗に生成する→Sampling Stepsを「20」にして約1分
LCMの「blue_pencil-XL-LCM」モデルで綺麗に生成する→Sampling Stepsを「5」にして約15秒
なので、その分高速生成することができます!
LCMの拡張機能を導入する
LCMを使って画像生成できる2つ目の方法として
拡張機能の「sd-webui-lcm」を使ったやり方があります。
「Extensions」をクリックしてから「Install from URL」をクリックしてください。
「URL for extension’s git repository」の項目内に
「https://github.com/0xbitches/sd-webui-lcm.git」をコピペしてから
「Install」をクリックして、「sd-webui-lcm」をインストールしてください。
「Installed」をクリックしてから
「sd-webui-lcm」がインストールされているか確認してください。
「Settings」をクリックしてから
「Reload UI」をクリックして、Stable Diffusion Web UIを再起動してください。
これで「sd-webui-lcm」の導入は完了です!
LCMの使い方
新規で追加された「LCM」のタブをクリックしてください。
「LCM img2img」と「LCM vid2vid」はエラーが起きて使用することが出来ないようです。
(設定次第では可能かもしれません)
「LCM txt2img」をクリックしてから、プロンプト内に画像生成したい内容を入力してください。
「Run」をクリックすることで、8秒で4枚の画像を生成することが出来ます。
「Seed」項目では、Seedの数値が違うことで異なった画像生成結果にすることができます。
Seed値を固定して画像生成することで、全く同じ画像生成結果にすることが出来ます。
「Randomize seed across runs」にチェックを入れて画像生成すると
毎回Seed値をランダムにして画像生成します。
チェックを外すとSeed値を固定します。
「Run LCM in fp16 (for lower VRAM)」ではチェックを入れると、VRAMの消費を低くして早く画像生成します。
チェックを外すと時間が長くなります。
「Run LCM with torch.compile」にチェックを入れて画像生成すると
バグが発生して生成できないのでチェックは入れないでいいです。
「Run LCM on CPU」にチェックを入れて画像生成すると
生成までに非常に時間がかかるので入れないでいいです。
「Width」と「Height」では、画像サイズを設定することが出来ます。
「Guidance scale for base」では、「CFG Scale」と同じような役割だとは思いますが、比較してもあまりよく分かりませんでした。
以下の画像では、「Guidance scale for base」の数値を「2」「8」「14」で生成した比較結果になります。
少し画像結果が違っているので試行錯誤してみてください。
「Number of inference steps for base」では、ノイズ除去の回数になります。
数値が大きいほど、クオリティが向上しやすい傾向にあります。
以下の画像では、「Number of inference steps for base」の数値を「1」「4」「8」で生成した比較結果になります。
「1」では、ぼやけておりノイズ除去がしっかり出来ていません。
「8」では、ノイズ除去がしっかりされており、「1」よりもクオリティが向上しています。
「Number of images (batch count)」では、1度に画像生成する枚数の設定になります。
最大100枚まで設定可能です。
まとめ
Stable Diffusionで画像生成を高速化できるLCMの使い方について解説しました。
LCMである「blue_pencil-XL-LCM」のCheckpointモデルを使用することで
LCMではない通常のCheckpointモデルよりも、小さいSampling stepsで綺麗に画像生成することが出来るので高速化できます。
「sd-webui-lcm」の拡張機能では、8秒で4枚の画像生成をすることが出来ます。
是非記事を参考にしてLCMを使用してみてください!
「SDXL Turbo」のモデルでも同様に高速生成することが出来ます。
以下の記事では、「SDXL Turbo」の使い方について解説しているので良ければ読んでみてください。