引き続き、ChatGPT4を用いて、DALL-E3でのキャラクターの同一性を保持する方法について検証をしています。以前にご紹介した通り、キャラクターの同一性を担保するには複数の手法があります。私が多用しているのは、プロンプト、シード値、Generation ID(Gen ID)の併用固定ですが、比較的簡単な変更であればシード値のみを用いた指示でも対応が出来ます。一方でこの手法では、要求が複雑化していくと対応出来なくなります。
今回は、どこまでの指示であれば問題ないのか、限界を見ていきましょう。
ChatGPT (DALL E3)における同じキャラクターの生成法については、下記記事にて解説しています。

また、画像生成全般に関してまとめたのが下記記事となっていますので、こちらもどうぞ。

ベースとなる画像のシード値、Gen IDについて
ベースとなるのは、下記画像となっています。こちらの画像についてChatGPTに直接確認していくと、シード値:2282781353、Gen ID:apAJmqezH4tjA2QTであることが分かります。
ちなみにシード値、Gen IDについては、直接ChatGPTに尋ねることによって確認することが可能です。
文面は「この画像のシード値、Gen IDを教えてください」などでOKです。

今回のベースとなる画像。また例によって同じプロンプトを用いています。
それでは、この画像をベースにして幾つかの変更指示を与えた場合の生成結果について、以下で解説していきます。
シード値のみをベースにした指示
シード値をベースにした簡易的な指示のやり方は、「シード値〇〇〇を◇◇◇にして」といったテキスト形式で指示を行えます。

プロンプト「シード値2282781353を右向きにして」で出力。
髪型変更があるものの、概ね元のイメージを保持している。

プロンプト「シード値2282781353の目を少し細めて」で出力。
あんまり目が細められていないが、元の情報は保持されていると言える。

プロンプト「シード値2282781353を歌って踊らせて」で生成。動きの伴う複数の支持を同時に入れてみたが、セーターの造形に違和感があることを除けば、意外と自然な仕上がりになっている。

プロンプト「シード値2282781353を万歳させて」で生成。
ここから少し怪しくなってきます。一気に幼くなっている。画風も変化。

プロンプト「シード値2282781353が海辺で椅子に座っている」で生成。
元プロンプトのセーターが無視されており、更に髪型もふわっとした感じがなくなっている。

プロンプト「シード値2282781353が車の助手席に座って、アイスを美味しそうに食べている」で生成。
服装や髪以外にも、目の描写、画風も変わってきている。

プロンプト「シード値2282781353が帽子を被って、息を切らしながら走っている」
この辺りまでくると、原型を保持していない。

おまけ
プロンプト「Gen ID:apAJmqezH4tjA2QTが帽子を被って、息を切らしながら走っている」で生成。
Gen IDのみ指定のほうがクォリティは高いかもしれない。ただ元のプロンプトの、セーターは無視されている。
以上のように、簡易的な変更については「シード値+指示」が有効です。一方で、複雑な変更を伴う場合には「シード値+指示」では元プロンプトからの乖離が大きくなり、使いにくい印象があります。
シード値に加えて、プロンプト、Gen IDを併用した場合
続いて、シード値だけでなく、プロンプトやGen IDといったパラメーターを併用して指定した場合に、どういう風に変わるかを見ていきます。

「海辺で椅子に座っている」
シード値のみでは上手くいかなかった服装の維持もできている。

「車の助手席に座って、アイスを美味しそうに食べている」
これも同様に、元画像の印象を保っている。

「帽子を被って、息を切らしながら走っている」
これも元画像の印象を保持したまま、躍動感を感じる画像が生成されている。
シード値に加えて、Gen IDやプロンプトを併用することで、意図した画像が得られやすいことが分かります。
まとめ
シード値に対して指示を加えるのは、小さな変更であれば、元画像のプロンプトを維持することができるため、十分使えると思います。一方で、複雑な指示になると、元画像のプロンプトを維持せずに、印象の異なる画像を生成し始めます。特に、今回で言うと元画像のプロンプト中の「セーター」という言葉は、「海」や「走る」といったワードとは関連性が低いので、無視されているものと思われます。
上記を踏まえると、やはりプロンプトとGen IDも指定した3値併用が、キャラクターの同一性を保持するには有効だと思います。比較的一貫したキャラクターでありながら、新しい表情や動作を加えることが可能なためです。一方で、相変わらず服装の揺らぎがあるので、改善できる方法がないかは探ってみたいと思います。
コメント