🎨

LLMに色を考えてもらう

に公開

概要

LLMの性能向上はめざましいものがあります。エンジニア界隈ではコーディングに関連するタスクを解かせる例が多いですが、色彩設計タスクを解かせてみたところ想像以上に良い結果が得られました。今回は色の明るさ(例:20%から80%までを5分割)とテーマ(例:日本の鮮やかな青)を指定し、適宜修正を要求しました。

問題設定

以下のようなグラデーションをカラーチップの組として作ってもらうことを考えます。

ベロ藍をイメージして作成した「鮮やかな日本の青」
ベロ藍をイメージして作成した「鮮やかな日本の青」

このカラーチップの組は、以下のような条件を満たします。

  • 知覚的明るさ(oklab の L)がリファレンスのグレーと等しい。
  • 与えられた日本の鮮やかな青というテーマに沿っており、かつ根拠をもってプレゼンテーションができる。
  • 明るくなるにつれ色相がわずかにシフトする[1]ことで、実際の画材のような深みを感じられる。

LLMのモデルとプロンプト

今回は ChatGPT o3 (Pro plan) に以下のようなプロンプトを与えました。会話の全体はこちらを参照してください。

「鮮やかな日本の青」というテーマを5段階の明るさをもつカラーチップの組として表現し、色の選択について、文化および数値の両面から説明してください。

  • 背景は着色せず、白色(#FFFFFF)としてください。
  • 明るさ(HSVのVではなく、視覚的な明度)はそれぞれ 20%, 35%, 50%, 65%, 80% としてください。
  • 視覚的な明度を計算する色空間は oklch とします。

最初にあがってきたのは以下の色です。

最初に生成されたカラーチップの組

このまま使用しても十分に使用に堪えそうな色ではありますが、明るい側の2色が青すぎるのがやや気になります。思考過程を見るに oklch モデル上で色相を固定して作成したようです。そこで、明るい側2色を少し黄色に寄せるように指示してみます。

明るい側の2色がやや青すぎるので、わずかに色相を黄色側にシフトさせてください。

明るい側2色を黄色に寄せたカラーチップの組

少しよくなりましたが、明るい側2色の中で比べると最も明るい色がまだ青すぎます。そこで、続けて次のような指示をします。

最も明るい色をもう少しだけ黄色に寄せてください。このとき、色が oklab または oklch 色空間の中で滑らかな軌跡を描くようにしてください。

最終成果

これでグラデーションが滑らかにつながり、かつ藍染めのような色相シフトのあるカラーチップの組が完成しました。細かい調整の余地はあるものの、かなりよくできた色であると感じます。

考察

今回は単純なプロンプトで良い結果が得られました。これには、次のような要因があると考えられます。

  • ChatGPT o3 の基本性能の良さ:従来モデルと比較して曖昧な指示をうまく拾ってくれるようになりました。
  • oklch モデルの完成度の高さ:oklchはCIELABと比較して明度の扱いが洗練されています。何も指示をしなかった場合、執筆時点のChatGPTはCIELABモデルのLを参照しており、結果としてグレースケールとの間に明るさの齟齬が起きていました。明示的にoklchモデルを使うように指示することでこの問題が解決しました。
  • 人間側の色材についての知識:筆者は透明水彩絵具で絵を描いた経験があることにより、絵具の濃さで色相がわずかに変わることについて知っています。この知識を補うことで手触り感のあるグラデーションが得られます。
  • 問題の形式化しやすさ:単一の色相でグラデーションを作るタスクは形式化しやすい部類の問題といえます。人間にとっては眼の訓練を必要とするタスクですが、この部分をoklchという優秀なモデルが少ないパラメターに還元してくれるのでLLMにも解きやすい形になったのでしょう。

難しめのグラデーションを作ってもらう

では、より抽象的な色彩設計はどうでしょうか。

外光の変化を表現する鮮やかでリアルなグラデーションを作成し、色について技術的な面から説明してください。

  1. 白色の背景を想定してください。
  2. 左端が午前4時、中央が午前6時、右端が午前8時です。
  3. 左端は夜空、中央は朝焼け、右端は青空を表現してください。
  4. 記号的な色の使用は避けてください。

得られた結果は以下の通りです。

ChatGPT o3 が生成した夜明けのグラデーション
ChatGPT o3 が生成した夜明けのグラデーション

今回はoklchの使用を指定しませんでした。チャットの「思考」を見るとCIELABを参照しているようです。午前7時あたりの色がやや濁っていますが、そこまで悪くはない出来です。

筆者の手作り
筆者の手作り

筆者が手作りしたグラデーションがこちらです。夜明けの紫色と日の出後のさわやかな空色を濁らせないように多少嘘をついて調整しています。

まとめ

ChatGPT o3 による色彩設計は、単純なタスクであればかなり優秀なレベルであると感じます。今のところ人間によるアシストと後調整がそれなりに必要(あるいは筆者のプロンプトが下手)ですが、イメージを伝えて色を作ってもらうだけでも助かる場面はありそうです。

脚注
  1. たとえば https://www.handprint.com/HP/WCL/pigmt8.html ↩︎

Discussion