はじめに
以前は「convert_original_stable_diffusion_to_diffusers.py」という実行ファイルを用いて変換していました。実は「from_single_file」と「save_pretrained」を使うと簡単にできることが分かりました。
例
from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_single_file(
"safetensors/mistoonAnime_v20.safetensors",
extract_ema=True,
)
pipe.save_pretrained("mistoonAnime_v20_ema")
使用例(SDXL)
import os
import sys
import torch
from diffusers import StableDiffusionXLPipeline
safetensors_file = sys.argv[1]
folder_name = os.path.splitext(os.path.basename(safetensors_file))[0]
pipe = StableDiffusionXLPipeline.from_single_file(
safetensors_file,
extract_ema=True,
torch_dtype=torch.float16
)
pipe.save_pretrained(
folder_name,
variant="fp16"
)
python convert.py nagatsukiMix_v20.safetensors
使用例(SD 1.x)
import os
import sys
import torch
from diffusers import StableDiffusionPipeline
safetensors_file = sys.argv[1]
folder_name = os.path.splitext(os.path.basename(safetensors_file))[0]
pipe = StableDiffusionPipeline.from_single_file(
safetensors_file,
extract_ema=True,
torch_dtype=torch.float16
)
pipe.save_pretrained(
folder_name,
variant="fp16"
)
過去記事
「convert_original_stable_diffusion_to_diffusers.py」を使う古い方法を紹介した記事です。
SD 1.x
touch-sp.hatenablog.com
SDXL
touch-sp.hatenablog.com