Explication du nouveau modèle “Segment Anything” de Meta
Exemples de l’article de Meta.
La segmentation est la capacité de prendre une image et d'identifier les objets, les personnes ou tout ce qui nous intéresse. Cela se fait en identifiant quels pixels d'image appartiennent à quel objet, et c'est super utile pour des tonnes d'applications où vous avez besoin de savoir ce qui se passe, comme une voiture autonome sur la route identifiant d'autres voitures et piétons.
Nous savons également que l'incitation est une nouvelle compétence pour communiquer avec les IA.
Qu'en est-il de la segmentation avec prompts ?
La segmentation avec prompts est une nouvelle tâche qui vient d'être introduite avec un nouveau modèle d'IA étonnant par Meta ; SAM. SAM signifie “Segment Anything Model” et est capable de segmenter n'importe quoi après une invite de texte (un prompt).
C’est incroyable!
Exemple de l’article de Meta.
En un clic, vous pouvez segmenter n'importe quel objet de n'importe quelle photo ou vidéo !
Il s'agit du premier modèle de base pour cette tâche formé pour générer des masques pour presque tous les objets existants. C'est comme ChatGPT pour la segmentation des images, un modèle très général à peu près formé avec chaque type d'image et de vidéo avec une bonne compréhension de chaque objet. Et de même, il a des capacités d'adaptation pour des objets plus compliqués comme un outil ou une machine très spécifique. Cela signifie que vous pouvez l'aider à segmenter des objets inconnus via des invites sans réentraîner le modèle, ce qui s'appelle également “le transfert zéro coup”, ou "Zero-shot learning". Zéro comme dans ça n'a jamais vu ça à l'entraînement.
SAM est super excitant pour toutes les tâches liées à la segmentation avec des capacités incroyables et est open-source. Super prometteur pour la communauté de recherche et a des tonnes d'applications. Vous avez vu des résultats, et vous pouvez en voir plus en utilisant leur démo (lien en fin d’article) si vous le souhaitez. Nous avons également eu un aperçu rapide de ce que c'est, mais comment ça marche, et pourquoi est-ce si bon ?!
Pour répondre à la deuxième question de savoir pourquoi c'est si bon, nous devons revenir à la racine de tous les systèmes d'IA actuels : les données. C'est si bon parce que nous l'avons formé avec un nouvel ensemble de données, que je cite, est "le plus grand ensemble de données de segmentation jamais créé".
En effet, le jeu de données appelé Segment Anything 1 Billion a été construit spécifiquement pour cette tâche et est composé de 1,1 milliard de masques de segmentation de haute qualité à partir de 11 millions d'images. Cela représente environ 400 fois plus de masques que n'importe quel ensemble de données de segmentation existant à ce jour.
C'est énorme et de très haute qualité avec des images en très haute définition.
Et c'est la recette du succès. Toujours plus de données et une bonne curation.
Outre les données, que la plupart des modèles utilisent de toute façon, voyons comment le modèle fonctionne et comment il implémente le prompting dans une tâche de segmentation, car tout est lié.
Image de l’article de Meta.
En effet, le jeu de données a été construit en utilisant le modèle lui-même de manière itérative (figure ci-dessus, c)). Comme vous pouvez le voir à droite, ils utilisent le modèle pour annoter les données, former davantage le modèle et répéter. En effet, nous ne pouvons pas simplement trouver des images avec des masques autour d'objets sur Internet.
Au lieu de cela, nous commençons par former notre modèle avec une aide humaine pour corriger les masques prédits. Nous répétons ensuite avec de moins en moins d'implication humaine, principalement pour les objets que le modèle ne voyait pas auparavant.
Mais où le prompt est-il utilisé ? Il est utilisé pour dire ce que nous voulons segmenter dans l'image.
Comme nous en avons parlé dans mon récent épisode de podcast avec Sander Schulhoff, fondateur de learn prompting, un prompt peut être n'importe quoi. Dans ce cas, il s'agit soit de texte, soit d'informations spatiales comme une boîte approximative autout d’un objet ou juste un point sur l'image, décrivant essentiellement ce que vous voulez ou le montrant.
Ensuite, nous utilisons un encodeur d'image, comme pour toutes les tâches de segmentation, et un encodeur de prompt, comme illustré dans la figure ci-dessus, b). L'encodeur d'image sera similaire à la plupart de ceux que j'ai déjà couverts dans le blogue, où nous prenons l'image et en extrayons les informations les plus précieuses à l'aide d'un réseau de neurones.
Ici, la nouveauté est notre encodeur de prompt. Avoir cet encodeur d'invite séparé de notre encodeur d'image est ce qui rend l'approche si rapide et réactive puisque nous pouvons simplement traiter l'image une fois, puis itérer les invites pour segmenter plusieurs objets, comme vous pouvez le voir par vous-même dans leur démo en ligne.
Vue générale du modèle. Image de l’article de Meta.
L'encodeur d'image est un autre transformeur adapté à la vision (ou ViT) sur lequel vous pouvez en savoir plus dans ma vidéo sur les transformeurs en vision si vous le souhaitez. Il produira nos “embeddings”, qui sont nos informations extraites.
Ensuite, nous utiliserons ces informations avec nos prompts pour générer une segmentation.
Mais comment pouvons-nous combiner nos invites textuelles et spatiales à ces “embeddings” ? Nous représentons les invites spatiales à l'aide d'encodages de position, en donnant essentiellement les informations spatiales telles quelles. Ensuite, pour le texte, c'est simple ; nous utilisons CLIP comme toujours, un modèle capable d'encoder du texte de la même manière que les images sont encodées. CLIP est incroyable pour cette application, car il a été formé avec des tonnes de paires de légendes et d'images pour encoder les deux de manière similaire. Ainsi, il s'agit d'un pont pour comparer le texte et les images.
Et enfin, nous devons produire une bonne segmentation de toutes ces informations. Cela peut être fait en utilisant n'importe quel décodeur, qui est, tout simplement, le réseau inverse de l'encodeur d'image, prenant des informations condensées et recréant une image, bien que maintenant nous ne voulions créer que des masques que nous remettions sur l'image initiale, donc c'est beaucoup plus facile que de générer une nouvelle image comme le font DALLE ou MidJourney. DALLE utilise un modèle de diffusion, mais dans notre cas ici, ils ont décidé d'opter pour une architecture similaire à l'encodeur d'image : un décodeur basé sur un transformeur de vision qui fonctionne très bien.
Et voilà !
Il s'agissait d'un simple aperçu du fonctionnement du nouveau modèle SAM de Meta. Bien sûr, il n'est pas parfait et a des limites comme des structures fines manquantes ou des petits composants parfois déconnectés (voir le poteau au centre de l’image ci-dessous).
Image de l’article de Meta.
C’est tout de même extrêmement puissant et un énorme pas en avant, introduisant une nouvelle tâche intéressante et hautement applicable. Je vous invite à lire l'excellent article de blogue et la publication de Meta pour en savoir plus sur le modèle ou l'essayer directement avec leur démo ou leur code. Tous les liens sont dans les références ci-dessous.
J'espère que vous avez apprécié cet article, et je vous verrai la prochaine fois avec un autre papier incroyable!
Références
►Publication: Kirillov et al., Meta, (2023): Segment Anything, https://ai.facebook.com/research/publications/segment-anything/
►Démo: https://segment-anything.com/demo
►Code: https://github.com/facebookresearch/segment-anything
►Jeu de données: https://segment-anything.com/dataset/index.html