-
Imed KERAGHEL,
Publié le 27/02/2024
Ces dernières années, de nombreuses évolutions technologiques ont marqué notre quotidien et, désormais, l’image y tient une place prépondérante. Une quantité astronomique d’images alimente le Web, générée par les smartphones et relayées par les réseaux sociaux notamment. S’il est relativement facile d’indexer des textes et de les explorer grâce au traitement automatique du langage naturel, la tâche est beaucoup plus ardue lorsqu’il s’agit d’images, car les ordinateurs ont besoin de connaître leur contenu afin de pouvoir les indexer correctement.
La vision par ordinateur (computer vision en anglais) constitue le domaine de recherche qui traite de la façon dont les machines acquièrent une compréhension de haut niveau à partir d’images. Elle peut être aussi décrite comme une technologie de l’IA qui permet aux machines de voir et percevoir le monde réel de la même façon (ou presque) qu’un humain.
Les algorithmes utilisés en vision par ordinateur sont principalement fondés sur l’extraction et la reconnaissance de caractéristiques. Par exemple, si l’on nourrit un ordinateur avec des photos de voitures, il les analysera et détectera des caractéristiques communes à toutes les voitures comme les roues, les portes, etc.
Il créera ensuite un modèle capable d’analyser les images selon ces caractéristiques et d’identifier ainsi une voiture à chaque fois qu’une image en comportera.
Certaines technologies ont engendré une croissance considérable dans le domaine de la vision par ordinateur, à commencer par les réseaux de neurones convolutifs (CNN) qui étendent les capacités des machines dans un grand nombre de domaines : détection d’objets, reconnaissance d’images, etc.
Parallèlement, le succès fulgurant des transformers en traitement automatique du langage naturel a encouragé les chercheurs à étudier leur adaptation aux problématiques de la vision par ordinateur, ouvrant la voie au développement d’une nouvelle technologie : la Vision Transformers (ViT).
Un des défauts majeurs des CNN réside dans la manière dont les différentes couches de convolutions sont mutualisées. Elles perdent une partie de l’information en négligeant les relations spatiales entre les composantes d’une même image.
L’exemple ci-dessous illustre la façon dont les CNN ne parviennent pas en réalité à encoder complètement les informations spatiales. Ils recherchent la présence de certaines caractéristiques (comme les yeux) et se soucient peu de leur positionnement les unes par rapport aux autres. Pour un CNN, les deux pandas dans la figure ci-dessous sont équivalents et représentent le même panda.
Les ViT, en revanche, ont la capacité de pallier ce problème grâce à l’utilisation des embeddings de position qui permettent au modèle de connaître la position exacte de chaque partie de l’image (les plus curieux pourront consulter An Image is Worth 16×16 Words pour avoir plus d’information).
La Vision Transformers constitue l’une des architectures les plus modernes de transformers dans le domaine de la vision par ordinateur. Cette application peut apporter plusieurs contributions pour vos projets :
le modèle ViT permet de réduire le temps d’apprentissage de 80 % par rapport à une architecture CNN moderne. Il optimise les calculs et permet d’accélérer l’entraînement des modèles.
La performance de cette architecture et la rapidité de son entraînement a instauré une révolution comparée à ses prédécesseurs. Elle permet de réduire considérablement la capacité de calcul nécessaire pour le développement et de minimiser les coûts de maintenance. Cela entraîne également une diminution en matière de consommation d’énergie.
Un des défis majeurs de l’application de modèle transformers sur des images est l’application de mécanisme d’attention entre les différents pixels de chaque image.
Pour une image de 512×512 pixels, le modèle doit calculer l’attention pour 262 144 combinaisons possibles. Cette solution reste en réalité non envisageable, surtout si nous disposons d’un grand ensemble de données.
Grâce au modèle ViT, cela devient possible en proposant de couper l’image en mini-segments appelés patchs comme le présente la figure 1. Cette solution pratique permet d’accélérer les calculs et d’optimiser le temps d’exécution.
Comme nous l’avons dit précédemment, chaque image est découpée en mini-segments. La première chose à faire est de transformer chaque segment en vecteur qui sera introduit dans une couche de projection linéaire afin de créer des vecteurs appelé patch embedding. Les positions embeddings sont ensuite ajoutés à chaque vecteur, afin de permettre aux réseaux de connaître la position exacte de chaque segment dans l’image initiale. Sans cette partie, le réseau ne peut pas connaître l’ordre de la séquence, et donc il produira la même représentation pour deux segments identiques situés à deux endroits différents dans la même image. Le token de classe [CLS] est attaché à la séquence de vecteurs, il est ensuite utilisé par le perceptron multicouche (MLP) afin de faire la prédiction.
Cette séquence de vecteurs est ensuite introduite dans le transformer encoder (le bloc permet de calculer l’attention entre les différentes parties de l’image). La sortie de cette couche est envoyée vers un perceptron multicouche (MLP) pour réaliser la tâche de classification.