Vai al contenuto

Segmentazione delle Istanza e Tracking utilizzando Ultralytics YOLO26 🚀

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 YOLO26 offre potenti capacità di segmentazione di istanza che consentono il rilevamento preciso dei confini degli oggetti, mantenendo al contempo 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 Object Tracks: Ogni track è rappresentato da un colore distinto, facilitando la facile identificazione e il tracking attraverso i fotogrammi video.



Guarda: Segmentazione di Istanza con Tracciamento di Oggetti utilizzando Ultralytics YOLO26

Esempi

Segmentazione delle istanzeSegmentazione delle istanze + Tracciamento degli oggetti
Segmentazione di istanza UltralyticsSegmentazione 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 YOLO26
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="yolo26n-seg.pt",  # model="yolo26n-seg.pt" for object segmentation using YOLO26.
    # classes=[0, 2],  # segment specific classes, e.g., person and car with the 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:

ArgomentoTipoPredefinitoDescrizione
modelstrNonePercorso di un file modello Ultralytics YOLO.
regionlist'[(20, 400), (1260, 400)]'Elenco dei punti che definiscono la regione di conteggio.

È anche possibile usufruire di track argomenti all'interno del InstanceSegmentation solution:

ArgomentoTipoPredefinitoDescrizione
trackerstr'botsort.yaml'Specifica l'algoritmo di tracking da utilizzare, ad esempio: bytetrack.yaml oppure botsort.yaml.
conffloat0.1Imposta la soglia di confidenza per i rilevamenti; valori inferiori consentono di tracciare più oggetti, ma potrebbero includere falsi positivi.
ioufloat0.7Imposta la soglia Intersection over Union (IoU) per filtrare i detect sovrapposti.
classeslistNoneFiltra i risultati per indice di classe. Per esempio, classes=[0, 2, 3] traccia solo le classi specificate.
verboseboolTrueControlla la visualizzazione dei risultati del tracking, fornendo un output visivo degli oggetti tracciati.
devicestrNoneSpecifica 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:

ArgomentoTipoPredefinitoDescrizione
showboolFalseSe True, visualizza le immagini o i video annotati in una finestra. Utile per un feedback visivo immediato durante lo sviluppo o il test.
line_widthint or NoneNoneSpecifica 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_confboolTrueVisualizza il punteggio di confidenza per ogni rilevamento accanto all'etichetta, offrendo una panoramica sulla certezza del modello per ogni rilevamento.
show_labelsboolTrueMostra le etichette per ogni rilevamento nell'output visivo, fornendo una comprensione immediata degli oggetti rilevati.

Applicazioni di Instance Segmentation

La segmentazione di istanza con YOLO26 ha numerose applicazioni nel mondo reale in diversi settori industriali:

Gestione dei rifiuti e riciclaggio

YOLO26 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 alta 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 plastici generati a livello globale viene riciclato.

Veicoli autonomi

Nelle auto a guida autonoma, la segmentazione di istanza aiuta a identificare e tracciare pedoni, veicoli, segnali stradali e altri elementi della strada a livello di pixel. Questa comprensione precisa dell'ambiente è cruciale per le decisioni di navigazione e sicurezza. Le prestazioni in tempo reale di YOLO26 lo rendono ideale per queste applicazioni sensibili al tempo.

Imaging medicale

La segmentazione di istanza può identificare e delineare tumori, organi o strutture cellulari nelle scansioni mediche. La capacità di YOLO26 di delineare con precisione i confini degli oggetti lo rende prezioso per la diagnostica medica e la pianificazione del trattamento.

Monitoraggio del cantiere edile

Nei cantieri edili, la instance segmentation 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 eseguo la segmentazione delle istanze utilizzando Ultralytics YOLO26?

Per eseguire la segmentazione di istanza utilizzando Ultralytics YOLO26, inizializzare il modello YOLO con una versione di segmentazione di YOLO26 ed elaborare i fotogrammi video attraverso di esso. 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="yolo26n-seg.pt",  # model="yolo26n-seg.pt" for object segmentation using YOLO26.
)

# 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()

Scopri di più sulla segmentazione di istanza nella guida di Ultralytics YOLO26.

Qual è la differenza tra segmentazione di istanza e tracciamento di oggetti in Ultralytics YOLO26?

La segmentazione delle istanze identifica e delinea singoli oggetti all'interno di un'immagine, assegnando a ciascun oggetto un'etichetta e una maschera uniche. Il tracking degli oggetti estende questo processo assegnando ID coerenti agli oggetti attraverso i fotogrammi video, facilitando il tracking continuo degli stessi oggetti nel tempo. Quando combinati, come nell'implementazione di YOLO26, si ottengono potenti capacità per analizzare il movimento e il comportamento degli oggetti nei video, mantenendo al contempo informazioni precise sui confini.

Perché dovrei usare Ultralytics YOLO26 per la segmentazione di istanza e il tracciamento rispetto ad altri modelli come Mask R-CNN o Faster R-CNN?

Ultralytics YOLO26 offre prestazioni in tempo reale, precisione superiore e facilità d'uso rispetto ad altri modelli come Mask R-CNN o Faster R-CNN. YOLO26 elabora le immagini in un unico passaggio (rilevamento a stadio singolo), rendendolo significativamente più veloce pur mantenendo un'elevata precisione. Fornisce inoltre un'integrazione perfetta con la Piattaforma Ultralytics, consentendo agli utenti di gestire modelli, dataset e pipeline di addestramento in modo efficiente. Per le applicazioni che richiedono sia velocità che precisione, YOLO26 offre un equilibrio ottimale.

Ci sono dataset forniti da Ultralytics adatti per l'addestramento di modelli YOLO26 per la segmentazione di istanza e il tracciamento?

Sì, Ultralytics offre diversi dataset adatti per l'addestramento di modelli YOLO26 per la segmentazione di istanza, inclusi COCO-Seg, COCO8-Seg (un sottoinsieme più piccolo per test rapidi), Package-Seg e Crack-Seg. Questi dataset sono forniti con annotazioni a livello di pixel necessarie per i compiti di segmentazione di istanza. Per applicazioni più specializzate, è possibile anche creare dataset personalizzati seguendo il formato Ultralytics. Informazioni complete sui dataset e istruzioni per l'uso si trovano nella documentazione dei Dataset Ultralytics.



📅 Creato 2 anni fa ✏️ Aggiornato 7 giorni fa
glenn-jocherRizwanMunawarRizwanMunawarpderrengerleonnilUltralyticsAssistantMatthewNoyceIvorZhu331

Commenti