DALL-E 3の画像IDとシード値の仕組み
最近、DALL-E 3に画像ID(gen_id)が導入され、シード値の仕組みが変更されたので色々とテストしてみました。
1.カスタム指示の準備
最初に、画像IDとシード値がいつも表示されるように、カスタム指示に以下のように入力して有効にしておきます。
2.画像の生成
>日本人の若い女性の写真を2枚描いてください。
すると、このように2枚の写真とその画像ID及びシード値が表示されます。
どちらかの画像をクリックすると、その画像を拡大した画面が表示されます。
その画面で、右上のⓘの記号をクリックすると、以下のように、画像生成に使用したプロンプトが表示されます。
3.画像の修正
>左側の女性の服を赤色に変えてください。
上のように、同じ女性の服の色が赤色に変わりました。
画像IDは変化しましたが、シード値は先程の画像と同じ1014140334です。
プロンプトは、「wearing a stylish modern outfit」が「wearing a modern casual outfit in red」に変わった以外にも、少し変わっています。
服の色が赤色に変わると、stylishな服装からcasualな服装に変更され、背景も都会的な風景から穏やかな公園に変更されるなど、服の色に合わせて、その他の部分も変化させているところが面白いです。
>この女性に眼鏡を掛けさせてください。
上のように、同じ女性が眼鏡を掛けました。
画像IDは変化していますが、シード値は1014140334のままです。
今度は、プロンプトに「and now with glasses added」が追加された以外は、あまり変わっていません。
4.画像IDの指定による修正
画像生成した次のターンで画像を修正する場合は、「左側の画像」「2番目の画像」などと指定できますが、間に他の会話が入り込んでしまった場合は、離れたところにある画像を指定することが難しくなります。
このような時には、画像IDを使用するのが便利です。
>DmG3vT9JomSxLtWSの女性の服を黄色に変えてください。
最初の右側の女性の服の色が黄色に変わりました。
画像IDは変更されましたが、シード値は、指定したDmG3vT9JomSxLtWSの画像のシード値631265963と同じです。
但し、画像IDは同じセッション内でしか参照されません。
新しいチャットを立ち上げて、画像IDを指定してみます。
>DmG3vT9JomSxLtWSの女性の服を黄色に変えてください。
シード値もプロンプトも全く別のものになってしまいました。
5.画像IDを指定して同じ画像を生成
次に、同じセッション内で画像IDを指定して、全く同じ画像を生成できるか試してみました。最初の左側の女性の写真をもう一度生成してもらいます。
>3sunv8UAwuthWbzvの画像をもう一度生成してください。
シード値は同じですが、これまで色々と画像を修正してきた影響で、プロンプトが変わってしまい、同じ画像が生成できませんでした。
今度は、画像IDとプロンプトを指定してみます。
>3sunv8UAwuthWbzvを「A portrait of a young Japanese woman, with long straight black hair, wearing a stylish modern outfit. She should have a gentle smile and be positioned in front of a soft, out-of-focus background that suggests a calm urban setting. The lighting should be even and flattering, giving the impression of a clear day. The woman should appear approachable and fashionable, with a natural look and a poised stance.」のプロンプトで描いてください。
同じプロンプトを指定することで、やっと同じ画像を生成してくれました。
6.シード値の指定による修正
>シード値10140334の女性の服を青色に変えてください。
上記の女性の服を青色に変えることができました。
シード値は10140334で変わっていません。
>シード値: 1014140334でかわいい子猫のイラストを描いてください。
このように、同じセッション内であれば、一度出てきたシード値を指定して画像生成することができます。
次は、別のセッションでシード値を指定してみます。
>シード値: 1014140334でかわいい子猫のイラストを描いてください。
このようにシード値が変化してしまい、セッションをまたがってシード値を参照することができません。
次に、同じセッション内でシード値とプロンプトを指定して、同じ画像を生成できるか試してみます。2つ上のかわいい子猫のイラストをもう一度生成してもらいます。
>シード値: 1014140334、プロンプト「A cute kitten illustration featuring a fluffy feline with big, expressive eyes and a playful stance. The kitten should have a soft, cream-colored fur with distinctive tabby markings in a darker shade. It's posed in a whimsical setting that suggests curiosity and playfulness, with elements like a ball of yarn or a small toy nearby. The lighting should be soft and gentle, casting a warm glow that enhances the kitten's adorable features.」で画像生成してください。
シード値とプロンプトが同じであるにもかかわらず、なぜか同じ画像になりませんでした。
※ChatGPTに尋ねると、シード値を指定して画像生成することはできないと回答することから、基本的にシード値の指定はできず、ChatGPTがユーザーがどの画像を指しているのかを察して対応しているだけかもしれません。
7.2枚の画像の合成
>日本人の若い女性の写真を2枚描いてください。
>異なる雰囲気の日本人の若い女性の写真を2枚描いてください。
>1枚目と3枚目の2人が並んだ写真を描いてください。
左側の画像は1枚目の画像、右側の画像は3枚目の画像とシード値が同じになっています。
>かわいい子犬のアニメイラストを描いてください。
>子猫のアニメイラストを描いてください。
>YGQTBqgxHdBsV5Ojの子犬と lpZzCVqiZs8byupuの子猫が遊んでいるアニメイラストを描いてください。
左側の画像はYGQTBqgxHdBsV5Ojの画像、右側の画像はlpZzCVqiZs8byupuの画像とシード値が同じになっています。しかし、あまり元の画像に似ていないようです。
8.画像IDやシード値を利用した画像生成
(1) 画像IDを指定したバリエーションの作成
>ファンタジーRPGのエルフの魔法使いの横長イラストを描いてください。解像度を上げて、細かい装飾を追加し、カラフルでホログラムのように光り輝く高品質なイラストに仕上げてください。
>d7q0L6Ww9xKrJb74の画像を、(赤、青、黒、金)色に描き直してください。
キャラクターの性別が変わっていますが、構図の似た同じシード値の画像が4枚生成されました。
(2) シード値の変更によるバリエーションの作成
>鎧武者と火を噴くメカドラゴンが闘うスチームパンク風のイラストを描いてください。解像度を上げて、細かい装飾を追加し、カラフルでホログラムのように光り輝く高品質なイラストに仕上げてください。
>シード値を変えて描き直してください。
このように、同じプロンプトでシード値を変えて、画像のバリエーションを増やすことができます。
9.まとめ
画像生成AIにおいて、シード値(seed値)とは、乱数生成の初期値のことを意味しています。画像生成AIは乱数を使って異なるパターンの画像を生成していますが、シード値を指定すると、乱数生成器が常に同じ数列を生成するため、結果として同じ画像を再現できるようになります。
DALL-E 3では、画像ID(gen_id)やシード値を指定することにより、特定の画像を参照して修正することができます。
画像IDを指定すると、画像のシード値とプロンプトを参照することができますが、プロンプトは完全には固定されていないため、全く同じ画像にはならないことがあります。プロンプトまで固定すると同じ画像になります。
また、シード値の指定は不安定で、指示通りにならないことも多いため、基本的に、画像IDを利用することをお勧めします。
画像IDもシード値も、同じチャットセッション内でしか使用することができず、セッションをまたがって画像を参照したり、他人に提供して同じ画像を生成してもらったりすることはできません。
2枚の画像を組み合わせて新たな画像を生成するように指示すると、それぞれの画像とシード値が同じ画像を2枚生成します。