Vai al contenuto

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 di istanza Ultralytics Segmentazione di istanza Ultralytics con Object Tracking
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.



📅 Creato 1 anno fa ✏️ Aggiornato 4 mesi fa

Commenti