Ultralytics YOLO27:

Logo del modello di segmentazione delle immagini leggero MobileSAM

Segment Anything mobile (MobileSAM)#

MobileSAM è un modello compatto ed efficiente per la segmentazione delle immagini, progettato appositamente per dispositivi mobili ed edge. Progettato per portare la potenza del modello Segment Anything di Meta (SAM) in ambienti con risorse di calcolo limitate, MobileSAM offre una segmentazione quasi istantanea mantenendo la compatibilità con la pipeline SAM originale. Che tu stia sviluppando applicazioni in tempo reale o implementazioni leggere, MobileSAM fornisce risultati di segmentazione notevoli con una frazione delle dimensioni e dei requisiti di velocità dei suoi predecessori.



Watch: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide 🎉

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

MobileSAM è stato addestrato su una singola GPU utilizzando un set di dati di 100k immagini (l'1% delle immagini originali) in meno di un giorno.

Modelli disponibili, attività supportate e modalità operative#

La tabella seguente illustra il modello MobileSAM disponibile, i relativi pesi preaddestrati, le attività supportate e la compatibilità con diverse modalità operative, come Inferenza, Validazione, Addestramento ed Esportazione. Le modalità supportate sono indicate con ✅, mentre quelle non supportate con ❌.

Tipo di modelloPesi preaddestratiAttività supportateAddestramentoConvalidaInferenzaEsportazione
MobileSAMmobile_sam.ptSegmentazione delle istanze

Confronto tra MobileSAM e YOLO#

Il confronto seguente evidenzia le differenze tra le varianti SAM di Meta, MobileSAM e i modelli di segmentazione Ultralytics, incluso YOLO26n-seg:

ModelloDimensioni
(MB)
Parametri
(M)
Velocità (CPU)
(ms/im)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s con backbone YOLOv823.911.858.0
Ultralytics YOLOv8n-seg7,1 (11,0 volte più piccolo)3,4 (11,4 volte in meno)24,8 (945 volte più veloce)
Ultralytics YOLO11n-seg6.2 (12.6 volte più piccolo)2,9 (13,4 volte in meno)24.3 (964 volte più veloce)
Ultralytics YOLO26n-seg6,7 (11,7 volte più piccolo)2.7 (14.4 volte in meno)25,2 (930 volte più veloce)

Questo confronto dimostra le notevoli differenze in termini di dimensioni e velocità del modello tra le varianti SAM e i modelli di segmentazione YOLO. Sebbene i modelli SAM offrano funzionalità uniche di segmentazione automatica, i modelli YOLO, in particolare YOLOv8n-seg, YOLO11n-seg e YOLO26n-seg, sono significativamente più piccoli, veloci ed efficienti dal punto di vista computazionale.

Le velocità di SAM sono state misurate con PyTorch, mentre quelle di YOLO sono state misurate con ONNX Runtime. I test sono stati eseguiti su un Apple M4 Air del 2025 con 16 GB di RAM utilizzando torch==2.10.0, ultralytics==8.4.31 e onnxruntime==1.24.4. 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 (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    onnx_path = model.export(format="onnx", dynamic=True, nms=False)  # YOLO26 NMS-free head; no-op for YOLOv8/YOLO11
    model = YOLO(onnx_path)
    model(ASSETS)

Adattamento da SAM a MobileSAM#

MobileSAM mantiene la stessa pipeline del modello SAM originale, inclusi pre-processing, post-processing e tutte le interfacce. Questo significa che puoi passare da SAM a MobileSAM con modifiche minime al tuo workflow.

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

Confronto tra encoder delle immagini basati su ViT#

Encoder delle immaginiSAM originaleMobileSAM
Parametri637M5M
Velocità452ms8ms

Decoder delle maschere guidato da prompt#

Decoder delle maschereSAM originaleMobileSAM
Parametri3,876M3,876M
Velocità4ms4ms

Confronto dell'intera pipeline#

Intera pipeline (Enc+Dec)SAM originaleMobileSAM
Parametri641M9,66M
Velocità456ms12ms

Le prestazioni di MobileSAM e del SAM originale sono illustrate di seguito utilizzando prompt di tipo punto e riquadro.

Immagine con punto come prompt

Immagine con riquadro come prompt

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

Testare MobileSAM in Ultralytics#

Proprio come per il SAM originale, Ultralytics offre un'interfaccia semplice per testare MobileSAM, con supporto per prompt di tipo punto e riquadro.

Download del modello#

Scarica i pesi preaddestrati di MobileSAM dagli asset di Ultralytics.

Prompt punto#

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

Prompt riquadro#

Esempio
from ultralytics import SAM

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

# Predict a segment based on a single box prompt
model.predict("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Predict multiple segments based on multiple box prompts
model.predict("ultralytics/assets/zidane.jpg", bboxes=[[439, 437, 524, 709], [114, 196, 313, 708]])

MobileSAM e SAM condividono la stessa API. Per ulteriori dettagli sull'utilizzo, consulta la documentazione di SAM.

Creare automaticamente dataset di segmentazione utilizzando un modello di rilevamento#

Per annotare automaticamente il tuo dataset con il framework Ultralytics, utilizza la funzione auto_annotate come mostrato di seguito:

Esempio
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")
ArgomentoTipoPredefinitoDescrizione
datastrobbligatorioPercorso della directory contenente le immagini di destinazione da annotare o segmentare.
det_modelstr'yolo26x.pt'Percorso del modello di rilevamento YOLO per il rilevamento iniziale degli oggetti.
sam_modelstr'sam_b.pt'Percorso del modello SAM per la segmentazione (supporta i pesi di SAM, SAM 2, MobileSAM e SAM 3).
devicestr''Dispositivo di calcolo (ad esempio, 'cuda:0', 'cpu' o '' per il rilevamento automatico del dispositivo).
conffloat0.25Soglia di confidenza del rilevamento YOLO per filtrare i rilevamenti deboli.
ioufloat0.45Soglia IoU per la soppressione dei non massimi, per filtrare i box sovrapposti.
imgszint640Dimensione di input per il ridimensionamento delle immagini (deve essere un multiplo di 32).
max_detint300Numero massimo di rilevamenti per immagine per un uso efficiente della memoria.
classeslist[int]NoneElenco degli indici delle classi da rilevare (ad esempio, [0, 1] per persona e bicicletta).
output_dirstrNoneDirectory di salvataggio per le annotazioni (per impostazione predefinita: directory adiacente a <data>_auto_annotate_labels).

Citazioni e ringraziamenti#

Se MobileSAM è utile per la tua ricerca o il tuo sviluppo, valuta la possibilità di citare il seguente articolo:

Citazione
@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}
}

Leggi l'articolo completo su MobileSAM su arXiv.

FAQ#

  • MobileSAM è un modello di segmentazione delle immagini leggero e veloce, ottimizzato per applicazioni mobili e di edge computing. Mantiene la stessa pipeline del SAM originale, ma sostituisce il grande encoder ViT-H (637M parametri) con un encoder Tiny-ViT compatto (5M parametri). Questo rende l'intera pipeline di MobileSAM circa 66 volte più piccola del SAM originale (9,66M contro 641M parametri) e circa 38 volte più veloce, operando in circa 12 ms per immagine rispetto ai 456 ms di SAM. Scopri di più sull'implementazione di MobileSAM nel repository GitHub di MobileSAM.

  • Testare MobileSAM in Ultralytics è semplice. Puoi utilizzare prompt di tipo punto e riquadro 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 ulteriori dettagli, consulta la sezione Testare MobileSAM in Ultralytics.

  • MobileSAM è ideale per applicazioni mobili e di edge computing grazie al suo design leggero e alla rapida velocità di inferenza. Rispetto al SAM originale, MobileSAM ha circa 66 volte meno parametri ed è circa 38 volte più veloce, rendendolo 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 mobili.

  • MobileSAM è stato addestrato su una singola GPU con un set di dati di 100k immagini (l'1% delle immagini originali SA-1B) in meno di un giorno, distillando l'encoder di immagini ViT-H di SAM in un encoder Tiny-ViT. Pesi pre-addestrati e dettagli di implementazione sono disponibili nel repository GitHub di MobileSAM.

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

    • Rilevamento e segmentazione degli oggetti in tempo reale per applicazioni mobili
    • Elaborazione delle immagini a bassa latenza su dispositivi con risorse di calcolo limitate
    • Integrazione in applicazioni mobili basate sull'AI per realtà aumentata (AR), analisi e altro

    Per ulteriori dettagli sui casi d'uso e sulle prestazioni, consulta Adattamento da SAM a MobileSAM e il blog di Ultralytics sulle applicazioni di MobileSAM.

Commenti