Migliorare le applicazioni di computer vision con le visualizzazioni

Nuvola Ladi

4 minuti di lettura

12 maggio 2025

Imparate a trasformare i dati delle applicazioni di visione computerizzata in grafici di facile comprensione utilizzando il pacchetto Ultralytics di Python per ottenere maggiori informazioni.

Ogni minuto vengono create enormi quantità di dati, dai terminal degli aeroporti e delle stazioni ferroviarie ai centri commerciali. Con la diffusione dell'IA, molti di questi dati vengono ora analizzati e scomposti. Ma a volte i risultati di questi modelli di IA possono rendere difficile individuare schemi o capire le tendenze a colpo d'occhio. È qui che la visualizzazione dei dati ci viene in aiuto: trasforma i risultati complessi in intuizioni chiare e facili da digerire.

Questo è particolarmente vero quando si tratta di applicazioni di computer vision. La computer vision è una branca dell'intelligenza artificiale (AI) che aiuta le macchine a interpretare e comprendere le informazioni visive provenienti dal mondo circostante, come immagini e video. Mentre i modelli di IA di visione, come Ultralytics YOLO11, possono aiutare ad analizzare questi dati visivi per ottenere informazioni, la visualizzazione dei dati aiuta a mettere queste informazioni in un formato facile da capire.

In poche parole, la visualizzazione dei dati colma il divario tra i dati grezzi e la comprensione reale utilizzando grafici analitici significativi. Nell'attuale mondo guidato dai dati, questo aspetto è fondamentale perché non è sufficiente che le macchine si limitino a eseguire dei compiti, ma è necessario che raccontino una storia.

Questa esigenza di narrazione è esattamente il motivo per cui la visualizzazione dei dati è in crescita, con un mercato destinato a raggiungere 18,36 miliardi di dollari entro il 2030. In precedenza, abbiamo esplorato come la computer vision possa fornire preziose informazioni aziendali. Oggi faremo un ulteriore passo in avanti, spiegando come generare grafici analitici chiari e perspicaci per le applicazioni di computer vision utilizzando il pacchetto Ultralytics. Iniziamo!

Figura 1. Un esempio di visualizzazione dei dati basato sui risultati di YOLO11.

Una panoramica sulla visualizzazione dei dati nelle applicazioni di computer vision

La visualizzazione dei dati nelle applicazioni di computer vision consiste nel trasformare i risultati delle attività di computer vision, come il rilevamento e il tracciamento degli oggetti, in grafici o cruscotti di facile comprensione. Queste visualizzazioni aiutano a identificare schemi e tendenze, soprattutto quando si lavora con grandi volumi di filmati. 

Ad esempio, invece di esaminare manualmente ore di video di sorveglianza, un semplice grafico a linee che mostra il numero di auto o persone rilevate nel tempo può evidenziare rapidamente le ore di punta o i periodi insolitamente tranquilli.

Ecco alcuni motivi principali per cui la visualizzazione dei dati è utile:

  • Semplifica i dati complessi: Migliaia di rilevamenti di oggetti possono essere schiaccianti, ma visualizzazioni come grafici a barre o a torta rendono più facile vedere il quadro generale, ad esempio quali oggetti appaiono più frequentemente.
  • Rivela le tendenze: I grafici a linee e a barre aiutano a identificare gli schemi nel tempo, ad esempio quando e dove il traffico pedonale tende ad aumentare.
  • Risparmio di tempo: Invece di rivedere ogni fotogramma del video, i grafici possono evidenziare rapidamente dettagli importanti, come picchi improvvisi di attività dei veicoli o la comparsa di oggetti insoliti in zone riservate.
  • Migliora la comunicazione: Le immagini facilitano la condivisione degli insight con un pubblico non tecnico, aiutando tutti a comprendere meglio i risultati.

Diversi tipi di visualizzazione dei dati

Diversi tipi di grafici analitici possono trasformare i risultati della computer vision in immagini chiare e di facile comprensione. Supponiamo che stiate lavorando a un'applicazione di computer vision che rileva persone e veicoli nei filmati di sorveglianza. In questo caso, un grafico a linee è ideale per mostrare come il numero di rilevamenti cambia nel tempo, come ad esempio il monitoraggio dei picchi di traffico pedonale durante la giornata.

Allo stesso modo, i grafici a barre sono utili quando si vuole confrontare il numero di diversi tipi di oggetti rilevati, ad esempio per vedere se nel video compaiono più auto, biciclette o pedoni. I grafici a torta, invece, mostrano la percentuale di ciascun tipo di oggetto rispetto al totale dei rilevamenti. Ogni grafico ha una sua utilità e aiuta a rendere i dati complessi della computer vision più facili da interpretare e condividere.

Figura 2. Esempi di grafici analitici.

Generazione di grafici analitici per ottenere approfondimenti di computer vision

Dopo aver esplorato il concetto di visualizzazione dei dati e l'importanza dei diversi tipi di grafici analitici, vediamo come utilizzare la soluzione Ultralytics Analytics per visualizzare i risultati delle previsioni dei modelli di computer vision. Prima di illustrare il processo passo dopo passo, diamo un'occhiata agli strumenti e alle opzioni di configurazione per l'addestramento e l'utilizzo del pacchetto Ultralytics e di modelli come YOLO11. 

Il pacchetto Ultralytics Python semplifica l'addestramento dei modelli, il rilevamento degli oggetti, l'esecuzione delle previsioni e la visualizzazione dei risultati. Per iniziare, è necessario un ambiente di codifica. Ecco tre semplici opzioni:

  • Interfaccia a riga di comando (CLI): È uno strumento di base, di solo testo, in cui è possibile digitare comandi per eseguire il codice. Non ha un'interfaccia visiva e si interagisce digitando le istruzioni in un terminale o in un prompt dei comandi.
  • Quaderni Jupyter: È un ambiente di codifica interattivo in cui è possibile scrivere, eseguire e testare piccole porzioni di codice (chiamate "celle") una alla volta. Mostra i risultati direttamente sotto ogni cella, rendendo più facile capire cosa sta succedendo passo dopo passo. È particolarmente utile per l'apprendimento e la sperimentazione.
  • Google Colab: Questa opzione è una versione gratuita e basata su cloud di Jupyter Notebooks che viene eseguita nel browser web. Non richiede alcuna configurazione sul computer e dà accesso a GPU gratuite per un'elaborazione più rapida.

Questi strumenti sono ottimi per iniziare rapidamente, ma gli utenti possono anche integrare Ultralytics in ambienti di sviluppo integrati (IDE) come Visual Studio Code (VS Code) o in pipeline di produzione. Per ulteriori opzioni, esplorate la documentazione ufficiale di Ultralytics.

Passo 1: Impostazione dell'ambiente

Una volta scelto l'ambiente preferito, il passo successivo è quello di configurarlo per l'esecuzione delle previsioni e la visualizzazione dei risultati. È possibile utilizzare uno qualsiasi degli ambienti menzionati sopra, a seconda di quello con cui ci si sente più a proprio agio.

Se state lavorando in Google Colab, tenete presente che per impostazione predefinita utilizza la CPU, il che può rallentare le prestazioni. Per accelerare le cose, passate a una GPU andando nel menu "Runtime", selezionando "Change runtime type" e impostando l'acceleratore hardware su GPU (idealmente un T4).

Per preparare il vostro ambiente, dovrete installare il pacchetto Ultralytics Python utilizzando il comando indicato di seguito. Negli strumenti basati su notebook come Colab o Jupyter, assicuratevi di aggiungere un punto esclamativo (!) prima del comando.

pip install ultralytics

Fase 2: Scaricare un file video

Poi, abbiamo bisogno di un video con cui lavorare. È possibile scaricarne facilmente uno da un sito di stock gratuiti come Pexels. Assicuratevi di scegliere un video che includa oggetti che YOLO11 è in grado di rilevare. Poiché il modello è stato preaddestrato sul set di dati COCO, è in grado di riconoscere oggetti comuni come persone, automobili e biciclette. 

Per questa esercitazione, utilizzeremo un video sulla gestione dei bagagli in un affollato terminal aeroportuale. Potete utilizzare lo stesso video o sceglierne uno diverso che si adatti al vostro progetto.

Figura 3. Un fotogramma del video di input che mostra la movimentazione dei bagagli in un terminal aeroportuale.

Passo 3: Importazione dei pacchetti

Successivamente, possiamo importare le librerie necessarie e caricare il video in ingresso.

Inizieremo importando OpenCV (cv2), una libreria molto utilizzata per lavorare con immagini e video nella computer vision. Importeremo anche la libreria Ultralytics, che ci aiuta a eseguire il rilevamento degli oggetti e a generare analisi dal video.

Quindi, cercheremo di aprire il file video specificandone il percorso. Assicurarsi di sostituire "path/to/video.mp4" con il percorso effettivo del file video scaricato. 

Inoltre, il frammento di codice sottostante include un semplice controllo per verificare che il video venga caricato correttamente. Se il percorso è sbagliato o il file è danneggiato, il programma si arresta e mostra un messaggio di errore: "Errore nella lettura del file video".

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

Fase 4: preparazione del video writer

Quindi, imposteremo un video writer per salvare l'output. Quando si esegue l'analisi, questa parte del codice crea un nuovo file video che registra i grafici aggiornati generati da ogni fotogramma del video originale.

Nel frammento di codice qui sotto, per prima cosa estraiamo le proprietà chiave dal video di ingresso: la larghezza, l'altezza e i fotogrammi al secondo (fps). Questi valori vengono presi direttamente dal video e convertiti in numeri interi per garantire che siano nel formato corretto per la scrittura dell'output.

Successivamente, si utilizza la funzione cv2.VideoWriter per creare un nuovo file video, denominato "analytics_output.avi" (è possibile rinominarlo a piacere). Il video viene salvato utilizzando il formato MJPG, un comune metodo di compressione video. La risoluzione di uscita è impostata a 1280×720 pixel, indipendentemente dalle dimensioni del video originale.

w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
out = cv2.VideoWriter(
    "analytics_output.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720), 
)

Fase 5: Impostazione della soluzione analitica Ultralytics

Ora impostiamo la soluzione Ultralytics Analytics per generare grafici dal video. È possibile scegliere come visualizzare i dati, ad esempio un grafico a linee, a torta, ad area o a barre, e quale modello YOLO utilizzare. In questo esempio, utilizzeremo il modello leggero "yolo11n.pt" e mostreremo i risultati come un grafico ad area.

analytics = solutions.Analytics(
    show=True, 
    analytics_type="area", 
    model="yolo11n.pt",   
)

Fase 6: elaborazione del video in ingresso

La parte finale del codice esegue un ciclo che elabora il video un fotogramma alla volta. Ogni fotogramma viene passato allo strumento di analisi, che aggiorna il grafico in tempo reale. Il grafico aggiornato viene poi scritto sul video di uscita. Se un fotogramma non può essere letto, il ciclo si interrompe. Dopo l'elaborazione di tutti i fotogrammi, il video viene salvato e le finestre aperte vengono chiuse.

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count) 

        out.write(results.plot_im) 
    else:
        break
cap.release()
out.release()
cv2.destroyAllWindows()

Fase 7: Mettere tutto insieme

Infine, mettiamo tutto insieme. Con poche righe di codice in più, possiamo generare due video di output: uno che mostra i risultati del rilevamento degli oggetti di YOLO11 con bounding box ed etichette e un altro che mostra i grafici di analisi in tempo reale.

A questo scopo, configureremo due istanze di VideoWriter: una per salvare il video di predizione e un'altra per l'analisi. Questa versione del codice include sia il tracciamento degli oggetti sia la generazione di grafici, in modo da poter vedere i risultati del rilevamento insieme agli approfondimenti visivi.

Ecco il codice completo con esempi di previsioni e analisi.

import cv2
from ultralytics import YOLO, solutions

# Load model and video
model = YOLO('yolo11n.pt')
cap = cv2.VideoCapture('path/to/video.mp4')
assert cap.isOpened(), "Error opening video"

# Get properties
w, h = int(cap.get(3)), int(cap.get(4))
fps = cap.get(5)
analytics_res = (1280, 720)

# Writers for prediction and analytics videos
out_pred = cv2.VideoWriter('output_predictions.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, (w, h))
out_ana = cv2.VideoWriter('output_analytics.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, analytics_res)

# Analytics setup
analytics = solutions.Analytics(show=True, analytics_type="area", model='yolo11n.pt')

# Process frames
frame_count = 0
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    frame_count += 1
    pred_frame = model.track(frame, persist=True)[0].plot()
    out_pred.write(pred_frame)

    resized = cv2.resize(pred_frame, analytics_res)
    out_ana.write(analytics(resized, frame_count).plot_im)

cap.release(), out_pred.release(), out_ana.release(), cv2.destroyAllWindows()

Quando il codice di cui sopra viene eseguito correttamente, genera due video di output. Il file "output_predictions.avi" mostrerà i risultati del rilevamento degli oggetti con i riquadri di delimitazione e le etichette, mentre "output_analytics.avi" mostrerà i grafici di analisi in tempo reale basati sui rilevamenti.

Figura 4. Un fotogramma del file "output_predictions.avi".

Ecco un fotogramma dell'output analitico basato sulle previsioni. Utilizzando il grafico ad area, possiamo ottenere informazioni come le fluttuazioni nel conteggio delle valigie nel tempo, come ad esempio un picco intorno al fotogramma 268, che indica il movimento o l'attività delle valigie in quella parte del video.

Figura 5. Previsioni di YOLO11 visualizzate come grafico ad area.

Utilizzo dei grafici nelle applicazioni di visione artificiale del mondo reale

Ecco alcune applicazioni reali di computer vision in cui la visualizzazione dei dati ha un impatto significativo:

  • Assistenza sanitaria: I sistemi di visione computerizzata possono monitorare l'attività dei pazienti, i movimenti del personale e l'utilizzo delle apparecchiature in tempo reale. Questo genera grandi quantità di dati visivi che, se visualizzati, possono rivelare modelli, come i picchi di occupazione dei pazienti o i ritardi di risposta.
  • Commercio al dettaglio ed e-commerce: L'intelligenza artificiale può essere utilizzata per tracciare i movimenti dei clienti, il tempo di permanenza davanti agli scaffali e le interazioni con i prodotti. Le analisi visive, come i grafici a barre o a torta, possono evidenziare quali zone o articoli del negozio ricevono maggiore attenzione, aiutando i rivenditori a ottimizzare il posizionamento dei prodotti e a migliorare le conversioni.
  • Produzione: Le telecamere dotate di modelli di visione computerizzata possono monitorare le linee di assemblaggio per rilevare difetti, violazioni della sicurezza o lo stato delle apparecchiature. La visualizzazione dei dati può mostrare le tendenze dei tipi di difetti più comuni o evidenziare i periodi di tempo con i tassi di errore più elevati, consentendo un processo decisionale più rapido e la manutenzione preventiva.

Punti di forza

Con il pacchetto Ultralytics è possibile trasformare facilmente le riprese video in grafici chiari e perspicaci che rivelano ciò che sta accadendo, come ad esempio il monitoraggio di quante persone o oggetti appaiono nel tempo. Invece di esaminare manualmente ore di video, è possibile generare riepiloghi visivi che evidenziano modelli e tendenze chiave, rendendo più facile agire rapidamente. Che si tratti di ospedali, negozi al dettaglio o impianti di produzione, questi grafici trasformano i complessi risultati dell'IA in informazioni comprensibili e utilizzabili da chiunque.

Volete saperne di più sull'intelligenza artificiale? Esplorate il nostro repository GitHub, entrate in contatto con la nostra comunità e controllate le nostre opzioni di licenza per avviare il vostro progetto di computer vision. Per saperne di più su innovazioni come l'IA nella produzione e la computer vision nel settore della logistica, consultate le nostre pagine dedicate alle soluzioni.

Costruiamo insieme il futuro
dell'IA!

Iniziate il vostro viaggio nel futuro dell'apprendimento automatico

Iniziare gratuitamente
Link copiato negli appunti