Vai al contenuto

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 unificati e suggeribili che supporta l'elaborazione in tempo reale e la generalizzazione a scatto zero.

SAM 2 Risultati di esempio

Caratteristiche principali

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 permette di ottenere prestazioni coerenti con 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 una 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 può segmentare oggetti che non ha mai incontrato prima, dimostrando una forte generalizzazione a colpo zero. Questo è 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 perfezionare i risultati in applicazioni come l'annotazione di video o l'imaging medico.

Gestione avanzata delle sfide visive

SAM 2 include meccanismi per gestire le sfide comuni della 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 vengono temporaneamente oscurati o escono e rientrano nella scena.

Per una comprensione più approfondita dell'architettura e delle funzionalità di SAM 2, esplora il documento di ricercaSAM 2.

Prestazioni e dettagli tecnici

SAM 2 stabilisce un nuovo punto di riferimento nel campo, 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 della 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 momento.
  • Codificatore di prompt: Elabora i suggerimenti forniti dall'utente (punti, caselle, maschere) per guidare l'attività di segmentazione. Questo permette a SAM 2 di adattarsi agli input dell'utente e di puntare 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 immagazzinano e utilizzano le informazioni dei fotogrammi passati, 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 permette 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 che si sovrappongono), SAM 2 può generare previsioni di maschere multiple. Questa caratteristica è fondamentale per rappresentare accuratamente scene complesse in cui una sola maschera potrebbe non descrivere sufficientemente le sfumature della scena.

Set di dati SA-V

Il dataset SA-V, sviluppato per l'addestramento di SAM 2, è uno dei più grandi e diversificati dataset di segmentazione video disponibili. Include:

  • Oltre 51.000 video: Catturati 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 interi oggetti 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.

Parametri di riferimento

Segmentazione degli 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, usa il seguente comando. Tutti i modelli di SAM 2 verranno scaricati automaticamente al primo utilizzo.

pip install ultralytics

Come usare SAM 2: versatilità nella segmentazione di immagini e video

La seguente tabella illustra i modelli disponibili su SAM 2, i loro pesi pre-addestrati, i compiti supportati e la compatibilità con diverse modalità operative come Inferenza, Convalida, Formazione ed Esportazione.

Tipo di modello Pesi pre-addestrati Attività supportate Inferenza Convalida Formazione Esportazione
SAM 2 minuscolo sam2_t.pt Segmentazione dell'istanza
SAM 2 piccoli sam2_s.pt Segmentazione dell'istanza
SAM 2 base sam2_b.pt Segmentazione dell'istanza
SAM 2 grandi sam2_l.pt Segmentazione dell'istanza

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 sia statici che dinamici lo rende uno strumento versatile per ricercatori e sviluppatori.

Segmento con i suggerimenti

Segmento con i suggerimenti

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

Segmento Tutto

Segmento Tutto

Segmenta l'intero contenuto di un'immagine o di un video senza bisogno di indicazioni specifiche.

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
  • 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 comparison vs YOLOv8

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

Modello 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 con YOLOv8 backbone 23.7 11.8 140
Ultralytics YOLOv8n-Seg 6.7 (11.7x smaller) 3.4 (11.4x less) 79.5 (1071x faster)

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.

Tests run on a 2023 Apple M2 Macbook with 16GB of RAM using torch==2.3.1 e ultralytics==8.3.82. To reproduce this 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'auto-annotazione è una potente funzionalità di SAM 2, che consente agli utenti di generare set di dati di segmentazione in modo rapido e accurato sfruttando i modelli pre-addestrati. Questa funzionalità è particolarmente utile per creare set di dati di grandi dimensioni e di alta qualità senza un grande sforzo manuale.

Come annotare automaticamente con SAM 2

Per auto-analizzare il tuo set di dati utilizzando SAM 2, segui questo esempio:

Esempio di annotazione automatica

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.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 di YOLO pre-addestrato. Il valore predefinito è 'yolov8x.pt'. 'yolov8x.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).
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 cambi significativi di punto di vista.
  • Confusione degli oggetti: Il modello può a volte confondere oggetti dall'aspetto simile, soprattutto in 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 gli 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 tuo lavoro di ricerca o sviluppo, citalo utilizzando i seguenti riferimenti:

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

DOMANDE FREQUENTI

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 scatto zero. SAM Il 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, il che lo rende adatto alle applicazioni che richiedono un feedback immediato.
  • Generalizzazione Zero-Shot: Segmenta oggetti che non ha mai incontrato prima, utile in diversi ambiti visivi.
  • Raffinamento interattivo: Permette agli utenti di perfezionare in modo iterativo 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 maggiori dettagli sull'architettura e sulle funzionalità di SAM 2, consulta il documento di ricercaSAM 2.

Come posso 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 i suggerimenti

Usa 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, consulta la sezione Come usare SAM 2.

Quali sono i set di dati utilizzati per addestrare SAM 2 e come migliorano le sue prestazioni?

SAM 2 viene 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: Catturati 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 interi oggetti 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 zero scatti. Per maggiori informazioni, consulta la sezione Dataset 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 della 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, consulta 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 una segmentazione completa degli oggetti con funzioni avanzate come la generalizzazione a zero scatti e prestazioni in tempo reale, YOLOv8 è ottimizzato per la velocità e l'efficienza nel rilevamento e nella segmentazione degli oggetti. Ecco un confronto:

Modello 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 con 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

Commenti