SAM 3 : Segmenter par Description Texte — Retour d Expérience

SAM 3 : Segmenter par Description Texte — Retour d Expérience

SAM 3 : Segmenter par Description Texte — Retour d’Expérience

Avez-vous déjà essayé d’annoter un dataset de 10 000 images à la main ? Un annotateur humain expérimenté produit environ 300 à 500 masques par jour. Pour 10 000 images avec plusieurs objets chacune, c’est des semaines de travail — et une facture qui dépasse rapidement les 20 000€. La promesse de SAM 3 (Segment Anything Model 3), sorti par Meta en 2025, est radicale : décrire un objet en langage naturel, et le modèle le segmente automatiquement dans n’importe quelle image ou vidéo, sans entraînement custom.

Nous avons intégré SAM 3 dans plusieurs pipelines d’annotation et de détection. Voici un retour honnête — ce qui fonctionne, ce qui ne fonctionne pas, et comment en tirer le meilleur parti.


De SAM 1 à SAM 3 : Une Évolution Décisive

La famille SAM de Meta a radicalement changé la vision par ordinateur en trois générations :

SAM 1 (2023) — le fondement. Le modèle segmente n’importe quel objet sur prompt point ou boîte englobante. Révolutionnaire, mais limité : il faut pointer ou dessiner une boîte. Impossible d’écrire “les chaises rouges” — il faut les indiquer manuellement.

SAM 2 (2024) — l’extension vidéo. SAM 2 ajoute la propagation temporelle : pointer un objet sur une frame, le modèle le suit dans toute la séquence. Indispensable pour les datasets vidéo. La limite reste la même : pas de prompt textuel.

SAM 3 (2025) — le saut qualitatif. SAM 3 introduit le prompt textuel open-vocabulary : écrire "a player in white" ou "a player in red" et le modèle distingue les deux. C’est le vrai breakthrough — non pas la segmentation elle-même, mais la capacité à discriminer des concepts proches exprimés en langage naturel.


Architecture : Le Presence Token, Clé du Breakthrough

SAM 3 repose sur une architecture décrite comme un unified foundation model for promptable segmentation. Avec 848 millions de paramètres, il combine :

  • Un encodeur visuel partagé entre détecteur et tracker
  • Un détecteur DETR-based conditionné sur le texte, la géométrie et l’image
  • Un tracker découplé pour la propagation vidéo

L’innovation architecturale centrale est le presence token : un vecteur appris qui indique si un concept donné est présent dans l’image. Ce token permet de résoudre le problème de discrimination fine — distinguer “joueur en blanc” de “joueur en rouge” dans le même plan. Sans ce mécanisme, les embeddings textuels des deux descriptions sont proches, et le modèle confond les instances.

Le code d’utilisation est remarquablement simple :

from PIL import Image
from sam3.model_builder import build_sam3_image_model
from sam3.model.sam3_image_processor import Sam3Processor

# Charger le modèle
model = build_sam3_image_model()
processor = Sam3Processor(model)

# Charger une image
image = Image.open("photo_produit.jpg")
inference_state = processor.set_image(image)

# Prompt textuel libre
output = processor.set_text_prompt(
    state=inference_state,
    prompt="a red handbag on a white background"
)

masks, boxes, scores = output["masks"], output["boxes"], output["scores"]

Pour la vidéo, l’API reste cohérente :

from sam3.model_builder import build_sam3_video_predictor

video_predictor = build_sam3_video_predictor()
response = video_predictor.handle_request(request=dict(
    type="start_session",
    resource_path="consultation.mp4",
))
response = video_predictor.handle_request(request=dict(
    type="add_prompt",
    session_id=response["session_id"],
    frame_index=0,
    text="the veterinarian in blue scrubs",
))

Le Benchmark SA-CO : 270 000 Concepts Uniques

Meta a évalué SAM 3 sur SA-CO (Segment Anything Concept Open-vocabulary), un benchmark spécialement conçu contenant 270 000 concepts uniques — plus de 50 fois supérieur aux benchmarks existants. SAM 3 y atteint 75-80 % de la performance humaine.

Pour contextualiser : les benchmarks précédents (COCO, LVIS, RefCOCO) comptent 80 à 1 200 catégories. SA-CO couvre des concepts comme “une voiture garée sous un arbre en automne”, “un enfant portant un sac à dos rouge”, ou “la main droite du joueur tenant une raquette”. Ce niveau de granularité est exactement ce qu’on rencontre en production.

Le data engine qui a permis ce bond : 4 millions de concepts annotés automatiquement par une pipeline IA supervisée, créant le plus grand dataset de segmentation open-vocabulary à ce jour.


Notre Utilisation : Deux Cas d’Usage Concrets

Cas 1 : Annotation Automatique de Datasets Fashion

Dans notre pipeline e-commerce (voir l’article sur Findeez), nous recevons des batches de photos produits où il faut isoler le vêtement du fond. Avant SAM 3, chaque image nécessitait soit un prestataire d’annotation (0.05-0.15€/image), soit un modèle custom entraîné sur nos propres données.

Avec SAM 3, le prompt "the clothing item on the model" segmente correctement l’article dans 82% des cas sur nos tests. Pour les 18% restants (superpositions complexes, couleurs proches du fond), on repasse en mode interactif avec des prompts points SAM 2-style.

Le gain : annotation automatique des cas simples, intervention humaine ciblée sur les cas ambigus. Temps d’annotation divisé par 4 sur notre dernier batch de 2 000 images.

Cas 2 : Détection sans Entraînement Custom

Sur un projet de monitoring de chantier, le client voulait détecter les EPI (casques, gilets) sans nous fournir de dataset annoté. SAM 3 permet de prototyper rapidement : "a person wearing a yellow safety vest", "a hard hat on a person's head".

Les résultats en precision/recall ne rivalisent pas avec un YOLO fine-tuné sur des données métier, mais ils permettent de valider le cas d’usage avant d’investir dans l’annotation. Sur 500 images de test, SAM 3 a atteint 71% de precision et 68% de recall sur la détection de casques — suffisant pour une démonstration client.


Prérequis et Contraintes Techniques

SAM 3 n’est pas un modèle léger. Les prérequis officiels :

  • Python 3.12+
  • PyTorch 2.7+
  • CUDA 12.6+ — GPU obligatoire pour des temps raisonnables
conda create -n sam3 python=3.12
conda activate sam3
pip install torch==2.7.0 torchvision torchaudio 
    --index-url https://download.pytorch.org/whl/cu126
git clone https://github.com/facebookresearch/sam3.git
cd sam3 && pip install -e .

Les checkpoints sont accessibles via Hugging Face après acceptation des conditions d’utilisation (hf auth login requis). Sur une A100 80GB, l’inférence image tourne à environ 0.8 seconde par image. Sur une RTX 4090, comptez 1.5-2 secondes.

Sans GPU, SAM 3 est pratiquement inutilisable en production — la version CPU peut prendre 30-60 secondes par image.


Ce Que SAM 3 Ne Fait Pas Bien

Honnêteté oblige : SAM 3 a des limites réelles que nous avons rencontrées.

Concepts très spécifiques au domaine : “artère fémorale sur une échographie” ou “joint de dilatation sur une façade béton” — le modèle n’a pas été entraîné sur ces sous-domaines techniques. Les masques produits sont imprécis.

Très haute résolution : au-delà de 4K, les temps d’inférence deviennent prohibitifs sans tricks de tiling, et le tiling introduit des artefacts aux jointures.

Prompts ambigus : "the main object" ou "something interesting" produisent des résultats imprévisibles. SAM 3 fonctionne mieux avec des descriptions précises et factuelles.

Comptage d’instances : si 5 objets correspondent au prompt, SAM 3 les retourne tous — mais sans garantie de complétude. Pour un comptage fiable, une couche de post-traitement est nécessaire.


Verdict : Quand Utiliser SAM 3 ?

SAM 3 est le bon outil si :

  • Vous avez des concepts clairement descriptibles en langage naturel
  • Vous voulez prototyper rapidement avant d’annoter un dataset
  • Vos images ont une résolution standard (<4K)
  • Vous disposez d’un GPU avec CUDA 12.6+

Il n’est pas adapté si :

  • Votre domaine est très spécifique (médical, industriel pointu)
  • Vous avez besoin de temps réel sur CPU
  • Vous cherchez un recall parfait sans post-traitement

L’intégration dans un pipeline d’annotation humain-dans-la-boucle est la configuration où SAM 3 brille le plus : automatiser les 80% de cas simples, signaler les 20% ambigus pour révision humaine.


Conclusion

SAM 3 marque un tournant dans la segmentation open-vocabulary. La capacité à décrire un concept en langage naturel et obtenir un masque précis — sans entraînement, sans annotation préalable — change fondamentalement le workflow d’annotation de datasets et de prototypage de solutions vision.

75-80% de la performance humaine sur 270 000 concepts, c’est assez pour industrialiser de nombreux cas d’usage. La clé est de connaître les limites et de concevoir le pipeline en conséquence.

Vous souhaitez intégrer SAM 3 dans votre workflow d’annotation ou de détection ? Écrivez-nous à contact@brio-novia.eu — nous pouvons évaluer votre cas d’usage et concevoir le pipeline adapté.