はじめに
最近画像生成AIが話題になっています。画像生成AIのツールはたくさんありますが、今回はその中でも無料で使用できるStable Diffusionの使い方を説明します。
huggin faceの使い方
hugging faceというサイトには、事前にトレーニングされたディープラーニングモデルが提供されており、こちらのページから画像分類、翻訳、画像生成など様々なタスク向けのモデルを利用することができます。ここでは、テキストから画像を生成したいので、Tasksはtext-to-imageを選びます。すると、右側に画像生成用のモデルがたくさん出てきます。今回はダウンロード数の最も多いCompVis/stable-diffusion-v1-4を使用します。
モデル名「CompVis/stable-diffusion-v1-4」をクリックすると、こちらのページにきます。
hugging faceに登録する
stable diffusionを使用するには、hugging faceに登録する必要があります。こちらのページの右上にあるSign Upからhugging faceに登録して下さい。ログインできたら、こちらのページにアクセスします。New tokenをクリックすると、以下のような画面が出てくるのでName、Roleを指定した後、Generate a tokenをクリックします。すると、トークンを作成することができます。
google colaboratory上で画像生成を実装する
最後に、google colaboratoryを用いて画像生成を実装します。(google colaboratoryの使用方法は他の記事を参考にして下さい。)こちらのページにpytorchを用いた実装例が載っており、それをそのまま実装してみたいと思います。
まずは、GPUを使用する必要があるので、ランタイム->ランタイムのタイプを変更 からGPUに変更します。
次に、以下のコードでインストールします。
!pip install --upgrade diffusers transformers scipy
次に、以下のコードで認証を行います。Tokenを求められたら、先ほど生成したTokenをコピー&ペーストします。また、Add token as git credential?と聞かれたら、nと答えます。
!huggingface-cli login
認証に成功すると以下のように表示されると思います。
次に、以下のコードで画像生成を行います。prompt = "a photo of an astronaut riding a horse on mars"となっているので、「火星で馬に乗った宇宙飛行士の写真」を生成してくれるようです。
import torch
from diffusers import StableDiffusionPipeline
model_id = "CompVis/stable-diffusion-v1-4"
device = "cuda"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16, revision="fp16")
pipe = pipe.to(device)
prompt = "a photo of an astronaut riding a horse on mars"
image = pipe(prompt).images[0]
image.save("astronaut_rides_horse.png")
最後に、生成した画像を確認してみます!
import cv2
from google.colab.patches import cv2_imshow
img = cv2.imread("/content/astronaut_rides_horse.png")
cv2_imshow(img)
きちんと画像生成されました!たしかに火星で馬に乗った宇宙飛行士の写真ですね
おわりに
今回は画像生成を試してみました。意外と簡単にできて驚きました
promptの内容を変えてみると面白そうですね!