【15分で構築】Google Colabで画像生成AI「Stable Diffusion」の実行環境をつくろう

AIで試行錯誤
generated by Stable Diffusion

こんにちは、しおだです。今日も推しがかわいいです。

先日始めたこのブログですが、実は中で使う画像の準備がまったく進んでおりません。
さてどうしたものか…そう考えていた矢先、とてもタイムリーな話題に出会いました。そう、画像生成AIの世界です。凄い技術が無料で、しかも商用利用も可能となれば使ってみない手はありません。

今回は「Stable Diffusion」という画像生成AIを「Google Colab」というオンライン環境で動かす手順を試してみました。公式およびいくつか参考にさせていただいたサイトの手順をベースに、数行のコードで1枚の画像を生成する基礎の基礎をまとめています。

このような方におすすめ!

  • AIによる自動画像生成に興味がある
  • 「Stable Diffusion」を触ってみたい
  • 「Stable Diffusion」をWeb上で動かしたい

Stable Diffusionとは

「Stable Diffusion」とは、「Stability.AI」が開発・公開した画像生成AIです。
プロンプトと呼ばれる指示文(通称:呪文)を入力すると、AIが意味を解釈し指示に沿った画像を生成します。

Stable Diffusion Public Release
https://stability.ai/blog/stable-diffusion-public-release

Stable Diffutionの特徴
  • オープンソースで無料で利用できる
  • モデルを元に新たにサービスを開発してもよい。商用利用も可能
  • 幅広い画風で人が描いたようなクオリティの高い絵を生成することができる
  • Stable Diffusionを用いて生成した画像の権利は、作成者(プロンプト実行者)が持つ

2022年8月23日に一般公開され(※執筆時点でなんとまだ1ヶ月経っていません)、以来プロンプトの研究や使いやすい実行環境、またこれを活用した新しいサービスの公開が盛んに行われています。
手っ取り早く触ってみたい方は、デモサイトから実際に試すことができます。

Google Colabとは

「Google Colab(正式名称:Colaboratory)」とは、Googleが提供しているオンラインのPython実行環境で、Googleアカウントを持っていれば無料で利用できます。

Google Colabの特徴
  • ブラウザ上でPythonコードを記述、実行、共有できる
  • 無料でGPUが使える

画像生成AIはとても重たい処理をするため、自分用の実行環境を作るとなるとGPUを搭載したかなりハイスペックなマシンが必要ですが、Google Colab(以降Colabと表記)を使うとその環境を手軽に得ることができます。
無料アカウントの場合多少の制限はありますが、ちょっと試してみようかなという場合には最適だと思います。

GPUとは?
グラフィックス・プロセシング・ユニットの略で、画像を処理する装置です。
家庭用PCよりも画像処理を頻繁に行うマシン(ゲーミングPCやクリエイター向けPC)に搭載されており高価ですが、Colabでは無料で利用することができます。

Google Colab×Stable Diffusionのメリット・デメリット

では両者を組み合わせることでどんなメリット・デメリットがあるのでしょうか。

一番大きなメリットはWeb上に画像生成AIの実行環境を、無料で構築できることです。インターネットに接続できる環境があればどこからでも画像生成を行え、しかも生成スピードはデモサイトよりも高速です。

デメリットはColabが無料アカウントの場合、環境を起動できる時間やメモリの使用に制限がかかることです。起動したまま動かさない、あるいは頻繁に生成を繰り返しているとランタイムが切断されます。
ランタイムが切断されたらまた構築をやり直す必要があるのですが、直近のリソース使用状況によってはCPUしか使えなくなったり、しばらく再起動不可となるので注意が必要です。

このように無料ならではの制限はありますが、これらはColabの有料プランの利用で回避可能です。

メリット

  • Web上に画像生成AIの実行環境を無料で構築できる
  • インターネットに接続できる環境があればどこからでも画像生成を行える(体感レベルではデモサイトより高速)

デメリット

  • Colabが無料アカウントの場合、環境を起動できる時間やメモリの使用に制限がかかる(プラン変更で回避可能)
  • ランタイムが切断されたらまた構築のやり直しが必要

実行環境をつくってみよう

それでは実際に実行環境を作っていきましょう。

Stable Diffusion側でやること

Hugging Faceアカウントを作成する

Stable Diffusionのモデルをダウンロードするためには、Hugging Faceというサイトのアカウントが必要です。以下の手順で作成してください。

Hugging Faceアカウント作成手順
  • 手順1
    Hugging Faceにアクセスする
  • 手順2
    「Sign Up」から登録画面に進む

    ログイン画面が表示されるので「Sign Up」リンクを押す

  • 手順3
    必要事項を入力してアカウント作成する

    メールアドレス、パスワードを入力して「Next」を押すとプロフィールの登録画面に進む
    「Username(アカウント名)」「Full name」、最下部の「Terms of Service」「Code of Conduct」の内容を確認後、同意チェックを入れて「Create Account」ボタンを押す

  • 手順4
    確認メールから有効化を行う

    登録メールアドレスに確認メールが届くので、本文内のリンクから認証を行う

トークンを発行する

ColabからStable Diffusionを使用するために、トークンを発行する必要があります。
トークンとはStable Diffusionの使用権限があるかどうかを証明する鍵のようなものです。
アカウントごとにそれぞれにランダム値が発行されるので、誰でも見られる場所に置いたり他の人と使い回したりしないようにしましょう

トークン発行手順
  • 手順1
    Hugging Faceにログインする

    アカウント作成から実施していると既にログイン状態になっています

  • 手順2
    画面右上のアイコン→「Settings」→「Access Tokens」を開く
  • 手順3
    「New token」ボタンからトークンを発行する

    Name:任意の文字列(testなどでOK)
    Role:read
    「Generate a token」ボタンを押す

  • 手順4
    発行されたトークンをメモする

    以下の画面が表示されればOK
    「Show」横のコピーボタンを押してトークンを控えておく

トークンの発行まで完了したら、Stable Diffusionのページを再表示し規約に同意しておきます。
初回表示ではなかったチェックボックスが表示されているので、チェックを入れて「Access repository」を押します。

Colab側でやること

Googleアカウントの作成

ColabはGoogleのサービスですので、利用するためにはまずアカウントが必要です。
もし持っていない方は作成してください。詳細は割愛します。

Colabノートブックの新規作成

Googleアカウントにログインした状態で以下にアクセスしてください。

Google Colab

「Colaboratoryへようこそ」というノートがデフォルトで表示されるので、「ノートブックを新規作成」を押して新しいノートを作成します。
「編集」→「ノートブックの設定」と進み、ハードウェアアクセラレータを「GPU」にして保存します。

Diffusersをインストール

設定ができたらいよいよコードを書いていきます。
Stable Diffusionのモデルを使用する方法は複数あるのですが、ここではDiffusersというライブラリを用いる手順を記載します。
公式ノートブックで公開されている手順通りに進めます。

ノートブックに表示されている、左端に再生ボタンがついている行(コードセル)に以下のコードを書きます。

!pip install diffusers==0.3.0
!pip install transformers scipy ftfy
!pip install "ipywidgets>=7,<8"

再生ボタンを押すとコードが実行され、何やらつらつらとログが出力されていきます。
最終的に完了のチェックマークがつけば成功です。

ColabからHugging Faceにログインする

コードセルを追加して以下のコードを実行してください。
すると入力画面が表示されます。

from google.colab import output
output.enable_custom_widget_manager()

from huggingface_hub import notebook_login
notebook_login()

ここで事前に控えておいたトークンを入力し、「Login」を押すとHugging Faceへのログイン処理が実行されます。ログに「Login successful」と表示されればOKです。

Stable Diffusionに接続する

再びコードセルを追加して以下のコードを実行してください。
Stable Diffusionに接続しモデルを利用できる状態にします。

import torch
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", revision="fp16", torch_dtype=torch.float16, use_auth_token=True)
pipe = pipe.to("cuda")

少し時間がかかりますが、しばらく待つと完了します。

画像を生成してみる

最後のステップです。以下のコードを実行してください。
このプロンプトでは公式のサンプル通り「馬に乗った宇宙飛行士の画像」と指示しています。
コードの最後に「image」と追加しておくと、Colab上で画像を見ることができます。

from torch import autocast

prompt = "a photograph of an astronaut riding a horse"
with autocast("cuda"):
  image = pipe(prompt).images[0]

image.save(f"astronaut_rides_horse.png")

image

30秒ほどで無事「馬に乗った宇宙飛行士の画像」画像が出力されました(なかなか正確ですね)

作成された画像は、サイドメニューのフォルダ内に保存されています。

一度作成したノートブックはGoogleドライブに保存しておくと、次からは再生ボタンを押すのみで環境を再構築できます。

実際に使ってみた結果

以下にいくつかプロンプトを変えて実行した結果を公開します。
シンプルな指示でも充分意図した画像が生成されているのですが、美麗なグラフィックを生み出すにはまだまだプロンプト研究が必要であり、現在最も盛り上がりを見せているテーマかと思います。

cute cats playing with money
anime visual beautiful girl, beautiful anime face, with piggy bank, cartoon

まとめ:AIによる画像生成を気軽に試す環境としては最高!

最初の準備がやや手間ではありますが、環境構築はとても簡単に行うことができました。
一度作ってしまえば気軽に画像生成を試すことができます。ぜひ実践してみてください。

参考にさせていただいたサイト

タイトルとURLをコピーしました