Google Colab の Stable Diffusion Web UI を使いやすくする

当ページのリンクには広告が含まれています。
注意

現在、Google Colab で Stable Diffusion Web UI を利用することは制限されているようです。

私の環境では「今後の Colab の利用を制限」とまでは記載されていませんが、以下の通り「許可されていないコードを実行している場合、警告なしでランタイムが終了する」との記載が出ています。

本記事をもとに Google Colab で Stable Diffusion Web UI を利用した結果、Google アカウント自体が制限されてしまう可能性もゼロではありませんので、ご利用は自己責任にてお願いします。

こんにちは、ふじみやです。

以前、Stable Diffusion Web UI を Google Colab で使う方法についてご紹介をしましたが、Google Drive からダウンロードするモデルファイルは手入力をする必要がありました。

モデルファイルをダウンロードしたことがある方ならご理解いただけると思いますが、モデルファイルの名前は長いので複数モデルファイルを保存していて、使うものだけダウンロードしようとするのは手間でした。

とはいえ、保存しているモデルファイルを全てダウンロードしようとすると時間もかかりますし、(私の環境だけかもしれませんが)Stable Diffusion Web UI でモデルの切り替えをしようと思っても上手くできません。

そこで、今回は Google Colab に UI を付けることで各セルを見やすくするとともに、モデルファイルのダウンロードを簡単にしていきます。

目次

Google Colab の UI 機能

Google Colab の各セルには UI を付ける機能があります。

例えば、セルの冒頭に# @title 任意の文字と入力をするとそのセルにタイトルを付けることができます。

# @title Google Drive をマウント
from google.colab import drive
drive.mount('/content/gdrive')

上記の場合、以下のような表示になります。

今回はこういった機能を使います。

UI 用のコード作成

上記でご説明をした UI 機能の1つに「ドロップダウンメニュー」というものがありますので、こちらを使っていきましょう。

ドロップダウンメニューの作成

使い方は簡単で、最初の行(セルのタイトルを入れる場合にはその次の行)に次の通りに入力をするだけです。

dropdown = '' #@param ["Option1", "Option2", "Option3"] {allow-input: false}

Option1などの選択肢には・・・.safetensorsといったモデルファイルの名前を入れておいてくださいね。

入力するとセルの右側に次のようなドロップダウンメニューが表示され、指定したオプションが選択できるようになりっています。

上記では分かりやすくdropdownという名前にしましたが、ただの変数名ですのでmodelでもoptionなどお好きな名称にしていただいて大丈夫です。

なお、1つの選択肢内に複数のファイルをダウンロードするようにしたい場合には" "内に次のように入力をしてください。ファイル名の間は半角スペースですので間違えないようにしましょう。

dropdown = '' #@param ["aaa.safetensors bbb.yaml ccc.vae.pt", "Option2", "Option3"] {allow-input: false}

また、全てのファイルをダウンロードするよう指定する場合は"*"と指定しますが、モデルファイルは数GBあり非常に時間がかかってしまいますので、あまりオススメしません。

変数をコード内で使用

上記だけでは単にドロップダウンメニューでファイル名を選べるというだけですので、ここで選んだファイル名がダウンロード用のファイルパスに使用されるようにしましょう。

ここではダウンロードしたいモデルファイルは Google Drive 内のStable_Diffusion/modelsフォルダに保存している前提としています。皆さんは実際の保存先を入力してくださいね。

%cd /content/gdrive/MyDrive/Stable_Diffusion/models
print("downloading {} to Stable Diffusion Web UI".format(dropdown))
!cp {dropdown} /content/stable-diffusion-webui/models/Stable-diffusion
print("download of models completed")

ここでポイントになるのはcp関数(ファイルをコピーするコマンド)です。cpの直後に{変数名}と入力をすることで、実行時には例えば次のように解釈されます。

!cp Option1 /content/・・・

print関数はコードを実行した際に出力する(表示する)内容ですので記載を省略していただいても構いませんが、ダウンロードが終わったらその旨が表示されると分かりやすいのではないかと思います。

print関数内で上記と同様に{変数名}としてしまうとそのまま{変数名}と出力されてしまいますので、" "の中では{}とだけ入力し、最後に.format(dropdown)と加えるようにしましょう。

上がprint関数内で{変数名}とした場合。下がprint関数内は{}とし、最後に.format(dropdown)を加えた場合。

コードの全体像

上記を踏まえ、前回ご紹介した Google Colab の各セルの内容を以下の通りに修正しました。

1. Google Drive をマウント

# @title Google Drive をマウント
from google.colab import drive
drive.mount('/content/gdrive')

2. Stable Diffusion Web UI のリポジトリをダウンロード

# @title Stable Diffusion Web UI のリポジトリをダウンロード
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
print("download completed")

3. 利用するモデルを選択

# @title 利用するモデルを選択
Model = '' #@param ["option1","option2","option3"] {allow-input: false}
%cd /content/gdrive/MyDrive/Stable_Diffusion/models
print("downloading {} to Stable Diffusion Web UI".format(Model))
!cp {Model} /content/stable-diffusion-webui/models/Stable-diffusion
print("download of models completed")

上記ではLoRAファイルを Google Drive 内の/Stable_Diffusion/modelsに保存している前提としています。

4. LoRAのダウンロード(必要に応じて)

# @title LoRA のダウンロード (if necessary)
!mkdir /content/stable-diffusion-webui/models/Lora/
LoRA = '' #@param ["option1","option2","option3","*"] {allow-input: false}
%cd /content/gdrive/MyDrive/Stable_Diffusion/lora
print("downloading {} to Stable Diffusion Web UI".format(LoRA))
!cp {LoRA} /content/stable-diffusion-webui/models/Lora/
print("download of LoRA completed")

上記ではLoRAファイルを Google Drive 内の/Stable_Diffusion/loraに保存している前提としています。

また、私の環境ではリポジトリをダウンロードしても LoRA を保存するディレクトリが作成されていなかったので、エラーを回避するために最初にディレクトリを作成するようにしています。

5. Stable Diffusion Web UI を実行

# @title Stable Diffusion Web UI を実行
%cd /content/stable-diffusion-webui/
!python launch.py --share --xformers --enable-insecure-extension-access --medvram

6. 生成した画像を Google Drive にコピー

# @title 生成した画像を Google Drive にコピー
print("copying all the image data to Google Drive")
!cp -r /content/stable-diffusion-webui/outputs/txt2img-images/* /content/gdrive/MyDrive/Stable_Diffusion/txt2img-images/
print("copy completed")

上記では生成した画像が保存されているフォルダを全て Google Drive 内の/Stable_Diffusion/txt2img-images/に保存をするようにしています。

まとめ

これで Google Colab のノートブックもかなりスッキリしたのではないでしょうか。

これからも Google Colab の便利な使い方などを見つけたら記事にしていきたいと思います。

それではまた。

この記事が気に入ったら
フォローしてね!

コメント

コメントする

目次