今回はGoogle Colabで
stable diffusionを便利に使うテクニック
についてです。
解説動画はこちら
前回は
Google Colabでstable diffusionを使う方法を
紹介しました。
stable diffusionをGoogleColabで使ってみる
今回は
もう少し使い勝手を良くするための
テクニックを紹介していきます。
まず最初は
モデルのロードの高速化です
GoogleColabで
stable-diffusionを使うには
最初にセットアップとして
色々読み込みをしないといけません。
初回のセットアップ部分のコード
(要アクセストークン)
初回はモデルのダウンロードなどが行われるため
この読み込みがかなり時間が掛かります。
この部分を高速化するために
モデルをpickleで保存してみましょう。
Googleドライブのマウント
モデルを保存するには
これでGoogleドライブに保存されます。
次回以降はこのドライブに保存された
モデルをロードすることで高速化できます。
モデルのロード
Googleドライブからモデルを
読み込み出来ると思います。
stable-diffusionを使えるようになるまでが
少し高速化されます。
画像作成(1枚)
テキストを入力すると
1枚だけ画像が生成されます。
同じテキストの画像は1回ごとに
上書きされて消えてしまうので
何枚も作成する場合は
少し使い勝手が悪いです。
画像作成(フォルダ内に複数枚数)
ということで
複数枚を一気に作成するようにしてみましょう。
こちらのコードでGoogleドライブ内に
画像が保存されるようになります。
timesの部分で回数指定ができるので
変えることで複数枚を一気に作成できます。
作成した画像を全部見るのは次のコードです。
これでまとめてフォルダ内の画像を表示できます。
画風に加える文字列(プロンプト)の生成補助
stable-diffusionでは様々な画風を
指定することができますが
指定するには、コマンドが必要です。
コマンドを覚えるのは大変なので
指定するプロンプトに
画風を加える補助をしてくれる
サイトがあります。
promptoMANIA
こちらでプロンプトを英文で打ち込みます。

次に下の方にスクロールすると
画風を選ぶことができます。

画風のサンプルが画像で表示されるので
これを参考にしながら作成したい画風をクリックします。
サイトの上部にプロンプトが作成されるので
コピーできるようになります。

これをstable-diffusionに貼り付ければ
その画風で作成することができます。
作成した画像のダウンロード
こちらのコードで画像をまとめてダウンロードできます。
Googleドライブに保存されてはいるので
そちらからもまとめてダウンロードは出来るので
あまり使う機会は少ないかもしれませんが
Google Colab上から画像のダウンロードをするのは
このコードを使えば出来ます。
今回は少しだけstable-diffusionを使うのが
stable diffusionを便利に使うテクニック
についてです。
解説動画はこちら
前回は
Google Colabでstable diffusionを使う方法を
紹介しました。
stable diffusionをGoogleColabで使ってみる
今回は
もう少し使い勝手を良くするための
テクニックを紹介していきます。
まず最初は
モデルのロードの高速化です
GoogleColabで
stable-diffusionを使うには
最初にセットアップとして
色々読み込みをしないといけません。
初回のセットアップ部分のコード
(要アクセストークン)
#@title 事前セットアップ
# 必要なライブラリのインストール
!pip install diffusers==0.2.4 transformers scipy ftfy
# アクセス・トークンを設定
token = ""#@param {type:"string"}
# パイプラインを構築
from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=token)
pipe.to("cuda")
初回はモデルのダウンロードなどが行われるため
この読み込みがかなり時間が掛かります。
この部分を高速化するために
モデルをpickleで保存してみましょう。
Googleドライブのマウント
モデルを保存するには
Googleドライブのマウントをしておく
必要があります
必要があります
フォルダマークから「ドライブのマウント」
をクリックしてマウントしておきましょう。
をクリックしてマウントしておきましょう。
モデルの保存
import pickle
import shutil
import os
model_name = 'sd_model.pkl'
with open(model_name , mode='wb') as f:
pickle.dump(pipe, f)
save_dir = 'drive/MyDrive/stable-diffusion-v1-4/'
os.makedirs(save_dir, exist_ok=True)
save_path = save_dir + model_name
shutil.copyfile(model_name, save_path)
これでGoogleドライブに保存されます。
次回以降はこのドライブに保存された
モデルをロードすることで高速化できます。
モデルのロード
# 必要なライブラリのインストール
!pip install diffusers==0.2.4 transformers scipy ftfy
# パイプラインを構築
from diffusers import StableDiffusionPipeline
model_name = 'sd_model.pkl'
save_dir = 'drive/MyDrive/stable-diffusion-v1-4/'
save_path = save_dir + model_name
with open(save_path, mode='rb') as f:
pipe = pickle.load(f)
2回目以降はこのコードでGoogleドライブからモデルを
読み込み出来ると思います。
stable-diffusionを使えるようになるまでが
少し高速化されます。
画像作成(1枚)
#@title 画像を生成する
# 画像生成
prompt = "" #@param {type:"string"}
img = pipe(prompt)["sample"][0]
# 画像の保存
img_name = prompt.replace(' ','_')
img_path = img_name + '.png'
img.save(img_path)
# 画像の表示
from IPython.display import Image,display
display(Image(img_path))
テキストを入力すると
1枚だけ画像が生成されます。
同じテキストの画像は1回ごとに
上書きされて消えてしまうので
何枚も作成する場合は
少し使い勝手が悪いです。
画像作成(フォルダ内に複数枚数)
#@title 画像を生成する
import os
# 画像生成
prompt = "" #@param {type:"string"}
times = 3 #@param {type:"integer"}
save_dir = 'drive/MyDrive/stable-diffusion-v1-4/sd_img/'
for i in range(times):
img = pipe(prompt)["sample"][0]
# 画像の保存
txts = prompt.split(' ')
img_name = prompt.replace(' ','_')
if len(txts)>=4:
dir_path = '_'.join(txts[0:2]) + '_-_' + '_'.join(txts[-2:])
else:
dir_path = prompt.replace(' ','_')
# 保存ディレクトリの作成
img_save_dir = save_dir + dir_path
os.makedirs(img_save_dir, exist_ok=True)
img_path = img_save_dir + '/' + img_name + '_{0:02}.png'.format(i)
img.save(img_path)
ということで
複数枚を一気に作成するようにしてみましょう。
こちらのコードでGoogleドライブ内に
画像が保存されるようになります。
timesの部分で回数指定ができるので
変えることで複数枚を一気に作成できます。
作成した画像を全部見るのは次のコードです。
# 画像の表示(保存ディレクトリ内の画像全部)
from IPython.display import Image,display
import glob
for path in glob.glob(img_save_dir + "/*.png"):
print(path.split('/')[-1])
display(Image(path,retina=True))
これでまとめてフォルダ内の画像を表示できます。
画風に加える文字列(プロンプト)の生成補助
stable-diffusionでは様々な画風を
指定することができますが
指定するには、コマンドが必要です。
コマンドを覚えるのは大変なので
指定するプロンプトに
画風を加える補助をしてくれる
サイトがあります。
promptoMANIA
こちらでプロンプトを英文で打ち込みます。

次に下の方にスクロールすると
画風を選ぶことができます。

画風のサンプルが画像で表示されるので
これを参考にしながら作成したい画風をクリックします。
サイトの上部にプロンプトが作成されるので
コピーできるようになります。
これをstable-diffusionに貼り付ければ
その画風で作成することができます。
作成した画像のダウンロード
# ダウンロードしたいフォルダを zip 圧縮する
!zip -r /content/download.zip drive/MyDrive/stable-diffusion-v1-4/sd_img/
# 圧縮した zip ファイルをダウンロードする
from google.colab import files
files.download("/content/download.zip")こちらのコードで画像をまとめてダウンロードできます。
Googleドライブに保存されてはいるので
そちらからもまとめてダウンロードは出来るので
あまり使う機会は少ないかもしれませんが
Google Colab上から画像のダウンロードをするのは
このコードを使えば出来ます。
今回は少しだけstable-diffusionを使うのが
便利になるテクニックを紹介しました。
他にも紹介しきれないほどの
機能を有しているので
また機会があれば
色々紹介していきたいと思います。
それでは。
他にも紹介しきれないほどの
機能を有しているので
また機会があれば
色々紹介していきたいと思います。
それでは。

コメントする