LeonardoAiにはSeed値というものが存在します。
他の画像生成Aiでも多くあるSeed値ですがどのように活用すればいいのでしょうか?
そんな悩みの種(seed)をこの記事を読んでスッキリさせましょう。
Seed値って何?
そもそもSeedとは何かというところですが、直訳すると
- 植物の種子: 植物の成長を始めるための胚を含む部分で、将来的に新しい植物を育てるための基盤となるもの。
- 始まりや出発点: 何か新しいプロジェクトやアイデアの始まりや出発点を指すことがあります。「種を蒔く」という表現が使われ、将来の成長や発展を意味します。
- データや情報の初期値: コンピュータ科学やテクノロジー分野では、ランダムな値や初期化されたデータを指すことがあります。例えば、ランダムな数値の列を「乱数の種(seed)」と呼ぶことがあります。
- スポーツや競技におけるトーナメントの順位付け: スポーツのトーナメントで、選手やチームを順位付けする際に使われる「シード」。上位の選手やチームに与えられる順位や位置を指します。
- バックアップやコピーの元データ: データベースやファイルのバックアップやコピーを取る際に、元のデータを「シードデータ(seed data)」と呼ぶことがあります。
こんな感じなようです。何かの始まりや出発点という意味を持っています。コンピューターが発達する前からあることばだと考えると種が大元の意味なのでしょうか。
Google Bardに聞いてみた
コンピューターにおけるSeedとは、ランダム値を生成するのに使用される値です。
シード値は、同じシード値を使用すると常に同じランダム値が生成されますが、シード値を変えると異なるランダム値が生成されます。
シード値は、ゲームやシミュレーションなどのアプリケーションでよく使用されます。
シード値を変えることで、同じプログラムでも異なる結果を生成することができます。
これにより、ゲームやシミュレーションをより面白くしたり、より現実に近づけたりするのに役立ちます。
シード値は、暗号技術でも使用されます。
シード値は、暗号鍵を生成するのに使用されます。
暗号鍵は、データを暗号化したり、復号化したりするために使用されます。
シード値を変えることで、異なる暗号鍵を生成することができ、データをより安全に保護することができます。
シード値は、幅広いアプリケーションで使用される重要な概念です。
シード値を理解することで、より効果的にシード値を活用することができます。
Seed値とはランダム要素に割り当てられる乱数を数値化したものものです。
個別に与えられるIDのようなものと認識しておけばいいでしょう。
Seedは直訳すると種となります。同じ種からは同じ種別の植物が育ちますが、大きさや成長速度などは異なります。ある程度分類されたものだと考えるとわかりやすいです。
画像生成AiにおけるSeed値とは
では画像生成AiにおけるSeed値とは具体的に何を示しているものなのでしょうか。
LeonardoAiのメニューバーではSeed値を固定する機能があり、そこには特定のSeed値を入力することが出来ます。
説明では乱数発生時の決定的な数値と記載されています。
画像生成AiはAiが元の画像を学習して分類分けすることでプロンプトの指示に対し、分類分けした物から該当するものを選び出力しています。
この時に画像を生成するアルゴリズム(コンピュータによる計算やその他の問題解決操作において従うべきプロセスまたは一連のルールのこと)、作成の手順を制御するために使用される乱数がSeed値ということになります。
これにより同じ生成アルゴリズムから生成される画像は、Seed値によって異なります。
難しく考える必要はあまりありません。
生成された画像を作った際の乱数の値だと考えておけば大丈夫です。
同一のプロンプトで生成された画像のSeed値をみてみましょう。
以下の画像は一度に4枚画像生成をした際の画像になります。Seed値はすべて同一の330194944といなっています。同時に生成したので当たり前と言えば当たり前なのですが、これはプロンプトに対して画像生成をした時のランダム値が同じであることを示しています。
同じSeed値でも生成される画像は大きく異なっていますね。
上の画像は同じSeed値ではありますが、プロンプトの作り方が大雑把だったので帽子の色が違ったり
トレーラーのカラーが違ったりしています。プロンプトを作りこめば大枠の画像は似てきます。
それでも複数枚生成したときには若干の違いが出てきます。
近い将来もっとプロンプトによって細かい描写ができる生成Aiに進化していくだろうと予想しています。ものすごく楽しみですね。
Seed値を固定することでできること
Seed値を固定することで生成する画像の再現性が高まります。
Seed値が特定の値に設定されると、画像生成AIがその値に関連する画像を生成するようにプログラムされているためです。
同じプロンプトでも生成される画像は異なることは先ほどの画像からわかります。
中には大きく違うものも生成されてなんだよ!って思うことがあるかと思います。
私はかなりの頻度でちがーうと心の中で叫んでます。
Generateボタンを押して処理待ちから画像が出てくるドキドキ感から奈落の底に落とされる瞬間はなんとも形容しがたいものがあります。
Seed値を固定することで生成される画像を絞り込むことが出来ます。
微修正などはSeed値をうまく活用することで可能になります。
Seed値は画像生成ごとに変わる
プロンプトが同じなんだから出力されるものも同じでしょう?と思われるかもしれませんが同一プロンプトでもSeed値は生成するごとに異なるものとなっています。
テーマはレンガの塀の上に立つスコティッシュフォールドで作成しました。
プロンプト
A Scottish Fold cat, cute, perched atop a brick wall, anime-style, illustration, light pouring, around city backgraund,8k,masterpiece
Seed:940902656
Seed:723787776
左の猫がお気に入りです。この子だけ目が青色なのですが、突然変異の部類に入ります。
再現性が低い目の色になります。
Seed:89063424
Seed:183124736
画像生成を行うごとに画像が少し変わります。Seed値も変わっていますね、構図なども変わっています。
これはランダム要素が画像生成の度に選択されるためです。プロンプトを同じにしても毎回異なる結果が出てきます。
これではプロンプトを同じにしていても気に入った猫をもう少し好みの画像に直したいというときにはプロンプトを追加しても違う猫が出てきます。
同じ猫を出すにはどうしたらいいのか?Seed値を固定することで同じ画像を出すことが可能です。
Seed値の固定の方法
生成済みのプロンプトからシード値、プロンプト、ネガティブプロンプト、resolution(サイズ)をコピーしておきます。メモに貼り付けでもいいですし、タブを2つ使用して片方でコピーしたものを別のタブのアプリに貼り付ける方法でもいいでしょう。
コピーしたものをそれぞれ貼りつけしておきます。
今回はこの子をもう一度召喚します。Seed値は723787776です。