📸

OpenAI 画像トークンの数え方まとめ(o1系, 4o系, 4.1系)

に公開

はじめに

先日GPT-4.1が出ましたね
https://openai.com/index/gpt-4-1/
https://platform.openai.com/docs/models/gpt-4.1

入力には画像も対応しているということで画像トークンの数え方を見ようと思ってPricingのページを見たら記載どころかデザインが変わってました
(と思ったら下の方に計算機があるけど、4.1系は間違ってる気がする)
https://openai.com/ja-JP/api/pricing/

一生懸命探したら普通にあったんですが、ついでに画像系トークンの計算を忘れないようにまとめておこうと思います

※探している人はこれ読めば終わりです
https://platform.openai.com/docs/guides/images#calculating-costs

画像トークンの計算の仕方

o1,4o系と4.1系で数え方が異なるみたいです

GPT-4.1系

以下のルールです

  • 32px × 32px のパッチが何個含まれるか
  • パッチが1536個が最大でそれを超える場合は1536個以下になるように画像を拡大縮小する
  • パッチの個数 = トークンの個数で最大1536トークン
  • miniの場合は1.62、nanoの場合は2.46をトークン数にかけたものが最終的なトークン数になる
  • 課金はテキストトークンと同じ値段

なので1画像でもGPT-4.1なら最大1536トークンしか課金されないみたいですね

例(日本語訳しただけ)

多分全部GPT-4.1の場合

その1 1024 x 1024の画像

  • 幅は1024で、
    \left\lfloor \frac{1024 + 32 - 1}{32} \right\rfloor = 32 \text{パッチ}
  • 高さは1024で、
    \left\lfloor \frac{1024 + 32 - 1}{32} \right\rfloor = 32 \text{パッチ}
  • トークンは
    32 \times 32 = 1024

よって1024トークン

その2 1800 x 2400の画像

  • 幅は1800で、
    \left\lfloor \frac{1800 + 32 - 1}{32} \right\rfloor = 57

  • 高さは2400で、
    \left\lfloor \frac{2400 + 32 - 1}{32} \right\rfloor = 75

  • トークン数は
    57 \times 75 = 4275
    → 1536を超えるため縮小が必要

  • 収縮率は
    \sqrt{ \frac{1536 \times 32^2}{1800 \times 2400} } = \sqrt{ \frac{1572864}{4320000} } \approx 0.603

  • 幅:
    1800 \times 0.603 = 1086

  • 高さ:
    2400 \times 0.603 = 1448

  • 再スケール係数:
    \frac{33}{33.94} \approx 0.97

  • 最終的な幅:
    1086 \times 0.97 = 1056

  • 最終的な高さ:
    1448 \times 0.97 = 1408

  • パッチ数:
    \frac{1056}{32} = 33, \quad \frac{1408}{32} = 44

  • トークン総数:
    33 \times 44 = 1452

o1と4o系

detailshighlowかで異なる
ベーストークンとタイルトークンという数値があり、これがモデルごとに異なる
どちらもベーストークンの分のコストがかかり、highはそれにタイルトークンが処理後の画像サイズごとにかかるイメージ。

  • detailslow

    • 常にベーストークン分だけかかる
  • detailshigh

    • 元のアスペクト比を維持しながら、2048px × 2048pxの正方形に収まるように拡大縮小
    • 画像の短辺が768ピクセルになるように拡大縮小
    • 画像内の512ピクセルの正方形の数を数えます。各正方形の数×タイルトークン分かかる
    • 合計にベーストークンを追加
例(日本語訳しただけ)

1024 x 1024の画像(detail:high)

  • 1024 は 2048 より小さい → 初期サイズ変更は行われません
  • 最短辺は 1024 → 768 x 768 に縮小
  • 512px タイルは
    \left\lceil \frac{768}{512} \right\rceil^2 = 2^2 = 4 \text{個}
  • トークンコスト:
    170 \times 4 + 85 = 765(4o)

2048 x 4096の画像(detail: high)

  • 縮小後:1024 x 2048
  • 最短辺1024 → 768 x 1536に再縮小
  • タイル数:
    \left\lceil \frac{768}{512} \right\rceil \times \left\lceil \frac{1536}{512} \right\rceil = 1 \times 6 = 6
  • トークンコスト:
    170 \times 6 + 85 = 1105(4o)

4096 x 8192の画像(detail: low)

  • ベーストークンのみ:
    85トークン (4o)

ベーストークンとタイルトークンのモデル別表

(ここの計算機を参照)

Model ベーストークン タイルトークン
4o 85 170
4o-mini 2833 5667
o1 75 150
o1-pro 75 150
4.5-preview 85 170
computer-use-preview 65 129

(※computer-use-previewのことはあんまり知らないけど、あったので載せてます)

おわりに

これでもう計算できると思うのでコスト計算は楽ちんです
大体合ってると思いますが、合ってなかったら教えてください
以上

Discussion