画像生成AIを使って遊んでみよう!

最近話題になっているらしい、画像生成AIというものを使ってみたので、レポートします。

AI作「鮭を食べている熊が川辺にいるイラスト 油絵」

鮭はどこ行ったんだろう・・・。

用意するもの

GPUを使うといっても、クラウドのサービスを活用して行うので、高スペックのPCなどは必要ありません。以下のものを準備してください。

手順

ライブラリのインストール

最初にブラウザを開き、Google colaboratoryにアクセスします。

ノートブックを新規作成したら、メニューから「ランタイム」-「ランタイムのタイプを変更」を選択します。

サブ画面が表示されるので「ハードウェア アクセラレータ」に「GPU」を選択して保存します。

次に別のブラウザページを開き、Hugging Faceにアクセスします。検索エリアに「japanese-stable-diffusion」と入力します。アクセスすると、下の画面が表示されます。

この画面をずーっと下まで進めると、「Examples」に、以下のインストールコマンド(pipコマンド)が書かれているので、これをコピーします。

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

上のコマンドを、Google colaboratoryのコード欄に貼り付けて実行します。貼り付ける時に、先頭に「!」を入力してください。これにより、環境にjapanese-stable-diffusionライブラリがインストールされます(少しかかった後、Success...と表示されたらOK)

HuggingFaceのアクセストークン取得・設定

Google colaboratory上部の「+コード」をクリックしてコード欄を追加し、ここに「!」に加えて、HugginFaceにCLIログインするためのコマンドを貼り付けて実行します。コマンドは、先ほど参照したHuggingFaceページの、pipコマンドのすぐ下にあります。

!huggingface-cli login

実行すると、以下の画面になりますので、画面内のハイパーリンクをクリックしてください。

リンク先に行くと、トークンの作成画面が表示されますので「New token」を押します。サブ画面で「Name(なんでも良い)」を登録して、「Generate Token」を押すと、トークンが表示されるので、そのままクリップボードにコピーしてください。

Google colaboratory画面に戻り「Token:」入力欄にトークンを貼り付けて実行してください。下のような画面になったらトークン設定は終了で、この後のpythonコードからHuggingFaceのサービスが使用できるようになります。

Pythonコードの実行

HuggingFaceのページ下部に、サンプルソースコードが表示されていますので、これをクリップボードにコピーして、Google colaboratoryのコード欄に貼り付けます。

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

model_id = "rinna/japanese-stable-diffusion"
device = "cuda"
# 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, scheduler=scheduler, use_auth_token=True)
pipe = pipe.to(device)

prompt = "猫の肖像画 油絵"
with autocast("cuda"):
    image = pipe(prompt, guidance_scale=7.5)["sample"][0]  
    
image.save("output.png")

最初に、一番下を以下のとおり変更してください。これにより、実行結果を画面上で確認することができるようになります。

# image.save("output.png") 
image

あとは、コード内のprompt = "猫の肖像画 油絵"の部分を好きに書き換え得て、実行ボタンを押すだけです。最初は2〜3分ほどかかりますが、AIが適当な画像を自動生成して、画面に表示してくれます。

色々出してみた。

"京都の五重塔を遠くから撮影した写真 雪が降っている"

悪くないですね。降ってはいませんが、足元に雪が積もっているようです。



"オーロラを真上から見た映像, 鮮明な写真"

これは綺麗ですね。オーロラは、学習資料が色々あるんでしょうか。



"大都会のスクランブル交差点,たくさんの人がいる 油絵"

それっぽく描かれていますが、よく見ると人が崩れてしまっていて、正確に描けていませんね。



なお、日本語の指定にこだわらなければ、イラストに特化した描画エンジンを使用することもできます。以下のURLにアクセスして、サンプルソースを入手して、指定するワードを変更してみましょう。

huggingface.co

"extermely detailed CG wallpaper, blonde hair, long hair, fantasy, pretty girl, slight smile, soft focus, beautiful composition, wearing armor"
(非常に詳細な CG の壁紙、ブロンドの髪、長い髪、ファンタジー、美少女、わずかな笑顔、ソフト フォーカス、美しい構図、鎧を着ています)

すごく綺麗に描かれました。

しばらく遊んでても飽きなそうですw