GEMINI LABEN
3.8LIVE — Live API 向けの audio-to-audio が 2 種 GA になりました。低遅延の既定が gemini-3.8-live、ライブ音声中の背景推論が -extended-thinking です09/30 — gemini-omni-flash-preview のシャットダウンまで残り 13 日です。後継は gemini-omni-1.1-flash で、差し替え前に呼び出し箇所を数え直しておきますMCP — 拡張側に 10 分と書いたタイムアウトが 1 分で切れる、という報告が出ています。長い処理を MCP に任せている場合はそのまま踏みますNEW — Sheets の AI 関数が生成できないときは、24 時間の上限より先にファイルの置き場所を疑いますGEM — 社内で作った Gem が共有できないときは、管理者設定と Drive の共有設定を決まった順で確認していきます10/16 — Gemini 2.5 の Pro / Flash / Flash-Lite が揃って停止するまで残り 29 日です。移行先は 3.5 Flash 系になります3.8LIVE — Live API 向けの audio-to-audio が 2 種 GA になりました。低遅延の既定が gemini-3.8-live、ライブ音声中の背景推論が -extended-thinking です09/30 — gemini-omni-flash-preview のシャットダウンまで残り 13 日です。後継は gemini-omni-1.1-flash で、差し替え前に呼び出し箇所を数え直しておきますMCP — 拡張側に 10 分と書いたタイムアウトが 1 分で切れる、という報告が出ています。長い処理を MCP に任せている場合はそのまま踏みますNEW — Sheets の AI 関数が生成できないときは、24 時間の上限より先にファイルの置き場所を疑いますGEM — 社内で作った Gem が共有できないときは、管理者設定と Drive の共有設定を決まった順で確認していきます10/16 — Gemini 2.5 の Pro / Flash / Flash-Lite が揃って停止するまで残り 29 日です。移行先は 3.5 Flash 系になります
記事一覧/高度な活用
高度な活用/2026-09-17中級

Gemini の色判定が同じ壁紙で入れ替わったのは、モデルではなく渡し方の側でした

同じ壁紙を渡しているのに色名の判定が入れ替わる原因を、書き出し5通りで数えた記録です。色空間を先に決め、閉じた語彙と機械側の基準値で検算するところまでまとめました。

Gemini87画像理解色空間壁紙アプリ8Python47

プレミアム記事

浮世絵壁紙の新着分を夜のうちに分類させていたとき、前の週に青と返ってきた一枚が、その晩は灰と返ってきました。プロンプトは変えておりません。モデルも同じです。変えたのは、書き出しに使っていたツールを別のものへ差し替えたことだけでした。

原因を探すのに二晩かかりました。行き着いたのは、モデルの気分ではなく、私が渡していた画像の側でした——正確には、画素値がどの色空間の数値なのかを伝える手がかりを、書き出しのときに落としていたのです。

同じ症状に心当たりのある方のために、書き出し方を5通り並べて数えた記録を書き残します。個人開発で運用している壁紙アプリの新着 120 枚が材料です。

揺れていたのは色名だけでした

最初に手を付けたのは、揺れの範囲を絞ることでした。分類の出力は「被写体」「構図」「主たる色」「用途タグ」の4項目です。この4項目のうち、どれが入れ替わっているのかを並べ直しました。

被写体と構図は、2回投げても同じ答えが返りました。用途タグも同じです。入れ替わっていたのは主たる色の1項目だけでした。

ここで方向が決まりました。プロンプト全体を書き直す前に、色という1項目だけを対象にして測ればよいのです。範囲を狭めたおかげで、120 枚を5通りで投げても一晩で終わりました。

揺れているのは出力の全部ではありません。項目ごとに分けて数えると、直す場所が一箇所に寄ります。

測り方を決める前に、書き出しの5通りを並べました

比較の条件

原本は Display P3 の 4K 画像です。ここから5通りを作りました。長辺はすべて 1,024 ピクセルへ揃えてあります。解像度の影響を混ぜないためです。

  1. sRGB へ変換して書き出した JPEG(品質 95)——これを基準に置きます
  2. Display P3 のまま、ICC プロファイルを埋め込んだ JPEG(品質 95)
  3. Display P3 の画素値のまま、ICC プロファイルを落とした JPEG(品質 95)
  4. sRGB へ変換した PNG
  5. sRGB へ変換した WebP(品質 80)

3番は、配信用に少しでも軽くしたいという理由で私がやっていたことです。プロファイルは数十キロバイトありますので、落としたくなります。

正規化そのものは Pillow の ImageCms で足ります。

# normalize_srgb.py — 渡す前に色空間をこちらで決めてしまう
from io import BytesIO
from PIL import Image, ImageCms
 
SRGB = ImageCms.createProfile("sRGB")
 
def to_srgb_jpeg(path: str, long_edge: int = 1024, quality: int = 95) -> bytes:
    img = Image.open(path)
    raw = img.info.get("icc_profile")
    if raw:
        # プロファイルがある場合だけ変換する。無い画像に変換をかけると二重適用になる
        src = ImageCms.ImageCmsProfile(BytesIO(raw))
        img = ImageCms.profileToProfile(img, src, SRGB, outputMode="RGB")
    else:
        # 手がかりが無い画像は sRGB とみなすほかない。ここはログに残す
        img = img.convert("RGB")
    img.thumbnail((long_edge, long_edge), Image.LANCZOS)
    buf = BytesIO()
    # 変換後は sRGB なので、埋めても埋めなくても解釈は一つに決まる
    img.save(buf, format="JPEG", quality=quality, optimize=True)
    return buf.getvalue()

profileToProfile を通すと画素値そのものが書き換わります。プロファイルを埋め込むだけの操作とは別物です。この二つを同じものだと思っていたことが、私の取り違えの入口でした。

判定の投げ方

判定は1枚ずつ、同じプロンプトで投げます。温度は 0 に固定し、色名は8語の閉じた語彙に限りました。自由記述にすると「群青」「紺碧」のような表記の差が混ざり、色が変わったのか言い方が変わったのかを分けられません。

何を一致とみなすか

基準の答えと、他の4通りの答えが同じ語であれば一致と数えました。加えて、基準そのものを2回投げて自己一致率も測っています。基準自体が揺れていたら、比べる土台がありません。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
手元の壁紙 20 枚で、色の判定が渡し方によって変わっているかどうかを自分で確かめられるようになります
メタデータを落として軽くする最適化がいちばん判定を壊す、という取り違えを、本番へ入れる前に避けられるようになります
色名を閉じた語彙へ丸め、機械側の基準値と突き合わせる検算を、自分のパイプラインへ置けるようになります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

高度な活用2026-07-10
ADK アシスタントが三日前の約束を静かに忘れていた — 会話圧縮の記憶欠落を再現テストで炙り出す
Google ADK と Gemini で会話履歴を圧縮すると、コストは下がる代わりにアシスタントの記憶が静かに欠けていきます。リコールプローブという再現テストで欠落を数値化し、圧縮戦略を根拠を持って選ぶまでの実装手順をまとめました。
高度な活用2026-05-10
Gemini 3.2 Pro × Imagen 4 で自作アートを壁紙 120 種類に展開した 30 日 — アーティスト個人開発者の素材供給パイプライン
自分のアート作品 1 枚を起点に、Gemini 3.2 Pro で構造解析・Imagen 4 で派生展開して壁紙シリーズ 120 枚を 30 日で揃えた本番パイプラインの実装記録。コスト・品質ゲート・アプリ側 KPI まで具体数値で公開します。
高度な活用2026-06-27
Gemini Deep Research のレポートを鵜呑みにしない — MCP連携時に引用元を機械検証してから取り込む受け入れゲート
Deep ResearchがMCPで自前データに繋がった今、返ってきたレポートを自動取り込みする前に、引用が信頼ソースへ解決できるかを機械検証する受け入れゲートを実装します。許可リスト・根拠カバレッジ率・却下理由の記録まで動くコードで設計します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます