Vai al contenuto

MobileSAM Logo

Segmento Mobile Anything (MobileSAM)

MobileSAM è un modello di segmentazione dell'immagine compatto ed efficiente, appositamente costruito per dispositivi mobili e periferici. Progettato per portare la potenza del Segment Anything Model di Meta (SAM) agli ambienti con calcolo limitato, MobileSAM offre una segmentazione quasi istantanea mantenendo la compatibilità con la pipeline SAM originale. Sia che stiate sviluppando applicazioni in tempo reale o distribuzioni leggere, MobileSAM fornisce risultati di segmentazione impressionanti con una frazione delle dimensioni e dei requisiti di velocità dei suoi predecessori.



Guarda: Come eseguire l'inferenza con MobileSAM utilizzando Ultralytics | Guida passo-passo 🎉

MobileSAM è stato adottato in diversi progetti, tra cui SAM, AnyLabeling e Segment Anything in 3D.

MobileSAM è stato addestrato su una singola GPU utilizzando un dataset di 100.000 immagini (l'1% delle immagini originali) in meno di un giorno. Il codice di addestramento sarà rilasciato in futuro.

Modelli disponibili, attività supportate e modalità operative

La tabella seguente illustra il modello MobileSAM disponibile, i suoi pesi pre-addestrati, i compiti supportati e la compatibilità con diverse modalità operative come Inferenza, Convalida, Addestramento ed Esportazione. Le modalità supportate sono indicate con ✅ e quelle non supportate con ❌.

Tipo di modello Pesi pre-addestrati Attività supportate Inferenza Convalida Formazione Esportazione
MobileSAM mobile_sam.pt Segmentazione delle istanze

Confronto MobileSAM vs YOLO

Il seguente confronto evidenzia le differenze tra le varianti SAM di Meta, MobileSAM, e i modelli di segmentazione più piccoli di Ultralytics, tra cui YOLO11n-seg:

Modello Dimensione
(MB)
Parametri
(M)
Velocità (CPU)
(ms/im)
Meta SAM-b 375 93.7 49401
Meta SAM2-b 162 80.8 31901
Meta SAM2-t 78.1 38.9 25997
MobileSAM 40.7 10.1 25381
FastSAM condorsale YOLOv8 23.7 11.8 55.9
Ultralytics YOLOv8n 6,7 (11,7 volte più piccolo) 3,4 (11,4 volte in meno) 24,5 (1061 volte più veloce)
Ultralytics YOLO11n-seg 5,9 (13,2 volte più piccolo) 2,9 (13,4 volte in meno) 30,1 (864x più veloce)

Questo confronto dimostra le differenze sostanziali in termini di dimensioni e velocità dei modelli tra le varianti SAM e i modelli di segmentazione YOLO . Mentre i modelli SAM offrono capacità di segmentazione automatica uniche, i modelli YOLO , in particolare YOLOv8n e YOLO11n-seg, sono significativamente più piccoli, più veloci e più efficienti dal punto di vista computazionale.

I test sono stati condotti su un Apple M4 Pro 2025 con 24GB di RAM utilizzando torch==2.6.0 e ultralytics==8.3.90. Per riprodurre questi risultati:

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 YOLO models
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    model(ASSETS)

Adattarsi da SAM a MobileSAM

MobileSAM mantiene la stessa pipeline dell'originale SAMcompresa la pre-elaborazione, la post-elaborazione e tutte le interfacce. Ciò significa che è possibile passare da SAM a MobileSAM con modifiche minime al flusso di lavoro.

La differenza principale è il codificatore di immagini: MobileSAM sostituisce l'encoder ViT-H originale (632M parametri) con un encoder Tiny-ViT molto più piccolo (5M parametri). Su una singola GPU, MobileSAM elabora un'immagine in circa 12 ms (8 ms per l'encoder, 4 ms per il decoder della maschera).

Confronto tra i codificatori di immagini basati su ViT

Codificatore di immagini Originale SAM MobileSAM
Parametri 611M 5M
Velocità 452 ms 8 ms

Decodificatore di maschere guidato da un prompt

Decodificatore di maschere Originale SAM MobileSAM
Parametri 3.876M 3.876M
Velocità 4ms 4ms

Confronto tra l'intera pipeline

Intera pipeline (Enc+Dec) Originale SAM MobileSAM
Parametri 615M 9.66M
Velocità 456 ms 12 ms

Le prestazioni di MobileSAM e del SAM originale sono illustrate di seguito, utilizzando sia i prompt a punti che quelli a caselle.

Immagine con punto come promemoria

Immagine con riquadro come promemoria

MobileSAM è circa 5 volte più piccolo e 7 volte più veloce di FastSAM. Per ulteriori dettagli, visitate la pagina del progettoMobileSAM .

Test su MobileSAM in Ultralytics

Proprio come l'originale SAMUltralytics offre un'interfaccia semplice per testare MobileSAM, supportando sia i prompt Point che Box.

Modello da scaricare

Scaricate i pesi preaddestrati di MobileSAM dagli asset diUltralytics .

Prompt a punti

Esempio

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Predict multiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Box Prompt

Esempio

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Predict multiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Entrambi MobileSAM e SAM condividono la stessa API. Per maggiori dettagli sull'uso, vedere la sezione Documentazione SAM.

Costruire automaticamente set di dati di segmentazione utilizzando un modello di rilevamento

Per annotare automaticamente il set di dati con il framework Ultralytics , si può utilizzare il metodo auto_annotate come mostrato di seguito:

Esempio

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="mobile_sam.pt")
Argomento Tipo Predefinito Descrizione
data str richiesto Percorso della directory contenente le immagini di destinazione per l'annotazione o la segmentazione.
det_model str 'yolo11x.pt' YOLO percorso del modello di rilevamento per il rilevamento iniziale degli oggetti.
sam_model str 'sam_b.pt' Percorso del modello SAM per la segmentazione (supporta i modelli SAM, SAM2 e mobile_sam).
device str '' Dispositivo di calcolo (ad esempio, 'cuda:0', 'cpu', o '' per il rilevamento automatico del dispositivo).
conf float 0.25 YOLO soglia di fiducia del rilevamento per filtrare i rilevamenti deboli.
iou float 0.45 Soglia IoU per la soppressione non massima per filtrare le caselle sovrapposte.
imgsz int 640 Dimensione di ingresso per il ridimensionamento delle immagini (deve essere un multiplo di 32).
max_det int 300 Numero massimo di rilevamenti per immagine per garantire l'efficienza della memoria.
classes list[int] None Elenco degli indici di classe da rilevare (es, [0, 1] per persona e bicicletta).
output_dir str None Directory di salvataggio delle annotazioni (predefinita a './labels' rispetto al percorso dei dati).

Citazioni e ringraziamenti

Se MobileSAM vi è utile per la vostra ricerca o il vostro sviluppo, considerate la possibilità di citare il seguente documento:

@article{mobile_sam,
  title={Faster Segment Anything: Towards Lightweight SAM for Mobile Applications},
  author={Zhang, Chaoning and Han, Dongshen and Qiao, Yu and Kim, Jung Uk and Bae, Sung Ho and Lee, Seungkyu and Hong, Choong Seon},
  journal={arXiv preprint arXiv:2306.14289},
  year={2023}
}

Leggete l'intero documentoMobileSAM su arXiv.

FAQ

Cos'è il MobileSAM e in cosa si differenzia dal modello SAM originale?

MobileSAM è un modello di segmentazione delle immagini leggero e veloce, ottimizzato per le applicazioni mobili e per i bordi. Mantiene la stessa pipeline del SAM originale, ma sostituisce il grande codificatore ViT-H (632M parametri) con un codificatore Tiny-ViT compatto (5M parametri). Il risultato è che MobileSAM è circa 5 volte più piccolo e 7 volte più veloce del SAM originale, con una velocità di funzionamento di circa 12 ms per immagine rispetto ai 456 ms del SAM. Per saperne di più sull'implementazione di MobileSAM, consultare il repository GitHub diMobileSAM .

Come posso testare MobileSAM utilizzando Ultralytics?

Testare MobileSAM in Ultralytics è semplice. È possibile utilizzare i prompt Point e Box per prevedere i segmenti. Ad esempio, utilizzando un prompt Punto:

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

Per maggiori dettagli, consultare la sezione Test di MobileSAM in Ultralytics.

Perché dovrei usare MobileSAM per la mia applicazione mobile?

MobileSAM è ideale per le applicazioni mobili ed edge grazie al suo design leggero e alla velocità di inferenza. Rispetto al SAM originale, MobileSAM è circa 5 volte più piccolo e 7 volte più veloce, il che lo rende adatto alla segmentazione in tempo reale su dispositivi con risorse computazionali limitate. La sua efficienza consente ai dispositivi mobili di eseguire la segmentazione delle immagini in tempo reale senza una latenza significativa. Inoltre, MobileSAM supporta la modalità di inferenza ottimizzata per le prestazioni dei dispositivi mobili.

Come è stato formato MobileSAM e il codice di formazione è disponibile?

MobileSAM è stato addestrato su una singola GPU con un dataset di 100.000 immagini (l'1% delle immagini originali) in meno di un giorno. Il codice di addestramento sarà rilasciato in futuro, ma attualmente è possibile accedere ai pesi pre-addestrati e ai dettagli di implementazione dal repository GitHub di MobileSAM .

Quali sono i principali casi d'uso di MobileSAM?

MobileSAM è stato progettato per una segmentazione rapida ed efficiente delle immagini in ambienti mobili e periferici. I casi d'uso principali includono:

  • Rilevamento e segmentazione degli oggetti in tempo reale per le app mobili
  • Elaborazione delle immagini a bassa latenza su dispositivi con calcolo limitato
  • Integrazione in applicazioni mobili alimentate dall'intelligenza artificiale per la realtà aumentata (AR), l'analisi e altro ancora.

Per ulteriori dettagli sui casi d'uso e sulle prestazioni, consultare l'adattamento da SAM a MobileSAM e il blog diUltralytics sulle applicazioni MobileSAM .



📅C reato 1 anno fa ✏️ Aggiornato 1 mese fa

Commenti