こすたろーんエンジニアの試行錯誤部屋

作成物の備忘録を書いていきますー

【Stable Diffusion】diffusersでembeddingを使用する方法

スポンサーリンク

diffusersでembeddingを使えるようになっていたので、試してみました
この記事は導入の備忘録です

目次

スポンサーリンク

この記事でわかること

diffuserrsでembeddingを導入する方法

1.実行環境

Google Colab
Diffusers:0.15.0
transformers:4.26.0

2.コード

以前diffusersで画像生成するコードを作成しました
technoxs-stacker.hatenablog.com

今回は上記コードに以下のembedding読み込み処理に追記します

# --- embeddingの読み込み処理 ---
emb_path=path/to/embedding file#ダウンロードしたsafetensorファイルのパスを指定
pipe.load_textual_inversion(pretrained_model_name_or_path=emb_path, token=token_word, local_files_only=True)
#token_wordはembeddingを有効化するときの言葉を指定 例:easynegative
# ---------------------------------------

以下が完成したコードになります

model_name = modelname  

save_name = filename.png  
save_dir = path/to/save/directory
os.makedirs(save_dir, exist_ok=True)
save_path = os.path.join(save_dir, save_name)

seed = 3000000
device = "cuda"

pipe = StableDiffusionPipeline.from_pretrained(model_name, torch_dtype=torch.float32)
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
pipe = pipe.to("cuda")
if pipe.safety_checker is not None:
    pipe.safety_checker = lambda images, **kwargs: (images, False)

# --- embeddingの読み込み処理 ---
emb_path=path/to/embedding file#ダウンロードしたsafetensorファイルのパスを指定
pipe.load_textual_inversion(pretrained_model_name_or_path=emb_path, token=token_word, local_files_only=True)
#token_wordはembeddingを有効化するときの言葉を指定 例:easynegative
# ---------------------------------------

positive=possitive prompt
negative=negative prompt

generator = torch.Generator(device).manual_seed(seed)

image = pipe(positive, negative_prompt=negative, generator=generator).images[0]
image.save(save_path)

スポンサーリンク

参考

github.com
github.com
huggingface.co