Meet YOLO26: next-gen vision AI.

Link to this sectionSegment Anything Model (SAM)#

Evoluzione di SAM

Questo è il modello SAM originale di Meta. Per funzionalità migliorate, consulta SAM 2 per la segmentazione video o SAM 3 per la Promptable Concept Segmentation con prompt basati su testo ed esempi di immagini.

Come usare Segment Anything in Colab

Benvenuto alla frontiera della segmentazione delle immagini con il Segment Anything Model, o SAM. Questo modello rivoluzionario ha cambiato le regole del gioco introducendo la segmentazione delle immagini basata su prompt con prestazioni in tempo reale, stabilendo nuovi standard nel campo.

Link to this sectionIntroduzione a SAM: Il Segment Anything Model#

Il Segment Anything Model, o SAM, è un modello di segmentazione delle immagini all'avanguardia che consente la segmentazione basata su prompt, offrendo una versatilità senza pari nelle attività di analisi delle immagini. SAM costituisce il cuore dell'iniziativa Segment Anything, un progetto rivoluzionario che introduce un nuovo modello, un nuovo task e un nuovo dataset per la segmentazione delle immagini.

Il design avanzato di SAM gli consente di adattarsi a nuove distribuzioni di immagini e attività senza conoscenze preliminari, una funzionalità nota come zero-shot transfer. Addestrato sull'ampio dataset SA-1B, che contiene più di 1 miliardo di maschere distribuite su 11 milioni di immagini accuratamente curate, SAM ha mostrato prestazioni zero-shot impressionanti, superando in molti casi i precedenti risultati completamente supervisionati.

Esempio di dataset SA-1B con maschere di segmentazione automatiche Immagini di esempio SA-1B. Le immagini del dataset sovrappongono le maschere del nuovo dataset SA-1B. SA-1B contiene 11 milioni di immagini diverse, ad alta risoluzione, con licenza e che tutelano la privacy, oltre a 1,1 miliardi di maschere di segmentazione di alta qualità. Queste maschere sono state annotate in modo completamente automatico da SAM e, come verificato da valutazioni umane e numerosi esperimenti, sono di alta qualità e diversità. Le immagini sono raggruppate in base al numero di maschere per immagine per la visualizzazione (ci sono circa 100 maschere per immagine in media).

Link to this sectionCaratteristiche principali del Segment Anything Model (SAM)#

  • Attività di segmentazione basata su prompt: SAM è stato progettato con l'idea di un'attività di segmentazione basata su prompt, consentendogli di generare maschere di segmentazione valide a partire da qualsiasi prompt fornito, come indizi spaziali o testuali che identificano un oggetto.
  • Architettura avanzata: Il Segment Anything Model impiega un potente codificatore di immagini, un codificatore di prompt e un decodificatore di maschere leggero. Questa architettura unica consente una sollecitazione flessibile, il calcolo della maschera in tempo reale e la consapevolezza dell'ambiguità nelle attività di segmentazione.
  • Il dataset SA-1B: Introdotto dal progetto Segment Anything, il dataset SA-1B presenta oltre 1 miliardo di maschere su 11 milioni di immagini. Essendo il più grande dataset di segmentazione ad oggi, fornisce a SAM una fonte di dati di addestramento diversificata e su larga scala.
  • Prestazioni Zero-Shot: SAM mostra prestazioni zero-shot eccezionali in varie attività di segmentazione, rendendolo uno strumento pronto all'uso per diverse applicazioni con il minimo bisogno di prompt engineering.

Per uno sguardo approfondito al Segment Anything Model e al dataset SA-1B, visita il GitHub di Segment Anything e consulta il documento di ricerca Segment Anything.

SAM sulla piattaforma Ultralytics

SAM alimenta la funzionalità di annotazione intelligente sulla Piattaforma Ultralytics, consentendo una mascheratura intelligente basata su clic per un'etichettatura rapida del dataset. Vedi la guida all'annotazione per i dettagli.

Link to this sectionModelli disponibili, attività supportate e modalità operative#

Questa tabella presenta i modelli disponibili con i loro specifici pesi pre-addestrati, le attività che supportano e la loro compatibilità con diverse modalità operative come Inferenza, Validazione, Addestramento ed Esportazione, indicate dalle emoji ✅ per le modalità supportate e dalle emoji ❌ per le modalità non supportate.

Tipo di modelloPesi pre-addestratiAttività supportateInferenzaValidazioneAddestramentoEsportazione
SAM basesam_b.ptSegmentazione di istanze
SAM largesam_l.ptSegmentazione di istanze

Link to this sectionCome usare SAM: Versatilità e potenza nella segmentazione delle immagini#

Il Segment Anything Model può essere impiegato per una moltitudine di attività a valle che vanno oltre i suoi dati di addestramento. Ciò include il rilevamento dei bordi, la generazione di proposte di oggetti, la segmentazione di istanze e la previsione preliminare da testo a maschera. Con il prompt engineering, SAM può adattarsi rapidamente a nuove attività e distribuzioni di dati in modo zero-shot, affermandosi come uno strumento versatile e potente per tutte le tue esigenze di segmentazione delle immagini.

Link to this sectionEsempio di previsione SAM#

Segmenta con i prompt

Segmenta l'immagine con i prompt forniti.

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Display model information (optional)
model.info()

# Run inference with bboxes prompt
results = model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# 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]])
Segmenta tutto

Segmenta l'intera immagine.

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/image.jpg")
  • La logica qui è quella di segmentare l'intera immagine se non passi alcun prompt (bbox/punti/maschere).
Esempio di SAMPredictor

In questo modo puoi impostare l'immagine una volta ed eseguire l'inferenza dei prompt più volte senza eseguire il codificatore di immagini più volte.

import cv2

from ultralytics.models.sam import Predictor as SAMPredictor

# Create SAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="mobile_sam.pt")
predictor = SAMPredictor(overrides=overrides)

# Set image
predictor.set_image("ultralytics/assets/zidane.jpg")  # set with image file
predictor.set_image(cv2.imread("ultralytics/assets/zidane.jpg"))  # set with np.ndarray
results = predictor(bboxes=[439, 437, 524, 709])

# Run inference with single point prompt
results = predictor(points=[900, 370], labels=[1])

# Run inference with multiple points prompt
results = predictor(points=[[400, 370], [900, 370]], labels=[1, 1])

# Run inference with negative points prompt
results = predictor(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

# Reset image
predictor.reset_image()

Segmenta tutto con argomenti aggiuntivi.

from ultralytics.models.sam import Predictor as SAMPredictor

# Create SAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="mobile_sam.pt")
predictor = SAMPredictor(overrides=overrides)

# Segment with additional args
results = predictor(source="ultralytics/assets/zidane.jpg", crop_n_layers=1, points_stride=64)
Nota

All the returned results in the above examples are Results objects which allow access to predicted masks and source image easily.

Link to this sectionConfronto SAM rispetto a YOLO#

Qui confrontiamo il modello SAM-b di Meta con i modelli di segmentazione Ultralytics, incluso YOLO26n-seg:

ModelloDimensioni
(MB)
Parametri
(M)
Velocità (CPU)
(ms/im)
Meta SAM-b37593.741703
MobileSAM40.710.123802
FastSAM-s con YOLOv8 backbone23.911.858.0
Ultralytics YOLOv8n-seg7.1 (52.8x più piccolo)3.4 (27.6x in meno)24.8 (1682x più veloce)
Ultralytics YOLO11n-seg6.2 (60.5x più piccolo)2.9 (32.3x in meno)24.3 (1716x più veloce)
Ultralytics YOLO26n-seg6.7 (56.0x più piccolo)2.7 (34.7x in meno)25.2 (1655x più veloce)

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

Velocità SAM misurate con PyTorch, velocità YOLO misurate con ONNX Runtime. Test eseguiti su un Apple M4 Air del 2025 con 16GB di RAM utilizzando torch==2.10.0, ultralytics==8.4.31 e onnxruntime==1.24.4. Per riprodurre questo test:

Esempio
from ultralytics import ASSETS, SAM, YOLO, FastSAM

# Profile SAM-b, MobileSAM
for file in ["sam_b.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)
    model = YOLO(onnx_path)
    model(ASSETS)

Link to this sectionAuto-Annotazione: Un percorso rapido per i dataset di segmentazione#

L'auto-annotazione è una caratteristica chiave di SAM, che consente agli utenti di generare un dataset di segmentazione utilizzando un modello di rilevamento pre-addestrato. Questa funzionalità consente un'annotazione rapida e accurata di un gran numero di immagini, evitando la necessità di un'etichettatura manuale che richiede tempo.

Link to this sectionGenera il tuo dataset di segmentazione utilizzando un modello di rilevamento#

Per auto-annotare il tuo dataset con il framework Ultralytics, usa 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="sam_b.pt")
ArgomentoTipoPredefinitoDescrizione
datastrobbligatorioPercorso della directory contenente le immagini target per l'annotazione o la segmentazione.
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 pesi SAM, SAM 2, MobileSAM e SAM 3).
devicestr''Dispositivo di calcolo (es. 'cuda:0', 'cpu' o '' per il rilevamento automatico del dispositivo).
conffloat0.25Soglia di confidenza di rilevamento YOLO per filtrare i rilevamenti deboli.
ioufloat0.45Soglia IoU per la Non-Maximum Suppression per filtrare i riquadri sovrapposti.
imgszint640Dimensione di input per il ridimensionamento delle immagini (deve essere un multiplo di 32).
max_detint300Numero massimo di rilevamenti per immagine per l'efficienza della memoria.
classeslist[int]NoneElenco degli indici di classe da rilevare (ad esempio, [0, 1] per persona e bicicletta).
output_dirstrNoneDirectory di salvataggio per le annotazioni (predefinito: una directory sorella di <data>_auto_annotate_labels).

La funzione auto_annotate accetta il percorso delle tue immagini, con argomenti opzionali per specificare i modelli di rilevamento preaddestrati e di segmentazione SAM, il dispositivo su cui eseguire i modelli e la directory di output per salvare i risultati annotati.

L'auto-annotazione con modelli preaddestrati può ridurre drasticamente il tempo e lo sforzo necessari per creare dataset di segmentazione di alta qualità. Questa funzionalità è particolarmente vantaggiosa per ricercatori e sviluppatori che gestiscono grandi collezioni di immagini, poiché permette loro di concentrarsi sullo sviluppo e sulla valutazione dei modelli piuttosto che sull'annotazione manuale.

Link to this sectionCitazioni e ringraziamenti#

Se trovi SAM utile nel tuo lavoro di ricerca o sviluppo, ti preghiamo di considerare di citare il nostro articolo:

Citazione
@misc{kirillov2023segment,
      title={Segment Anything},
      author={Alexander Kirillov and Eric Mintun and Nikhila Ravi and Hanzi Mao and Chloe Rolland and Laura Gustafson and Tete Xiao and Spencer Whitehead and Alexander C. Berg and Wan-Yen Lo and Piotr Dollár and Ross Girshick},
      year={2023},
      eprint={2304.02643},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Desideriamo esprimere la nostra gratitudine a Meta AI per aver creato e mantenuto questa risorsa preziosa per la comunità di computer vision.

Link to this sectionFAQ#

Link to this sectionCos'è il Segment Anything Model (SAM) di Ultralytics?#

Il Segment Anything Model (SAM) di Ultralytics è un rivoluzionario modello di segmentazione delle immagini progettato per attività di segmentazione guidate da prompt. Sfrutta un'architettura avanzata, che include encoder di immagini e prompt combinati con un leggero decoder di maschere, per generare maschere di segmentazione di alta qualità a partire da vari prompt come suggerimenti spaziali o testuali. Addestrato sull'ampio dataset SA-1B, SAM eccelle nelle prestazioni zero-shot, adattandosi a nuove distribuzioni di immagini e attività senza una conoscenza preventiva.

Link to this sectionCome posso usare il Segment Anything Model (SAM) per la segmentazione delle immagini?#

Puoi utilizzare il Segment Anything Model (SAM) per la segmentazione delle immagini eseguendo l'inferenza con vari prompt come riquadri di delimitazione o punti. Ecco un esempio usando Python:

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Segment with bounding box prompt
model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Segment with points prompt
model("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Segment with multiple points prompt
model("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Segment with multiple points prompt per object
model("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Segment with negative points prompt.
model("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

In alternativa, puoi eseguire l'inferenza con SAM nell'interfaccia a riga di comando (CLI):

yolo predict model=sam_b.pt source=path/to/image.jpg

Per istruzioni d'uso più dettagliate, visita la sezione Segmentazione.

Link to this sectionCome si confrontano i modelli SAM e YOLO in termini di prestazioni?#

Rispetto ai modelli YOLO, le varianti di SAM come SAM-b, MobileSAM e FastSAM-s sono solitamente più grandi e più lente, ma offrono capacità di segmentazione zero-shot uniche. Ad esempio, YOLO26n-seg è 56 volte più piccolo e oltre 1650 volte più veloce del modello originale SAM-b di Meta su CPU. Questo rende i modelli YOLO ideali per applicazioni che richiedono una segmentazione rapida, leggera e computazionalmente efficiente, mentre i modelli SAM eccellono in attività di segmentazione flessibili, basate su prompt e zero-shot.

Link to this sectionCome posso auto-annotare il mio dataset usando SAM?#

Il SAM di Ultralytics offre una funzione di auto-annotazione che permette di generare dataset di segmentazione utilizzando un modello di rilevamento preaddestrato. Ecco un esempio in Python:

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")

Questa funzione accetta il percorso delle tue immagini e argomenti opzionali per i modelli di rilevamento preaddestrati e di segmentazione SAM, insieme alle specifiche del dispositivo e della directory di output. Per una guida completa, consulta Auto-Annotazione.

Link to this sectionQuali dataset vengono utilizzati per addestrare il Segment Anything Model (SAM)?#

SAM è addestrato sull'ampio dataset SA-1B, che comprende oltre 1 miliardo di maschere su 11 milioni di immagini. SA-1B è il più grande dataset di segmentazione fino ad oggi, fornendo dati di addestramento di alta qualità e diversificati, garantendo prestazioni zero-shot impressionanti in svariate attività di segmentazione. Per ulteriori dettagli, visita la sezione Dataset.

Commenti