こんにちは、しおだです。今日も推しがかわいいです。
先日始めたこのブログですが、実は中で使う画像の準備がまったく進んでおりません。
さてどうしたものか…そう考えていた矢先、とてもタイムリーな話題に出会いました。そう、画像生成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 Diffusionを用いて生成した画像の権利は、作成者(プロンプト実行者)が持つ
2022年8月23日に一般公開され(※執筆時点でなんとまだ1ヶ月経っていません)、以来プロンプトの研究や使いやすい実行環境、またこれを活用した新しいサービスの公開が盛んに行われています。
手っ取り早く触ってみたい方は、デモサイトから実際に試すことができます。
Google Colabとは
「Google Colab(正式名称:Colaboratory)」とは、Googleが提供しているオンラインのPython実行環境で、Googleアカウントを持っていれば無料で利用できます。
- ブラウザ上でPythonコードを記述、実行、共有できる
- 無料でGPUが使える
画像生成AIはとても重たい処理をするため、自分用の実行環境を作るとなるとGPUを搭載したかなりハイスペックなマシンが必要ですが、Google Colab(以降Colabと表記)を使うとその環境を手軽に得ることができます。
無料アカウントの場合多少の制限はありますが、ちょっと試してみようかなという場合には最適だと思います。
Google Colab×Stable Diffusionのメリット・デメリット
では両者を組み合わせることでどんなメリット・デメリットがあるのでしょうか。
一番大きなメリットはWeb上に画像生成AIの実行環境を、無料で構築できることです。インターネットに接続できる環境があればどこからでも画像生成を行え、しかも生成スピードはデモサイトよりも高速です。
デメリットはColabが無料アカウントの場合、環境を起動できる時間やメモリの使用に制限がかかることです。起動したまま動かさない、あるいは頻繁に生成を繰り返しているとランタイムが切断されます。
ランタイムが切断されたらまた構築をやり直す必要があるのですが、直近のリソース使用状況によってはCPUしか使えなくなったり、しばらく再起動不可となるので注意が必要です。
このように無料ならではの制限はありますが、これらはColabの有料プランの利用で回避可能です。
メリット
- Web上に画像生成AIの実行環境を無料で構築できる
- インターネットに接続できる環境があればどこからでも画像生成を行える(体感レベルではデモサイトより高速)
デメリット
- Colabが無料アカウントの場合、環境を起動できる時間やメモリの使用に制限がかかる(プラン変更で回避可能)
- ランタイムが切断されたらまた構築のやり直しが必要
実行環境をつくってみよう
それでは実際に実行環境を作っていきましょう。
Stable Diffusion側でやること
Hugging Faceアカウントを作成する
Stable Diffusionのモデルをダウンロードするためには、Hugging Faceというサイトのアカウントが必要です。以下の手順で作成してください。
- 手順1Hugging FaceにアクセスするCompVis/stable-diffusion-v1-4 · Hugging FaceWe’re on a journey to advance and democratize artificial intelligence through open source and open science.
ページの記載内容を確認し「Access repository」ボタンを押す
- 手順2「Sign Up」から登録画面に進む
ログイン画面が表示されるので「Sign Up」リンクを押す
- 手順3必要事項を入力してアカウント作成する
メールアドレス、パスワードを入力して「Next」を押すとプロフィールの登録画面に進む
「Username(アカウント名)」「Full name」、最下部の「Terms of Service」「Code of Conduct」の内容を確認後、同意チェックを入れて「Create Account」ボタンを押す - 手順4確認メールから有効化を行う
登録メールアドレスに確認メールが届くので、本文内のリンクから認証を行う
トークンを発行する
ColabからStable Diffusionを使用するために、トークンを発行する必要があります。
トークンとはStable Diffusionの使用権限があるかどうかを証明する鍵のようなものです。
アカウントごとにそれぞれにランダムな値が発行されるので、誰でも見られる場所に置いたり他の人と使い回したりしないようにしましょう。
- 手順1Hugging 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アカウントにログインした状態で以下にアクセスしてください。
「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秒ほどで無事「馬に乗った宇宙飛行士の画像」画像が出力されました(なかなか正確ですね)
実際に使ってみた結果
以下にいくつかプロンプトを変えて実行した結果を公開します。
シンプルな指示でも充分意図した画像が生成されているのですが、美麗なグラフィックを生み出すにはまだまだプロンプト研究が必要であり、現在最も盛り上がりを見せているテーマかと思います。
まとめ:AIによる画像生成を気軽に試す環境としては最高!
最初の準備がやや手間ではありますが、環境構築はとても簡単に行うことができました。
一度作ってしまえば気軽に画像生成を試すことができます。ぜひ実践してみてください。