Segmentazione di istanza e Tracking con Ultralytics YOLO11 🚀
Cos'è la segmentazione di istanza?
La segmentazione di istanza è un'attività di computer vision che implica l'identificazione e la delineazione di singoli oggetti in un'immagine a livello di pixel. A differenza della segmentazione semantica che classifica solo i pixel per categoria, la segmentazione di istanza etichetta in modo univoco e delinea con precisione ogni istanza dell'oggetto, rendendola cruciale per applicazioni che richiedono una comprensione spaziale dettagliata come l'imaging medico, la guida autonoma e l'automazione industriale.
Ultralytics YOLO11 fornisce potenti funzionalità di instance segmentation che consentono il rilevamento preciso dei confini degli oggetti, mantenendo la velocità e l'efficienza per cui i modelli YOLO sono noti.
Sono disponibili due tipi di tracciamento della segmentazione delle istanze nel pacchetto Ultralytics:
-
Segmentazione delle istanze con oggetti di classe: A ogni oggetto di classe viene assegnato un colore univoco per una chiara separazione visiva.
-
Segmentazione di istanza con tracce di oggetti: Ogni traccia è rappresentata da un colore distinto, facilitando l'identificazione e il tracciamento nei fotogrammi video.
Guarda: Segmentazione delle istanze con tracciamento degli oggetti tramite Ultralytics YOLO11
Esempi
Segmentazione delle istanze | Segmentazione delle istanze + Tracciamento degli oggetti |
---|---|
![]() |
![]() |
Segmentazione delle istanze Ultralytics 😍 | Segmentazione delle istanze Ultralytics con tracciamento degli oggetti 🔥 |
Segmentazione delle istanze utilizzando Ultralytics YOLO
# Instance segmentation using Ultralytics YOLO11
yolo solutions isegment show=True
# Pass a source video
yolo solutions isegment source="path/to/video.mp4"
# Monitor the specific classes
yolo solutions isegment classes="[0, 5]"
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("isegment_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize instance segmentation object
isegment = solutions.InstanceSegmentation(
show=True, # display the output
model="yolo11n-seg.pt", # model="yolo11n-seg.pt" for object segmentation using YOLO11.
# classes=[0, 2], # segment specific classes i.e, person and car with pretrained model.
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
results = isegment(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
InstanceSegmentation
Argomenti
Ecco una tabella con i InstanceSegmentation
argomenti:
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
model |
str |
None |
Percorso del file del modello Ultralytics YOLO. |
region |
list |
'[(20, 400), (1260, 400)]' |
Elenco dei punti che definiscono la regione di conteggio. |
È anche possibile usufruire di track
argomenti all'interno del InstanceSegmentation
solution:
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
Specifica l'algoritmo di tracking da utilizzare, ad esempio: bytetrack.yaml oppure botsort.yaml . |
conf |
float |
0.3 |
Imposta la soglia di confidenza per i rilevamenti; valori inferiori consentono di tracciare più oggetti, ma potrebbero includere falsi positivi. |
iou |
float |
0.5 |
Imposta la soglia Intersection over Union (IoU) per filtrare i rilevamenti sovrapposti. |
classes |
list |
None |
Filtra i risultati per indice di classe. Per esempio, classes=[0, 2, 3] traccia solo le classi specificate. |
verbose |
bool |
True |
Controlla la visualizzazione dei risultati del tracking, fornendo un output visivo degli oggetti tracciati. |
device |
str |
None |
Specifica il dispositivo per l'inferenza (ad esempio, cpu , cuda:0 oppure 0 ). Consente agli utenti di scegliere tra CPU, una GPU specifica o altri dispositivi di calcolo per l'esecuzione del modello. |
Inoltre, sono disponibili i seguenti argomenti di visualizzazione:
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
show |
bool |
False |
Se True , visualizza le immagini o i video annotati in una finestra. Utile per un feedback visivo immediato durante lo sviluppo o il test. |
line_width |
None or int |
None |
Specifica lo spessore della linea dei riquadri di delimitazione. Se None , lo spessore della linea viene regolato automaticamente in base alle dimensioni dell'immagine, fornendo una personalizzazione visiva per una maggiore chiarezza. |
show_conf |
bool |
True |
Visualizza il punteggio di confidenza per ogni rilevamento accanto all'etichetta, offrendo una panoramica sulla certezza del modello per ogni rilevamento. |
show_labels |
bool |
True |
Mostra le etichette per ogni rilevamento nell'output visivo, fornendo una comprensione immediata degli oggetti rilevati. |
Applicazioni di Instance Segmentation
La segmentazione delle istanze con YOLO11 ha numerose applicazioni nel mondo reale in vari settori:
Gestione dei rifiuti e riciclaggio
YOLO11 può essere utilizzato negli impianti di gestione dei rifiuti per identificare e smistare diversi tipi di materiali. Il modello può segmentare rifiuti di plastica, cartone, metallo e altri materiali riciclabili con elevata precisione, consentendo ai sistemi di smistamento automatizzati di elaborare i rifiuti in modo più efficiente. Questo è particolarmente prezioso considerando che solo circa il 10% dei 7 miliardi di tonnellate di rifiuti di plastica generati a livello globale viene riciclato.
Veicoli autonomi
Nelle auto a guida autonoma, la segmentazione delle istanze aiuta a identificare e tracciare pedoni, veicoli, segnali stradali e altri elementi stradali a livello di pixel. Questa precisa comprensione dell'ambiente è fondamentale per le decisioni di navigazione e sicurezza. Le prestazioni in tempo reale di YOLO11 lo rendono ideale per queste applicazioni time-sensitive.
Imaging medicale
La segmentazione delle istanze può identificare e delineare tumori, organi o strutture cellulari nelle scansioni mediche. La capacità di YOLO11 di delineare con precisione i confini degli oggetti la rende preziosa per la diagnostica medica e la pianificazione del trattamento.
Monitoraggio del cantiere edile
Nei cantieri edili, la segmentazione delle istanze può tracciare macchinari pesanti, lavoratori e materiali. Ciò contribuisce a garantire la sicurezza monitorando le posizioni delle attrezzature e rilevando quando i lavoratori entrano in aree pericolose, ottimizzando al contempo il flusso di lavoro e l'allocazione delle risorse.
Nota
Per qualsiasi domanda, non esitate a pubblicare le vostre domande nella sezione dei problemi di Ultralytics o nella sezione di discussione menzionata di seguito.
FAQ
Come posso eseguire la segmentazione di istanza utilizzando Ultralytics YOLO11?
Per eseguire la segmentazione delle istanze utilizzando Ultralytics YOLO11, inizializzare il modello YOLO con una versione di segmentazione di YOLO11 ed elaborare i fotogrammi video attraverso di essa. Ecco un esempio di codice semplificato:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("instance-segmentation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Init InstanceSegmentation
isegment = solutions.InstanceSegmentation(
show=True, # display the output
model="yolo11n-seg.pt", # model="yolo11n-seg.pt" for object segmentation using YOLO11.
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = isegment(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
Ulteriori informazioni sulla segmentazione delle istanze nella guida di Ultralytics YOLO11.
Qual è la differenza tra segmentazione di istanza e object tracking in Ultralytics YOLO11?
La segmentazione delle istanze identifica e delinea i singoli oggetti all'interno di un'immagine, assegnando a ciascun oggetto un'etichetta e una maschera univoche. Il tracciamento degli oggetti estende questo processo assegnando ID coerenti agli oggetti attraverso i fotogrammi video, facilitando il tracciamento continuo degli stessi oggetti nel tempo. Quando combinati, come nell'implementazione di YOLO11, si ottengono potenti capacità per l'analisi del movimento e del comportamento degli oggetti nei video, mantenendo al contempo informazioni precise sui confini.
Perché dovrei usare Ultralytics YOLO11 per la segmentazione di istanza e il tracking rispetto ad altri modelli come Mask R-CNN o Faster R-CNN?
Ultralytics YOLO11 offre prestazioni in tempo reale, accuratezza superiore e facilità d'uso rispetto ad altri modelli come Mask R-CNN o Faster R-CNN. YOLO11 elabora le immagini in un unico passaggio (rilevamento one-stage), rendendolo significativamente più veloce pur mantenendo un'elevata precisione. Fornisce inoltre un'integrazione perfetta con Ultralytics HUB, consentendo agli utenti di gestire in modo efficiente modelli, set di dati e pipeline di training. Per le applicazioni che richiedono sia velocità che accuratezza, YOLO11 offre un equilibrio ottimale.
Esistono dataset forniti da Ultralytics adatti per l'addestramento di modelli YOLO11 per la segmentazione di istanza e il tracking?
Sì, Ultralytics offre diversi set di dati adatti all'addestramento di modelli YOLO11 per la segmentazione delle istanze, tra cui COCO-Seg, COCO8-Seg (un sottoinsieme più piccolo per test rapidi), Package-Seg e Crack-Seg. Questi set di dati sono dotati di annotazioni a livello di pixel necessarie per le attività di segmentazione delle istanze. Per applicazioni più specializzate, è anche possibile creare set di dati personalizzati seguendo il formato Ultralytics. Informazioni complete sui set di dati e istruzioni per l'uso sono disponibili nella documentazione sui set di dati Ultralytics.