【AI】Stable Diffusionによる画像の自動生成 | 千葉で集客ホームページ制作はティーエスフォート
コラム

【AI】Stable Diffusionによる画像の自動生成

【AI】Stable Diffusionによる画像の自動生成

2022年8月、SNSを中心としてネット上で、AIが自動で描いた絵が話題となりました。SNS上ではクリエイターの仕事はなくなるだろう、AIによる自動描画に対する精度の向上に驚きの声が上がっています。

今回の記事では、自動で絵を描画することのできるStable Diffusionの導入方法についてご紹介します。

はじめに

2022年8月、SNSを中心としてネット上で、AIが自動で描いた絵が話題となりました。

SNS上ではクリエイターの仕事はなくなるだろう、AIによる自動描画に対する精度の向上に驚きの声が上がっています。

今回の記事では、自動で絵を描画することのできるStable Diffusionの導入方法についてご紹介します。

導入方法

hugging faceのアカウントでのログイン


以下のURLを開きます。
Stable Diffusion v1-4 Model Card

アカウントがない場合、まずアカウントを作成しましょう。

飛んだ先にあるページの「Access repository」ボタンを押下します。

右上のアイコンからSettingsを選択します。

左のメニューからAccess Token→New Tokenを選択します。

Nameには適当な名前をつけ、Roleはreadのままトークンを作成します。

Pythonのインストール



最新版Pythonをインストールします。

他に、Anaconda、CUDA Toolkit, cuDNN, pytorchのインストールが必要です。

また、必要なパッケージのインストールを行います。

管理者権限のコマンドプロンプトでconda activate pytorchした上で、以下を実行します。


pip install diffusers==0.2.4 transformers scipy ftfy


Pythonのコード入力をします。


import torch
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", revision="fp16", torch_dtype=torch.float16, use_auth_token="上記で作成したアクセストークン")


続いて以下のコードを実行します。


pipe = pipe.to("cuda")
prompt = "a photograph of an astronaut riding a horse"
from torch import autocast
with autocast("cuda"):
image = pipe(prompt)["sample"][0]


「a photograph of an astronaut riding a horse」の部分が生成したい画像の説明を入れる箇所です。

imageの行を入力してEnterを押した後、さらにEnterを押すと画像の生成が始まります。

画像の保存は以下のコマンドで行うことで、カレントディレクトリに画像が保存されます。


image.save(f"ファイル名")

Japanese Stable Diffusionのインストール

Stable Diffusionでも十分な便利さがありますが、日本人の画像が少ないというデメリットがあります。
日本的な画像を作成したい場合には、Japanese Stable Diffusionが役に立ちます。

日本語モデルを読み込むために、以下のコマンドを実行します。


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


まずは、Japanese Stable Diffusionのページへアクセスします。
Japanese Stable Diffusion

ログインした状態で規約に同意し、次のコードを動かすします。


import torch
from torch import autocast
from diffusers import LMSDiscreteScheduler
from japanese_stable_diffusion import JapaneseStableDiffusionPipeline
MODEL_ID = "rinna/japanese-stable-diffusion"
DEVICE = "cuda"
YOUR_TOKEN = "コピーしたアクセストークン"
PROMPT = "勉強する高校生"
# Use the K-LMS scheduler here instead
scheduler = LMSDiscreteScheduler(beta_start=0.00085, beta_end=0.012, beta_schedule="scaled_linear",
num_train_timesteps=1000)
pipe = JapaneseStableDiffusionPipeline.from_pretrained(MODEL_ID, torch_dtype=torch.float16, scheduler=scheduler, use_auth_token=YOUR_TOKEN)
pipe = pipe.to(DEVICE)
with autocast(DEVICE):
image = pipe(PROMPT, guidance_scale=7.5)["sample"][0]
image.save("output.png")


コードを実行した結果として、output.pngが作成されます。

まとめ

今回の記事では、AIによる画像の自動生成を行うことのできるStable Diffusionの導入方法をご紹介しました。

AIによる画像自動生成は大きく進化していますので、今後も要注目です。
ページ先頭へ