今回は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を使うのが
便利になるテクニックを紹介しました。
他にも紹介しきれないほどの
機能を有しているので
また機会があれば
色々紹介していきたいと思います。
それでは。
他にも紹介しきれないほどの
機能を有しているので
また機会があれば
色々紹介していきたいと思います。
それでは。