かめ。ブログ

Stable DiffusionをGoogle Colabでモデルを選んでダウンロードしたり使いやすくする

2023年3月1日
2023年3月30日

目次

この記事で実現できること

  • Google ColabでStable diffusionを立てる
  • 開始時にモデル(checkpoint、safetensors)を選択してダウンロードできる
    • Chilloutmix-Ni
    • CCCmix
    • pastelmix-fp32
    • AbyssOrangeMix""AbyssOrangeMix2_hard
    • BloodOrangeMix
    • EerieOrangeMix" "EerieOrangeMix2
    • ElyOrangeMix
    • AbyssOrangeMix3" "7thanimev1.1
    • 7thanimev3_A
    • 7th_anime_v3_B
    • 7th_anime_v3_C
    • SukiyakiMix-v1.0
  • Google Driveにあらかじめダウンロードしておいたモデルを起動時に読み込むようにする
  • 画像をGoogleドライブにダウンロードできる


ファイルは下記に置いてありますのでファイルを自分のドライブにコピーしてお使いください。


使い方

左上ファイル → ドライブにコピーを保存

コピーしたファイルを開いて上から順番に矢印を押していきます。

コピーしたファイルを開いて

基本的には上から順番に実行していきます。

GoogleDriveとつなげる

実行すると、「このノートブックにGoogleドライブのファイルへのアクセスを許可しますか?」と表示されます。
「Googleドライブに接続」をクリックすると別ダブで、許可したいアカウントを選択して、権限の許可をしてください。

from google.colab import drive
drive.mount('/content/drive')


Githubからstable-diffusion-webuiをダウンロード

ダウンロードした後にstable-diffusion-webuiフォルダに移動します。

!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
!pip install --upgrade fastapi==0.90.1
%cd stable-diffusion-webui

3/30日現在バージョンによってcolabで起動できなくなっているようです。
いったん!git checkout 9377092%cd stable-diffusion-webuiの下に追記して、過去のバージョンを使用するようにすると動くようになります。
https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/9046#issuecomment-1487874711
バージョンによって動かなくなることはありそうなので、また進展があり次第記事更新していきます。

セレクトボックスから使いたいモデルを選択して準備

選択しただけでは選んだことにならないので左の矢印をクリックしてください
OrangeMixsをGoogle colabで使う (AUTOMATIC1111 webui ) - game snap
こちらを参考にさせていただきました。

上で選択したモデルをダウンロードします

# モデルデータを取得
!wget "$selected_url" -O "$local_model_name"

vaeが必要な場合はこちらを実行してください。上のModel選択時にvueのダウンロードurlが表示された場合

モデルと同じ名前で入れることでモデルが選ばれている場合に、そのvaeを一緒に使うようにしています。

# vaeを取得して同じ名前で入れる vaeがなかったらダウンロードしなくて良い
vaeFile = webui_model_dir + selected_model_name + ".vae.pt"
!wget "$selected_vae_url"  -O "$vaeFile"

Stable Diffusionサーバーを立てます

初回起動時には少し時間がかかる場合があります。

!COMMANDLINE_ARGS="--share --gradio-auth me:qwerty" REQS_FILE="requirements.txt" python launch.py --ckpt-dir="/content/drive/MyDrive/StableDiffusion/model" --lora-dir="/content/drive/MyDrive/StableDiffusion/lora" --embeddings-dir="/content/drive/MyDrive/StableDiffusion/embeddings" --api

実行が完了すると下記のような状態になると思うので
gradio.liveがついているアドレスをクリックするとUIが開きます。

パスワード画面が開くのでID: meとPassword:qwertyと入力してください。

ランダイムを削除すると、今までの設定や画像は全てリセットされてしまうのでモデルやloraなど、次回もダウンロードせずに使いたい場合は自分のdriveに入れ直しておくと、次回からはのフォルダに接続して使うようにしています。

--ckpt-dir="/content/drive/MyDrive/StableDiffusion/model" 
--lora-dir="/content/drive/MyDrive/StableDiffusion/lora"
--embeddings-dir="/content/drive/MyDrive/StableDiffusion/embeddings"


無料でGoogle Colabを使っている場合制限があるので注意

ランタイムの接続を削除してしまうと、上で行った操作がリセットされてしまい、
生成した画像も消えてしまうのでラインタイム削除する前に、作った画像は移行しておくようにしましょう。
下記をクリックで、生成した画像フォルダ(outputs)を、自分で接続したdriveにいれることができます。
コマンドを実行せずとも、左のファイル一覧から自分で移動する形でも大丈夫です。

一度ランタイムを削除した場合は、環境がリセットされますのでこの工程を最初からやる必要があります。

選択するモデルを増やしたい場合

モデル選択したの「コードを表示」をクリックしてください。
下記のようなコードが出てきますので。
Modelの名前と、モデルのダウンロード先のURLとvueのサウンロード先URLを下記の形で追加してください。
追加すると、セレクトボックスから選ぶことができるようになります。

    [
        "Modelで追加した名前",
        "safetensorsのダウンロードの先URL",
        "vaeのダウンロード先URL"
    ],


Model = "AbyssOrangeMix3" #@param ["Chilloutmix-Ni", "basilmix", "Counterfeit-V2.5", "CCCmix", "pastelmix-fp32", "AbyssOrangeMix","AbyssOrangeMix2_hard", "BloodOrangeMix", "EerieOrangeMix",  "EerieOrangeMix2", "ElyOrangeMix", "AbyssOrangeMix3",  "7th_anime_v1.1", "7th_anime_v3_A", "7th_anime_v3_B", "7th_anime_v3_C", "SukiyakiMix-v1.0", "doll774"]

# modelの行列を作成する
matrix = [
# 追加したい場合はここに追加していきます。
    [
        "Chilloutmix-Ni",
        "https://huggingface.co/TASUKU2023/Chilloutmix/resolve/main/Chilloutmix-Ni.safetensors"
    ],
]

Google Colabで使う方法の参考にさせていただいたサイト


まとめ

Google Colabで立てると、自分のパソコンの環境に関係なくサクッと立てることができるので便利ですね。
制限などは決まっているので、気にして使えば便利かなと思います!



関連する記事