日本語テキストに特化した画像生成モデルJapanese Stable Diffusionをcolabで試してみた!

近年、テキストから画像を生成する技術が盛り上がりを見せています。

最近では、「Midjourney」や「Dream Studio」などがSNSで話題となっていますが、日本語のテキストを学習させたオープンな特化モデルは登場していませんでした。

そのような中ででてきた日本語特化型のモデルをオープンに公開したのが今回試してみた「Japanese Stable Diffusion」になります。

この記事では、次のことが分かります。

  • Japanese Stable DiffusionのGoogle Colablatoryでの利用方法
  • 生成できる画像について
目次

Japanese Stable Diffusionとは

Japanese Stable Diffusionは、rinna株式会社によって作成された日本語テキストで学習したテキストから画像を生成するモデルです。

rinna株式会社は、これまでにも様々なモデルを公開しています。

それらを活用してチャットボットを作ったり、モデルがどれくらいすごいのか調べたりしているので、興味のある方はこちらもご覧ください。

あわせて読みたい
【Python】rinnaのGPT-2を使って個性を持つ会話の流れを保持して会話できるAI(chatbot)を作ってみた!... Dialogptやblenderbotを使ってボットを作りたいと思っても日本語の事前学習モデルが公開されていないのでなかなか個人には難しいですよね。そこで今回は、rinna社が公開している事前学習モデルを用いて誰でもできる方法を記事にしました。
あわせて読みたい
rinna社が大規模な13億ものパラメータを持つGPTを公開!これまでのモデルサイズと性能は違うのか?zero ... これまでもGPT-2やBERTの事前学習モデルがrinna社より公開されていますが、さらに大規模なモデルが公開されたということで性能が気になります。こちらにGPTに入力するテキストを工夫することで文章生成、分類、翻訳などの出力を得ることができると書かれているので、zero shot, one shotぽいことをして性能を検証してみようと思います。

Japanese Stable Diffusionの使い方

では、さっそくJapanese Stable Diffusionの使い方をみていきましょう。

今回は、無料で誰でもGPUが使えるGoogle Colablatoryでの使い方を見ていきます。

実行環境

Google Colablatoryの無料枠

GPU:Tesla T4

事前に準備が必要なもの

コードを実行する前に次のことを済ませておきます。

  • Google Colablatoryに登録
  • Huggingfaceに登録してアクセストークンを発行
  • モデルの利用規約に同意

hugging faceの登録はこちらにアクセスして「Sign Up」から登録を行ってください。

ログイン後、右上のアイコンから「Settings」→「Access Tokens」をクリックしてトークンを取得してください。

Google Colablatoryについては、こちらからログインしてください。

それから、こちらの利用規約を読んだ後に「Access repository」をクリックしてください。

Japanese Stable Diffusionのインストール

pip install git+https://github.com/rinnakk/japanese-stable-diffusion

上記のコードを実行するとインストールされます。

インポートもついでに行いましょう。

import torch
from torch import autocast
from diffusers import LMSDiscreteScheduler
from japanese_stable_diffusion import JapaneseStableDiffusionPipeline

Hugging faceにログイン

!huggingface-cli login

上記のコードを実行すると次のようなテキストが出てくるので、Token:のところにアクセストークンを入力してください。

成功すると、Login successfulと表示されます。

また、git config --global credential.helper storeを実行しようねという感じのテキストが出てくる方は、その文に従って実行しましょう。

!git config --global credential.helper store

モデルの読み込み

次にモデルを読み込みましょう。

model_id = "rinna/japanese-stable-diffusion"
device = "cuda"
scheduler = LMSDiscreteScheduler(beta_start=0.00085, beta_end=0.012, beta_schedule="scaled_linear", num_train_timesteps=1000)
pipe = JapaneseStableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, use_auth_token=True)
pipe = pipe.to(device)

パラメータ設定

#@markdown ###**Inference Setting:**
prompt = '' #@param{type: 'string'}
# 生成される画像の数
n_samples = 2 #@param{type: 'integer'}
# 画像がどの程度プロンプトに似るかを調整する
guidance_scale = 7.5 #@param {type:"number"}
# step数
steps = 150 #@param{type: 'integer'}
# 生成される画像の横幅
width = 512 #@param{type: 'integer'}
# 生成される画像の高さ
height = 512 #@param{type: 'integer'}
# 画像の生成に使用するシード
seed = 'random' #@param{type: 'string'}

画像の生成

次のコードで画像が生成できます。

if seed == "random":
    generator = None
else:
    generator = torch.Generator(device=device).manual_seed(int(seed))

with autocast(device):
    images = pipe(
        prompt=[prompt] * n_samples,
        guidance_scale=guidance_scale,
        num_inference_steps=steps,
        height=height,
        width=width,
        generator=generator
    )["sample"]

images[0]

画像の保存

画像を保存したい場合は、次のコードを実行しましょう。

images[0].save("output.png")

画像を生成してみた

日本語のテキストと画像のペアで学習させたということで、日本語特有のテキストで画像生成を行ってみました。

ぐっすり眠る赤ちゃん

ぐっすり眠っていますね。

きらきら光る星

星形になっていますが、きらきら光っていますね。

次に、食べ物も生成してみました。

天才料理家の独創的なカレー

独創的かは分かりませんが、お肉が入っていて美味しそうです。

天才料理家に作られた和食

和食っぽいですね。

まとめ

今回は日本語から画像を生成できる「Japanese Stable Diffusion」を試してみました。

触った感じ「Dream Studio」の方が良さげな画像を生成してくれる印象です。

あわせて読みたい
【Stable Diffusion】Dream Studioを試そう!スマホからも利用可能!画像生成サービスを紹介! テキストから画像を生成するサービス「Dream Studio」はスマホからも利用できます。今回は、Google Colablatoryで実行する方法なども合わせて利用する方法を解説します。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次