👋

画像生成AI StableDiffusion触ってみた

2023/02/11に公開

はじめに

ちょっと簡単に画像生成できるAIないかなと調べたところHugging Faceの画像生成AI StableDiffusionがでてきたので実装してみた。
環境はGPU使いたかったため、Colabで行うことにする。

Stable Diffusionとは

Stable DiffusionはLMU MunichのMachine Vision and Learningの研究者によって開発されたLatent Diffusion modelモデルの画像生成AIらしい。
テキストを入力し、学習済みのAIモデルが自動で画像を生成してくれる。
例えば、Flower and Sunと入力するとそれが写っている画像を生成してくれるような感じです。
詳しくはこちらのリンクを見ていただければと思います。

事前準備

  1. HuggleFaceのアカウントを作成する。
  2. アクセストークンを発行する

     ①プロフィールのアイコンをクリック
     ②Settingsをクリック
     ③AccessTokensをクリック
     ④New Tokenをクリック
     ⑤Nameは適当に入力し、RoleはReadでGenerate Tokenをクリック
     ⑥生成したトークンは控えておく

実装

  1. Colabを開く

  2. 必要なモジュールをインストール

!pip install diffusers transformers scipy ftfy
  1. 生成した画像の保存先を作成
!mkdir outputfile
  1. 画像生成部分のコードを記述する。
    下記が実装コード、2箇所を変更する。
    access_tokens:事前準備の2の⑥で控えたアクセストークンを記述する。
    prompt:自分が生成したい画像の説明を記述する(日本語化もできるが今回は英語)
# ライブラリーのインポート
from diffusers import StableDiffusionPipeline
import matplotlib.pyplot as plt

# アクセストークンの設定
access_tokens="**********************"
 
# モデルのインスタンス化
model = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=access_tokens)
model.to("cuda")

prompt = "Tokyo Tower and people"

image = model(prompt,num_inference_steps=100)["images"][0]

  # 保存
outputfile = 'test .png'
image.save(f"outputfile/{outputfile}")
  1. 実行
    上記のコードで生成された画像がコチラ

    確かに説明した通りの画像が生成される。面白い。

実験

色々試してみる。
ジャック・スパロウをゴッホに書かせてみる。
prompt = "Jack Sparrow by Van Gogh"


ゴッホの名作のひまわり風なジャック・スパロウを描いてくれた。

ジャック・スパロウをピカソに描かせてみる。
prompt = "Jack Sparrow by Picasso"

うーんイマイチ。
ちょっと入力データを工夫する。ピカソの名作のゲルニカ風に描いてもらうことを意識して、下記の入力データとする。
prompt = "Jack Sparrow by Picasso like Guernica"


かなりいい線をいったジャック・スパロウを描いてくれた。
入力の工夫により自分のイメージに近づけることができそう。

まとめ

今回、HuggleFaceのStable Diffusionでテキストデータから画像を生成したがかなり要求に近い画像を生成してくれることができた。無償で公開されてるので、仕事とかのプレゼンとかでイメージした絵がほしいときに使ってみるのもありかもしれない。

Discussion