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.
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.
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.
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.
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
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.