画像生成を高速化する技術の1つに、LCMという技術があります。
Stable Diffusion Web UIでLCMを使用するには、拡張機能・LoRA・LCM用のモデルを使う3つの方法があります。
今回はこの3つの方法について、具体的な使い方をご紹介します。
・その他の高速化解説記事
Stable DiffusionのLCMとは?
LCMは「Latent Consistency Model」の略称で、Stable Diffusionの高速化技術の一つです。
従来のStable Diffusionよりも大幅な高速化を実現し、高品質な画像生成が可能。
具体的な仕組みはよくわかりませんが、LCMは潜在空間における画像の変化を予測することで、従来よりより少ないステップで画像生成ができるようです。
・論文
[2303.01469] Consistency Models
[2310.04378] Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference
[2311.05556] LCM-LoRA: A Universal Stable-Diffusion Acceleration Module
Stable Diffusion Web UIでLCMを使う方法
Stable Diffusion Web UIでLCMを使う方法は以下3つです。
- sd-webui-lcmの拡張機能を使う方法
- LCM LoRAを使う方法
- LCM用のモデルを使う方法
一応全て解説していますが、拡張機能を使う方法だとモデルが「Dreamshaper-V7」に限定されており、他の拡張機能との相性により導入が困難な場合があります。
ですので、導入が困難な場合は、LCM LoRAやモデルの方をおすすめします。
sd-webui-lcmの拡張機能を使う方法
sd-webui-lcmは、LCMをWeb UI上で使えるようにできる拡張機能です。
まずExtensions→Install from URL→URL for~に下記URLを入力し、Installボタンをクリックしてください。
https://github.com/0xbitches/sd-webui-lcm.git
リスタート、または再起動すると「LCM」というタブが追加されます。
タブを開くとtxt2img、img2img、vid2vidがあり、それぞれLCMを使って生成が可能です。
txt2img - プロンプトから画像生成
img2img - 画像から画像生成
vid2vid - 動画から動画生成
txt2imgでは、プロンプトを入力してRunを押すだけで画像生成できます。
下にサンプルプロンプトがあるので、それで生成すると以下のような画像ができました。
初回生成時のみ必要なモデルがダウンロードされます。
生成速度は約0.5秒です。
通常生成だと同じガイダンススケール・ステップ数でも2秒ほどかかるので、かなり高速化できてると思います。
Advanced optionsを開くと、seed値や画像サイズなどの設定が可能です。
Randomize seed across runs | シード値をランダムにする |
Run LCM in fp16 (for lower VRAM) | LCMをfp16で実行 |
Run LCM with torch.compile (currently not supported on Windows) | torch.compileでLCMを実行(Windowsではサポートされていない) |
Run LCM on CPU | CPUでLCMを実行 |
Width | 画像の横幅 |
Height | 画像の縦幅 |
Guidance scale for base | ガイダンススケールの設定 |
Number of inference steps for base | ステップ数の設定 |
Number of images (batch count) | 生成する画像枚数(デフォルトだと4) |
なお、LCMはガイダンススケールが6~8・ステップ数~2くらいを推奨しているので、こちら2つは範囲内の値で生成してみてください。
デフォルトはステップ数が8になっていますが、それでも問題なく生成できます。
インストール後LCMタブが表示されない場合
拡張機能をインストールしても、LCMタブが表示されない場合があります。
これはdiffusersのバージョンが0.23.0以外に起きるみたいです。
公式だとアップグレードしてくれと書いてあるのですが、単にアップグレードすると24年2月時点で0.26.3になり、これだとタブが表示できませんでした。
ですので、0.23.0を指定してインストールする必要があります。
まずstable-diffusion-webuiフォルダの空白部分でターミナルを開き、仮想環境をアクティブ化してください。
./venv/scripts/activate
diffusersのバージョンを確認します。
pip show diffusers
もしdiffusersが0.23.0以外、またはインストールされていない場合は、以下のコマンドでインストールしてください。
pip3 install diffusers==0.23.0
Stable Diffusion Web UIを再起動すれば、LCMタブが表示されます。
これでも表示されない場合は、別の拡張機能によって強制的にdiffusersをインストールしている場合があります。
例えばLoRAが作れるtraintrainがある場合、起動時にdiffusers 0.20.0がインストールされるため、LCMタブを表示できません。
拡張機能によってバージョンが違ったりするので、一時的にオフにするなどの対策が必要です。
ただこれだと拡張機能をオン・オフする度にインストールが必要なので、後述するLoRA・モデルの方が使い勝手はいいと思います。
LCM LoRAを使う方法
LCM LoRAは、LCMを通常のLoRAと同じように使えるものです。
LCM LoRAのダウンロード
以下のリンクから「pytorch_lora_weights」というファイルをダウンロードしてください。
SD1.5用 | latent-consistency/lcm-lora-sdv1-5 at main |
SDXL用 | latent-consistency/lcm-lora-sdxl at main |
Civitai | LCM-LoRA Weights - Stable Diffusion Acceleration Module - LCM for SD 1.5 |
huggingfaceだとどちらも同じファイル名なので、両方使う場合はCivitaiから落とすか、手動でファイル名を変える必要があります。
LoRAは以下のパスに移動しておいてください。
stable-diffusion-webui\models\Lora
LCM用のサンプラーを追加
LCM LoRAをweight1で使用すると、画像がガビガビになってしまいます。
それを避けるためにLCM用のサンプラーが必要です。
ただ正直クオリティは微妙で、サンプラーを変えずweightを下げた方が画像は綺麗になります。
一応次に紹介するLCM用モデルで使う場合もあるので、用途に合わせて導入してください。
以下の拡張機能をインストールすると、LCM用のサンプラーを追加できます。
https://github.com/light-and-ray/sd-webui-lcm-sampler.git
なお、animatediffを導入している方は、LCM用のサンプラーが追加されているそうです。
また最近リリースされたForgeにも、デフォルトでLCM用のサンプラーが追加されています。
お好きな方法で環境を整えてください。
LCM LoRAで画像生成
あとはプロンプトにLoRAを追加して、LCM用にパラーメータを設定するだけです。
以下同じシード値・hires.fixを使用して、通常生成とLCMを比較したものになります。
生成速度は早くなっていますが、やはりクオリティは微妙です。
生成速度もクオリティも維持したい場合は、サンプラーを変えず、LoRAのweightを落とすと綺麗に生成できます。
サンプラー:DPM++ 2M Karras
プロンプト:1girl, park, upper body, smile, <lora:sd15:0.3>
Sampling steps:6
CFG:2
Time taken: 8.8 sec.
参考記事:【西川和久の不定期コラム】Stable Diffusion高速化の決定版登場!?品質落とさず制限もほぼなしで2~3倍速に - PC Watch
LCM用のモデルを使う方法
CivitaiではLCM用のモデルが配布されています。
例えばDreamShaper 8には通常とLCM用のモデルがあり、LCM用のモデル&サンプラーを使えば高速生成が可能です。
なお、モデルによってはLoRAをマージしている場合もあり、サンプラーが不要な場合もあります。
モデルによって使い方が異なるため、説明文などで確認してみてください。
通常の説明文以外に、About this versionで解説している場合もあります。
LCM用のモデルを探したいときは、フィルターを使えば絞り込めます。
Civitai Models | Discover Free Stable Diffusion Models
LCMを使って高速画像生成する方法まとめ
今回はLCMという技術を使い、画像生成を高速化する方法についてご紹介しました。
それなりにクオリティを維持したまま大幅に高速化が可能なので、大量生成や検証、比較といった用途であれば便利かもしれません。
ただ画像単体としてのクオリティはどうしても下がってしまうので、何に使うかで実用性は異なると思います。
もしかしたら今後いろいろ面白い使い方などが出てくるかもしれないので、興味がある方はぜひ試してみてください。