CLIP (Contrastive Language-Image Pre-training)
CLIP est le modèle d’OpenAI qui projette les images et le texte dans un même espace, ce qui permet de classer les images à l’aide d’étiquettes en texte brut. Découvre son entraînement et le fonctionnement du zero-shot.
CLIP (préentraînement contrastif langage-image) est un modèle d’OpenAI qui apprend à associer les images à leurs descriptions textuelles. Il combine un encodeur d’images et un encodeur de texte, entraînés ensemble pour que l’image et la légende qui la décrit correspondent à des vecteurs proches dans un même espace d’intégration. Entraîné sur 400 millions de paires image-légende recueillies sur Internet, CLIP peut classer des images dans des catégories indiquées uniquement sous forme de texte, sans aucun exemple annoté pour ces catégories : c’est ce qu’on appelle l’apprentissage zéro-shot. Dans l’article de 2021, son meilleur modèle a atteint une précision top-1 zéro-shot de 76,2 % sur ImageNet, égalant le ResNet-50 entièrement supervisé d’origine sans utiliser aucune des 1,28 million d’images annotées qui avaient servi à entraîner ResNet-50.
Comment CLIP est entraîné#
CLIP comporte deux encodeurs. L’encodeur d’images est un ResNet ou un Vision Transformer (ViT), et l’encodeur de texte est un Transformer à 12 couches et 63 millions de paramètres dans sa version de base. Une projection linéaire transforme la sortie de chaque encodeur dans l’espace partagé, où chaque vecteur est normalisé à une longueur unitaire.
L’entraînement repose sur l’apprentissage contrastif appliqué à des lots de 32 768 paires image-légende. Pour un lot de N paires, CLIP calcule la similarité cosinus de chaque image avec chaque légende, ce qui donne une matrice N×N dont la diagonale contient les vraies paires. Une fonction de perte d’entropie croisée avec softmax, appliquée à chaque ligne, demande à chaque image de choisir sa légende parmi N ; une seconde fonction de perte appliquée à chaque colonne demande à chaque légende de choisir son image. Une température apprise met à l’échelle les similarités avant le softmax.
Comme les légendes sont des textes libres, CLIP apprend à partir de tout ce que le Web décrit, notamment des objets, des scènes, des styles artistiques, du texte dans les images et des actions, au lieu d’une liste de classes fixe.
Classification zéro-shot#
Pour classer une image, CLIP transforme chaque étiquette candidate en une courte phrase, comme « une photo d’un chien », transforme l’image en représentation et choisit l’étiquette ayant la plus forte similarité cosinus. La formulation de l’invite compte : l’article indique que le seul modèle « A photo of a {label}. » a amélioré de 1,3 % la précision sur ImageNet, et que la moyenne des représentations textuelles de 80 modèles a apporté 3,5 % de plus. Le pipeline Hugging Face Transformers ci-dessous encadre chaque étiquette avec le modèle « This is a photo of {}. » et exécute le modèle ViT-B/32 d’origine :
from transformers import pipeline
# Load OpenAI's CLIP ViT-B/32 for zero-shot image classification
classifier = pipeline("zero-shot-image-classification", model="openai/clip-vit-base-patch32")
# The classes are free-form text, chosen at inference time
labels = ["a city bus", "a tram", "a delivery truck", "a bicycle"]
predictions = classifier("https://ultralytics.com/images/bus.jpg", candidate_labels=labels)
# Scores are a softmax over the image's similarity to each caption
for prediction in predictions:
print(f"{prediction['label']}: {prediction['score']:.3f}")Il affiche a city bus: 0.657, a tram: 0.341, a delivery truck: 0.001 et a bicycle: 0.000. Le tramway, autre grand véhicule de transport de passagers, obtient presque toute la probabilité restante ; pour utiliser un nouvel ensemble d’étiquettes, il suffit de fournir une nouvelle liste de chaînes.
Applications concrètes#
- Recherche sémantique : les collections d’images sont transformées en représentations une seule fois et stockées dans une base de données vectorielle. Une requête textuelle comme « baskets rouges sur un plancher en bois » est transformée au moment de la recherche et comparée aux images ; celles-ci sont ainsi retrouvées par leur contenu, sans étiquettes manuelles.
- Génération texte vers image : Stable Diffusion 1.x conditionne son générateur d’images avec les représentations textuelles de CLIP ViT-L/14, et la similarité CLIP sert largement à évaluer la fidélité d’une image générée à son invite.
- Détection à vocabulaire ouvert : les modèles YOLO-World de Tencent AI Lab, disponibles dans le paquet Ultralytics, encodent les noms de classes transmis à
set_classesavec l’encodeur de texte ViT-B/32 de CLIP. Un détecteur entraîné une seule fois peut ainsi repérer des objets à partir de noms comme « sac à dos rouge » ou « chariot élévateur ». OWLv2 de Google s’appuie sur les encodeurs d’image et de texte préentraînés de CLIP. Le classement VLM le compare à d’autres détecteurs à vocabulaire ouvert et à des VLM sur des jeux de données de détection du monde réel. - Encodeurs visuels pour les VLM : de nombreux modèles vision-langage partent d’un encodeur d’images CLIP préentraîné. LLaVA, par exemple, transmet les caractéristiques de CLIP ViT-L/14 à un modèle de langage.
- Filtrage de jeux de données : les grands jeux de données image-texte ouverts, comme LAION-5B, ne conservent que les paires du Web dont la similarité image-texte CLIP dépasse un seuil, supprimant ainsi les légendes qui ne décrivent pas leur image.
CLIP et les approches apparentées#
- Classificateurs par apprentissage supervisé : un classificateur standard possède une sortie par classe d’entraînement et ne peut pas évaluer une classe qu’il n’a jamais rencontrée. Le « classificateur » de CLIP est l’ensemble des représentations textuelles ; il change donc lorsque les étiquettes changent.
- SigLIP : la variante de Google remplace le softmax appliqué à l’ensemble du lot de CLIP par une fonction de perte sigmoïde qui évalue chaque paire image-texte indépendamment. Elle utilise moins de mémoire et fonctionne mieux avec de petits lots.
- Apprentissage contrastif auto-supervisé : des méthodes comme SimCLR comparent deux versions augmentées d’une même image et apprennent à partir des images seules. CLIP établit des contrastes entre deux modalités, ce qui lie ses caractéristiques d’image aux mots.
- VLM génératifs : CLIP évalue la similarité entre images et textes ; il ne peut ni rédiger une légende ni répondre à une question. Les modèles génératifs associent un modèle de langage à un encodeur d’images, souvent celui de CLIP.
Limites#
La précision zéro-shot de CLIP baisse pour les catégories fines comme les modèles d’avion ou de voiture, pour le comptage d’objets et pour les tâches abstraites comme l’estimation des distances. Il apprend également les biais des légendes du Web. Comme CLIP a appris à lire le texte dans les images, celui-ci peut le tromper : dans les recherches d’OpenAI sur les neurones multimodaux, une pomme portant une étiquette manuscrite « iPod » a été classée comme un iPod.










