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

近年、テキストから画像を生成する技術が盛り上がりを見せています。
最近では、「Midjourney」や「Dream Studio」などがSNSで話題となっていますが、日本語のテキストを学習させたオープンな特化モデルは登場していませんでした。
そのような中ででてきた日本語特化型のモデルをオープンに公開したのが今回試してみた「Japanese Stable Diffusion」になります。
この記事では、次のことが分かります。
- Japanese Stable DiffusionのGoogle Colablatoryでの利用方法
- 生成できる画像について
Japanese Stable Diffusionとは
Japanese Stable Diffusionは、rinna株式会社によって作成された日本語テキストで学習したテキストから画像を生成するモデルです。
rinna株式会社は、これまでにも様々なモデルを公開しています。
それらを活用してチャットボットを作ったり、モデルがどれくらいすごいのか調べたりしているので、興味のある方はこちらもご覧ください。


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」の方が良さげな画像を生成してくれる印象です。

コメント