🦁

Stable Diffusionによる画像生成(Google Colab版)

2022/08/28に公開

概要

Stable Diffusion による画像生成が話題になっているので、Stable Diffusion - a Hugging Face Space by stabilityai を試してみたですが、もう少し理解すべく、次に Google Colab の環境で試してみました。

私が参考したページと、作業した際の履歴を記載します。

参考にしたページ

GIGAZINE

このページが丁寧に説明されているのでまずはこちらを見るとよいかと思います。

応用編

画像を出力する先をGoogle Driveにする方法や、一度の実行で画像を複数生成する方法が記載されています。

最初に見たページ

最初にこちらのページを見て試しましたが、GPUの設定等については言及されていないので私の環境ではエラーに遭遇しました。
内容としては GIGAZINE の内容と同等のものに見えます。

準備

アカウントの作成

上記ページより、「Sign UP」をクリックしてアカウントを作成します。
最低限 Username、Full name を入力し、"I have read and agree with the Terms of Service and the Code of Conduct" にチェックを入れて"Create Account"をクリックします。

メール認証

e-mail認証を行います。

モデルへのアクセス権の取得

上記リンクより、リポジトリへのアクセス権を取得します。アカウント作成時の Agreement とは別に必要であることに注意してください。

トークンの取得

右上のアイコンのところから Settings を選び、Access Tokens のところから トークンを取得します。

コードの実行

準備

# ライブラリのインストール
!pip install diffusers==0.2.4 transformers scipy ftfy
 
# アクセス・トークン設定
Access_Token="*************************"#@param {type:"string"}
 
# パイプライン構築
from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=Access_Token)
pipe.to("cuda")

画像生成

# 生成
prompt = "An astronaut riding a horse in a photorealistic style" #@param {type:"string"}
image = pipe(prompt)["sample"][0]
 
# 保存
sentence = prompt.replace(' ','_')
out_path = sentence+'.png'
image.save(out_path)
 
# 表示
from IPython.display import Image,display
display(Image(out_path))

画像のダウンロード

#@title 画像のダウンロード
from google.colab import files
files.download(out_path)

注意点

モデルへのアクセス権の取得

これを行っていないと、下記のようなエラーが発生します。

/usr/local/lib/python3.7/dist-packages/requests/models.py in raise_for_status(self)
    939 
    940         if http_error_msg:
--> 941             raise HTTPError(http_error_msg, response=self)
    942 
    943     def close(self):

HTTPError: 403 Client Error: Forbidden for url: https://huggingface.co/api/models/CompVis/stable-diffusion-v1-4/revision/main (Request ID: ************)

Access to model CompVis/stable-diffusion-v1-4 is restricted and you are not in the authorized list. Visit https://huggingface.co/CompVis/stable-diffusion-v1-4 to ask for access.

GPU設定

Google Colab上のGPU の設定が必要です。

これを行っていないと、RuntimeError が発生します。

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-1-81cabaee10da> in <module>
      8 from diffusers import StableDiffusionPipeline
      9 pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=Access_Token)
---> 10 pipe.to("cuda")
/usr/local/lib/python3.7/dist-packages/torch/cuda/__init__.py in _lazy_init()
    215         # This function throws if there's a driver initialization error, no GPUs
    216         # are found or any other error occurs
--> 217         torch._C._cuda_init()
    218         # Some of the queued calls may reentrantly call _lazy_init();
    219         # we need to just return without initializing in that case.

RuntimeError: No CUDA GPUs are available

参考

Discussion