Skip to content

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

Modèle unifié d'architecture

SAM 2 combine les capacités de segmentation d'images et de vidéos en un seul modèle. Cette unification simplifie le déploiement et permet d'obtenir des performances cohérentes sur différents types de supports. 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 le montage 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 de façon itérative les résultats de la segmentation 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 pour gérer les défis courants de la segmentation vidéo, tels que l'occlusion et la réapparition des 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 mieux comprendre l'architecture et les capacités de SAM 2, consulte le document de rechercheSAM 2.

Performances et détails techniques

SAM 2 établit une nouvelle référence dans le domaine, en surpassant les modèles précédents sur diverses métriques :

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 d'image Amélioré SAM
Vitesse d'inférence 6x plus rapide SAM

Architecture du modèle

Composantes essentielles

  • 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 Ă  l'entrĂ©e 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 mĂ©moire. Ces composants stockent et utilisent collectivement les informations des images passĂ©es, ce qui permet au modèle de maintenir un suivi cohĂ©rent des objets au fil du temps.
  • DĂ©codeur de masque: GĂ©nère les masques de segmentation finaux en fonction des caractĂ©ristiques de l'image codĂ©e et des invites. En vidĂ©o, il utilise Ă©galement le contexte de la mĂ©moire pour assurer un suivi prĂ©cis d'une image Ă  l'autre.

SAM 2 Diagramme 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 mémoire. Lorsqu'un objet devient occlus, 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 où les objets ne sont pas visibles, en prédisant la probabilité qu'un objet soit occulté.

Résolution d'ambiguïté multi-masques

Dans les situations ambiguës (par exemple, les objets qui 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 : Des annotations de masque spatio-temporelles dĂ©taillĂ©es, appelĂ©es "masklets", couvrant des objets entiers et des parties.
  • Échelle de l'ensemble de donnĂ©es: Il comporte 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.

Repères

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 AUC
DAVIS Interactive 1.54 0.872

Installation

Pour installer SAM 2, utilise 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 Exporter
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 Exemples de prédiction

SAM 2 peut être utilisé dans un large éventail de tâches, y compris le montage vidéo en temps réel, l'imagerie médicale et les systèmes autonomes. Sa capacité à segmenter les 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

Utilise 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])

Segmente tout

Segmente tout

Segmente l'ensemble du contenu de l'image ou de la vidéo sans invites spécifiques.

from ultralytics import SAM

# Load a model
model = SAM("sam2_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_b.pt source=path/to/video.mp4
  • Cet exemple montre comment SAM 2 peut ĂŞtre utilisĂ© pour segmenter le contenu entier d'une image ou d'une vidĂ©o si aucune invite (bboxes/points/masques) n'est fournie.

SAM 2 comparison vs YOLOv8

Here we compare Meta's smallest SAM 2 model, SAM2-t, with Ultralytics smallest segmentation model, YOLOv8n-seg:

Modèle Size
(MB)
Parameters
(M)
Speed (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 smaller) 3.4 (11.4x less) 79.5 (1071x faster)

Cette comparaison montre les différences d'ordre de grandeur entre les tailles et les vitesses des modèles. Alors que SAM présente des capacité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.

Tests run on a 2023 Apple M2 Macbook with 16GB of RAM using torch==2.3.1 et ultralytics==8.3.82. To reproduce this 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 de jeux de données

L'auto-annotation est une fonction 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 fonction 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

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

Exemple d'auto-annotation

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model="sam2_b.pt")
Argument Type Description DĂ©faut
data str Chemin d'accès à un dossier contenant des images à annoter.
det_model stroptionnel Modèle de détection de YOLO pré-entraîné. La valeur par défaut est 'yolov8x.pt'. 'yolov8x.pt'
sam_model stroptionnel Modèle de segmentation pré-entraîné SAM 2. La valeur par défaut est 'sam2_b.pt'. 'sam2_b.pt'
device stroptionnel 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).
output_dir str, Noneoptionnel Répertoire où enregistrer les résultats annotés. Par défaut, il s'agit d'un dossier "labels" 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 visant à accélérer leurs projets.

Limites

Malgré ses points forts, SAM 2 a 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 les scènes bondĂ©es.
  • EfficacitĂ© avec plusieurs objets: 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 les objets qui se dĂ©placent 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 crucial de ton travail de recherche ou de développement, cite-le 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 ses contributions à 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 en quoi 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 et invitante 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 en un seul modèle.
  • 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 façon itĂ©rative les rĂ©sultats de la segmentation en fournissant des invites supplĂ©mentaires.
  • Traitement avancĂ© des dĂ©fis visuels: Gère les dĂ©fis courants de la 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, consulte 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

Utilise 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, reporte-toi à la section Comment utiliser SAM 2.

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

SAM 2 est formé 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 qui soient. 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 : Des annotations de masque spatio-temporelles dĂ©taillĂ©es, appelĂ©es "masklets", couvrant des objets entiers et des parties.
  • É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 une diversitĂ© et une complexitĂ© sans prĂ©cĂ©dent.

Ce vaste ensemble de données permet à SAM 2 d'obtenir des performances supérieures dans les principaux critères 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 l'ensemble 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 se compose de :

  • Encodeur de mĂ©moire et banque de mĂ©moire: Stocke les caractĂ©ristiques des images passĂ©es.
  • Module d'attention de la mĂ©moire: 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 oĂą les objets ne sont pas visibles, en prĂ©disant la probabilitĂ© qu'un objet soit occultĂ©.

Ce mécanisme assure la continuité même lorsque les objets sont temporairement obscurcis ou qu'ils quittent et réintègrent la scène. Pour plus de détails, reporte-toi à la section Mécanisme de mémoire et traitement des occlusions.

Comment SAM 2 se compare-t-il à d'autres modèles de segmentation comme 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 une segmentation complète des objets avec des fonctions avancées telles que la généralisation zéro-coup et la performance en temps réel, YOLOv8 est optimisé pour la vitesse et l'efficacité dans les tâches de détection et de segmentation des objets. Voici une comparaison :

Modèle Size
(MB)
Parameters
(M)
Speed (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 smaller) 3.4 (11.4x less) 79.5 (1071x faster)

For more details, see the SAM 2 comparison vs YOLOv8 section.


📅 Created 1 month ago ✏️ Updated 10 days ago

Commentaires