MarkdownとBullet Journal

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

Google colabのAUTOMATIC1111でStable Diffusion2.0を使う

Stable Diffusion2.0をcolabで使う

数日前に登場したStable Diffusion2.0は、1.5までとは異なる構成のため、モデルの変更だけでは使えない。現時点ではStableDiffusion2.0の5つあるモデルの内、768x768モデルのみ利用方法が開示されたのでそれを説明する。

また今まで必要だったHugging Faceの認証も2.0から不要になった。

導入方法

AUTOMATIC1111でStable Diffusion2.0を使用する方法を説明しているサイトは以下。慣れた方はこのサイトを見れば分かると思う。

github.com

サイトの解説

  • 現時点では768x768のStable Diffusion2.0-vモデルのみサポート
  • 768-v-ema.ckptチェックポイントをダウンロード(下記URL)

https://huggingface.co/stabilityai/stable-diffusion-2

  • そのモデルをmodels/Stable-Diffusionディレクトリに入れる
  • SD2.0リポジトリからconfigを取得し(下記URL)、チェックポイントと同じ場所に配置して、同じファイル名になるように名前を変更する

https://raw.githubusercontent.com/Stability-AI/stablediffusion/main/configs/stable-diffusion/v2-inference-v.yaml

  • 上のURLに移動後、画面を右クリックで「名前を付けて保存」を選び、768-v-ema.yamlで保存(自分が分かる名前で良い)
  • このyamlファイルもmodels/Stable-Diffusionディレクトリに入れる(前記した様に拡張子以外はモデルと同じ名前にすること)
  • [トレーニング] タブは、2.0 モデルでは壊れている可能性がある

より具体的な解説

ここからはcolabノートを例に挙げて説明する。まずベースとなる記事を示すので不明点があればこちらの記事を参照して欲しい。

programmingforever.hatenablog.com

1-1 colabのノートを開く

下記のAkaibu1.3のノートを開く。このノートを編集して使用する。

Google Colab

1-2 768x768モデルをGoogleDriveに保存する

  • 768-v-ema.ckptチェックポイントをダウンロード(下記URL)

https://huggingface.co/stabilityai/stable-diffusion-2

1-3 config用のyamlを同じく保存する

  • 下のURLをクリックするとコード画面が出るので、右クリックで「名前を付けて保存」を選び、768-v-ema.yamlで保存

https://raw.githubusercontent.com/Stability-AI/stablediffusion/main/configs/stable-diffusion/v2-inference-v.yaml

以上2つのファイルを自分のGoogle Drive(MyDrive/models/のディレクトリ)にアップロードできたら次に進む。

1-4 ノートにGoogleDriveマウントを追加

  • 1番目のコードセルの上にコードセルを追加する(セルのライン上にマウスを移動すると「+コード」と出るのでそれを選択)
  • 追加したコードセルに下記のコードを追記
from google.colab import drive
drive.mount('/content/drive')

これでGoogleDriveのファイルにアクセスできる様になる。

1-5 ノートのwgetコマンドを無効にする

モデルをサイトからロードするための5-7行の頭に#を着けてコメントアウトする(ダウンロードしたGoogleDrive内のモデルを使うため不要)

!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd stable-diffusion-webui
#@title SD1.5
# get a token from https://huggingface.co/settings/tokens
#user_token = "" #@param {type:"string"}
#user_header = f"\"Authorization: Bearer {user_token}\""
#!wget --header={user_header} https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned.ckpt -O /content/stable-diffusion-webui/model.ckpt

1-6 ノートにGoogleDriveからのモデルをコピーするコマンドを追加する

モデルとyamlファイルは/content/stable-diffusion-webui/models/Stable-diffusion/の中に入れる。

  • 前記のコードセルの下側に新たなコードセルを追加
  • そこに下記のコピーコマンドを追記する
  • GoogleDriveのモデル保存先が異なるフォルダの場合はそれに合わせて修正のこと
# Stable Diffusion2.0  768-v-ema.ckpt1.3モデル
!cp /content/drive/MyDrive/models/768-v-ema.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/
!cp /content/drive/MyDrive/models/768-v-ema.yaml /content/stable-diffusion-webui/models/Stable-diffusion/

3-5 最初から実行

1番上のセルから実行する。一式完了したら現れるURL(ローカルではない2番目の方)をクリックすると、web UIが別画面で起動する。

web UI起動時にユーザー名とパスワードを入力するようになったので(コードでカットも可能)、起動時にユーザー名:me、パスワード:qwerty を入力すると使える。このユーザー名とパスワードは自由に編集できる。

完成したノートブックはいつでも使える様に保存することをお勧めする。

Stable Diffusion2.0:768x768モデルの生成例

SD2.0-vモデル
SD2.0-vモデル
SD2.0-vモデル

まとめ:ノートのコード一式

# ①GoogleDriveをマウント
from google.colab import drive
drive.mount('/content/drive')
# ②実行コードをロード、不要な3行目以降を割愛
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd stable-diffusion-webui
# ③モデルとyamlをGoogleDriveから所定の場所にロード
!cp /content/drive/MyDrive/models/768-v-ema.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/
!cp /content/drive/MyDrive/models/768-v-ema.yaml /content/stable-diffusion-webui/models/Stable-diffusion/
# ④実行
!COMMANDLINE_ARGS="--share --gradio-debug --gradio-auth me:qwerty" REQS_FILE="requirements.txt" python launch.py