◉GEMINI LABEN
●VEO 3.1 — veo-3.1 の preview 3モデルは 10/22 に停止、残り14日。移行先は gemini-omni-1.1-flash●OMNI — gemini-omni-flash-preview の停止も 10/22。9/30 ではなく表の日付に合わせて確認を●NANO 2.1 — 画像モデル gemini-nano-banana-2.1 が GA。gemini-3.1-flash-image は非推奨で停止日は未発表●CLI 0.63 — Gemini CLI 安定版 v0.63.0。接続回復時のリトライ表示などを改善●TTS/LIVE — 2.5 系の音声・TTS 系プレビューは 11/17 に停止、残り40日●NEW — Veo 3.1 preview の 10/22 停止、差し替え前の棚卸し手順●VEO 3.1 — veo-3.1 の preview 3モデルは 10/22 に停止、残り14日。移行先は gemini-omni-1.1-flash●OMNI — gemini-omni-flash-preview の停止も 10/22。9/30 ではなく表の日付に合わせて確認を●NANO 2.1 — 画像モデル gemini-nano-banana-2.1 が GA。gemini-3.1-flash-image は非推奨で停止日は未発表●CLI 0.63 — Gemini CLI 安定版 v0.63.0。接続回復時のリトライ表示などを改善●TTS/LIVE — 2.5 系の音声・TTS 系プレビューは 11/17 に停止、残り40日●NEW — Veo 3.1 preview の 10/22 停止、差し替え前の棚卸し手順
記事一覧/API / SDK
◈ API / SDK/2026-06-14上級

Gemini API の media_resolution で画像トークンを制御する — バッチ画像分類のコストと精度を実測で最適化する

Gemini 3 系で導入された media_resolution は、画像入力が消費するトークン量を3段階で切り替えるパラメータです。バッチ画像分類の実測を通して、コストと精度のバランスをタスク別に最適化する手順を解説します。

gemini-api286media_resolutionマルチモーダル25コスト最適化25画像分類6トークン6本番運用49

✦ プレミアム記事

個人開発で壁紙アプリを運用していると、新着画像を自動でカテゴリ分けする処理が毎日走ります。あるとき請求の内訳を眺めていて、出力でも推論でもなく「入力トークン」が想像以上に積み上がっていることに気づきました。テキストはほとんど送っていないのに、です。原因は単純で、1枚の画像が消費するトークンを意識せずに、すべて最高解像度で投げていたからでした。

Gemini 3 系で導入された media_resolution は、まさにこの「画像1枚あたりのトークン」を制御するためのパラメータです。多くのコスト最適化記事はキャッシュやモデルルーティングを扱いますが、マルチモーダルが主役のワークロードでは、入力画像の解像度ティアそのものが最大の削減レバーになります。ここでは、私自身が個人開発で運用している壁紙分類パイプラインの実測をもとに、コストと精度を崩さずにティアを使い分ける手順を整理します。

media_resolution とは何か — 画像が消費するトークンを決める段階

media_resolution は、入力した画像や動画フレームを Gemini が内部で何トークンに換算するかを切り替える設定です。値は概念的に「低・中・高」の3段階で、低くするほど1枚あたりのトークンが減り、高くするほど細部まで読み取れるようになります。

ポイントは、これが「画質を落とす」設定ではなく「モデルに渡す表現の粒度を選ぶ」設定だという点です。粗いティアでも、画面全体の構図や支配的な色、被写体の大まかな種別といった大局的な特徴は十分に伝わります。一方で、画像内の細かい文字や、似た模様の微妙な違いを読み分けるには高いティアが要ります。つまり「タスクが画像のどの情報を必要としているか」で適切なティアが決まります。

注意したいのは、ティアごとの正確なトークン数はモデルのバージョンや画像の縦横比で変動することです。公式の目安値を鵜呑みにするより、自分のワークロードで実測するほうが確実です。次節でその計測ハーネスを作ります。

まず計測する — usage_metadata でティア別トークンを実測する

最適化の前に、現状を数字で把握します。Gemini API のレスポンスには usage_metadata が含まれ、その prompt_token_count が入力側の消費トークンです。同じ画像・同じプロンプトでティアだけを変えて投げれば、ティアの効きを純粋に比較できます。

from google import genai
from google.genai import types
 
client = genai.Client(api_key="YOUR_GEMINI_API_KEY")
 
MODEL = "gemini-3.5-flash"  # 実運用ではバージョンを固定すること
 
TIERS = {
    "low": types.MediaResolution.MEDIA_RESOLUTION_LOW,
    "medium": types.MediaResolution.MEDIA_RESOLUTION_MEDIUM,
    "high": types.MediaResolution.MEDIA_RESOLUTION_HIGH,
}
 
def measure_tokens(image_bytes: bytes, prompt: str) -> dict[str, int]:
    """同一画像・同一プロンプトで、ティアごとの入力トークンを実測する。"""
    result = {}
    img_part = types.Part.from_bytes(data=image_bytes, mime_type="image/jpeg")
    for name, tier in TIERS.items():
        resp = client.models.generate_content(
            model=MODEL,
            contents=[img_part, prompt],
            config=types.GenerateContentConfig(
                media_resolution=tier,
                temperature=0,
            ),
        )
        result[name] = resp.usage_metadata.prompt_token_count
    return result
 
with open("sample_wallpaper.jpg", "rb") as f:
    print(measure_tokens(f.read(), "この画像のカテゴリを一語で答えてください。"))

このコードを手元の代表的な画像数枚で回すと、ティア間の差が一目で分かります。私のパイプラインの計測では、1枚あたりの入力トークンが、低ティアと高ティアでおよそ3〜5倍の開きになりました(絶対値はモデルと画像サイズで変わるため、必ず自分の環境で測ってください)。バッチで1日あたり数千枚を処理する規模になると、この倍率がそのまま請求の差として効いてきます。

なぜティアだけを変えて測るのかというと、プロンプトや出力スキーマを同時に変えると、どの要因が効いたのか切り分けられなくなるからです。変数は一度に1つだけ動かす。地味ですが、これがコスト調査でいちばん時間を節約してくれる原則でした。

✦

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

この記事の続きを読む

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

この記事で得られること
✦media_resolution の3段階が画像トークン量をどう変えるかを、usage_metadata で実測する再現可能なハーネス
✦「精度が落ちないギリギリのティア」をタスク別に見つける計測プロトコルと判断基準
✦固定 HIGH からタスク別割り当てへ切り替えて、分類パイプラインの入力トークンを実測で大幅圧縮した記録
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

◈ API / SDK2026-07-15
自動採用された出力こそ抜き取る — 限られたレビュー予算で静かな品質劣化に気づく設計
信頼度ゲートが見ているのは、モデルが迷った出力だけです。静かな劣化は自動採用された側に沈みます。1日30分というレビュー予算を前提に、二項分布で検出日数を見積もり、層別抜き取りと累積監視で気づく速さを上げた設計と実測を共有します。
◈ API / SDK2026-05-14
Gemini 2.5 Pro の thinking_budget を制御する — コストを3分の1にしながら推論品質を守る実装パターン
thinking_budgetを未設定のまま使うとGemini 2.5 Proのコストが予想外に膨らみます。タスク別最適値・動的制御・モデルルーティング・本番監視・バッチ事前見積りまで、個人開発での実践知見をコード付きで解説します。
◈ API / SDK2026-04-30
Gemini API に個人情報を渡してしまう前に — PII マスキング・監査ログ・運用設計の本番実装ガイド
ユーザーから受け取ったテキストをそのまま Gemini API に渡していませんか。個人情報の検出・マスキング・監査ログまで含めた、コンプライアンス審査に通る本番運用設計を、実装コードと運用判断の両面から解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます