Segmentazione delle istanze con Ultralytics YOLO#
La segmentazione delle istanze va oltre il rilevamento degli oggetti e consiste nell'identificare singoli oggetti in un'immagine e separarli dal resto dell'immagine.
L'output di un modello di segmentazione delle istanze è un insieme di maschere o contorni che delimitano ciascun oggetto nell'immagine, insieme alle etichette di classe e ai punteggi di confidenza per ogni oggetto. La segmentazione delle istanze è utile quando devi sapere non solo dove si trovano gli oggetti in un'immagine, ma anche qual è la loro forma esatta.
Guarda: Esegui la segmentazione in Python con un modello Ultralytics YOLO preaddestrato.
I modelli YOLO26 Segment usano il suffisso -seg, ad esempio yolo26n-seg.pt, e sono preaddestrati su COCO.
Modelli#
Di seguito sono mostrati i modelli YOLO26 Segment preaddestrati sul dataset COCO.
I modelli vengono scaricati automaticamente dalla più recente release di Ultralytics al primo utilizzo.
| Modello | dimensione (pixel) | mAPbox 50-95(e2e) | mAPmaschera 50-95(e2e) | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-seg | 640 | 39.6 | 33.9 | 53.3 ± 0.5 | 2.1 ± 0.0 | 2.7 | 9.3 |
| YOLO26s-seg | 640 | 47.3 | 40.0 | 118.4 ± 0.9 | 3.3 ± 0.0 | 10.4 | 34.5 |
| YOLO26m-seg | 640 | 52.5 | 44.1 | 328.2 ± 2.4 | 6.7 ± 0.1 | 23.6 | 121.7 |
| YOLO26l-seg | 640 | 54.4 | 45.5 | 387.0 ± 3.7 | 8.0 ± 0.1 | 28.0 | 140.1 |
| YOLO26x-seg | 640 | 56.5 | 47.0 | 787.0 ± 6.8 | 16.4 ± 0.1 | 62.8 | 314.0 |
- I valori mAPval si riferiscono a un singolo modello e a una singola scala sul dataset COCO val2017.
Riproduci i risultati conyolo segment val data=coco.yaml device=0 nms=False - Velocità media sulle immagini COCO val con ONNX su CPU e TensorRT10 su una GPU NVIDIA T4.
Riproduci i risultati conyolo segment val data=coco.yaml batch=1 device=0|cpu nms=False - I valori di Parametri e FLOPs si riferiscono ai modelli fusi dopo la fusione di Conv/BatchNorm e la rimozione del ramo di rilevamento inutilizzato. I checkpoint preaddestrati mantengono l’architettura di addestramento completa e possono riportare valori più elevati.
Questi checkpoint segmentano le 80 classi COCO. Per segmentare categorie al di fuori di questo elenco senza riaddestrare il modello, consulta YOLOE, che accetta le classi come prompt testuale, esempio visivo o vocabolario integrato.
Consulta l'anteprima non ancora rilasciata di YOLO27 per i risultati preliminari di COCO su BBox e maschere.
Addestra#
Addestra YOLO26n-seg sul dataset COCO8-seg per 100 epoche con una dimensione delle immagini di 640. Per l'elenco completo degli argomenti disponibili, consulta la pagina Configurazione.
from ultralytics import YOLO
# Carica un modello
model = YOLO("yolo26n-seg.yaml") # crea un nuovo modello dal file YAML
model = YOLO("yolo26n-seg.pt") # carica un modello preaddestrato (consigliato per l'addestramento)
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt") # crea dal file YAML e trasferisci i pesi
# Addestra il modello
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)Consulta la pagina Addestramento per tutti i dettagli sulla modalità train. Puoi addestrare i modelli di segmentazione anche con l'addestramento cloud di Ultralytics Platform.
Formato del dataset#
Trovi tutti i dettagli sul formato dei dataset di segmentazione YOLO nella Guida ai dataset. Per convertire un dataset COCO JSON esistente nel formato YOLO, usa la funzione integrata convert_coco con use_segments=True, come descritto nella guida da COCO a YOLO. Puoi anche creare maschere di segmentazione con l'annotazione di Ultralytics Platform, usando strumenti per poligoni e l'annotazione intelligente basata su SAM.
Convalida#
Convalida l'accuratezza del modello YOLO26n-seg addestrato. Non servono argomenti, perché model conserva data e gli argomenti usati per l'addestramento come attributi del modello: path/to/best.pt dell'esempio di addestramento esegue la convalida su COCO8-seg. I pesi ufficiali registrano un percorso del dataset di addestramento che non esiste sul tuo computer, quindi, con un avviso, viene usato il valore predefinito dell'attività coco8-seg.yaml. Passa data per eseguire la convalida su un altro dataset.
from ultralytics import YOLO
# Carica un modello
model = YOLO("yolo26n-seg.pt") # carica un modello ufficiale
model = YOLO("path/to/best.pt") # carica un modello personalizzato
# Convalida il modello
metrics = model.val() # non servono argomenti, il dataset e le impostazioni vengono ricordati
metrics.box.map # map50-95(B)
metrics.box.map50 # map50(B)
metrics.box.map75 # map75(B)
metrics.box.maps # un elenco contenente mAP50-95(B) per ogni categoria
metrics.box.image_metrics # dizionario delle metriche per immagine per det con precision, recall, F1, TP, FP e FN
metrics.seg.map # map50-95(M)
metrics.seg.map50 # map50(M)
metrics.seg.map75 # map75(M)
metrics.seg.maps # un elenco contenente mAP50-95(M) per ogni categoria
metrics.seg.image_metrics # dizionario delle metriche per immagine per seg con precision, recall, F1, TP, FP e FNPredici#
Usa un modello YOLO26n-seg addestrato per eseguire predizioni sulle immagini.
from ultralytics import YOLO
# Carica un modello
model = YOLO("yolo26n-seg.pt") # carica un modello ufficiale
model = YOLO("path/to/best.pt") # carica un modello personalizzato
# Esegui previsioni con il modello
results = model("https://ultralytics.com/images/bus.jpg") # esegui una previsione su un’immagine
# Accedi ai risultati
for result in results:
xy = result.masks.xy # poligoni delle maschere in coordinate pixel
xyn = result.masks.xyn # poligoni delle maschere normalizzati
masks = result.masks.data # maschere binarie, forma (N,H,W), dtype torch.uint8Consulta la pagina Previsione per i dettagli completi sulla modalità predict.
Output dei risultati#
La segmentazione delle istanze YOLO restituisce un oggetto Results per immagine. Ogni risultato memorizza le predizioni a livello di oggetto, in cui ogni istanza rilevata ha la propria maschera binaria, classe, confidenza e BBox.
| Attributo | Tipo | Forma | Descrizione |
|---|---|---|---|
result.masks | Masks | (N) | Maschere di istanza. |
result.masks.data | torch.uint8 | (N,H,W) | Maschere binarie, con valori 0 o 1. |
result.masks.xy | np.float32 | list[(P,2)] | Poligoni in pixel. |
result.masks.xyn | np.float32 | list[(P,2)] | Poligoni normalizzati. |
result.boxes | Boxes | (N) | Riquadri/classi/confidenze delle istanze. |
result.boxes.cls | torch.float32 | (N,) | ID delle classi; converti in int per ottenere i nomi. |
Per consultare i campi Results specifici di ogni attività, visita la sezione Risultati delle previsioni per attività.
Segmentazione delle istanze e segmentazione semantica#
La segmentazione delle istanze opera a livello di oggetto: due auto producono due maschere, due BBox e due punteggi di confidenza. La segmentazione semantica è una classificazione a livello di pixel: le stesse auto diventano pixel con lo stesso ID di classe in un'unica mappa di classi delle dimensioni dell'immagine, senza BBox o valori di confidenza per oggetto né un elenco predefinito di poligoni. Consulta il confronto dettagliato campo per campo nella pagina sulla segmentazione semantica.
Esporta#
Esporta un modello YOLO26n-seg in un altro formato, ad esempio ONNX, CoreML e così via.
from ultralytics import YOLO
# Carica un modello
model = YOLO("yolo26n-seg.pt") # carica un modello ufficiale
model = YOLO("path/to/best.pt") # carica un modello personalizzato
# Esporta il modello
model.export(format="onnx")I formati di esportazione disponibili per YOLO26-seg sono elencati nella tabella seguente. Puoi esportare in qualsiasi formato usando l'argomento format, ad esempio format='onnx' o format='engine'. Puoi eseguire predizioni o convalidare direttamente i modelli esportati, ad esempio yolo predict model=yolo26n-seg.onnx. Al termine dell'esportazione, vengono mostrati esempi d'uso per il tuo modello.
CoreML supporta NMS integrato (nms=True) per il rilevamento, la segmentazione delle istanze e la stima della posa con forme statiche. Le esportazioni di segmentazione predefinite (nms=None) lasciano la gestione di NMS al componente che le utilizza.
| Formato | Argomento format | Modello | Metadati | Argomenti |
|---|---|---|---|---|
| PyTorch | - | yolo26n-seg.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-seg.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n-seg.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-seg_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-seg.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-seg.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| Apple Core AI | coreai | yolo26n-seg.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n-seg_saved_model/ | ✅ | imgsz, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-seg.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n-seg_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| LiteRT | litert | yolo26n-seg.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-seg_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-seg.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n-seg_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-seg_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-seg_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n-seg_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-seg_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-seg_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-seg_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| Hailo | hailo | yolo26n-seg_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n-seg_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n-seg_xilinx_model/ | ✅ | imgsz, name, quantize, data, fraction, opset, simplify, device |
nms=None restituisce per impostazione predefinita output grezzi per NMS esterno. Imposta nms=False per selezionare una head disponibile senza NMS; i formati non supportati utilizzano il proprio percorso di output nativo. Le voci nms qui sopra identificano i formati che possono integrare NMS con nms=True.
Consulta i dettagli completi di export nella pagina Esportazione.
Domande frequenti#
Per addestrare un modello di segmentazione YOLO26 su un dataset personalizzato, devi prima preparare il dataset nel formato di segmentazione YOLO. Puoi usare l'utilità integrata
convert_cocoper convertire dataset COCO JSON. Quando il dataset è pronto, puoi addestrare il modello usando Python o i comandi CLI:Esempiofrom ultralytics import YOLO # Carica un modello di segmentazione YOLO26 preaddestrato model = YOLO("yolo26n-seg.pt") # Addestra il modello results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)Consulta la pagina Configurazione per altri argomenti disponibili.
Il rilevamento degli oggetti identifica e localizza gli oggetti in un'immagine disegnando BBox intorno a essi, mentre la segmentazione delle istanze non solo identifica le BBox, ma delinea anche la forma esatta di ogni oggetto. I modelli di segmentazione delle istanze YOLO26 forniscono maschere o contorni che delimitano ciascun oggetto rilevato. Questa funzionalità è particolarmente utile per attività in cui è importante conoscere la forma precisa degli oggetti, come l'imaging medico o la guida autonoma.
Ultralytics YOLO26 è un modello all'avanguardia, apprezzato per l'elevata accuratezza e le prestazioni in tempo reale, caratteristiche che lo rendono ideale per le attività di segmentazione delle istanze. I modelli YOLO26 Segment sono preaddestrati sul dataset COCO, per garantire prestazioni solide su un'ampia varietà di oggetti. Inoltre, YOLO supporta le funzionalità di addestramento, convalida, inferenza ed esportazione con un'integrazione fluida, rendendolo estremamente versatile per le applicazioni di ricerca e industriali.
Caricare e convalidare un modello di segmentazione YOLO preaddestrato è semplice. Ecco come fare usando Python e CLI:
Esempiofrom ultralytics import YOLO # Carica un modello preaddestrato model = YOLO("yolo26n-seg.pt") # Convalida il modello metrics = model.val() print("Mean Average Precision for boxes:", metrics.box.map) print("Mean Average Precision for masks:", metrics.seg.map)Questi passaggi ti forniranno metriche di convalida come la precisione media (mAP), fondamentale per valutare le prestazioni del modello.
Esportare un modello di segmentazione YOLO nel formato ONNX è semplice e puoi farlo usando Python o i comandi CLI:
Esempiofrom ultralytics import YOLO # Carica un modello preaddestrato model = YOLO("yolo26n-seg.pt") # Esporta il modello in formato ONNX model.export(format="onnx")Per maggiori dettagli sull'esportazione in vari formati, consulta la pagina Esportazione.