Regardez la vidéo !

Exemples de segmentation produits par le modèle SAM.
La segmentation consiste à prendre une image et à reconnaître les objets, les personnes ou tout autre élément qui nous intéresse. Pour y arriver, on détermine quels pixels de l’image appartiennent à quel objet. C’est extrêmement utile pour une tonne d’applications qui doivent comprendre ce qui se passe, comme une voiture autonome qui repère les autres voitures et les piétons sur la route.
Nous savons aussi que le prompting est une nouvelle compétence pour communiquer avec les IA.
Mais qu’est-ce que la segmentation guidée par prompts ?
Il s’agit d’une nouvelle tâche introduite avec un incroyable modèle d’IA de Meta, SAM. SAM signifie Segment Anything Model et peut segmenter n’importe quoi en suivant un prompt.
Aujourd’hui, nous lançons le Segment Anything Model (SAM), une étape vers le premier modèle de fondation pour la segmentation d’images.
SAM peut segmenter en un clic n’importe quel objet dans n’importe quelle photo ou vidéo, en plus d’effectuer un transfert zero-shot vers d’autres tâches de segmentation ➡️ https://t.co/qYUoePrWVi pic.twitter.com/zX4Rxb5Yfo
• Meta AI (@MetaAI) 5 avril 2023
C’est génial, non ?!

Exemple de segmentation produit par le modèle SAM.
En un clic, vous pouvez segmenter n’importe quel objet dans n’importe quelle photo ou vidéo !
Il s’agit du premier modèle de fondation pour cette tâche, entraîné à générer des masques pour presque tous les objets qui existent. C’est un peu le ChatGPT de la segmentation d’images : un modèle très général entraîné avec pratiquement tous les types d’images et de vidéos, qui possède une bonne compréhension de chaque objet. Comme ChatGPT, il peut aussi s’adapter à des objets plus complexes, par exemple un outil ou une machine très précise. Vous pouvez donc l’aider à segmenter des objets inconnus avec des prompts sans réentraîner le modèle, ce que nous appelons le transfert zero-shot. « Zero-shot » signifie qu’il n’a jamais vu cet objet pendant l’entraînement.
SAM est extrêmement intéressant pour toutes les tâches liées à la segmentation. Il offre des capacités incroyables et son code source est ouvert. Il est très prometteur pour la communauté de recherche et possède une tonne d’applications. Vous avez vu les résultats, et vous trouverez le code et des exemples dans le répertoire officiel. Nous avons aussi survolé ce qu’est SAM, mais comment fonctionne-t-il et pourquoi est-il aussi bon ?!
Pour répondre à la deuxième question, celle de savoir pourquoi il est aussi bon, nous devons revenir à la base de tous les systèmes d’IA actuels : les données. Il est aussi bon parce que nous l’avons entraîné avec un nouveau jeu de données qui est, je cite, « le plus grand jeu de données de segmentation jamais créé ».


Statistiques du jeu de données Segment Anything 1 Billion. Image tirée de l’article de blogue de Meta.
En effet, le jeu de données appelé Segment Anything 1 Billion a été créé précisément pour cette tâche et contient 1.1 milliard de masques de segmentation de grande qualité tirés de 11 millions d’images. Cela représente environ 400 fois plus de masques que n’importe quel jeu de données de segmentation existant à ce jour.
C’est énorme, et les données sont d’excellente qualité avec des images en très haute définition.
Voilà la recette du succès. Toujours plus de données et une bonne curation.
En dehors des données, que la plupart des modèles utilisent de toute façon, voyons comment fonctionne le modèle et comment il intègre le prompting à une tâche de segmentation, puisque tout est lié.

Image tirée de l’article de recherche de Meta.
En effet, le jeu de données a été bâti de façon itérative avec le modèle lui-même (figure ci-dessus, c)). Comme vous pouvez le voir à droite, les chercheurs utilisent le modèle pour annoter les données, poursuivent son entraînement, puis recommencent. C’est nécessaire parce que nous ne pouvons pas simplement trouver sur Internet des images avec des masques autour des objets.
Ils commencent plutôt par entraîner le modèle avec l’aide d’humains qui corrigent les masques prédits. Ils répètent ensuite le processus avec de moins en moins d’intervention humaine, principalement pour les objets que le modèle n’avait jamais vus.
[
Louis-François Bouchard’s Weekly AI Digest | Substack
](https://louisbouchard.substack.com/)
Mais où utilise-t-on les prompts ? Ils servent à indiquer ce que nous voulons segmenter dans l’image.
Comme nous en avons discuté dans mon récent épisode de balado avec Sander Schulhoff, fondateur de Learn Prompting, un prompt peut être n’importe quoi. Ici, il s’agit soit de texte, soit de renseignements spatiaux, comme une boîte approximative ou un simple point sur l’image. Autrement dit, vous demandez ce que vous voulez ou vous le montrez.
Nous utilisons ensuite un encodeur d’image, comme dans toutes les tâches de segmentation, et un encodeur de prompt, comme le montre la figure ci-dessus, b). L’encodeur d’image ressemble à la plupart de ceux que j’ai déjà présentés sur la chaîne. Nous prenons l’image et en extrayons l’information la plus importante à l’aide d’un réseau neuronal.
La nouveauté, ici, est l’encodeur de prompt. Le fait de le séparer de l’encodeur d’image rend l’approche aussi rapide et réactive. Nous pouvons traiter l’image une seule fois, puis essayer différents prompts pour segmenter plusieurs objets, comme vous pouvez le constater dans leur démo en ligne.

Survol du Segment Anything Model. Image tirée de l’article de blogue de Meta.
L’encodeur d’image est un autre Vision Transformer, ou ViT, dont vous pouvez découvrir le fonctionnement dans ma vidéo sur les transformeurs de vision si vous le souhaitez. Il produit les embeddings de notre image, soit l’information extraite.
Nous utilisons ensuite cette information avec nos prompts pour générer une segmentation.
Mais comment pouvons-nous combiner nos prompts textuels et spatiaux avec cet embedding d’image ? Nous représentons les prompts spatiaux au moyen d’encodages positionnels, ce qui revient à donner directement les renseignements spatiaux. Pour le texte, c’est simple : nous utilisons CLIP, comme toujours, un modèle capable d’encoder du texte de façon semblable aux images. CLIP est fantastique pour cette application puisqu’il a été entraîné avec une tonne de paires image-légende afin d’encoder les deux de façon semblable. Lorsqu’il reçoit un prompt textuel clair, il sert donc de pont pour comparer le texte et les images.
Finalement, nous devons produire une bonne segmentation à partir de toute cette information. N’importe quel décodeur peut accomplir cette tâche. En gros, il s’agit du réseau inverse de l’encodeur d’image : il reçoit de l’information condensée et recrée une image. Ici, nous voulons seulement créer des masques que nous replaçons sur l’image initiale. C’est donc 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 ce cas-ci, les chercheurs ont choisi une architecture semblable à celle de l’encodeur d’image : un décodeur basé sur un transformeur de vision qui fonctionne vraiment bien.
Et voilà !
C’était un simple survol du fonctionnement du nouveau modèle SAM de Meta ! Bien sûr, il n’est pas parfait et comporte certaines limites, comme rater de fines structures ou parfois halluciner de petits composants déconnectés.

Image tirée de l’article de recherche de Meta.
Il reste tout de même extrêmement puissant et représente un énorme pas en avant en introduisant une nouvelle tâche intéressante et très applicable. Je vous invite à lire l’excellent article de blogue et l’article de recherche de Meta pour en apprendre davantage, ou à essayer directement la démo ou le code. Tous les liens se trouvent dans les références ci-dessous.
J’espère que vous avez aimé cet article. Je vous retrouve la prochaine fois avec un autre article de recherche incroyable !
Références
►Article de recherche : Kirillov et al., Meta, (2023): Segment Anything, https://ai.facebook.com/research/publications/segment-anything/
►Code et exemples : https://github.com/facebookresearch/segment-anything
►Jeu de données : https://ai.meta.com/datasets/segment-anything/
FAQ
Que fait le Segment Anything Model ?
SAM crée un masque d’objet pour une image à partir de prompts comme des points, des boîtes ou un masque initial.
Qu’est-ce que la segmentation guidée par prompts ?
Elle permet à l’utilisateur d’indiquer ce qu’il veut segmenter au lieu d’exiger un modèle distinct pour chaque catégorie.
Pourquoi la segmentation est-elle utile ?
Les limites d’objets au niveau des pixels servent à l’édition, aux mesures, à la robotique, à la conduite autonome et à l’annotation de jeux de données.
Comment SAM peut-il segmenter des objets inconnus ?
Son vaste jeu de données d’entraînement lui apprend une notion générale des limites d’objets qui peut répondre à de nouveaux prompts.
SAM reconnaît-il le nom sémantique de chaque objet ?
Non. Il prédit principalement des masques. Un autre modèle ou une personne peut encore devoir nommer ce que représente chaque région.

