Image Captioning (Légende Automatique d’Images)
L’image captioning est la tâche de génération automatique d’une description textuelle en langage naturel pour une image donnée. Elle nécessite à la fois la compréhension visuelle (reconnaître les objets, leurs attributs et leurs relations) et la génération linguistique (produire une phrase syntaxiquement et sémantiquement correcte). C’est l’une des tâches fondamentales du multimodal learning, à l’intersection de la vision par ordinateur et du traitement du langage naturel.
- Définition
- Génération automatique d’une description textuelle pour une image
- Pipeline classique
- Encodeur visuel → Connecteur → Décodeur de langage
- Modèles phares
- BLIP-2, CoCa, GIT, Flamingo, LLaVA, GPT-5.4, Claude Opus 4.6
- Datasets de référence
- MS-COCO Captions, Flickr30K, NoCaps, TextCaps
- Métriques
- BLEU, METEOR, CIDEr, SPICE, CLIPScore
Comment fonctionne l’image captioning
Générer la légende d’une image est un processus en deux temps qui reflète la manière dont un humain décrirait une photo. D’abord, il faut « voir » l’image : identifier les objets présents, leurs propriétés (couleur, taille, position) et leurs interactions (un homme qui lance un ballon, un chat assis sur un canapé). Ensuite, il faut « formuler » : traduire cette compréhension visuelle en une phrase naturelle et cohérente.
Techniquement, cela se traduit par un pipeline encodeur-décodeur : un encodeur visuel extrait les features de l’image, et un décodeur de langage génère le texte mot par mot, conditionné sur ces features visuelles.
L’évolution des approches
Ère CNN-RNN (2015-2020)
Les premières méthodes de deep learning pour l’image captioning combinaient un CNN (ResNet, VGG, Inception) comme encodeur visuel et un RNN (LSTM, GRU) comme décodeur de texte. Le modèle pionnier « Show and Tell » (Vinyals et al., 2015) utilisait un Inception CNN pour encoder l’image en un vecteur, puis un LSTM pour générer la légende mot par mot.
« Show, Attend and Tell » (Xu et al., 2015) a introduit le mécanisme d’attention visuelle : à chaque mot généré, le décodeur LSTM « regarde » les régions pertinentes de l’image. Pour générer le mot « chien », le modèle concentre son attention sur la région contenant le chien. Cette attention visuelle a été une avancée majeure, améliorant significativement la qualité et la pertinence des descriptions.
Les limites de cette ère : les LSTM peinent avec les dépendances longues (phrases de plus de 15-20 mots), les CNN captent mal les relations spatiales complexes entre objets, et les descriptions générées sont souvent génériques (« a man standing next to a dog »).
Ère Transformer (2020-2023)
L’arrivée des Transformers en vision a transformé l’image captioning. Les encodeurs visuels sont passés des CNN aux Vision Transformers, et les décodeurs des LSTM aux décodeurs Transformer autorégressifs.
Les modèles de cette génération incluent :
OSCAR (Microsoft, 2020). Utilise des tags d’objets comme « ancres » pour aligner les représentations visuelles et textuelles, améliorant la fidélité des descriptions.
VinVL (Microsoft, 2021). Améliore l’extraction de features visuelles en pré-entraînant un détecteur d’objets sur un dataset massif, fournissant des représentations visuelles plus riches au décodeur.
GIT (Microsoft, 2022). Simplifie l’architecture en utilisant directement un ViT comme encodeur et un décodeur Transformer pour la génération, sans module intermédiaire complexe. Atteint des performances compétitives avec BLIP-2 sur MS-COCO.
CoCa (Google, 2022). Contrastive Captioner combine un objectif contrastif (alignement image-texte, comme CLIP) et un objectif génératif (captioning) dans un seul modèle. Cette approche produit des représentations visuelles utilisables à la fois pour le retrieval et la génération.
Ère VLM (2023-présent)
La génération actuelle utilise des Vision Language Models complets. BLIP-2 (Salesforce, ICML 2023) connecte un encodeur visuel gelé à un LLM gelé via un Q-Former (un petit Transformer cross-attentif). Le Q-Former apprend à extraire les informations visuelles les plus pertinentes pour le LLM, qui génère ensuite la description.
Les VLM généralistes (GPT-5.4, Claude Opus 4.6, Gemini 3.1 Pro) font aussi du captioning, mais en tant que capacité parmi beaucoup d’autres. Leur avantage : ils génèrent des descriptions plus riches, plus longues et plus contextualisées que les modèles spécialisés, car ils s’appuient sur les connaissances du monde embarquées dans le LLM.
Les modèles d’image captioning de référence
| Modèle | Année | Architecture | Innovation clé | Force |
|---|---|---|---|---|
| Show, Attend and Tell | 2015 | CNN + LSTM + Attention | Attention visuelle spatiale | Pionnier, conceptuellement clair |
| GIT | 2022 | ViT + Transformer décodeur | Simplicité, pas de module d’objets | Bon rapport performance/complexité |
| CoCa | 2022 | ViT + décodeur dual (contrastif + génératif) | Objectif unifié contrastif + captioning | Polyvalent (retrieval + génération) |
| BLIP-2 | 2023 | ViT gelé + Q-Former + LLM gelé | Pont léger entre encodeur et LLM gelés | Efficace, modulaire |
| Flamingo | 2022 | ViT + Perceiver + Chinchilla LLM | Few-shot multimodal via contexte | Adaptation rapide sans fine-tuning |
| LLaVA | 2023 | CLIP ViT + MLP + Llama/Vicuna | Projection linéaire simple | Open source, facilement reproductible |
| GPT-5.4 / Claude / Gemini | 2026 | VLM propriétaires | Intégration end-to-end optimisée | Descriptions les plus riches et contextualisées |
Classement pratique sur MS-COCO. En termes de qualité brute sur MS-COCO Karpathy test split, le classement est approximativement : BLIP-2 ≥ GIT ≈ CoCa > BLIP > modèles CNN-RNN classiques. Les VLM généralistes (GPT-5.4, Claude) ne sont pas directement comparés sur MS-COCO car ils produisent des descriptions beaucoup plus longues et détaillées que le format attendu du benchmark.
Datasets de référence
| Dataset | Images | Légendes | Spécificité |
|---|---|---|---|
| MS-COCO Captions | ~123 000 | 5 par image | Le benchmark standard, scènes quotidiennes |
| Flickr30K | 31 000 | 5 par image | Plus diversifié que COCO en termes d’activités |
| NoCaps | 15 100 | 10 par image | Évalue la généralisation à des objets non vus dans COCO |
| TextCaps | 28 408 | 5 par image | Images contenant du texte (panneaux, enseignes) |
| VizWiz | ~39 000 | 5 par image | Photos prises par des personnes aveugles (basse qualité, floues) |
MS-COCO Captions reste le benchmark dominant. La partition Karpathy (113 287 images d’entraînement, 5 000 de validation, 5 000 de test) est le standard de facto pour les comparaisons. Cependant, ses légendes courtes (~10 tokens) ne reflètent pas la richesse des descriptions que les modèles modernes peuvent produire.
Métriques d’évaluation
Évaluer automatiquement la qualité d’une légende est un problème en soi. Plusieurs métriques sont utilisées, chacune avec ses forces et faiblesses.
BLEU (Bilingual Evaluation Understudy). Mesure la précision des n-grammes de la légende générée par rapport aux références humaines. BLEU-4 (4-grammes) est le plus courant. Simple mais corrèle faiblement avec le jugement humain sur les légendes créatives.
METEOR. Améliore BLEU en prenant en compte les synonymes, la racinisation (stemming) et l’ordre des mots. Meilleure corrélation avec le jugement humain que BLEU.
CIDEr (Consensus-based Image Description Evaluation). Conçu spécifiquement pour le captioning. Mesure la similarité TF-IDF entre la légende générée et les références, en pondérant les mots rares plus fortement. C’est la métrique la plus utilisée pour le classement des modèles sur MS-COCO.
SPICE (Semantic Propositional Image Caption Evaluation). Convertit les légendes en graphes de scène (objets, attributs, relations) et compare les graphes. Capture mieux la fidélité sémantique que les métriques basées sur les n-grammes.
CLIPScore. Utilise le modèle CLIP pour mesurer la similarité entre l’image et la légende générée dans l’espace d’embedding. Avantage : ne nécessite pas de légendes de référence. De plus en plus utilisé comme métrique de filtrage et d’évaluation.
Applications concrètes
Accessibilité. Générer des descriptions alternatives (alt-text) pour les images web, permettant aux personnes malvoyantes de comprendre le contenu visuel via des lecteurs d’écran. C’est l’une des applications les plus directement utiles de l’image captioning.
Indexation et recherche. Les légendes automatiques enrichissent les métadonnées des bases d’images, améliorant la recherche textuelle dans les catalogues de photos, les bibliothèques numériques et les systèmes de gestion de contenu.
Imagerie médicale. Générer des rapports préliminaires à partir de radiographies, IRM ou coupes histologiques. Le captioning médical est un domaine de recherche actif, avec des modèles comme MedBLIP adaptant BLIP-2 à la terminologie radiologique. L’objectif n’est pas de remplacer le radiologue mais de lui fournir un premier jet à vérifier et compléter.
Génération de contenu. Les créateurs de contenu utilisent le captioning automatique pour générer des descriptions de produits, des légendes de réseaux sociaux, ou des métadonnées SEO pour les images.
Surveillance et sécurité. Décrire automatiquement les événements dans des flux vidéo de surveillance : « une personne traverse la rue », « un véhicule s’arrête devant le bâtiment ». C’est lié au video captioning, qui étend le captioning à la dimension temporelle.
Annotation de datasets. Le captioning automatique est utilisé pour annoter à grande échelle des datasets d’images, réduisant le besoin d’annotation humaine. Les datasets comme LAION-5B s’appuient sur les alt-texts du web (une forme de captioning implicite) complétés par des descriptions générées par des modèles.
Image captioning dédié vs. VLM généraliste
Une question légitime se pose : faut-il encore utiliser un modèle de captioning spécialisé (BLIP-2, GIT) quand un VLM comme Claude Opus 4.6 ou GPT-5.4 fait la même chose et bien plus ?
Avantages des modèles spécialisés. Ils sont plus légers (BLIP-2 OPT-2.7B tourne sur un GPU de 8 Go), plus rapides (inférence en quelques dizaines de millisecondes), et moins chers à déployer à grande échelle. Pour un pipeline de production qui doit captionner des millions d’images (enrichissement de base de données, génération d’alt-text, annotation automatique), un modèle spécialisé est le choix pragmatique.
Avantages des VLM généralistes. Ils produisent des descriptions plus riches, plus contextualisées et multilingues. Ils peuvent suivre des instructions complexes (« Décris cette image en te concentrant sur l’architecture du bâtiment », « Génère un alt-text accessible de 50 mots maximum »). Pour des tâches ponctuelles ou des usages nécessitant de la flexibilité, les VLM sont supérieurs.
L’approche hybride. De nombreuses équipes utilisent un modèle spécialisé (BLIP-2) pour le captioning en masse, puis un VLM (Claude, GPT-5.4) pour le contrôle qualité et l’enrichissement des descriptions les plus importantes. Cette approche combine efficacité et qualité.
Défis actuels
Hallucination d’objets. Les modèles « inventent » parfois des objets absents de l’image. Un modèle peut décrire un skateboard dans une scène de route de montagne, ou mentionner une personne dans un paysage vide. Ce problème est particulièrement prononcé avec les modèles entraînés sur MS-COCO, qui apprennent des co-occurrences statistiques (« route » → souvent « voiture », même si aucune voiture n’est présente).
Diversité des descriptions. Les modèles tendent à produire des descriptions « moyennes » qui reflètent la distribution la plus probable dans les données d’entraînement. Ils décrivent rarement l’ambiance, l’éclairage ou les émotions. Les approches par reinforcement learning (RL) et les VLM avec instructions détaillées améliorent la diversité.
Captioning multilingue. La majorité des modèles et datasets sont en anglais. Le captioning en français, arabe, chinois ou dans des langues à faibles ressources reste significativement moins performant, principalement par manque de données d’entraînement de qualité.
Biais. Les descriptions générées reflètent les biais des données d’entraînement : stéréotypes de genre (femmes associées à la cuisine, hommes au sport), sous-représentation de certaines cultures et géographies, descriptions différentes selon le ton de peau des sujets. Des travaux récents évaluent et corrigent ces biais, mais le problème reste ouvert.
Évaluation. Aucune métrique automatique ne capture pleinement la qualité d’une légende. BLEU et CIDEr favorisent les descriptions courtes et « sûres ». CLIPScore ne détecte pas les erreurs factuelles fines. L’évaluation humaine est coûteuse. La communauté cherche encore la métrique idéale.
Utiliser l’image captioning en pratique
Avec BLIP-2 via Hugging Face
from transformers import Blip2Processor, Blip2ForConditionalGeneration
from PIL import Image
import torch
processor = Blip2Processor.from_pretrained("Salesforce/blip2-opt-2.7b")
model = Blip2ForConditionalGeneration.from_pretrained(
"Salesforce/blip2-opt-2.7b",
torch_dtype=torch.float16,
device_map="auto"
)
image = Image.open("photo.jpg").convert("RGB")
# Captioning inconditionnel
inputs = processor(images=image, return_tensors="pt").to("cuda", torch.float16)
generated_ids = model.generate(**inputs, max_new_tokens=50)
caption = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(caption)
# Captioning conditionnel (prompt guidé)
inputs = processor(
images=image,
text="Question: Describe this image in detail. Answer:",
return_tensors="pt"
).to("cuda", torch.float16)
generated_ids = model.generate(**inputs, max_new_tokens=100)
detailed = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(detailed)
Salesforce/blip2-opt-2.7b tourne sur un GPU de 8 Go. Pour des descriptions plus riches, blip2-opt-6.7b-coco est plus précis mais nécessite 16 Go de VRAM. Pour la meilleure qualité absolue (descriptions longues et détaillées), utilisez un VLM comme Claude Opus 4.6 ou GPT-5.4 via leur API.
Questions fréquentes sur l’image captioning
Quelle est la différence entre image captioning et VQA ?
L’image captioning génère une description libre de l’image, sans question spécifique. Le Visual Question Answering (VQA) répond à une question précise sur l’image (« Quel est la couleur du chapeau ? »). Les deux tâches utilisent des architectures similaires (encodeur visuel + décodeur de langage), mais le VQA prend une question en entrée additionnelle qui conditionne la réponse. Les VLM modernes gèrent les deux tâches avec la même architecture, en variant simplement le prompt.
L’image captioning fonctionne-t-il en français ?
Les modèles spécialisés (BLIP-2, GIT) sont entraînés principalement sur des données anglaises. Pour du captioning en français, vous avez trois options : utiliser un VLM multilingue (Claude Opus 4.6, Gemini 3.1 Pro) qui génère nativement en français, fine-tuner un modèle open source sur des données en français (comme un sous-ensemble de CC3M traduit), ou générer en anglais puis traduire. L’option VLM commercial est la plus simple et la plus qualitative.
Comment réduire les hallucinations dans les légendes ?
Les hallucinations (objets inventés, attributs incorrects) sont un problème majeur. Pour les réduire : utilisez un prompt explicite demandant de ne décrire que ce qui est visible, baissez la température de génération (moins créatif mais plus fidèle), utilisez le beam search avec un beam size modéré (3-5), et si possible, fine-tunez le modèle sur votre domaine spécifique avec des légendes vérifiées. CLIPScore peut aussi servir de filtre pour rejeter les légendes trop éloignées de l’image.
MS-COCO est-il encore le bon benchmark pour évaluer le captioning ?
MS-COCO reste le standard de facto, mais il a des limites : ses légendes sont courtes (~10 tokens), les scènes sont centrées sur des objets communs, et les métriques automatiques (BLEU, CIDEr) favorisent les descriptions génériques. NoCaps est un meilleur test de généralisation (objets nouveaux), et TextCaps évalue la capacité à lire du texte dans les images. Pour les modèles VLM récents, les benchmarks multimodaux complets (MMMU, MMBench) sont plus représentatifs.
L’image captioning peut-il remplacer l’annotation humaine ?
Pour la génération de métadonnées à grande échelle (alt-text, indexation), oui, le captioning automatique est suffisant et massivement utilisé. Pour l’annotation de datasets d’entraînement, il sert de première passe qui est ensuite vérifiée et corrigée par des humains. Pour les applications critiques (imagerie médicale, juridique), l’annotation humaine reste indispensable, avec le captioning automatique comme outil d’assistance.