SAM (Segment Anything Model)
SAM (Segment Anything Model) est une famille de modèles de segmentation fondationnels développée par Meta AI. Son principe : segmenter n’importe quel objet dans n’importe quelle image ou vidéo, même jamais vu pendant l’entraînement (zero-shot), à partir de prompts visuels simples (clic, boîte, masque) ou textuels (SAM 3). SAM 2 étend cette capacité à la vidéo en temps réel, et SAM 3 (soumis à ICLR 2026) ajoute la compréhension de concepts linguistiques.
- Développeur
- Meta AI (FAIR)
- SAM 1
- Avril 2023 (ICCV 2023, nommé Best Paper). Images uniquement.
- SAM 2 / 2.1
- Juillet 2024 (SAM 2), automne 2024 (SAM 2.1). Images + vidéo.
- SAM 3
- Soumis à ICLR 2026 (anonymous review). Ajoute les prompts conceptuels/linguistiques.
- Licence
- Apache 2.0
- Dataset
- SA-1B (11M images, 1.1B masques), SA-V (51K vidéos, 600K+ masklets)
- GitHub
- facebookresearch/sam2
Pourquoi SAM est un tournant
Avant SAM, la segmentation d’images nécessitait un modèle entraîné spécifiquement pour chaque domaine : un modèle pour les cellules biologiques, un autre pour les véhicules, un autre pour les bâtiments. Chaque nouveau cas d’usage exigeait un dataset annoté, un entraînement dédié et un déploiement séparé.
SAM change la donne : c’est un modèle de fondation pour la segmentation, comme GPT l’est pour le texte. Entraîné sur SA-1B (1.1 milliard de masques sur 11 millions d’images), il généralise en zero-shot à des domaines jamais vus : imagerie médicale, satellite, microscopie, design industriel. Il suffit de cliquer sur un objet, de tracer une boîte ou de fournir un masque approximatif, et SAM produit un masque de segmentation précis.
L’impact sur la communauté a été immédiat : certains chercheurs l’ont qualifié de « moment GPT-3 » de la vision par ordinateur. SAM a radicalement accéléré l’annotation de données (8.4× plus rapide avec SAM 2 dans la boucle), ouvert la voie à des applications créatives (effets vidéo, AR) et démocratisé la segmentation pour les non-spécialistes.
SAM 1 : la segmentation promptable
Le SAM original (2023) se compose de trois modules :
1. Image Encoder
Un Vision Transformer (ViT) pré-entraîné (ViT-H par défaut, 632M paramètres) encode l’image en features riches. C’est le composant le plus lourd, mais il ne s’exécute qu’une seule fois par image. Les features encodées sont réutilisées pour tous les prompts sur la même image.
2. Prompt Encoder
Encode les prompts de l’utilisateur en vecteurs. SAM accepte quatre types de prompts :
Points (clic) : un point positif (objet) ou négatif (arrière-plan). Le mode le plus simple.
Boîtes (bounding box) : une zone rectangulaire contenant l’objet.
Masques : un masque approximatif à affiner.
Texte (SAM 1 expérimental uniquement, non prioritaire dans le paper original).
3. Mask Decoder
Un décodeur léger basé sur un Transformer qui combine les features de l’image et du prompt pour produire le masque de segmentation. Le décodeur est rapide (~50ms sur GPU), ce qui permet une interaction en temps réel.
SAM produit plusieurs masques candidats pour gérer l’ambiguïté : un clic sur un personnage portant un chapeau peut désigner le chapeau seul, la personne entière, ou la personne avec son environnement immédiat. SAM renvoie les trois interprétations avec leurs scores de confiance.
SAM 2 : extension à la vidéo
SAM 2 (juillet 2024, mis à jour en SAM 2.1) étend le modèle à la vidéo avec trois innovations majeures :
Module de mémoire par session : SAM 2 maintient une mémoire des frames précédentes et des objets déjà segmentés. Quand un objet disparaît temporairement (occlusion, hors champ), le modèle se souvient de son apparence et le retrouve automatiquement quand il réapparaît.
Architecture streaming : les frames vidéo sont traitées une par une, en temps réel (~44 FPS pour les variantes légères). C’est une extension naturelle de SAM 1 : quand le module mémoire est vide (image seule), SAM 2 se comporte comme SAM 1.
Prompts sur n’importe quelle frame : l’utilisateur peut cliquer sur un objet dans n’importe quelle frame de la vidéo, et SAM 2 propage la segmentation dans les deux directions (avant et arrière). Des corrections supplémentaires peuvent être ajoutées à tout moment.
SAM 2 est 6× plus précis que SAM 1 sur les images et surpasse les modèles spécialisés de segmentation vidéo (VOS) tout en nécessitant 3× moins d’interactions. Il a été entraîné sur SA-V, un dataset de 51 000 vidéos réelles et 600 000+ masklets (masques spatio-temporels), construit grâce à un data engine interactif où SAM 2 lui-même annotait les vidéos, corrigées ensuite par des annotateurs humains.
Un aspect souvent sous-estimé de SAM 2 est son data engine : un processus itératif où le modèle est utilisé pour annoter de nouvelles données, les annotations sont vérifiées par des humains, et le modèle est réentraîné sur les données améliorées. Ce cycle model-in-the-loop a permis de créer SA-V à une échelle et une qualité impossibles avec une annotation manuelle pure. C’est la même philosophie qui a produit SA-1B pour SAM 1 : le modèle s’améliore en créant ses propres données d’entraînement.
SAM 2.1 (automne 2024) a apporté des améliorations de performance ciblées, notamment une meilleure gestion des objets visuellement similaires (deux personnes en tenue identique) et des occlusions prolongées. Il est disponible sur Amazon SageMaker JumpStart pour un déploiement cloud facilité.
Variantes de SAM 2
| Modèle | Backbone | Paramètres | FPS (A100) | Usage |
|---|---|---|---|---|
| SAM 2 Tiny | Hiera-T | ~39M | ~47 FPS | Embarqué, prototypage rapide |
| SAM 2 Small | Hiera-S | ~46M | ~44 FPS | Bon compromis |
| SAM 2 Base+ | Hiera-B+ | ~81M | ~35 FPS | Précision accrue |
| SAM 2 Large | Hiera-L | ~224M | ~24 FPS | Précision maximale |
SAM 3 : segmentation par concepts
SAM 3, soumis anonymement à ICLR 2026 (très probablement par Meta), ajoute une dimension fondamentale : la compréhension de concepts linguistiques. Au lieu de cliquer sur un objet, vous pouvez taper « bus scolaire jaune » ou « chat rayé », et SAM 3 trouvera et segmentera toutes les instances correspondantes dans l’image ou la vidéo.
Les innovations clés de SAM 3 :
Promptable Concept Segmentation (PCS) : segmentation basée sur des phrases nominales simples (« pommes rouges », « personnes assises ») ou des exemples visuels. Le modèle identifie les concepts visuels atomiques et segmente toutes les instances correspondantes.
Architecture dual encodeur-décodeur : un détecteur basé sur DETR (Deformable Transformer) avec un Presence Head qui découple la reconnaissance (« qu’est-ce que c’est ? ») de la localisation (« où est-ce ? »). Combiné avec un tracker et un module mémoire pour la vidéo.
Perceptual Encoder (PE) : un backbone vision-langage aligné qui reçoit les prompts visuels et textuels de manière unifiée.
Performances : SAM 3 atteint 47.0 de précision sur LVIS en zero-shot (contre 38.5 pour le SOTA précédent), traite une image avec 100+ objets en 30ms, et maintient des performances quasi temps réel sur vidéo avec ~5 cibles simultanées.
Utilisation pratique
# Installation de SAM 2
# git clone https://github.com/facebookresearch/sam2
# cd sam2 && pip install -e .
import torch
from sam2.build_sam import build_sam2
from sam2.sam2_image_predictor import SAM2ImagePredictor
from PIL import Image
import numpy as np
# Charger le modèle
checkpoint = "sam2.1_hiera_large.pt"
model_cfg = "configs/sam2.1/sam2.1_hiera_l.yaml"
predictor = SAM2ImagePredictor(build_sam2(model_cfg, checkpoint))
# Charger une image
image = np.array(Image.open("photo.jpg"))
predictor.set_image(image)
# Segmentation par clic (point)
input_point = np.array([[500, 375]]) # coordonnées (x, y)
input_label = np.array([1]) # 1 = foreground
masks, scores, logits = predictor.predict(
point_coords=input_point,
point_labels=input_label,
multimask_output=True # retourne 3 masques candidats
)
# Le masque avec le meilleur score
best_mask = masks[np.argmax(scores)]
# Segmentation par boîte
input_box = np.array([100, 100, 400, 400]) # x1, y1, x2, y2
masks, scores, logits = predictor.predict(
box=input_box,
multimask_output=False
)
# SAM 2 pour la vidéo
from sam2.build_sam import build_sam2_video_predictor
video_predictor = build_sam2_video_predictor(model_cfg, checkpoint)
# Initialiser avec une vidéo
state = video_predictor.init_state(video_path="video.mp4")
# Ajouter un prompt sur la frame 0
_, _, masks = video_predictor.add_new_points_or_box(
state, frame_idx=0, obj_id=1,
points=np.array([[210, 350]]),
labels=np.array([1])
)
# Propager la segmentation sur toute la vidéo
for frame_idx, obj_ids, masks in video_predictor.propagate_in_video(state):
# masks contient les masques pour chaque objet suivi
pass
SAM vs YOLO Segmentation
| Critère | SAM 2 | YOLO11-seg |
|---|---|---|
| Approche | Modèle de fondation, zero-shot | Modèle spécialisé, entraîné par classe |
| Prompts | Clics, boîtes, masques (interactif) | Aucun (automatique) |
| Classes connues requises | Non (segmente tout) | Oui (classes définies à l’entraînement) |
| Taille (SAM2-b vs YOLO11n-seg) | ~81M params | ~2.9M params (~28× moins) |
| Vitesse | ~35 FPS (A100) | ~860× plus rapide |
| Déploiement edge | Difficile (modèle lourd) | Excellent |
| Annotation de données | Excellent | Non applicable |
| Zero-shot sur nouveaux domaines | Excellent | Nécessite fine-tuning |
SAM et YOLO-seg ne sont pas concurrents mais complémentaires. SAM excelle comme outil d’annotation, comme modèle zero-shot pour l’exploration de données, et comme composant dans des pipelines créatifs. YOLO-seg est le choix pour le déploiement en production temps réel quand les classes sont connues. Un workflow typique : utiliser SAM pour annoter un dataset, puis entraîner un modèle YOLO-seg léger pour le déploiement.
Cas d’usage
Annotation de données à grande échelle : SAM 2 dans la boucle accélère l’annotation de 8.4× par rapport à SAM 1 frame par frame. C’est son usage le plus immédiatement impactant pour les équipes de vision par ordinateur.
Édition vidéo et effets créatifs : isoler un objet dans une vidéo (personne, animal, véhicule) pour appliquer des effets (flou d’arrière-plan, remplacement de fond, tracking visuel). La démo interactive de Meta montre ces applications en direct.
Imagerie médicale : segmentation de tumeurs, d’organes, de cellules sans entraînement spécifique. SAM généralise de manière impressionnante aux images médicales, bien que des adaptations fine-tunées (MedSAM) améliorent encore les résultats.
Imagerie satellite et géospatiale : segmenter des bâtiments, des routes, des zones forestières ou des cultures à partir d’images aériennes. La capacité zero-shot élimine le besoin de datasets annotés coûteux pour chaque nouvelle région.
Réalité augmentée : segmentation en temps réel d’objets dans le flux vidéo de la caméra pour l’incrustation d’éléments virtuels, le masquage d’arrière-plan, ou l’interaction avec des objets physiques.
Aide aux catastrophes naturelles : segmentation rapide de zones inondées, de bâtiments endommagés, de routes bloquées à partir d’images satellite ou drone, sans préparation préalable de modèles spécialisés.
Limites
Taille et vitesse : même SAM 2 Tiny (39M paramètres) est significativement plus gros et plus lent que les modèles de segmentation spécialisés comme YOLO-seg. Le déploiement edge est possible mais contraint.
Pas de classification sémantique (SAM 1 et 2) : SAM segmente les objets mais ne les nomme pas. Il ne sait pas que le masque correspond à un « chat ». SAM 3 résout partiellement ce problème avec les concept prompts.
Domaines de niche : le papier SAM 3 reconnaît que la généralisation zero-shot reste limitée pour l’imagerie médicale spécialisée et l’imagerie thermique. Le fine-tuning reste nécessaire pour ces cas.
Multi-cibles en vidéo : les performances temps réel de SAM 2 et 3 se dégradent quand le nombre de cibles simultanées augmente. Au-delà de 5 objets suivis, le traitement multi-GPU devient nécessaire.
Bonnes pratiques
Utilisez SAM 2.1 (pas SAM 1). SAM 2.1 est 6× plus précis que SAM 1, gère les images ET les vidéos, et a des performances améliorées pour les objets visuellement similaires et les occlusions.
Combinez SAM avec d’autres modèles. SAM + un détecteur (YOLO, DETR) pour la segmentation avec classification. SAM + un LLM multimodal pour la segmentation par description complexe. SAM + un modèle génératif pour l’édition d’images/vidéos.
Choisissez la bonne variante. SAM 2 Tiny pour le prototypage et les contraintes de vitesse. SAM 2 Large pour la précision maximale en annotation. La différence de qualité entre Tiny et Large est notable sur les cas difficiles (objets fins, textures complexes).
Pour la production, exportez vers un format optimisé. SAM 2 peut être exporté vers ONNX et TensorRT pour des gains de vitesse significatifs en inférence.
Exploitez le mode automatique pour l’annotation. Le mode auto de SAM 2 génère des masques pour tous les objets d’une image ou vidéo. Combinez-le avec un outil d’annotation comme Label Studio ou Roboflow pour un workflow de labeling rapide et interactif.
Questions fréquentes sur SAM
Quelle est la différence entre SAM 1, SAM 2 et SAM 3 ?
SAM 1 (2023) segmente des objets dans des images fixes à partir de prompts visuels (clics, boîtes, masques). SAM 2 (2024) étend cette capacité à la vidéo en temps réel grâce à un module mémoire qui suit les objets entre les frames, même lors d’occlusions. SAM 3 (soumis à ICLR 2026) ajoute la compréhension de concepts linguistiques : vous décrivez un objet en texte (« bus jaune ») et SAM 3 segmente toutes les instances correspondantes. Chaque version est rétrocompatible avec les cas d’usage de la précédente.
SAM peut-il remplacer un modèle de segmentation entraîné ?
Pour l’exploration de données et l’annotation, oui, SAM est souvent suffisant en zero-shot. Pour le déploiement en production temps réel avec des classes connues, non : SAM est trop lent et trop gros comparé à des modèles spécialisés comme YOLO-seg. Le workflow recommandé : utiliser SAM pour annoter votre dataset rapidement, puis entraîner un modèle léger (YOLO, Mask R-CNN) pour la production.
SAM fonctionne-t-il sur les images médicales ?
SAM généralise de manière impressionnante à l’imagerie médicale, mais avec des performances inférieures à celles obtenues sur des images naturelles. Des variantes fine-tunées comme MedSAM et SAM-Med2D améliorent significativement les résultats sur les modalités spécifiques (CT, IRM, histologie). Pour un usage clinique, le fine-tuning sur des données du domaine est recommandé.
SAM est-il gratuit ?
Oui. SAM 1, SAM 2 et SAM 2.1 sont distribués sous licence Apache 2.0 (code et poids). Le dataset SA-1B est sous CC BY 4.0, et SA-V sous sa propre licence ouverte. Vous pouvez utiliser SAM librement dans des projets commerciaux et propriétaires.
Comment SAM gère-t-il l’ambiguïté ?
Quand un prompt est ambigu (un clic sur une personne portant un chapeau : le chapeau, la personne, ou les deux ?), SAM produit plusieurs masques candidats (typiquement 3) avec des scores de confiance. L’utilisateur ou le système en aval choisit le masque approprié. Ce mécanisme de multi-masque est une des forces du design de SAM : il ne force pas une interprétation unique mais propose des alternatives.