Réponse courte
CLIP est un réseau de neurones présenté par OpenAI le 5 janvier 2021, qui a appris à associer des images à du texte en étudiant 400 millions de paires d’images et de légendes tirées d’Internet. Comme il relie les images au langage ordinaire, vous pouvez lui demander de classer des photos dans presque n’importe quel ensemble de catégories simplement en écrivant le nom des catégories, sans l’entraîner d’abord sur des exemples étiquetés.
Question de suivi Comment utiliser CLIP sans entraîner votre propre modèle?
Hier, le 5 janvier 2021, OpenAI a présenté deux modèles qui relient le langage et les images. Le premier, DALL·E, dessine des images à partir d’un texte. L’autre, CLIP, fait un travail en quelque sorte inverse : il regarde une image et juge quel texte la décrit le mieux.
Cela semble modeste, mais cela change la façon dont la reconnaissance d’images peut fonctionner. La plupart des systèmes de vision apprennent une liste fixe de catégories à partir d’images que des personnes ont étiquetées à la main. CLIP, lui, a appris à partir des légendes qui accompagnent déjà les images partout sur le Web. Résultat : vous pouvez l’orienter vers une nouvelle tâche simplement en décrivant les catégories avec des mots.
Ce qu’OpenAI a publié
CLIP signifie Contrastive Language–Image Pre-training (préentraînement contrastif langage-image). OpenAI a publié un billet de blogue, un article de recherche et du code sur GitHub. L’article compte douze auteurs, menés par Alec Radford et Jong Wook Kim, dont le directeur scientifique d’OpenAI, Ilya Sutskever.
Le résultat phare concerne ImageNet, le célèbre banc d’essai d’environ 1,28 million de photos étiquetées réparties en 1 000 catégories. Sans avoir vu une seule de ces photos d’entraînement étiquetées, le meilleur modèle de CLIP égale l’exactitude de ResNet-50, un réseau standard entraîné directement sur elles. OpenAI parle de performance zero-shot (sans exemple) : accomplir une tâche sans aucun exemple de celle-ci, un peu comme GPT-2 et GPT-3 peuvent s’attaquer à des tâches de langage pour lesquelles ils n’ont jamais été entraînés.
L’équipe a testé CLIP sur plus de 30 jeux de données d’images existants, couvrant des tâches comme lire du texte dans des photos, reconnaître des actions dans des images vidéo, deviner où une photo a été prise et distinguer des objets très semblables.
Comment CLIP apprend à partir des légendes
CLIP comporte deux parties : un encodeur d’images, qui transforme une image en une liste de nombres, et un encodeur de texte, qui fait de même pour une phrase. L’entraînement rapproche les nombres d’une image et de sa vraie légende, et éloigne ceux des paires mal assorties. C’est ce que veut dire « contrastif » : apprendre en opposant les bonnes paires aux mauvaises.
Le jeu d’entraînement est un gigantesque questionnaire à choix multiples. Devant une image, CLIP doit trouver lequel de 32 768 extraits de texte tirés au hasard l’accompagnait vraiment. Pour gagner à ce jeu sur 400 millions de paires image-texte, il doit apprendre à quoi ressemble une immense variété d’objets, de scènes et de styles, et quels mots y sont associés.
OpenAI rapporte deux choix qui ont réduit le coût de calcul. Associer des légendes entières, au lieu d’essayer de les écrire mot par mot, s’est révélé de 4 à 10 fois plus efficace. Utiliser un Vision Transformer, un réseau pour les images bâti sur le même principe d’attention que les modèles GPT, a permis une économie supplémentaire d’environ trois fois. Malgré tout, le plus grand modèle s’est entraîné pendant deux semaines sur 256 processeurs graphiques.
Un exemple concret : classer avec des mots
Voici comment CLIP classe une photo sans aucun entraînement propre à la tâche :
- Choisissez vos catégories. Disons que vous voulez savoir si des images montrent un chien, un chat ou un lapin.
- Transformez chaque catégorie en légende. Le modèle suggéré par OpenAI est « une photo d’un chien », « une photo d’un chat », « une photo d’un lapin ».
- Encodez tout. L’encodeur de texte transforme chaque légende en nombres; l’encodeur d’images fait de même pour votre photo.
- Comparez. CLIP mesure à quel point les nombres de la photo sont proches de ceux de chaque légende.
- Choisissez la plus proche. La légende qui correspond le mieux devient la réponse.
Vous voulez une autre tâche, comme classer des tableaux selon leur style artistique, ou distinguer une rue ensoleillée d’une rue enneigée? Changez les légendes. Aucune nouvelle donnée d’entraînement n’est nécessaire.
À essayer : choisissez une photo dans votre téléphone et écrivez-lui trois légendes qui commencent par « une photo de », dont une seule est juste, plus une légende piège qui est presque juste. Demandez à un ami de les classer de la meilleure à la pire. Ce classement est exactement le jugement que fait CLIP, et la légende piège montre pourquoi la formulation compte.
Où il a du mal
OpenAI énumère des limites claires. CLIP s’en tire mal pour compter des objets et pour évaluer des distances, comme la distance jusqu’à la voiture la plus proche dans une image; dans les deux cas, il fait à peine mieux que le hasard. Il est plus faible que les systèmes spécialisés pour les distinctions très fines, comme les modèles de voitures, les variantes d’avions ou les espèces de fleurs. Il lit étonnamment bien le texte imprimé dans les images, mais n’atteint que 88 % sur les chiffres manuscrits, une tâche où les humains obtiennent environ 99,75 %.
La formulation compte aussi. La même tâche peut donner de meilleurs ou de moins bons résultats selon la façon dont les légendes sont rédigées; les utilisateurs devront donc peut-être procéder par essais et erreurs, ce qu’OpenAI appelle le « prompt engineering » (l’ingénierie de prompts).
Il y a aussi des risques sociaux. Comme n’importe qui peut définir les catégories, des étiquettes mal choisies peuvent produire des résultats nuisibles. Dans un test, quand des termes offensants figuraient parmi les choix, CLIP a placé des images de personnes de 0 à 20 ans dans ces catégories environ 32 % du temps; ajouter « enfant » comme choix a fait baisser ce taux sous les 9 %. OpenAI a aussi testé la reconnaissance de célébrités pour étudier les risques de surveillance, et a constaté que CLIP était utile, mais pas à la hauteur des systèmes commerciaux.
Pourquoi c’est important
CLIP s’attaque à trois problèmes qui freinent depuis longtemps la vision par ordinateur. Les jeux de données étiquetés coûtent cher : ImageNet a eu besoin de plus de 25 000 travailleurs pour annoter ses images. Les modèles standard sont étroits et doivent être réentraînés pour chaque nouvelle tâche. Et les modèles qui excellent aux bancs d’essai trébuchent souvent dans le monde réel. OpenAI soutient que, puisque CLIP ne s’entraîne jamais sur les données propres à un banc d’essai, ses résultats y reflètent mieux sa performance sur de nouveaux types d’images. Sur des croquis et d’autres ensembles de test difficiles, il comble une bonne partie de l’écart qui fait trébucher les modèles ImageNet ordinaires.
CLIP travaille aussi main dans la main avec DALL·E. OpenAI s’en est servi pour classer les dessins de DALL·E, et la MIT Technology Review rapporte que les résultats présentés étaient les 32 images par légende que CLIP jugeait les plus fidèles, et non des choix faits à la main. Sutskever a confié au magazine qu’il s’attend à ce que les futurs modèles comprennent à la fois le texte et les images, et que voir ce que signifient les mots devrait aider l’IA à mieux comprendre le langage.
Comment utiliser CLIP sans entraîner votre propre modèle?
La voie la plus simple est le code qu’OpenAI a publié sur GitHub, accessible depuis l’annonce. Le principe est celui de l’exemple concret : donnez à CLIP vos images et une liste de légendes, et il note à quel point chaque légende convient. Toute personne à l’aise avec un peu de Python peut s’en servir pour classer ses propres photos dans des catégories écrites en phrases simples, sans ensemble d’entraînement étiqueté.
Pour obtenir de bons résultats, suivez les leçons du billet d’OpenAI. Décrivez chaque catégorie comme le ferait une légende sur le Web, en commençant par « une photo de » ou une formule semblable. Essayez plusieurs formulations et gardez celle qui fonctionne le mieux sur une poignée d’images de test. Évitez les tâches que CLIP est connu pour mal faire, comme compter ou identifier de façon très fine.
Surtout, vérifiez les étiquettes que vous choisissez. Comme CLIP classera les images dans n’importe quelles catégories que vous lui donnez, le choix des catégories détermine à la fois son exactitude et ses biais. Testez-le sur des exemples variés avant de lui confier quoi que ce soit d’important.
Sources
- CLIP: Connecting Text and Images — OpenAI, 5 janvier 2021
- Learning Transferable Visual Models From Natural Language Supervision — Radford, Kim et al., OpenAI, 5 janvier 2021
- This avocado armchair could be the future of AI — MIT Technology Review (Will Douglas Heaven), 5 janvier 2021