こんにちは!サキナオコです^o^
今日も少し暖かいですね。
さて、実家より戻りまたAI画像生成にどっぷりつかっています。
面白い!面白いんですけど、生成画像って全て一期一会なのかしら、と思っていました。
でもSeed値という生成画像それぞれについている値を指定すると
同じものを使うことができるとのこと!
ええ〜いいじゃないですかあ〜〜!
で、肝心なそのSeed値ってどうやって取得するんです??
どのサイトにももうすでにシード値がある前提で話がすすんでますけど。。
私はね、取得するところからもうできてないんですよToT
結構な時間を費やし、ようやく海外サイトでそれがわかりました。
すぐ忘れる自分のため、あとはGoogle colabのファイルが突然なくなった場合に備えて書いておきます。そして私のように徘徊されている方の参考になれば幸いです。
もうGoogleColabで使用する設定ができているとして
GoogleColabで毎回始める時のコードから書きますね。
!pip install diffusers[torch]==0.8.1 transformers
from diffusers import DiffusionPipeline
import torch
from datetime import datetime
pipe = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5",
torch_dtype=torch.float16, revision="fp16").to("cuda")
GoogleDriveに保存するためのコード
import os
os.chdir('/content/drive/MyDrive/aiimg')
以下が今回のSeed値を取得するためのコード
#デバイス(cpu or cuda)
device = "cuda"
#使用するデバイスを設定
pipe = pipe.to(device)
#これでどうも取得できるらしいんですよね
generator = torch.Generator(device) #←ごめんなさい!前回この1行抜けててエラーになりましたので入れました
seed = generator.seed()
#generator = generator.manual_seed(seed) #←この行は不要でした><
prompt = "お好きなプロンプト"
n_prompt = "ネガティブプロンプト"
images = pipe(
prompt=prompt, # プロンプト
negative_prompt=n_prompt,#ネガティブプロンプト
).images[0].save("保存名.png")
で、画像生成できたら
seed
とすれば出てきます!!わ〜い!
海外サイトのは4枚生成してそのうち1枚を選んでシード値を取得してましたが、
1枚だけ生成するように書き換えました。
複数枚のもまたやってみます^^
翌日です。Colabが復活したので上のコード試してみたら、あれれ?!
すみません!昨日書いたコードがエラーになったので修正しました。
いろいろ他にもコード実行しすぎてgeneratorが何かというのを
他のコードでまかなってしまったのでしょうか??

from PIL import Imageとかだよね…いるのかな??まあいいか。
続きです。seed値がわかったら細かく修正します。
#seedを固定
generator = torch.Generator(device).manual_seed(取得したシード値)
prompt = "お好きなプロンプト"
n_prompt = "ネガティブプロンプト"
images = pipe(
prompt=prompt, # プロンプト
negative_prompt=n_prompt,#ネガティブプロンプト
).images[0].save("保存名.png")
これでお気に入りの画像を元にいろいろ修正してより良い画像が生成できますね!^o^

そうだ!シード値が同じなら同じ画像が出るはずだよね!!

だね!やってみよう!
generator = torch.Generator(device).manual_seed(取得したシード値)
images = pipe(prompt,generator=generator).images[0].save("保存名.png")



!??!!!

あ…
次回へ続く。。







コメントを残す