最終更新日:2023年8月3日
左がデフォルト、右が専用VAEです。
はじめに
Diffusersで専用のVAEを使用するためには変換が必要でした。touch-sp.hatenablog.com
新たに「from_single_file」がVAEにも使えるようになったのでその作業は不要になりました。
使い方
「omegaconf」と「pytorch-lightning」が必要です。pip install torch==2.0.1+cu117 --index-url https://download.pytorch.org/whl/cu117 pip install diffusers[torch] pip install transformers compel omegaconf pytorch-lightning
model_id = "model/Counterfeit-V2.5_pruned.safetensors" pipe = StableDiffusionPipeline.from_single_file( model_id, vae=AutoencoderKL.from_single_file("vae/Counterfeit-V2.5.vae.pt"), load_safety_checker=False, extract_ema=True )
使用例
from diffusers import StableDiffusionPipeline, EulerAncestralDiscreteScheduler, AutoencoderKL import torch from compel import Compel, DiffusersTextualInversionManager model_id = "model/Counterfeit-V2.5_pruned.safetensors" pipe = StableDiffusionPipeline.from_single_file( model_id, vae=AutoencoderKL.from_single_file("vae/Counterfeit-V2.5.vae.pt"), load_safety_checker=False, extract_ema=True ) pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(pipe.scheduler.config) pipe.load_textual_inversion("embeddings/EasyNegative.safetensors", token="EasyNegative") pipe.to("cuda") prompt = "(high resolution)++, 8k+, attractive, highly detailed, pretty girl, short hair" negative_prompt = "EasyNegative, (Worst Quality)++, (low quality)+" textual_inversion_manager = DiffusersTextualInversionManager(pipe) compel_proc = Compel( tokenizer=pipe.tokenizer, text_encoder=pipe.text_encoder, textual_inversion_manager=textual_inversion_manager, truncate_long_prompts=False) prompt_embeds = compel_proc([prompt]) negative_prompt_embeds = compel_proc([negative_prompt]) seed = 20000 generator = torch.Generator(device="cuda").manual_seed(seed) image = pipe( prompt_embeds=prompt_embeds, negative_prompt_embeds=negative_prompt_embeds, generator=generator, num_inference_steps=30, guidance_scale=7.0, width=768, height=768, ).images[0] image.save("result.png")