【Diffusers】「from_single_file」と「save_pretrained」を使うとsafetensorsファイルをDiffusersフォーマットに簡単に変換できます

はじめに

以前は「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




このエントリーをはてなブックマークに追加