DALL-E3における最適なプロンプトの考察
背景
今回、様々なパラメーターを調整して実験を行った。
その結果および考察をここにまとめる
結果
GPT-4Vに画像を説明させて得られたプロンプトをそのまま使うと、精度が悪かった。(実験1) GPT-4Vにコンセプト、構図、スタイルを読み取って得られたプロンプトを使うと、実験1より良い結果が得られた。(実験2) GPT-4Vに、画像の説明、コンセプト、構図、スタイルを読み取って得られたプロンプトを使うと、実験2より良い結果だった。(実験3) 実験3で得られた画像に、GPT-4Vでもう一度元画像のフィードバックをかけて画像を作らせると、出力の揺らぎが大きくなった。とても似ている画像から、全く似ていない画像まで得られた。(実験4) GPT-4Vに、画像の説明、コンセプト、構図、スタイルを読み取らせ、長文で出力するよう強制したプロンプトを使うと、今までで一番精度が良い結果であった。(実験5) 一方で、一部の画像に創作が見られ、画像の説明でハルシネーションを生んでいたことが判明した。(実験5)
GPT-4Vに、画像の説明、コンセプト、構図、スタイルを読み取らせ、短文で出力するように強制したプロンプトを使うと、実験5より画像の精度が悪くなった。(実験6) DALL-E3に指示する形式をJSON構造にする意義は、少ない結果となった。Markdownで十分。(実験7)
考察
DALL-E3に与えるプロンプトは、短いよりも、長くて具体的であるほど、良い精度になると考えられる。 しかしながら、あまりに長くしすぎると、ハルシネーションがうまれる余地ができてしまう。
そのため、与えるプロンプトの指示を微調整して、得られた画像の結果と比較すると良い。
ハルシネーションは画像の説明を求める出力で見られた。基本的にはここの文字数を可能な限り長くしたいが、嘘が見られたら、文字数を少なくすれば良い。
現状ベストと考えられるワークフローとしては以下の通り
対象となる画像を添付 (GPT-4V)
この画像を読み取り、以下の項目を抽出してそれぞれ英語で埋めてください。
この抽出結果は、画像生成AIの入力データ、つまりプロンプトとして、類似画像を生成するために使用します。
該当する要素がない場合は空欄でお願いします。例えば風景写真で人物描写が無い場合は、服装や髪型などは無視します。
また、以下の情報以外に、画像に特筆すべき要素があれば補足してください。
# この画像の詳細説明 (must be described with more than 300 words)
# この画像のコンセプト (each element must be described with more than 100 words)
・ジャンル (例:肖像画、風景、ファッション、食品、旅行など)
・被写体 (例:人物、動物、物体など)
・行動/ポーズ (例:座っている、歌っている、走っている)
・感情/表情 (例:困っている、喜んでいる)
・服装 (例:黒いスーツ、白いパーカー)
・背景 (例:空、天気、建物、山、海など)
・シチュエーション (例:時間帯、天気、季節、シーンなど)
# この画像のスタイル (each element must be described with more than 100 words)
・画風 (例:印象派、写実主義、ロマン主義など)
・技法 (例:水彩画、油絵、フラットデザイン、ピクセルアートなど)
・画質 (例:4K, 8K)
# この画像の構図 (each element should be described with more than 100 words)
・配置とバランス (例:3分割、黄金比)
・焦点と注目点
・視線と動線例: (例:リーディングライン)
・スケールと比率 (例:Forced Perspective)
・対称性と非対称性 (例:対称)
・角度と視点 (例:ワームズアイ・ビュー、バードビュー)
・色とコントラスト (例:カラーコントラスト)
・形状と線 (例:ジオメトリック)
返ってきた出力をコピーし、新たなスレッドのDALL-E3で貼り付ける。
ハルシネーションをチェック。勝手に変なものが画像に作られていないか?
作られていたら、画像の詳細説明の文字数を減らし、再度プロンプトを打ちこむ
得られたものをDALL-E3に貼り付け、画像を確認
どうしても満足がいく画像が得られない場合は、GPT-4Vフィードバックを行う(実験4を参照) これにより、画像出力に幅を持たせることができる
大当たりから大外れまで乱数が大きくなるため、数回出力を繰り返す