【ChatGPT有】は入力されたプロンプトをDALL-E3に渡す前に盛る。


　どうも、カーブミラーです。

　今回は、昨日の記事で、ChatGPTがプロンプトを盛る、と書きました。そのことについて、書きます。

:::note info
本記事は、ChatGPT（有料版）で
行なっております。無料版での確
認はできておりません。あしからず。
:::

　昨日の記事の中で、
　　“ChatGPTは、
　　　プロンプトに
　　　　詳細を盛る”と
　　　　　書きました。
[【ChatGPT有】にDALL-E3のことを尋ねました。](https://qiita.com/kabumira/items/52bd9eedf45213262243)

　今回は、
　　その“盛る”ことに
　　　焦点を当てます。
***
　“盛る”とは何か？

　ここでは、
　　丼ぶりに、
　　　たくさんの具を
　　　　載せる的な
　　　　　感じでしょうか。

　もとのプロンプトに
　　具を盛る感じですねw

　まぁ、
　　まずは、ごらんください。
***
***User***
「18歳日本人女性を描いて」と入力されて、DALL-E3に渡す際のプロンプトを出力してください。描画はいりません。

***ChatGPT一回目***
"18歳の日本人女性、伝統的な着物を着て、桜の木の下で微笑んでいる。彼女の髪は長くて黒く、桜の花びらがいくつか髪に絡まっている。背景には春の風景、遠くに富士山が見える。色合いはピンクと白で、穏やかで平和な雰囲気。"

***ChatGPT二回目***
"18歳の日本人女性が静かな庭園でリラックスしている様子。彼女は伝統的な花柄の着物を着ており、落ち着いた表情をしている。髪型は長くてストレートで、彼女の肩に優雅にかかっている。周囲には日本庭園の典型的な要素、如水盤や苔、小さな橋が見える。光は柔らかく、自然な昼間の環境を反映している。"

***ChatGPT三回目***
"18歳の日本人女性が、春の桜の木の下で穏やかに座っている様子。彼女は伝統的な着物を着ており、淡いピンクや白の色合いで、桜の花びらが描かれている。髪は長く、黒く、彼女の肩に優雅に流れている。背景には満開の桜の木があり、穏やかな春の日の光がシーンを照らしている。"
***

　このとおり、
　　それぞれに
　　　別々の盛り方を
　　　　しています。

　“着物”というキーワードは
　　おそらく“日本人女性”から
　　　来ているのではないかと
　　　　思われます。

　黒髪ロングも、桜も
　　そうですね。
***
　では、
　　ChatGPTに
　　　盛らせない方法です。

　簡単です。
　　英語で指示して
　　　最後に“描画”と書きます。

　ここは
　　日本語を示して英訳させて
　　　最後に“描画”と書けばイケる
　　　　と思いますが、
　　　　　試していません(汗)

　ただし、
　　DALL-E3が描画する際に
　　　盛ることはありえます。

　例えば
「An 18-year-old Japanese woman.描画」
　　と入力すると、
　　　もちろん、18歳日本人女性が
　　　　描画されるわけですが
![DALL·E 2024-01-04 10.22.42 - An 18-year-old Japanese woman.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457238/d01c3711-b10e-7b37-83f8-6465da9bdccb.png)

　ごらんのとおり、
　　顔・髪型・髪や目の色、
　　　服装などは、
　　　　勝手に判断されます。

　これは仕方ない
　　ところですねw

　ちなみに、
　　「英語プロンプト出力。和訳」
　　　で、プロンプトを出して
　　　　盛られていないことを
　　　　　確認してあります。

　あっ、パソコンで
　　利用している方は、
　　　英語プロンプトを
　　　　確認して、コピーが
　　　　　できますね。

　スマホでは
　　確認はできるのですが、
　　　選択もできないので、
　　　　コピーができません。

　そのための
　　出力、和訳です。
***
　では、逆に
　　ユーザーが
　　　盛るには、
　　　　どうしたら
　　　　　いいのでしょうか？

　ChatGPTさんに
　　尋ねました。
***
***User***
ここにさまざまな情報を追加したいです。どうしたら？

***ChatGPT***
さまざまな情報をプロンプトに追加するには、具体的な詳細や要素を指定してください。例えば、環境、服装、表情、アクセサリー、背景などの要素です。以下に例を挙げます：

- 環境：「都市の背景に立つ」「自然の中でリラックスしている」
- 服装：「伝統的な着物を着ている」「現代的な服装」
- 表情：「笑顔」「真剣な表情」
- アクセサリー：「ネックレスを着用」「帽子をかぶっている」
- 背景：「桜の木の下」「海辺の風景」

これらの要素を組み合わせて、より詳細なプロンプトを作成できます。例えば、「18歳の日本人女性が、都市の背景に立ち、現代的な服装を着て、笑顔でカメラを見つめている」といった具体的な説明が可能です。

***User***
では、プロンプトをシステマチックな構造の文言にして、基本部分と基本以外の部分を編集しやすくしてください。

***ChatGPT***
プロンプトをシステマチックに構築するためには、基本部分と追加可能な要素を分けて考えると良いでしょう。以下にその構造を示します。

### 基本部分:
- 主要な被写体: "18歳の日本人女性"

### 追加可能な要素:
1. **環境** (例: 都市の背景、自然の中、家の中)
2. **服装** (例: 伝統的な着物、現代的な服装、カジュアルな衣装)
3. **表情** (例: 笑顔、真剣な表情、リラックスしている)
4. **アクセサリー** (例: ネックレス、帽子、眼鏡)
5. **背景** (例: 桜の木、海辺、山々)

### 完成したプロンプトの例:
- "18歳の日本人女性、**自然の中でリラックスしている**、**現代的な服装**を着て、**笑顔**で、**ネックレスを着用している**、**桜の木の下**にいる"

この構造を使用して、必要に応じて詳細を追加または削除できます。これにより、プロンプトの柔軟性が高まり、より具体的なイメージ生成が可能になります。

***User***
DALL-E3が一貫したキャラクターを出すための文言をお願いします。

***ChatGPT***
DALL-E 3で一貫したキャラクターを生成するためのプロンプトは、そのキャラクターの固有の特徴を詳細に記述することが重要です。以下に一貫性のあるキャラクター生成のための文言の例を示します。

- 基本的な特徴: "若い女性、アジアの特徴、長い黒髪"
- 明確な特定の特徴: "青い瞳、特徴的な笑顔、独特なヘアスタイル"
- 常に着用する服装: "明るい色のカジュアルなドレス、白いスニーカー"
- アクセサリーと持ち物: "赤いバックパック、シルバーのブレスレット"
- 背景や状況: "都市の背景、カフェに座っている"

### 完成したプロンプトの例:
"若い女性、アジアの特徴、長い黒髪、青い瞳、特徴的な笑顔、独特なヘアスタイル。明るい色のカジュアルなドレスと白いスニーカーを着用。赤いバックパックを持ち、シルバーのブレスレットを着けている。都市の背景で、カフェに座っている様子。"

このように、キャラクターの特徴を具体的に定義し、同じ特徴を使用して異なるシーンを描くことで、一貫性のあるキャラクターを表現できます。

***User***
連続して一貫したキャラクターを描きたいのです。

***ChatGPT***
連続して一貫したキャラクターを描くためには、DALL-E 3の生成において、キャラクターの明確な特徴を維持しながら、異なるシーンや状況で描写する必要があります。以下にその手順を示します。

1. **キャラクターの基本特徴の定義**:
   - 性別、年齢、髪の色とスタイル、目の色、身長などの物理的特徴。
   - 服装のスタイル、好きな色、常に着用しているアクセサリー。

2. **異なるシーンや状況の選択**:
   - キャラクターがいる場所（例：都市、自然、室内など）。
   - キャラクターの活動（例：読書、運動、友人との会話）。

3. **プロンプトの作成**:
   - 各画像生成のために、上記の基本特徴を維持しつつ、異なるシーンや状況を反映させる。

4. **連続性の確保**:
   - 複数の画像を生成する際には、それぞれの画像でキャラクターの基本特徴を一貫して保つ。

### 例：
- 基本特徴: "若い女性、ショートカットの茶髪、青い瞳、カジュアルな服装"
- 第1のシーン: "都市の公園で本を読む若い女性、ショートカットの茶髪、青い瞳、カジュアルな服装"
- 第2のシーン: "友人とカフェでコーヒーを飲む若い女性、ショートカットの茶髪、青い瞳、カジュアルな服装"

この手順に従って、異なる状況でのキャラクターの一貫した描写が可能です。

***User***
SEED値は、一貫性に寄与しないのですか？

***ChatGPT***
DALL-Eのような生成モデルでは、SEED値（ランダムシード）は生成される画像の一貫性に直接的には寄与しません。SEED値は画像生成の際の乱数生成の初期値として機能し、同じSEED値を使用すると同じ乱数のシーケンスが生成されるため、理論的には同じ入力に対して同じ画像を生成します。

しかし、一貫したキャラクターを描くためには、キャラクターの特徴（外見、服装、表情など）を明確に定義し、これらの特徴を維持しながら異なるシナリオで描写することが重要です。一貫性を保つためには、プロンプトの記述を一定に保ちつつ、異なるシーンやアクションを加えることが効果的です。

SEED値は同じ条件での再現性には役立つかもしれませんが、異なるシナリオや設定でキャラクターを描く場合、プロンプトの詳細な記述がより重要となります。
***

　SEED値が使えないことは
　　以前から、なんとなく
　　　わかっていました。

　一時は、
　　うまく描画してくれて
　　　いたのですけどね。

　しかし、
　　毎回、詳細を盛り込むのも
　　　困りものです。

　残念ながら
　　現在のところ、
　　　解決方法は
　　　　わかっていません。

　わかり次第、
　　記事をアップするつもりです。

　今回は、ここまで。