StableDiffusionの世界では、さまざまな手法が試されていますが、画風や品質の違いを明確に把握することは難しいものです。
今回は、AI画像生成技術「StableDiffusion」に関する調査結果をもとに、Samplerの変更やパラメータ設定による画風の違いや生成速度の変化について詳しく解説します。
- NoCrypt/SomethingV2でSampler別生成イラスト比較
- torch_dtypeを指定しないVer
- torch_dtypeを指定有無比較
- Linaqruf/anything-v3.0で高スケール検証
- リアル風モデルでSampler別生成画像の比較
NoCrypt/SomethingV2でSampler別生成イラスト比較
from diffusers import PNDMScheduler pipe = StableDiffusionPipeline.from_pretrained( input_model, use_auth_token=token, torch_dtype=torch.float16, scheduler=c_scheduler ).to("cuda")
- Sampler: PNDMScheduler(9秒)
- Sampler: EulerDiscreteScheduler(9秒)
- Sampler: DDIMScheduler(9秒)
- Sampler: DPMSolverMultistepScheduler(9秒)
- Sampler: LMSDiscreteScheduler(9秒)
- Sampler: EulerDiscreteScheduler(9秒)
Sampler変更による画風の違いはあまりわからないが、LMSDiscreteSchedulerは崩れやすい
torch_dtypeを指定しないVer
from diffusers import PNDMScheduler pipe = StableDiffusionPipeline.from_pretrained( input_model, use_auth_token=token, #torch_dtype=torch.float16, scheduler=c_scheduler ).to("cuda")
- Sampler: PNDMScheduler(28秒)
- Sampler: EulerDiscreteScheduler(28秒)
- Sampler: DDIMScheduler(28秒)
- Sampler: DPMSolverMultistepScheduler(28秒)
- Sampler: LMSDiscreteScheduler(28秒)
- Sampler: EulerDiscreteScheduler(28秒)
「torch_dtype=torch.float16」にすると、所要時間が66%短縮される。
指定しない場合は30秒、指定した場合は10秒で画像生成される
指定しない場合は30秒、指定した場合は10秒で画像生成される
torch_dtypeを指定有無比較
- torch_dtype指定あり(高速):上
torch_dtype指定なし(低速):下
Sampler: PNDMScheduler
- Sampler: EulerDiscreteScheduler
- Sampler: DDIMScheduler
- Sampler: DPMSolverMultistepScheduler
- Sampler: LMSDiscreteScheduler
- Sampler: EulerDiscreteScheduler
「torch_dtype=torch.float16」にすると、詳細な書き込みが少なくなる(半精度になる)
・繊細なイラストにしたい場合はtorch_dtypeを指定しない
・デフォルメしたい場合は「torch_dtype=torch.float16」にする
のように使い分けるのが良い
・繊細なイラストにしたい場合はtorch_dtypeを指定しない
・デフォルメしたい場合は「torch_dtype=torch.float16」にする
のように使い分けるのが良い
Linaqruf/anything-v3.0で高スケール検証
DDIMScheduler
DPMSolverMultistepScheduler
PNDMScheduler
EulerDiscreteScheduler
EulerAncestralDiscreteScheduler
デフォルトのPNDMSchedulerでは崩れてしまうような高スケール(scale=20)でも、他のサンプラーでは問題なく画像生成が行える
DDIMScheduler
DPMSolverMultistepScheduler
EulerDiscreteScheduler
EulerAncestralDiscreteScheduler
DDIMSchedulerやEulerDiscreteSchedulerは、scale40でも崩れにくい
リアル風モデルでSampler別生成画像の比較
Samplerによって生成画像に大きく差が出るというわけではないが、シード値とプロンプトを固定した状態で差分を作りたい時にはSamplerを変えてみるのも良さそう。表情や光の入り方や服など細かい所が色々変わる