Vai al contenuto

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.

SAM 2 Risultati di esempio

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.

SAM 2 Diagramma dell'architettura

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.

pip install ultralytics

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.

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

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

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam2_b.pt")
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.

📅C reato 4 mesi fa ✏️ Aggiornato 9 giorni fa

Commenti