「haduki_mix v1.6 typeK」というモデルが公開されています。過去のモデルと比較してみました。

疑問

「typeK」とはどういう意味なのでしょうか?

結果

左から v1.0 → v1.5 → v1.6 typeK です。





Pythonスクリプト

プロンプトはこちらからそのまま使わせてもらいました。

from diffusers import StableDiffusionXLPipeline, DPMSolverMultistepScheduler
import torch
import os
import cv2
import numpy as np
import time

n_samples = 5
model_safetensors = {
    "v1.0": "hadukiMix_v10.safetensors",
    "v1.5": "hadukiMix_v15.safetensors",
    "v1.6_typeK": "hadukiMix_v16Typek.safetensors"
}

def txt2img(model_name:str) -> None:
    model_fname = model_safetensors[model_name]
    pipe = StableDiffusionXLPipeline.from_single_file(
        f"safetensors/{model_fname}",
        extract_ema=True,
        torch_dtype=torch.float16,
        custom_pipeline = "lpw_stable_diffusion_xl"
    )

    pipe.scheduler = DPMSolverMultistepScheduler.from_config(
        pipe.scheduler.config,
        algorithm_type="sde-dpmsolver++",
        use_karras_sigmas=True
    )
    
    pipe.to("cuda")

    prompt = "japanese woman, cute, 27yo, close-up, (natural lighting:2), (gray sweater), (thin curtain, dimly lit room:0.5)"
    negative_prompt = "(cleavage:2), (illustration), 3d, 2d, painting, cartoons, sketch, watercolor, monotone, (kimono)"

    os.makedirs(model_name, exist_ok=True)

    for i in range(n_samples):
        seed = 100000 * (i + 1)
        generator = torch.manual_seed(seed)
        image = pipe(
            prompt=prompt,
            negative_prompt=negative_prompt,
            generator=generator,
            num_inference_steps = 35,
            guidance_scale=5.0,
            width=896,
            height=1152
        ).images[0]

        image.save(os.path.join(model_name, f"{i}.png"))

def stack() -> None:
    os.makedirs("stack_image", exist_ok=True)
    print(" -> ".join(model_safetensors.keys()))
    for i in range(n_samples):
        images_list = []
        for key in model_safetensors.keys():
            images_list.append(cv2.imread(os.path.join(key, f"{i}.png")))
        stack_image = np.hstack(images_list)
        cv2.imwrite(os.path.join("stack_image", f"{i}.png"), stack_image)

if __name__ == "__main__":
    start = time.time()
    
    for model in model_safetensors:
        txt2img(model)
    stack()
    
    end = time.time()
    print(f"処理時間: {end - start:.5f}秒")





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