Skip to content

SAM 2.1

Nous venons de soutenir le modèle plus précis SAM2.1. Essayez-le !

SAM 2 : Segmenter tout Modèle 2

SAM 2, le successeur de Segment Anything Model (SAM) de Meta, est un outil de pointe conçu pour la segmentation complète d'objets dans les images et les vidéos. Il excelle dans le traitement de données visuelles complexes grâce à une architecture de modèle unifiée, qui prend en charge le traitement en temps réel et la généralisation à partir de zéro.

SAM 2 Exemples de résultats

Caractéristiques principales



Regarder : Comment exécuter une inférence avec Meta's SAM2 en utilisant Ultralytics | Guide étape par étape 🎉

Modèle unifié d'architecture

SAM 2 combine les capacités de segmentation d'images et de vidéos dans un modèle unique. Cette unification simplifie le déploiement et permet d'obtenir des performances cohérentes sur différents types de médias. Il s'appuie sur une interface flexible basée sur des invites, permettant aux utilisateurs de spécifier des objets d'intérêt par le biais de différents types d'invites, tels que des points, des boîtes de délimitation ou des masques.

Performance en temps réel

Le modèle atteint des vitesses d'inférence en temps réel, traitant environ 44 images par seconde. SAM 2 convient donc aux applications nécessitant un retour d'information immédiat, telles que l'édition vidéo et la réalité augmentée.

Généralisation du tir à zéro

SAM 2 peut segmenter des objets qu'il n'a jamais rencontrés auparavant, ce qui démontre une forte généralisation à partir de zéro. Ceci est particulièrement utile dans les domaines visuels diversifiés ou évolutifs où les catégories prédéfinies peuvent ne pas couvrir tous les objets possibles.

Raffinement interactif

Les utilisateurs peuvent affiner les résultats de la segmentation de manière itérative en fournissant des invites supplémentaires, ce qui permet un contrôle précis du résultat. Cette interactivité est essentielle pour affiner les résultats dans des applications telles que l'annotation vidéo ou l'imagerie médicale.

Traitement avancé des défis visuels

SAM 2 comprend des mécanismes permettant de gérer les problèmes courants de segmentation vidéo, tels que l'occlusion et la réapparition d'objets. Il utilise un mécanisme de mémoire sophistiqué pour suivre les objets d'une image à l'autre, assurant ainsi la continuité même lorsque les objets sont temporairement occultés ou qu'ils quittent et réintègrent la scène.

Pour une compréhension plus approfondie de l'architecture et des capacités de SAM 2, consultez le document de rechercheSAM 2.

Performances et détails techniques

SAM 2 établit une nouvelle référence dans ce domaine, en surpassant les modèles précédents sur différents critères :

Métrique SAM 2 Précédent SOTA
Segmentation vidéo interactive Le meilleur -
Interactions humaines requises 3x moins Base de référence
Précision de la segmentation des images Améliorée SAM
Vitesse d'inférence 6x plus rapide SAM

Modèle d'architecture

Composants essentiels

  • Encodeur d'images et de vidĂ©os: Utilise une architecture basĂ©e sur des transformateurs pour extraire des caractĂ©ristiques de haut niveau des images et des trames vidĂ©o. Ce composant est chargĂ© de comprendre le contenu visuel Ă  chaque Ă©tape.
  • Encodeur d'invites: Traite les invites fournies par l'utilisateur (points, boĂ®tes, masques) pour guider la tâche de segmentation. Cela permet Ă  SAM 2 de s'adapter aux donnĂ©es de l'utilisateur et de cibler des objets spĂ©cifiques dans une scène.
  • MĂ©canisme de mĂ©moire: comprend un encodeur de mĂ©moire, une banque de mĂ©moire et un module d'attention de la mĂ©moire. Ces composants stockent et utilisent collectivement les informations des images prĂ©cĂ©dentes, ce qui permet au modèle de maintenir un suivi cohĂ©rent des objets dans le temps.
  • DĂ©codeur de masque: Il gĂ©nère les masques de segmentation finaux sur la base des caractĂ©ristiques de l'image encodĂ©e et des invites. En vidĂ©o, il utilise Ă©galement le contexte de la mĂ©moire pour assurer un suivi prĂ©cis entre les images.

SAM 2 Schéma d'architecture

Mécanisme de mémoire et traitement des occlusions

Le mécanisme de mémoire permet à SAM 2 de gérer les dépendances temporelles et les occlusions dans les données vidéo. Lorsque les objets se déplacent et interagissent, SAM 2 enregistre leurs caractéristiques dans une banque de données. Lorsqu'un objet est occulté, le modèle peut s'appuyer sur cette mémoire pour prédire sa position et son apparence lorsqu'il réapparaît. La tête d'occlusion gère spécifiquement les scénarios dans lesquels les objets ne sont pas visibles, en prédisant la probabilité qu'un objet soit occulté.

Résolution des ambiguïtés en plusieurs étapes

Dans les situations ambiguës (par exemple, lorsque des objets se chevauchent), SAM 2 peut générer plusieurs prédictions de masque. Cette caractéristique est cruciale pour représenter avec précision des scènes complexes où un seul masque pourrait ne pas décrire suffisamment les nuances de la scène.

Ensemble de données SA-V

L'ensemble de données SA-V, développé pour la formation de SAM 2, est l'un des ensembles de données de segmentation vidéo les plus vastes et les plus diversifiés disponibles. Il comprend

  • Plus de 51 000 vidĂ©os: CapturĂ©es dans 47 pays, elles offrent un large Ă©ventail de scĂ©narios rĂ©els.
  • Plus de 600 000 annotations de masques: Annotations spatio-temporelles dĂ©taillĂ©es des masques, appelĂ©es "masklets", couvrant des objets entiers et des parties d'objets.
  • Échelle de l'ensemble de donnĂ©es: Il contient 4,5 fois plus de vidĂ©os et 53 fois plus d'annotations que les plus grands ensembles de donnĂ©es prĂ©cĂ©dents, offrant ainsi une diversitĂ© et une complexitĂ© sans prĂ©cĂ©dent.

Critères de référence

Segmentation des objets vidéo

SAM 2 a démontré des performances supérieures dans les principaux benchmarks de segmentation vidéo :

Ensemble de données J&F J F
DAVIS 2017 82.5 79.8 85.2
YouTube-VOS 81.2 78.9 83.5

Segmentation interactive

Dans les tâches de segmentation interactive, SAM 2 fait preuve d'une efficacité et d'une précision significatives :

Ensemble de données NoC@90 CUA
DAVIS Interactive 1.54 0.872

Installation

Pour installer SAM 2, utilisez la commande suivante. Tous les modèles de SAM 2 seront automatiquement téléchargés lors de la première utilisation.

pip install ultralytics

Comment utiliser SAM 2 : Polyvalence dans la segmentation d'images et de vidéos

Le tableau suivant détaille les modèles disponibles sur SAM 2, leurs poids pré-entraînés, les tâches prises en charge et la compatibilité avec les différents modes de fonctionnement tels que l'inférence, la validation, l'entraînement et l'exportation.

Type de modèle Poids pré-entraînés Tâches prises en charge Inférence Validation Formation Exportation
SAM 2 minuscules sam2_t.pt Segmentation des instances ✅ ❌ ❌ ❌
SAM 2 petits sam2_s.pt Segmentation des instances ✅ ❌ ❌ ❌
SAM 2 base sam2_b.pt Segmentation des instances ✅ ❌ ❌ ❌
SAM 2 grands sam2_l.pt Segmentation des instances ✅ ❌ ❌ ❌
SAM 2.1 minuscule sam2.1_t.pt Segmentation des instances ✅ ❌ ❌ ❌
SAM 2.1 petit sam2.1_s.pt Segmentation des instances ✅ ❌ ❌ ❌
SAM 2.1 base sam2.1_b.pt Segmentation des instances ✅ ❌ ❌ ❌
SAM 2.1 grand sam2.1_l.pt Segmentation des instances ✅ ❌ ❌ ❌

SAM 2 Exemples de prédiction

SAM 2 peut être utilisé dans un large éventail de tâches, notamment l'édition vidéo en temps réel, l'imagerie médicale et les systèmes autonomes. Sa capacité à segmenter des données visuelles statiques et dynamiques en fait un outil polyvalent pour les chercheurs et les développeurs.

Segment avec messages-guides

Segment avec messages-guides

Utilisez des invites pour segmenter des objets spécifiques dans des images ou des vidéos.

from ultralytics import SAM

# Load a model
model = SAM("sam2.1_b.pt")

# Display model information (optional)
model.info()

# Run inference with bboxes prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])

# Run inference with single point
results = model(points=[900, 370], labels=[1])

# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])

# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Segmenter tout

Segmenter tout

Segmenter l'ensemble du contenu d'une image ou d'une vidéo sans instructions spécifiques.

from ultralytics import SAM

# Load a model
model = SAM("sam2.1_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/video.mp4")
# Run inference with a SAM 2 model
yolo predict model=sam2.1_b.pt source=path/to/video.mp4

Segmenter la vidéo et suivre les objets

Vidéo du segment

Segmentez l'ensemble du contenu vidéo à l'aide d'invites et d'objets de suivi spécifiques.

from ultralytics.models.sam import SAM2VideoPredictor

# Create SAM2VideoPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="sam2_b.pt")
predictor = SAM2VideoPredictor(overrides=overrides)

# Run inference with single point
results = predictor(source="test.mp4", points=[920, 470], labels=1)

# Run inference with multiple points
results = predictor(source="test.mp4", points=[[920, 470], [909, 138]], labels=[1, 1])

# Run inference with multiple points prompt per object
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 1]])

# Run inference with negative points prompt
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 0]])
  • Cet exemple montre comment SAM 2 peut ĂŞtre utilisĂ© pour segmenter l'ensemble du contenu d'une image ou d'une vidĂ©o si aucune invite (bboxes/points/masques) n'est fournie.

SAM 2 comparaison vs YOLOv8

Nous comparons ici le plus petit modèle SAM 2 de Meta, SAM2-t, avec le plus petit modèle de segmentation Ultralytics , YOLOv8n-seg :

Modèle Taille
(MB)
Paramètres
(M)
Vitesse (CPU)
(ms/im)
Meta SAM-b 375 93.7 161440
Meta SAM2-b 162 80.8 121923
Meta SAM2-t 78.1 38.9 85155
MobileSAM 40.7 10.1 98543
FastSAM-s avec YOLOv8 backbone 23.7 11.8 140
Ultralytics YOLOv8n-seg 6,7 (11,7x plus petit) 3,4 (11,4x moins) 79,5 (1071x plus rapide)

Cette comparaison montre les différences d'ordre de grandeur entre les tailles et les vitesses des modèles. Si le site SAM offre des possibilités uniques de segmentation automatique, il n'est pas un concurrent direct des modèles de segmentation YOLOv8 , qui sont plus petits, plus rapides et plus efficaces.

Les tests ont été effectués sur un Apple M2 Macbook de 2023 avec 16 Go de RAM en utilisant torch==2.3.1 et ultralytics==8.3.82. Pour reproduire ce test :

Exemple

from ultralytics import ASSETS, SAM, YOLO, FastSAM

# Profile SAM2-t, SAM2-b, SAM-b, MobileSAM
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt"]:
    model = SAM(file)
    model.info()
    model(ASSETS)

# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)

# Profile YOLOv8n-seg
model = YOLO("yolov8n-seg.pt")
model.info()
model(ASSETS)

Auto-Annotation : Création efficace d'ensembles de données

L'auto-annotation est une fonctionnalité puissante de SAM 2, qui permet aux utilisateurs de générer des ensembles de données de segmentation rapidement et avec précision en s'appuyant sur des modèles pré-entraînés. Cette fonctionnalité est particulièrement utile pour créer de grands ensembles de données de haute qualité sans effort manuel important.

Comment faire de l'auto-annotation avec SAM 2



Regarder : Annotation automatique avec le modèle Segment Anything 2 de Meta à l'aide de Ultralytics | Data Labeling

Pour auto-annoter votre jeu de données à l'aide de SAM 2, suivez cet exemple :

Exemple d'auto-annotation

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam2_b.pt")
Argument Type Description DĂ©faut
data str Chemin d'accès au dossier contenant les images à annoter.
det_model str, optionnel Modèle de détection YOLO pré-entraîné. La valeur par défaut est "yolo11x.pt". 'yolo11x.pt'
sam_model str, optionnel Modèle de segmentation pré-entraîné SAM 2. La valeur par défaut est 'sam2_b.pt'. 'sam2_b.pt'
device str, optionnel Appareil sur lequel les modèles doivent être exécutés. La valeur par défaut est une chaîne vide (CPU ou GPU, si disponible).
conf float, optionnel Seuil de confiance pour le modèle de détection ; la valeur par défaut est 0,25. 0.25
iou float, optionnel Seuil de l'IoU pour le filtrage des cases qui se chevauchent dans les résultats de la détection ; la valeur par défaut est de 0,45. 0.45
imgsz int, optionnel Dimension de redimensionnement de l'image d'entrée ; la valeur par défaut est 640. 640
max_det int, optionnel Limite les détections par image pour contrôler les sorties dans les scènes denses. 300
classes list, optionnel Filtre les prédictions sur les identifiants de classe spécifiés, en ne renvoyant que les détections pertinentes. None
output_dir str, None, optionnel Répertoire dans lequel enregistrer les résultats annotés. Par défaut, il s'agit d'un dossier "labels" situé dans le même répertoire que "data". None

Cette fonction facilite la création rapide d'ensembles de données de segmentation de haute qualité, idéale pour les chercheurs et les développeurs qui souhaitent accélérer leurs projets.

Limites

Malgré ses atouts, SAM 2 présente certaines limites :

  • StabilitĂ© du suivi: SAM 2 peut perdre le suivi des objets lors de sĂ©quences prolongĂ©es ou de changements importants de point de vue.
  • Confusion d'objets: Le modèle peut parfois confondre des objets d'apparence similaire, en particulier dans des scènes très frĂ©quentĂ©es.
  • EfficacitĂ© avec des objets multiples: L'efficacitĂ© de la segmentation diminue lors du traitement simultanĂ© de plusieurs objets en raison du manque de communication entre les objets.
  • PrĂ©cision des dĂ©tails: Peut manquer de dĂ©tails fins, en particulier avec des objets se dĂ©plaçant rapidement. Des invites supplĂ©mentaires peuvent partiellement rĂ©soudre ce problème, mais la fluiditĂ© temporelle n'est pas garantie.

Citations et remerciements

Si SAM 2 est un élément essentiel de votre travail de recherche ou de développement, veuillez le citer en utilisant la référence suivante :

@article{ravi2024sam2,
  title={SAM 2: Segment Anything in Images and Videos},
  author={Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{\"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and Mintun, Eric and Pan, Junting and Alwala, Kalyan Vasudev and Carion, Nicolas and Wu, Chao-Yuan and Girshick, Ross and Doll{\'a}r, Piotr and Feichtenhofer, Christoph},
  journal={arXiv preprint},
  year={2024}
}

Nous exprimons notre gratitude à Meta AI pour sa contribution à la communauté de l'IA avec ce modèle et cet ensemble de données révolutionnaires.

FAQ

Qu'est-ce que SAM 2 et comment améliore-t-il le modèle Segment Anything original (SAM) ?

SAM 2, le successeur de Segment Anything Model (SAM) de Meta, est un outil de pointe conçu pour la segmentation complète d'objets dans les images et les vidéos. Il excelle dans le traitement de données visuelles complexes grâce à une architecture de modèle unifiée, qui prend en charge le traitement en temps réel et la généralisation à partir de zéro. SAM 2 offre plusieurs améliorations par rapport à l'original SAM, y compris :

  • Architecture du modèle unifiĂ©: Combine les capacitĂ©s de segmentation d'images et de vidĂ©os dans un modèle unique.
  • Performance en temps rĂ©el: Traite environ 44 images par seconde, ce qui le rend adaptĂ© aux applications nĂ©cessitant un retour d'information immĂ©diat.
  • GĂ©nĂ©ralisation Ă  partir d'un point zĂ©ro: Segments d'objets qu'il n'a jamais rencontrĂ©s auparavant, utiles dans divers domaines visuels.
  • Affinage interactif: Permet aux utilisateurs d'affiner de manière itĂ©rative les rĂ©sultats de la segmentation en fournissant des invites supplĂ©mentaires.
  • Traitement avancĂ© des dĂ©fis visuels: Gère les problèmes courants de segmentation vidĂ©o tels que l'occlusion et la rĂ©apparition d'objets.

Pour plus de détails sur l'architecture et les capacités de SAM 2, consultez le document de rechercheSAM 2.

Comment puis-je utiliser SAM 2 pour la segmentation vidéo en temps réel ?

SAM 2 peut être utilisé pour la segmentation vidéo en temps réel en tirant parti de son interface prompte et de ses capacités d'inférence en temps réel. Voici un exemple simple :

Segment avec messages-guides

Utilisez des invites pour segmenter des objets spécifiques dans des images ou des vidéos.

from ultralytics import SAM

# Load a model
model = SAM("sam2_b.pt")

# Display model information (optional)
model.info()

# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])

# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1])

Pour une utilisation plus complète, reportez-vous à la section Comment utiliser SAM 2.

Quels sont les ensembles de données utilisés pour entraîner SAM 2 et comment améliorent-ils ses performances ?

SAM 2 est entraîné sur l'ensemble de données SA-V, l'un des ensembles de données de segmentation vidéo les plus vastes et les plus diversifiés disponibles. L'ensemble de données SA-V comprend

  • Plus de 51 000 vidĂ©os: CapturĂ©es dans 47 pays, elles offrent un large Ă©ventail de scĂ©narios rĂ©els.
  • Plus de 600 000 annotations de masques: Annotations spatio-temporelles dĂ©taillĂ©es des masques, appelĂ©es "masklets", couvrant des objets entiers et des parties d'objets.
  • Échelle de l'ensemble de donnĂ©es: Comprend 4,5 fois plus de vidĂ©os et 53 fois plus d'annotations que les plus grands ensembles de donnĂ©es prĂ©cĂ©dents, offrant ainsi une diversitĂ© et une complexitĂ© sans prĂ©cĂ©dent.

Ce vaste ensemble de données permet à SAM 2 d'atteindre des performances supérieures dans les principaux benchmarks de segmentation vidéo et d'améliorer ses capacités de généralisation à partir de zéro. Pour plus d'informations, voir la section sur le jeu de données SA-V.

Comment SAM 2 gère-t-il les occlusions et les réapparitions d'objets dans la segmentation vidéo ?

SAM 2 comprend un mécanisme de mémoire sophistiqué pour gérer les dépendances temporelles et les occlusions dans les données vidéo. Le mécanisme de mémoire consiste en

  • Encodeur de mĂ©moire et banque de mĂ©moire: Stocke les caractĂ©ristiques des images prĂ©cĂ©dentes.
  • Module de mĂ©moire et d'attention: Utilise les informations stockĂ©es pour maintenir un suivi cohĂ©rent de l'objet dans le temps.
  • TĂŞte d'occlusion: gère spĂ©cifiquement les scĂ©narios dans lesquels les objets ne sont pas visibles, en prĂ©disant la probabilitĂ© qu'un objet soit occultĂ©.

Ce mécanisme assure la continuité de l'image, même lorsque des objets sont temporairement masqués ou qu'ils quittent et réintègrent la scène. Pour plus de détails, voir la section Mécanisme de mémoire et traitement des occlusions.

Comment SAM 2 se compare-t-il à d'autres modèles de segmentation tels que YOLOv8?

SAM 2 et Ultralytics YOLOv8 ont des objectifs différents et excellent dans des domaines différents. Alors que SAM 2 est conçu pour la segmentation complète d'objets avec des fonctionnalités avancées telles que la généralisation de l'image zéro et les performances en temps réel, YOLOv8 est optimisé pour la vitesse et l'efficacité dans les tâches de détection et de segmentation d'objets. Voici une comparaison :

Modèle Taille
(MB)
Paramètres
(M)
Vitesse (CPU)
(ms/im)
Meta SAM-b 375 93.7 161440
Meta SAM2-b 162 80.8 121923
Meta SAM2-t 78.1 38.9 85155
MobileSAM 40.7 10.1 98543
FastSAM-s avec YOLOv8 backbone 23.7 11.8 140
Ultralytics YOLOv8n-seg 6,7 (11,7x plus petit) 3,4 (11,4x moins) 79,5 (1071x plus rapide)

Pour plus de détails, voir la section SAM 2 comparison vs YOLOv8.

📅C réé il y a 4 mois ✏️ Mis à jour il y a 13 jours

Commentaires