Analisi Video con Supervision di Roboflow

Roboflow, un leader nel settore della Computer Vision, ha recentemente introdotto una versione aggiornata del suo prodotto di punta, "Supervision". Questo strumento open-source rappresenta un vero e proprio coltellino svizzero per tutto ciò che riguarda la Computer Vision, offrendo una gamma versatile di funzionalità che si estendono ben oltre i confini tradizionali di questo settore.

Supervision è progettato per agevolare l'implementazione di funzioni di rilevamento, classificazione, segmentazione e annotazione video, rendendo possibile l'analisi avanzata di qualsiasi flusso video. L'ultima versione di questo software integra funzionalità innovative come tracker, zone e annotatori, espandendo significativamente le sue capacità e applicazioni.

Uno degli aspetti più notevoli di Supervision è la sua facilità d'uso. Il software può essere installato in un ambiente Python (supporta le versioni da 3.8 in poi) tramite un semplice comando: pip install supervision[desktop]. Questa accessibilità lo rende uno strumento ideale sia per i principianti che per gli esperti nel campo della visione artificiale.

Supervision si distingue anche per la sua versatilità nell'elaborazione di dataset e nella gestione delle annotazioni. La funzione di media di precisione media (mAP) per compiti di rilevamento oggetti è un esempio del suo avanzato supporto analitico, che permette una valutazione accurata e dettagliata delle prestazioni dei modelli di visione artificiale.

Un caso di studio esemplare dell'efficacia di Supervision è l'analisi del traffico in tempo reale. Utilizzando modelli avanzati come YOLOv8 e ByteTrack, Supervision è in grado di rilevare e tracciare veicoli in immagini aeree, fornendo informazioni preziose sul flusso del traffico e sui modelli di movimento in zone ad alta congestione.

Supervision by Roboflow si presenta come una soluzione all'avanguardia per chiunque sia interessato a esplorare o espandere le proprie competenze nel campo della Computer Vision. La sua facilità d'uso, combinata con una gamma di funzionalità potenti e versatile, lo rende uno strumento indispensabile per professionisti e appassionati di questa tecnologia in rapida evoluzione.

Come usare Supervision by Roboflow

Installazione del Pacchetto Supervision

Per utilizzare Supervision, prima devi installarlo nel tuo ambiente Python. Puoi farlo con il seguente comando:

pip install supervision[desktop]

Rilevamento Oggetti con YOLO

Supervision può essere utilizzato insieme a modelli come YOLO per il rilevamento di oggetti. Ecco un esempio di come potresti farlo:

import supervision as sv
from ultralytics import YOLO

# Caricare un modello YOLO
model = YOLO('yolov8s.pt')

# Processare un'immagine con il modello
result = model(IMAGE)[0]

# Convertire i risultati in un formato utilizzabile da Supervision
detections = sv.Detections.from_ultralytics(result)

Filtraggio Avanzato delle Rilevazioni

Puoi filtrare le rilevazioni basandoti su vari criteri come l'ID della classe, la confidenza o l'area:

# Filtraggio delle rilevazioni
detections = detections[detections.class_id == 0]
detections = detections[detections.confidence > 0.5]
detections = detections[detections.area > 1000]

Annotazione delle Immagini

Supervision può essere utilizzato per annotare immagini con le rilevazioni effettuate:

import supervision as sv

# Creare un annotatore di box
box_annotator = sv.BoxAnnotator()

# Annotare un'immagine
annotated_frame = box_annotator.annotate(
    scene=IMAGE,
    detections=detections
)

Elaborazione di Dataset

Puoi utilizzare Supervision per elaborare dataset, ad esempio caricando un dataset in formato YOLO:

import supervision as sv

# Caricare un dataset
dataset = sv.DetectionDataset.from_yolo(
    images_directory_path='...',
    annotations_directory_path='...',
    data_yaml_path='...'
)

# Visualizzare le classi e la dimensione del dataset
print(dataset.classes)
print(len(dataset))

Calcolo della Media di Precisione Media (mAP)

Infine, puoi utilizzare Supervision per calcolare la mAP, una metrica chiave nella valutazione dei modelli di rilevamento oggetti:

import supervision as sv
import numpy as np

dataset = sv.DetectionDataset.from_yolo(...)

# Definire una callback per il processamento delle immagini
def callback(image: np.ndarray) -> sv.Detections:
    # Logica di rilevamento qui
    ...

# Calcolare la mAP
mean_average_precision = sv.MeanAveragePrecision.benchmark(
    dataset=dataset,
    callback=callback
)

print(mean_average_precision.map50_95)