「画像から適切なプロンプトを自動で作成したい」
「ChatGPTを用いて、画像生成用のプロンプトを作成したい」
このような場合には、この記事の内容が参考になります。
この記事では、GPT-4Vを利用したプロンプトの作成方法を解説しています。
本記事の内容
- GPT-4Vを利用したプロンプトの作成方法
- GPT-4Vを利用したプロンプトの動作確認
GPT-4Vを利用したプロンプトの作成方法
GPT-4Vとは、ChatGPTの画像認識機能のことです。
2023年9月25日にOpenAIから、音声認識機能の件と同時に発表されました。
「今後2週間程度で有料会員のPlusとEnterprise向けに提供開始」ということでした。
しかし、もうすでブラウザ版でも利用可能となっています。
(ブラウザ版で確認できたのは、2023年9月29日です)
新たに実装されたGPT-4Vを利用して、画像生成用のプロンプトを生成しようということです。

現状において、GPT-4Vはこの画像を次のように解釈します。

この時点で十分に凄いです。
しかし、このままでは画像生成用のプロンプトには使えません。
そのため、ChatGPTにプロンプト作成のためのルールを学んでもらう必要があります。
そのルールをChatGPTにまとめてもらうことから始めます。
次の記事でそのための方法を解説しています。
上記記事内の入力とは、若干変更しています。

以下のページから、プロンプトに関して学んでください。
そして、学んだ内容を第三者に適切かつ確実に伝えるためのガイドにしてください。
その際、最終成果物となるプロンプトの実例も含めてください。
https://stable-diffusion-art.com/prompt-guide/
https://stable-diffusion-art.com/how-to-come-up-with-good-prompts-for-ai-image-generation/
何度か往復して、作り上げたのが次のガイドになります。
各自で自分独自のガイドを作り上げてみるのも良いでしょう。
プロンプトのガイド
1. プロンプトの基本 - プロンプトは、AIや機械学習モデルに指示や要求を伝えるための文章やフレーズです。 - 効果的なプロンプトは、モデルの出力を正確に制御するための鍵となります。 - 重要: プロンプトは英語で出力することが推奨されます。英語のプロンプトは、多くのAIモデルにとって最も効果的であると一般的に考えられています。 2. 良いプロンプトの構造 - 主題 (必須): 描写したい内容を詳細に記述します。 - 例: "青いドレスを着た若い女性が木製の窓の隣で本を読んでいる" - 媒体: アートワークが作成される素材や方法を指定します。 - 例: デジタルペインティング、写真、油絵など。 - スタイル: アートのスタイルや特徴を指定します。 - アーティスト: 特定のアーティストのスタイルを指定します。 - ウェブサイト: 特定のジャンルやスタイルを持つウェブサイトの名前を指定します。 - 解像度: 画像の鮮明度や解像度を指定します。 - 追加の詳細: 画像に追加したい特定の詳細や特徴を指定します。 - 色: 画像の色調や色のスキームを指定します。 - 照明: 画像の照明や光の効果を指定します。 3. プロンプトの作成のヒント - 主題を詳細に記述することで、AIジェネレーターが正確な出力を提供する確率が高まります。 - プロンプトには、不要な効果を避けるためのネガティブなキーワードも含めることができます。 - 例: "ugly", "deform", "disfigured" など。 - 特定のキーワードを使用して、画像のスタイルや効果を制御することができます。 4. キーワードの例 - 媒体: "Digital painting", "Underwater portrait", "Concept art" など。 - スタイル: "hyperrealistic", "pop-art", "art nouveau" など。 - アーティスト: "John Collier", "Stanley Artgerm Lau", "Frida Kahlo" など。 - ウェブサイト: "pixiv", "pixabay", "artstation" など。 - 解像度: "unreal engine", "sharp focus", "8k" など。 - 照明: "rim lighting", "cinematic lighting", "crepuscular rays" など。 - 追加の詳細: "dramatic", "silk", "low angle shot" など。 - 色: "iridescent gold", "silver", "vintage" など。 5. プロンプトの最終成果物の例 以下は、上記のガイドラインに基づいて作成されたプロンプトの例と、それに対応するAIによる出力画像の説明です。 プロンプト: "Digital painting of a young woman with light blue dress sitting next to a wooden window reading a book, by Stanley Artgerm Lau, artstation, 8k, extremely detailed, ornate, cinematic lighting, rim lighting, vivid" AI出力画像の説明: このプロンプトに基づいて生成された画像は、薄い青いドレスを着た若い女性が木製の窓の隣で本を読んでいる様子をデジタルペインティングで描写しています。Stanley Artgerm Lauの特有のスタイルが反映されており、非常に詳細で装飾的な要素が豊富に含まれています。照明は映画的で、リムライトが特徴的に使用されており、色合いは鮮やかです。
プロンプトのガイドが出来上がったら、GPT-4Vが利用できる「Default」でセッションを始めます。

GPT-4Vが利用可能であれば、次のようなアイコンを入力欄に確認できます。

確認できれば、次のようにChatGPTに入力します。
【プロンプトのガイド】は、まとめたガイドの内容すべてです。

次のプロンプトのガイドをしっかりと理解してください。
【プロンプトのガイド】
そうすると、ChatGPTは次のように反応します。

ChatGPTがガイドを理解できたら、画像をアップロードしましょう。
そして、次のように入力します。

ガイドを無視する場合もあるので、「確実」にと強く言います。
プロンプトのガイドに確実に従って、この画像のプロンプトを英語で出力してください。
上記の入力に対して、ChatGPTは次のように返答します。

ガイド無しで出力したテキストとは全く異なりますね。
あとは、これをもとに画像生成を行います。
以上、GPT-4Vを利用したプロンプトの作成方法を説明しました。
次は、GPT-4Vを利用したプロンプトの動作確認を説明します。
GPT-4Vを利用したプロンプトの動作確認
GPT-4Vを利用した画像生成を行っていきます。
最初は、実写の画像からです。

画像をアップして、次のようにプロンプトを入力します。

次のような返答がChatGPTから戻ってきます。

ここで一つ注意点があります。
なぜかChatGPTは、実写の画像を「Digital painting」と表現する場合があります。
そのような場合には、「Digital painting」を「photograph」と置き換える必要があります。
このあたりは、ChatGPTの機能改善に期待しましょう。
変更したプロンプトをもとに画像生成を行った結果が、以下となります。
モデルは、実写に強いモデルを複数利用しています。

オリジナルの画像と同じような画像になっています。
次は、アニメ画像で試してみましょう。

画像をアップロードして、以下のプロンプトを入力します。

その結果、ChatGPTの返答は次のようになります。

わかりやすい英語ですね。
「Digital illustration」は、そのままで問題ないでしょう。
このプロンプトで生成した結果は、以下となります。

確かに、「a young warrior」とだけしか書いてませんでしたからね。
その結果として、性別はモデルに委ねられたというような感じです。
そもそも、ChatGPTは性別を判断できなかったのでしょう。
もののけ姫である「サン」は、そこまでメジャーではないということかもしれません。
仮にChatGPTが「サン」だと認識できたとします。
しかし、Stable Diffusion(モデル)が「サン」を認識できないと意味がありません。
トトロレベルだと、ChatGPTとStable Diffusionの両方が認識できます。

この画像だと、ChatGPTは次のようにプロンプトを出力してくれます。

上記プロンプトによる結果は、以下。

Stable Diffusion側でも「Totoro」を認識していることがわかります。
中には、ヤバいトロロも混じっていますけど。
以上、GPT-4Vを利用したプロンプトの動作確認を説明しました。