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.
.webp)
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!
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:
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.
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:
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.
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
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.
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"
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),
)
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",
)
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()
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.
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.
Ecco alcune applicazioni reali di computer vision in cui la visualizzazione dei dati ha un impatto significativo:
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.