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.
Caractéristiques principales
Regarde : How to Run Inference with Meta's SAM2 using Ultralytics | Step-by-Step Guide 🎉
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 |
Image Segmentation Accuracy | Amélioré | SAM |
Vitesse d'inférence | 6x plus rapide | SAM |
Architecture du modèle
Composantes essentielles
- Image and Video Encoder: Utilizes a transformer-based architecture to extract high-level features from both images and video frames. This component is responsible for understanding the visual content at each timestep.
- 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.
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.
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.
- 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
Argument | Type | Description | DĂ©faut |
---|---|---|---|
data |
str |
Chemin d'accès à un dossier contenant des images à annoter. | |
det_model |
str optionnel |
Modèle de détection de YOLO pré-entraîné. La valeur par défaut est 'yolov8x.pt'. | 'yolov8x.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). | |
output_dir |
str , None optionnel |
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.
- Detail Accuracy: May miss fine details, especially with fast-moving objects. Additional prompts can partially address this issue, but temporal smoothness is not guaranteed.
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 and Ultralytics YOLOv8 serve different purposes and excel in different areas. While SAM 2 is designed for comprehensive object segmentation with advanced features like zero-shot generalization and real-time performance, YOLOv8 is optimized for speed and efficiency in object detection and segmentation tasks. Here's a comparison:
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.