MarkdownとBullet Journal

いわゆるプログラマーのつぶやき

【備忘録】Stable Diffusionをcolabで動かすコード一覧

Google colabで生成した例

別記事で導入解説

詳細な説明と事例を加えた、未経験者でも簡単にGoogle colabでStable Diffusionを使うための解説記事はこちら。

programmingforever.hatenablog.com

自分のメモ用

こちらの記事は自分の備忘録としてまとめた。Stable Diffusion系列のAI画像生成をGoogle colabで使うための設定を自分用にまとめたもので、バージョン変更の都度修正する予定。具体的な導入方法の手順等は割愛しているので、詳細を知りたい方は前記リンクの記事を参照して欲しい。

①Stable Diffusion : txt2img

# ①Stable Diffusionパッケージをインストール
!pip install diffusers==0.3.0 transformers scipy ftfy

# ②Hugging Faceへのアクセストークンをトークン変数に格納
MyTOKEN="<HugginFace HubのサイトでコピーしたAccess Tokenをここに入れる>"

# ③StableDiffusionパイプラインを準備する
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4", 
    use_auth_token=MyTOKEN
).to("cuda")

# ④プロンプトを与えて画像を生成する
ffrom torch import autocast

prompt = "japanese girl"
with autocast("cuda"):
    images = pipe(prompt, guidance_scale=7.5).images
images[0].save("output.png")

上記のモデル名を変更するだけで、WaifuやTrinartなどStable Diffusion以外のモデルが使える。

ブロック③の変更箇所のみを以下に記載する

その他多数あるモデルの紹介記事。いずれも同様に使える。

programmingforever.hatenablog.com

# モデル:Stable Diffusion 1.4を使用する場合

pipe = StableDiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",                   # 変更箇所はこの行のみ
    use_auth_token=MyTOKEN
).to("cuda")

# モデル:Waifu Diffusion を使用する場合

pipe = StableDiffusionPipeline.from_pretrained(
    "hakurei/waifu-diffusion",                        # 変更箇所はこの行のみ
    use_auth_token=MyTOKEN
).to("cuda")

# モデル:Trinart Diffusion V2 を使用する場合

pipe = StableDiffusionPipeline.from_pretrained(
    "ayan4m1/trinart_diffusers_v2”",                   # 変更箇所はこの行のみ
    use_auth_token=MyTOKEN
).to("cuda")

②Stable Diffusion : img2img

# ①Stable Diffusionパッケージをインストール
# img2img対応したバージョンをインストールするためにGitHubのリポジトリを指定
!pip install transformers scipy ftfy
!pip install git+https://github.com/huggingface/diffusers.git

# ②Hugging Faceへのアクセストークンをトークン変数に格納
MyTOKEN="<HugginFace HubのサイトでコピーしたAccess Tokenをここに入れる>"

# ③StableDiffusionパイプラインを準備する
import torch
from diffusers import StableDiffusionImg2ImgPipeline

pipe = StableDiffusionImg2ImgPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    revision="fp16", 
    torch_dtype=torch.float16,
    use_auth_token=MyTOKEN
).to("cuda")

# ④画像を与えて画像を生成する
from PIL import Image
from torch import autocast

# 与える画像は512x512サイズ限定
prompt = "Kitten surrounded by flowers in a poster style garden with mountains in the distance"
init_image = Image.open("<アップロードしたファイル名をここに入れる>").convert("RGB")
init_image = init_image.resize((512, 512))    # 512x512にリサイズ
with autocast("cuda"):
    images = pipe(
        prompt=prompt,
        init_image=init_image,
        strength=0.85
        )["sample"]

images[0].save("output.png")

③Waifu Diffusion : txt2img

# ①Stable Diffusionパッケージをインストール
!pip install diffusers==0.3.0 transformers scipy ftfy

# ②StableDiffusionパイプラインの準備
import torch
from torch import autocast
from diffusers import StableDiffusionPipeline, DDIMScheduler

pipe = StableDiffusionPipeline.from_pretrained(
    "hakurei/waifu-diffusion",               # ここでwaifu-diffusionを指定
    torch_dtype=torch.float16,
    revision="fp16",
    scheduler=DDIMScheduler(
        beta_start=0.00085,
        beta_end=0.012,
        beta_schedule="scaled_linear",
        clip_sample=False,
        set_alpha_to_one=False,
    ),
).to("cuda")

# ③プロンプトから画像を生成する
prompt = "cute cat ear maid"
with autocast("cuda"):
    images = pipe(prompt, guidance_scale=7.5).images  
images[0].save("output.png")

④Trinart : txt2img

# ①Googleドライブのマウントと作業フォルダへの移動
from google.colab import drive
drive.mount('/content/drive')
%cd '/content/drive/My Drive/work'

# ②パッケージのインストール
!pip install -e git+https://github.com/CompVis/taming-transformers.git@master#egg=taming-transformers
!pip install pytorch_lightning tensorboard==2.8 omegaconf einops taming-transformers==0.0.1 clip transformers kornia test-tube
!pip install diffusers invisible-watermark

# ③StableDiffusionのインストール
!git clone https://github.com/CompVis/stable-diffusion.git
%cd stable-diffusion
!pip install -e .
%mkdir outputs

# ④Trinartのチェックポイントのダウンロード
!git lfs install
!git clone https://huggingface.co/naclbit/trinart_stable_diffusion_v2

# ⑤テキストからの画像生成
!python scripts/txt2img.py \
    --plms \
    --ckpt ./trinart_stable_diffusion_v2/trinart2_step115000.ckpt \
    --skip_grid \
    --n_samples 1  \
    --n_iter 1 \
    --outdir outputs \
    --ddim_steps 100 \
    --prompt "cute cat ear maid"

情報元

Pythonコードは下記リンクを参照した。

note.com

ysko909.github.io

note.com

⑤Stable Diffusion + Textual Inversion

解説記事

note.com

⑥Waifu Diffusion + Textual inversion

解説記事

birdmanikioishota.blog.fc2.com

⑦Stable DiffusionでNSFW回避

解説記事

fls.hatenablog.com

⑧Waifu DiffusionでNSFW回避

解説記事

qiita.com