IrvineのもっとPC自作日記
ソニーストア
Dynabook Direct
HP Directplus -HP公式オンラインストア-
デル株式会社
本ページはプロモーションが含まれています。
  
 

【画像生成AI】Stable Diffusion3をためしてみた

 

スポンサーリンク

 
【画像生成AI】Stable Diffusion3をためしてみた

画像生成AIの代表格の一つ、Stable DIffusion 3がリリースされたので早速使ってみた。以前のように人間の写真を生成すると腕が3本あるとかそういうことが多かったのだが、今回は少なくなった。進化したな。

画像生成AIについてのまとめはこちら。

  

Stable Diffusion3のリリース

昨年出ていたものはStable Diffusion XLだった。それまでのStable Diffusionと一部互換性がないという話があった。
どういう画像を生成できるのか、またどのくらいの時間で生成できるのかを試してみた。Ryzen 5700XとRTX3060で実行してみた。
詳細は下のリンクからどうぞ。

プロンプトもよくわからない状況で使ってみたら、奇妙な画像ばかり作られてげんなりした。
その後いろいろな画像生成AIが出たり、Stable Diffusionのフロントエンドをするソフトウェアが出たりでプロンプトの文字が少なくてもまともな画像ができるようになった。

そんな中でStabe Diffusion3が出たという話を聞いたので早速試してみた。

インストール・準備

最初のころはかなりてこずったが、最近はすんなりと使えている。
いつものようにpython の仮想環境を作り、pipで追加パッケージをインストールするだけだ。
環境はF:\python\sd3にpythonの仮想環境をインストールし、F:\ai\sd3に実行時に作られるファイルを置く。

詳細なところはHugingFaceに載っているのだろうが、自分が読んでもわからないところがあったので、一部試行錯誤している。

1 Pythonの仮想環境作成

毎度おなじみだ。pythonをインストールしていない人はWindowsストアからインストールしよう。

cd \python
python3 -m venv sd3
cd sd3\Scripts
activate

2 pipで追加インストール

いつものようにtramsfermerやtorchをインストールする。torchはdGPU対応版を指定する。いつもと違うのは、最初のコマンドだ。これは先のHungingFaceに書かれている。
pip install --upgrade diffusers
pip install transformers
pip install Image
pip install torch -f https://download.pytorch.org/whl/torch_stable.html

HuggingFaceに書かれている猫の写真から生成するプログラムを実行した。しかし動かない。
HuggingFaceを改めて読むと、先に認証しないといけないようだ。

Stable Diffusion3 認証エラー

Stable Diffusion3 認証エラー

トークン作成

HuggingFaceでトークンを作成して、先ほどの画面で読み込ませないといけないようだ。
まずは開いて、トークンに必要な情報を入力する。

Stable Diffusion3  登録

Stable Diffusion3  登録

赤線のあるName,Email,Organization or Affiliationを入力する。CountryにはJapanだ。下のAgree and access repositryをクリックして完了だ。

続いてトークン作成ページに行き必要な情報を記入する。トークン名はSD3だ。

Stable Diffusion3  登録

Stable Diffusion3  登録

そしてトークン作成画面にてトークンを作成する。忘れずにトークンをテキストファイルなどに記録しておこう。

Stable Diffusion3  トークン

Stable Diffusion3  トークン

続いてさきほどのコンソールからかきコマンドを入力して、トークンを貼り付ける。

huggingface-cli login

これでレポジトリからの訓練済みデータのダウンロードができるようになったはず。

サンプルを実行

猫の画像から生成するサンプルがあるのでこれを使ってみる。
生成した画像を保存できるように、後半を改造している。

import torch
from diffusers import StableDiffusion3Img2ImgPipeline
from diffusers.utils import load_image
import datetime
pipe = StableDiffusion3Img2ImgPipeline.from_pretrained(
"stabilityai/stable-diffusion-3-medium-diffusers", torch_dtype=torch.float16
).to("cuda")
init_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png")
prompt = "cat wizard, gandalf, lord of the rings, detailed, fantasy, cute, adorable, Pixar, Disney, 8k"
image = pipe(prompt, image=init_image).images[0] image
filename = str(dt_now.year)+month[-2:] + day[-2:] + hour[-2:] + min[-2:] + sec[-2:] image.save(filename + ".png")

しかし、エラーになった。
ValueError: Cannot instantiate this tokenizer from a slow version. If it's based on sentencepiece, make sure you have sentencepiece installed.

ググるとtransformersのインストールをちょっと変える必要がありそうだ。
pip install transformers[sentencepiece]

これでエラーにならず実行できるようになった。

Stable Diffusion3 作例

Stable Diffusion3 作例

数回やったがいろいろな写真が作られた。

テキストからの生成

では、プロンプトからの生成を試してみよう。
長いダウンロード時間を終えて、数分で1枚画像ができた。

Stable Diffusion3  ローディング

Stable Diffusion3  ローディング

こちらもサンプルからソースコードを作成した。

import torch
from diffusers import StableDiffusion3Img2ImgPipeline
from diffusers.utils import load_image
import datetime
pipe = StableDiffusion3Img2ImgPipeline.from_pretrained(
"stabilityai/stable-diffusion-3-medium-diffusers", torch_dtype=torch.float16
).to("cuda")
init_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png")
Parray = [
"A cat holding a sign that says hello world",
"A dog holding a sign that says hello world",
"A mouse holding a sign that says hello world",
"A horse holding a sign that says hello world",
"A cow holding a sign that says hello world",
"A dinasor holding a sign that says hello world",
"Tokyo, Shibuya, crossing, many people",
"Shinkansen",
"Tokyo sightseeing spot, best10",
"anmal holding a sign that says IrvineのもっとPC自作日記",
] Loop = 3
for prompt in Parray :
for loop in range(Loop):
image = pipe(prompt, image=init_image).images[0] dt_now = datetime.datetime.now()
month = "00"+str(dt_now.month)
day = "00" + str(dt_now.day)
hour = "00" + str(dt_now.hour)
min = "00" + str(dt_now.minute)
sec = "00" + str(dt_now.second)
filename = str(dt_now.year)+month[-2:] + day[-2:] + hour[-2:] + min[-2:] + sec[-2:] image.save(filename + ".png")

1枚3分前後でできている。

Stable Diffusion3 生成中

Stable Diffusion3 生成中

できた画像はこちら。プロンプトは上のソースコードを参照。まずはHello Worldの看板を持つ動物たち。

Stable Diffusion3 作例

Stable Diffusion3 作例

Stable Diffusion3 作例

Stable Diffusion3 作例

Stable Diffusion3 作例

Stable Diffusion3 作例

Stable Diffusion3 作例

Stable Diffusion3 作例

Stable Diffusion3 作例

Stable Diffusion3 作例

Stable Diffusion3 作例

Stable Diffusion3 作例

東京渋谷の交差点で作成。

Stable Diffusion3 作例

Stable Diffusion3 作例

新幹線で作成。新幹線はありそうだけど、ホームの形状がちょっと違う。最近はホームドアが多いし、黄色のブツブツしている線が太すぎ。

Stable Diffusion3 作例

Stable Diffusion3 作例

東京の観光、10選。どこの寺?

Stable Diffusion3 作例

Stable Diffusion3 作例

作成時間の詳細などは動画も参照。

まとめ

Stable Diffusion XLのときのように手がたくさんある人間が作られることは少なくなった。でもなくなってはいない。
またちょっと試してみるか。
なお、UIはComfyUI が推奨とのこと。前から来ている名前ではあるが使ったことがないので試してみるかな。

それからpipで下のコマンドを入れ忘れているようだ。入れて実行していないが何度も警告が出ていたのでインストールすべきだろう。
pip3 install accelerate

PR

   
著者プロフィール
irvine
 ソフトウェア設計、ストレージ設計を経てクラウドにかかわる仕事をしている、東京郊外在住のエンジニア。
 仕事でUS,UK,SGなどの国とかかわる。
 自作PC、スマホ、タブレット、AV機器好き。ドラクエウォークはルーチンワーク。Linuxやストレージ、IT業界の動向は興味を持っている。
 新しい機器、サービスに興味あり。年数回のレビュー(自腹購入、ご依頼)と発表されて興味があるものの新製品机上レビューをやっている。
 2022年はJAPANNEXT様のアンバサダーを務めました。
 
 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です