L'image
à consulter, pas à lire d'affilée. Un relevé de la littérature, pas une mesure d'ici.
Un jeton d'image n'est presque jamais un numéro de ligne dans une table. Dans tout ce qui comprend une image, c'est un vecteur. Cette seule distinction commande le vocabulaire, la facture et ce qu'on perd.
1. Deux chemins, et ils ne se ressemblent pas
« Patchification » serait le mot juste
On découpe, on aplatit, on projette. Rien n'est cherché dans une table, donc rien n'est arrondi. Chez Claude les carrés font 28 px, chez OpenAI 32 px, et Qwen3-VL arrive au même 32 par des patchs de 16 px fusionnés 2×2. Il n'y a donc pas de « convergence sur 28 px » : Claude y reste seul, Gemini a quitté le pixel. C'est la taille du carré qui varie, jamais la nature : le jeton reste un vecteur. Le son se lit pareil — Whisper n'a aucun livre de codes.
Claude — platform.claude.com/docs · vision · OpenAI — developers.openai.com · images-vision · Qwen3-VL — huggingface.co · config.json
Ce n'est pas une loi, c'est un défaut économique. Chameleon, Emu3 et LongCat-Next discrétisent aussi l'entrée et le paient environ 1 % de performance sur OCRBench, DocVQA et MathVista. Leur contrepartie est architecturale : un seul espace, un seul softmax, et la génération devient possible plus tard sans refonte.
2. Ce que coûte une image, en 2026
Quatre modèles, trois arithmétiques différentes, et un piège : un chiffre donné en exemple par la documentation et un chiffre dérivé de la formule publiée n'ont pas le même statut. Les cases vides sont des cases où rien n'est publié — et tout ce tableau donne des conventions de facturation, pas des spécifications de tokeniseur : aucun fournisseur ne publie le sien. Pour ramener ces jetons à une page de texte ou à une seconde de vidéo, le calculateur de budget les met dans la même monnaie.
| modèle | la règle publiée | 200×200 | 1024×1024 |
|---|---|---|---|
| Claude | ⌈l/28⌉ × ⌈h/28⌉ | 64 publié | 1 369 dérivé |
| GPT-5.4 | patchs de 32 px, barème par cas | — | 1 229 publié |
| Gemini 3 | forfait par média, hors dimensions | 1 120 défaut | 1 120 défaut |
| Qwen3-VL | patch 16 px + fusion 2×2 | — | 1 024 dérivé |
Gemini 3 ne regarde plus les pixels
C'est un forfait par média et par niveau : 280, 560, 1 120 ou 2 240 jetons selon media_resolution, défaut 1 120. Le levier de budget n'est plus « redimensionner avant d'envoyer », c'est « choisir le niveau », réglable partie par partie dans un même prompt. Corollaire dérivé : la même image coûte 1 120 jetons envoyée comme image et 70 comme trame vidéo — un facteur 16, à mesurer soi-même plutôt qu'à croire.
Google — ai.google.dev · media-resolution
Les plafonds, qu'on découvre trop tard. Claude : 1 568 jetons en palier standard, 4 784 en haute résolution depuis Claude 4.7. OpenAI redimensionne au-delà d'un budget de 2 500 patchs, ce qui plafonne une image à environ 3 000 jetons — le seuil de 30 000 patchs est un seuil de rejet, pas de facturation. Et la méthode ne suit pas la génération du modèle : gpt-5 et gpt-5.1 sont en tuiles, gpt-5-mini et gpt-5-nano en patchs.
platform.claude.com · vision · developers.openai.com · images-vision
3. La famille discrète, et son dictionnaire qui s'évapore
Quand il faut un vocabulaire fini, deux façons de l'obtenir. Un dictionnaire explicite : une table de vecteurs apprise, dans laquelle on cherche le plus proche voisin. Un dictionnaire implicite : on arrondit chaque dimension du vecteur sur une petite grille de niveaux fixes, et le « vocabulaire » n'est plus qu'un décompte — le produit de ces niveaux. Rien n'est stocké, rien n'est appris.
| étape | ce qu'elle ajoute | le vocabulaire |
|---|---|---|
| VQ-VAE | plus proche voisin dans un dictionnaire appris en même temps que le modèle | explicite |
| VQGAN | on ajoute un juge qui distingue vrai et reconstruit : le décodeur produit des textures nettes au lieu du flou | explicite — 8 192 chez Chameleon |
| FSQ | arrondi de chaque dimension sur des niveaux fixes | implicite — (8,8,8,5,5,5) = 64 000 |
| LFQ | on ne garde que le signe de chaque canal | implicite — 2¹⁸ = 262 144 |
| BSQ | projection sur une hypersphère, puis binarisation par axe | implicite — aucune table à stocker |
Le mur du codebook, et comment on l'a contourné
Un dictionnaire explicite ne se remplit pas : au-delà de 2¹¹ codes, un VQ classique tombe sous 50 % d'utilisation et n'exploite jamais plus de 2¹⁰ mots utiles — le reste est mort. FSQ tient près de 100 % et égale VQ en qualité : FID d'échantillonnage MaskGIT sur ImageNet 256, 4,534 contre 4,509, moins de 1 % d'écart (le FID compare deux ensembles d'images, plus bas est meilleur). Et il y arrive sans les béquilles du VQ — ni perte d'engagement, ni re-seeding, ni pénalité d'entropie. Les tokeniseurs discrets de NVIDIA Cosmos sont en FSQ (8,8,8,5,5,5).
arxiv.org/html/2309.15505v2 · huggingface.co · Cosmos-Tokenizer
4. Ce que la quantification fait perdre
TokBench prend des images qui contiennent du texte, les fait passer par un tokeniseur puis par son décodeur, et mesure quelle part de ce texte reste lisible dans l'image reconstruite. Toutes tailles de texte confondues :
| tokeniseur | nature | texte encore lisible |
|---|---|---|
| VQGAN | discret | 8,22 % |
| Chameleon f16 | discret | 12,08 % |
| Open-MAGVIT2 | discret | 20,99 % |
| VAE de FLUX | continu | 86,42 % |
Un facteur d'environ 10, et jusqu'à 16 sur le petit texte
Meta l'écrit pour Chameleon : « A core weakness of our tokenizer is in reconstructing images with a large amount of text, therefore upper bounding the capability of our models ». Ce que le décodeur reconstruit n'est pas ce qu'il y avait : c'est du faux texte plausible, puisqu'il a été entraîné à produire des textures crédibles. La conclusion tient en une ligne — ne construis pas un modèle OCR sur un tokeniseur VQ.
TokBench · arxiv.org/pdf/2505.18142v2 · Chameleon · arxiv.org/html/2405.09818v1
5. Descendre à trente-deux jetons
TiTok recherche
La grille 2D est redondante : des carrés voisins encodent la même chose. TiTok la jette et fait passer l'image dans quelques vecteurs appris, en nombre fixé d'avance, qui deviennent la séquence. Une image 256×256 tient en 32 jetons discrets, contre plusieurs centaines pour une grille classique.
Le prix est là : le nombre de jetons ne dépend plus du contenu, et surtout aucun jeton ne correspond plus à un endroit de l'image — donc ni recadrage, ni édition locale, ni masque dans l'espace des jetons.
Troisième voie : générer en jetons continus, softmax remplacé par une tête de diffusion. C'est MAR recherche — les chiffres, et la nuance qu'on gomme toujours, sont à la question 2 de l'arbre de décision.