「Stable Diffusion」で遊ぶ方法(text to image)

はじめに

今回は今アツい「Stable Diffusion」を取り上げてみたいと思います。
何かというと、文字で書いた指示通りに絵を描いてくれるAIさんがオープンソースで使えるようになったんです。
今、いろんなところで、これを利用してアプリ化されたりしていますね。
けど自分でも簡単に作れますので、皆さんも遊んでみてください。

準備

Hugging Faceのトークンを発行する必要があります。

準備方法はこちらをご覧ください。

Google Calaboのプログラム

gigazineさんのプログラムでも良いのですが、複数枚同時作成対応させて修正するとこんな感じになります。

セットアップ部分

# ライブラリのインストール
!pip install diffusers==0.2.4 transformers scipy ftfy

# アクセス・トークン設定
Access_Token=""#@param {type:"string"}

# パイプライン構築
from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=Access_Token)
pipe.to("cuda")

# 出力フォルダ作成
import matplotlib.pyplot as plt
!mkdir outputs

出力用設定部分

Num = 5 #@param {type:"string"}
Width = 768 #@param {type:"integer"}
Height = 512 #@param {type:"integer"}

画像生成部分

prompt = "" #@param {type:"string"}

# File Name
sentence = prompt.replace(' ','_')
sentence = prompt.replace(',','_')

# 生成
for i in range(Num):
    image = pipe(prompt, height=Width, width=Height)["sample"][0]
    out_path = f'outputs/{sentence}_{i:04}.png'
    image.save(out_path)

# 表示
for i in range(Num):
    plt.imshow(plt.imread(f"outputs/{sentence}_{i:04}.png"))
    plt.axis('off')
    plt.show()

画像を生成する指示

AIに作りたい画像の指示を英語で入力すれば、あとは画像を勝手に作ってくれます。
と言っても、実際に動かしてみると分かりますが、この指示の仕方が結構難しいですね。

コツが色々とあるようですので、試行錯誤してみてください。

下記のページの説明など参考になりますよ。

またどんな指示をしたら、どんな画像が出来たか、このページも参考になりますよ。

ちなみに、私はこんなキーワードで作ってみました。

Malaysia,Cool guy working,by Makoto Shinkai,wallpaper 

まとめ

いかがだったでしょうか。AIの技術の進歩はすごいですよね。
ほんとにどうやって学習させたら、こんなAIが出来るのかってそちらにも興味が湧いてきますね。
ちなみに、このAIで作られた画像はロイヤリティフリーなので、自由に使えますので、素晴らしい作品が出来たら共有してみては?

IT,Python

Posted by スングル