SAM 2.1
Abbiamo appena supportato il modello SAM2.1, più accurato. Provatelo!
SAM 2: Segmento Qualsiasi Modello 2
SAM 2, il successore di Segment Anything Model (SAM) di Meta, è uno strumento all'avanguardia progettato per la segmentazione completa di oggetti in immagini e video. Eccelle nella gestione di dati visivi complessi grazie a un'architettura di modelli unificata e suggeribile che supporta l'elaborazione in tempo reale e la generalizzazione a zero scatti.
Caratteristiche principali
Guarda: Come eseguire l'inferenza con Meta SAM2 usando Ultralytics | Guida passo-passo 🎉
Architettura del modello unificato
SAM 2 combina le funzionalità di segmentazione delle immagini e dei video in un unico modello. Questa unificazione semplifica l'implementazione e consente prestazioni coerenti tra i diversi tipi di media. Sfrutta un'interfaccia flessibile basata su prompt, che consente agli utenti di specificare gli oggetti di interesse attraverso vari tipi di prompt, come punti, bounding box o maschere.
Prestazioni in tempo reale
Il modello raggiunge velocità di inferenza in tempo reale, elaborando circa 44 fotogrammi al secondo. Questo rende SAM 2 adatto ad applicazioni che richiedono un feedback immediato, come l'editing video e la realtà aumentata.
Generalizzazione a colpo zero
SAM 2 è in grado di segmentare oggetti mai incontrati prima, dimostrando una forte generalizzazione a colpo zero. Ciò è particolarmente utile in domini visivi diversi o in evoluzione, dove le categorie predefinite potrebbero non coprire tutti gli oggetti possibili.
Perfezionamento interattivo
Gli utenti possono perfezionare iterativamente i risultati della segmentazione fornendo ulteriori suggerimenti, consentendo un controllo preciso sull'output. Questa interattività è essenziale per la messa a punto dei risultati in applicazioni come l'annotazione video o l'imaging medico.
Gestione avanzata delle sfide visive
SAM 2 include meccanismi per gestire le comuni sfide di segmentazione video, come l'occlusione e la ricomparsa degli oggetti. Utilizza un sofisticato meccanismo di memoria per tenere traccia degli oggetti nei vari fotogrammi, garantendo la continuità anche quando gli oggetti sono temporaneamente oscurati o escono e rientrano nella scena.
Per una comprensione più approfondita dell'architettura e delle funzionalità di SAM 2, consultate il documento di ricercaSAM 2.
Prestazioni e dettagli tecnici
SAM 2 stabilisce un nuovo punto di riferimento nel settore, superando i modelli precedenti su diverse metriche:
Metrico | SAM 2 | Precedente SOTA |
---|---|---|
Segmentazione video interattiva | Il meglio | - |
Interazioni umane necessarie | 3 volte in meno | Linea di base |
Precisione di segmentazione dell'immagine | Migliorato | SAM |
Velocità di inferenza | 6 volte più veloce | SAM |
Modello di architettura
Componenti principali
- Codificatore di immagini e video: Utilizza un'architettura basata su trasformatori per estrarre caratteristiche di alto livello da immagini e fotogrammi video. Questo componente è responsabile della comprensione del contenuto visivo in ogni istante.
- Codificatore di prompt: Elabora i suggerimenti forniti dall'utente (punti, caselle, maschere) per guidare l'attività di segmentazione. Ciò consente a SAM 2 di adattarsi all'input dell'utente e di mirare a oggetti specifici all'interno di una scena.
- Meccanismo di memoria: comprende un codificatore di memoria, un banco di memoria e un modulo di attenzione della memoria. Questi componenti memorizzano e utilizzano le informazioni dei fotogrammi precedenti, consentendo al modello di mantenere un tracciamento coerente degli oggetti nel tempo.
- Decodificatore di maschere: Genera le maschere di segmentazione finali in base alle caratteristiche dell'immagine codificata e ai suggerimenti. Nei video, utilizza anche il contesto della memoria per garantire un tracciamento accurato tra i fotogrammi.
Meccanismo di memoria e gestione dell'occlusione
Il meccanismo di memoria consente a SAM 2 di gestire le dipendenze temporali e le occlusioni nei dati video. Quando gli oggetti si muovono e interagiscono, SAM 2 registra le loro caratteristiche in una banca di memoria. Quando un oggetto viene occluso, il modello può fare affidamento su questa memoria per prevedere la sua posizione e il suo aspetto quando riappare. La testa di occlusione gestisce in modo specifico gli scenari in cui gli oggetti non sono visibili, prevedendo la probabilità che un oggetto sia occluso.
Risoluzione di ambiguità multi-mask
In situazioni di ambiguità (ad esempio, oggetti sovrapposti), SAM 2 può generare previsioni di maschere multiple. Questa caratteristica è fondamentale per rappresentare accuratamente scene complesse in cui una singola maschera potrebbe non descrivere sufficientemente le sfumature della scena.
Set di dati SA-V
Il set di dati SA-V, sviluppato per l'addestramento di SAM 2, è uno dei più grandi e diversificati set di dati di segmentazione video disponibili. Comprende:
- Oltre 51.000 video: Ripresi in 47 Paesi, per offrire un'ampia gamma di scenari reali.
- Oltre 600.000 annotazioni di maschere: Annotazioni dettagliate della maschera spazio-temporale, denominate "masklets", che coprono oggetti interi e parti.
- Scala del set di dati: Presenta un numero di video 4,5 volte superiore e un numero di annotazioni 53 volte superiore rispetto ai più grandi dataset precedenti, offrendo una diversità e una complessità senza precedenti.
Parametri di riferimento
Segmentazione di oggetti video
SAM 2 ha dimostrato prestazioni superiori nei principali benchmark di segmentazione video:
Set di dati | J&F | J | F |
---|---|---|---|
DAVIS 2017 | 82.5 | 79.8 | 85.2 |
YouTube-VOS | 81.2 | 78.9 | 83.5 |
Segmentazione interattiva
Nei compiti di segmentazione interattiva, SAM 2 mostra un'efficienza e un'accuratezza significative:
Set di dati | NoC@90 | AUC |
---|---|---|
DAVIS Interattivo | 1.54 | 0.872 |
Installazione
Per installare SAM 2, utilizzare il seguente comando. Tutti i modelli di SAM 2 verranno scaricati automaticamente al primo utilizzo.
Come utilizzare SAM 2: versatilità nella segmentazione di immagini e video
La tabella seguente illustra i modelli disponibili su SAM 2, i loro pesi preaddestrati, i compiti supportati e la compatibilità con diverse modalità operative come Inferenza, Convalida, Addestramento ed Esportazione.
Tipo di modello | Pesi pre-addestrati | Attività supportate | Inferenza | Convalida | Formazione | Esportazione |
---|---|---|---|---|---|---|
SAM 2 minuscolo | sam2_t.pt | Segmentazione delle istanze | ✅ | ❌ | ❌ | ❌ |
SAM 2 piccoli | sam2_s.pt | Segmentazione delle istanze | ✅ | ❌ | ❌ | ❌ |
SAM 2 base | sam2_b.pt | Segmentazione delle istanze | ✅ | ❌ | ❌ | ❌ |
SAM 2 grandi | sam2_l.pt | Segmentazione delle istanze | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 minuscolo | sam2.1_t.pt | Segmentazione delle istanze | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 piccolo | sam2.1_s.pt | Segmentazione delle istanze | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 base | sam2.1_b.pt | Segmentazione delle istanze | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 grande | sam2.1_l.pt | Segmentazione delle istanze | ✅ | ❌ | ❌ | ❌ |
SAM 2 Esempi di previsione
SAM 2 può essere utilizzato in un ampio spettro di attività, tra cui l'editing video in tempo reale, l'imaging medico e i sistemi autonomi. La sua capacità di segmentare dati visivi statici e dinamici lo rende uno strumento versatile per ricercatori e sviluppatori.
Segmento con suggerimenti
Segmento con suggerimenti
Utilizzare i suggerimenti per segmentare oggetti specifici in immagini o video.
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]])
Segmento Tutto
Segmento Tutto
Segmentate l'intero contenuto dell'immagine o del video senza richieste specifiche.
Segmentare il video e tracciare gli oggetti
Video del segmento
Segmentate l'intero contenuto del video con suggerimenti specifici e oggetti di traccia.
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]])
- Questo esempio dimostra come SAM 2 possa essere utilizzato per segmentare l'intero contenuto di un'immagine o di un video, se non vengono forniti suggerimenti (bbox/punti/maschere).
SAM 2 confronto vs YOLOv8
Qui si confronta il modello più piccolo di Meta SAM 2, SAM2-t, con il modello di segmentazione più piccolo di Ultralytics , YOLOv8n-seg:
Modello | Dimensione (MB) |
Parametri (M) |
Velocità (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 con dorsale YOLOv8 | 23.7 | 11.8 | 140 |
Ultralytics YOLOv8n-Seg | 6,7 (11,7 volte più piccolo) | 3,4 (11,4 volte in meno) | 79,5 (1071 volte più veloce) |
Questo confronto mostra le differenze di ordine di grandezza nelle dimensioni e nelle velocità dei modelli. Sebbene SAM presenti capacità uniche per la segmentazione automatica, non è un concorrente diretto dei modelli di segmentazione di YOLOv8 , che sono più piccoli, più veloci e più efficienti.
I test sono stati eseguiti su un Macbook M2 Apple del 2023 con 16 GB di RAM utilizzando torch==2.3.1
e ultralytics==8.3.82
. Per riprodurre questo test:
Esempio
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)
Annotazione automatica: Creazione efficiente di dataset
L'annotazione automatica è una potente funzionalità di SAM 2, che consente agli utenti di generare insiemi di dati di segmentazione in modo rapido e accurato, sfruttando modelli pre-addestrati. Questa funzionalità è particolarmente utile per creare insiemi di dati di grandi dimensioni e di alta qualità senza un grande sforzo manuale.
Come annotare automaticamente con SAM 2
Guarda: Annotazione automatica con il modello Segment Anything 2 di Meta utilizzando Ultralytics | Etichettatura dei dati
Per autoanalizzare il vostro set di dati usando SAM 2, seguite questo esempio:
Esempio di annotazione automatica
Argomento | Tipo | Descrizione | Predefinito |
---|---|---|---|
data |
str |
Percorso di una cartella contenente le immagini da annotare. | |
det_model |
str , opzionale |
Modello di rilevamento preaddestrato YOLO . Si imposta come predefinito su 'yolo11x.pt'. | 'yolo11x.pt' |
sam_model |
str , opzionale |
Modello di segmentazione preaddestrato SAM 2. Il valore predefinito è 'sam2_b.pt'. | 'sam2_b.pt' |
device |
str , opzionale |
Dispositivo su cui eseguire i modelli. Il valore predefinito è una stringa vuota (CPU o GPU, se disponibili). | |
conf |
float , opzionale |
Soglia di fiducia per il modello di rilevamento; l'impostazione predefinita è 0,25. | 0.25 |
iou |
float , opzionale |
Soglia IoU per il filtraggio delle caselle sovrapposte nei risultati del rilevamento; l'impostazione predefinita è 0,45. | 0.45 |
imgsz |
int , opzionale |
Dimensione di ridimensionamento dell'immagine in ingresso; il valore predefinito è 640. | 640 |
max_det |
int , opzionale |
Limita i rilevamenti per immagine per controllare le uscite in scene dense. | 300 |
classes |
list , opzionale |
Filtra le previsioni in base agli ID di classe specificati, restituendo solo i rilevamenti rilevanti. | None |
output_dir |
str , None , opzionale |
Cartella in cui salvare i risultati annotati. La cartella predefinita è 'labels' nella stessa directory di 'data'. | None |
Questa funzione facilita la creazione rapida di set di dati di segmentazione di alta qualità, ideale per i ricercatori e gli sviluppatori che vogliono accelerare i loro progetti.
Limitazioni
Nonostante i suoi punti di forza, SAM 2 presenta alcuni limiti:
- Stabilità di tracciamento: SAM 2 può perdere la traccia degli oggetti durante sequenze prolungate o cambiamenti significativi del punto di vista.
- Confusione degli oggetti: Il modello può talvolta confondere oggetti dall'aspetto simile, in particolare nelle scene affollate.
- Efficienza con più oggetti: L'efficienza della segmentazione diminuisce quando si elaborano più oggetti contemporaneamente, a causa della mancanza di comunicazione tra gli oggetti.
- Precisione nei dettagli: Può sfuggire ai dettagli più fini, soprattutto con oggetti in rapido movimento. I suggerimenti aggiuntivi possono risolvere parzialmente questo problema, ma la fluidità temporale non è garantita.
Citazioni e ringraziamenti
Se SAM 2 è una parte fondamentale del vostro lavoro di ricerca o sviluppo, citatelo utilizzando il seguente riferimento:
@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}
}
Estendiamo la nostra gratitudine a Meta AI per il suo contributo alla comunità dell'intelligenza artificiale con questo modello e set di dati all'avanguardia.
FAQ
Che cos'è SAM 2 e come migliora il Segment Anything Model originale (SAM)?
SAM 2, il successore di Segment Anything Model (SAM) di Meta, è uno strumento all'avanguardia progettato per la segmentazione completa di oggetti in immagini e video. Eccelle nella gestione di dati visivi complessi grazie a un'architettura di modelli unificati e suggeribili che supporta l'elaborazione in tempo reale e la generalizzazione a zero scatti. SAM 2 offre diversi miglioramenti rispetto all'originale SAM, tra cui:
- Architettura del modello unificato: Combina le capacità di segmentazione di immagini e video in un unico modello.
- Prestazioni in tempo reale: Elabora circa 44 fotogrammi al secondo, rendendolo adatto ad applicazioni che richiedono un feedback immediato.
- Generalizzazione Zero-Shot: Segmenta oggetti mai incontrati prima, utile in diversi ambiti visivi.
- Raffinamento interattivo: Consente agli utenti di perfezionare iterativamente i risultati della segmentazione fornendo ulteriori suggerimenti.
- Gestione avanzata delle sfide visive: Gestisce le sfide più comuni della segmentazione video, come l'occlusione e la ricomparsa degli oggetti.
Per ulteriori dettagli sull'architettura e sulle funzionalità di SAM 2, consultate il documento di ricercaSAM 2.
Come si può utilizzare SAM 2 per la segmentazione video in tempo reale?
SAM 2 può essere utilizzato per la segmentazione di video in tempo reale, sfruttando la sua interfaccia a prompt e le sue capacità di inferenza in tempo reale. Ecco un esempio di base:
Segmento con suggerimenti
Utilizzare i suggerimenti per segmentare oggetti specifici in immagini o video.
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])
Per un utilizzo più completo, consultare la sezione Come utilizzare SAM 2.
Quali set di dati vengono utilizzati per addestrare SAM 2 e come migliorano le sue prestazioni?
SAM 2 è addestrato sul dataset SA-V, uno dei più grandi e diversificati dataset di segmentazione video disponibili. Il set di dati SA-V comprende:
- Oltre 51.000 video: Ripresi in 47 Paesi, per offrire un'ampia gamma di scenari reali.
- Oltre 600.000 annotazioni di maschere: Annotazioni dettagliate della maschera spazio-temporale, denominate "masklets", che coprono oggetti interi e parti.
- Scala del set di dati: Presenta un numero di video 4,5 volte superiore e un numero di annotazioni 53 volte superiore rispetto ai precedenti set di dati più grandi, offrendo una diversità e una complessità senza precedenti.
Questo ampio set di dati consente a SAM 2 di ottenere prestazioni superiori nei principali benchmark di segmentazione video e migliora le sue capacità di generalizzazione a colpo zero. Per ulteriori informazioni, consultare la sezione Set di dati SA-V.
Come gestisce SAM 2 le occlusioni e le ricomparse di oggetti nella segmentazione video?
SAM 2 include un sofisticato meccanismo di memoria per gestire le dipendenze temporali e le occlusioni nei dati video. Il meccanismo di memoria consiste in:
- Codificatore di memoria e banco di memoria: Memorizza le caratteristiche dei fotogrammi precedenti.
- Modulo di attenzione alla memoria: Utilizza le informazioni memorizzate per mantenere una traccia coerente degli oggetti nel tempo.
- Testa di occlusione: gestisce in modo specifico gli scenari in cui gli oggetti non sono visibili, prevedendo la probabilità che un oggetto sia occluso.
Questo meccanismo garantisce la continuità anche quando gli oggetti vengono temporaneamente oscurati o escono e rientrano nella scena. Per maggiori dettagli, consultare la sezione Meccanismo di memoria e gestione dell'occlusione.
Come si colloca SAM 2 rispetto ad altri modelli di segmentazione come YOLOv8?
SAM 2 e Ultralytics YOLOv8 hanno scopi diversi ed eccellono in aree diverse. Mentre SAM 2 è stato progettato per la segmentazione completa degli oggetti con funzioni avanzate come la generalizzazione a zero scatti e le prestazioni in tempo reale, YOLOv8 è ottimizzato per la velocità e l'efficienza nel rilevamento e nella segmentazione degli oggetti. Ecco un confronto:
Modello | Dimensione (MB) |
Parametri (M) |
Velocità (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 con dorsale YOLOv8 | 23.7 | 11.8 | 140 |
Ultralytics YOLOv8n-Seg | 6,7 (11,7 volte più piccolo) | 3,4 (11,4 volte in meno) | 79,5 (1071 volte più veloce) |
Per maggiori dettagli, consultare la sezione SAM 2 a confronto con YOLOv8.