Ultralytics YOLOv8 per la stima della velocità nei progetti di computer vision
Scopri come il modello Ultralytics YOLOv8 può essere utilizzato per la stima della velocità nei tuoi progetti di computer vision. Provalo tu stesso con un semplice esempio di codice.

Probabilmente abbiamo visto tutti i cartelli stradali con i limiti di velocità. Alcuni di noi potrebbero persino aver ricevuto una notifica automatica di violazione del limite di velocità per posta o e-mail. I sistemi di gestione del traffico basati sull'intelligenza artificiale (IA) possono segnalare automaticamente le violazioni per eccesso di velocità grazie alla computer vision. I filmati in tempo reale acquisiti dalle telecamere ai semafori e sulle autostrade vengono utilizzati per la stima della velocità e per rafforzare la sicurezza stradale.
La stima della velocità non si limita alla sola sicurezza autostradale. Può essere utilizzata nello sport, nei veicoli autonomi e in varie altre applicazioni. In questo articolo, analizzeremo come puoi usare il modello Ultralytics YOLOv8 per la stima della velocità nei tuoi progetti di computer vision. Vedremo anche un esempio di codice passo dopo passo in modo da poterlo provare tu stesso. Iniziamo!
La stima della velocità semplifica la gestione del traffico#
Secondo l'Organizzazione Mondiale della Sanità (OMS), circa 1,19 milioni di persone muoiono ogni anno a causa di incidenti stradali provocati dall'eccesso di velocità. Inoltre, da 20 a 50 milioni di persone subiscono lesioni non fatali, molte delle quali provocano disabilità. L'importanza della sicurezza stradale non può essere sottovalutata, soprattutto quando la stima della velocità aiuta a prevenire incidenti, salva vite umane e mantiene le nostre strade sicure ed efficienti.
La stima della velocità tramite la computer vision implica il rilevamento e il tracciamento di oggetti nei fotogrammi video per calcolare la loro velocità di movimento. Algoritmi come Ultralytics YOLOv8 possono identificare e tracciare oggetti come i veicoli in fotogrammi consecutivi. Il sistema misura la distanza percorsa da questi oggetti utilizzando telecamere calibrate o punti di riferimento per stimare le distanze nel mondo reale. Cronometrando il tempo impiegato dagli oggetti per muoversi tra due punti, il sistema ne calcola la velocità utilizzando il rapporto spazio-tempo.

Fig 1. Stima della velocità utilizzando il modello Ultralytics YOLOv8.
Oltre a individuare chi supera i limiti, i sistemi di stima della velocità integrati con l'IA possono raccogliere dati per fare previsioni sul traffico. Queste previsioni possono supportare attività di gestione del traffico come l'ottimizzazione dei tempi dei semafori e l'allocazione delle risorse. Le informazioni sui modelli di traffico e sulle cause della congestione possono essere utilizzate per pianificare nuove strade al fine di ridurre l'intasamento del traffico.
Applicazioni della stima della velocità in altri settori#
Le applicazioni per la stima della velocità vanno oltre il monitoraggio delle strade. Può anche essere utile per monitorare le prestazioni degli atleti, aiutando i veicoli autonomi a comprendere la velocità degli oggetti che si muovono intorno a loro, rilevando comportamenti sospetti, ecc. Ovunque sia possibile utilizzare una telecamera per misurare la velocità di un oggetto, è possibile utilizzare la stima della velocità basata sulla computer vision.
Ecco alcuni esempi in cui viene utilizzata la stima della velocità:
- Le auto autonome di Tesla utilizzano la stima della velocità basata sulla visione per evitare collisioni.
- La computer vision e la stima della velocità saranno utilizzate ai Giochi Olimpici del 2024 per migliorare l'analisi delle prestazioni nelle discipline di atletica leggera.
- Le città intelligenti stanno ricercando l'analisi dell'andatura dei pedoni per monitorare le velocità di camminata e aumentare la mobilità e la sicurezza urbana. Questi sistemi possono avvisare i conducenti della presenza di pedoni e prevenire incidenti.
- I sistemi di monitoraggio del comportamento animale utilizzano la stima della velocità per tracciare il movimento degli animali e rilevare segni di stress o malattia.

Fig 2. La stima della velocità può misurare la velocità di camminata di una persona.
I vantaggi della stima della velocità tramite computer vision#
I sistemi di stima della velocità basati sulla visione stanno sostituendo i tradizionali metodi basati su sensori grazie alla loro maggiore precisione, efficacia in termini di costi e flessibilità. A differenza dei sistemi che si affidano a sensori costosi come il LiDAR, la computer vision utilizza telecamere standard per monitorare e analizzare la velocità in tempo reale. Le soluzioni di computer vision per la stima della velocità possono essere integrate senza problemi nell'infrastruttura di traffico esistente. Inoltre, questi sistemi possono essere costruiti per eseguire una serie di compiti complessi come l'identificazione del tipo di veicolo e l'analisi dei modelli di traffico per migliorare il flusso e la sicurezza complessivi del traffico.
Provalo tu stesso: stima della velocità con Ultralytics YOLOv8#
Ora che abbiamo una chiara comprensione della stima della velocità e delle sue applicazioni, diamo un'occhiata più da vicino a come puoi integrare la stima della velocità nei tuoi progetti di computer vision tramite il codice. Rileveremo i veicoli in movimento e stimeremo la loro velocità utilizzando il modello Ultralytics YOLOv8.
Questo esempio utilizza un video di auto su una strada scaricato da Internet. Puoi usare lo stesso video o qualsiasi video pertinente. Il modello Ultralytics YOLOv8 identifica il centro di ciascun veicolo e ne calcola la velocità in base alla rapidità con cui questo centro attraversa una linea orizzontale nel fotogramma video.
Prima di iniziare, è importante notare che, in questo caso, il calcolo della distanza è approssimativo e basato sulla distanza euclidea. La calibrazione della telecamera non è presa in considerazione, quindi la stima della velocità potrebbe non essere del tutto accurata. Inoltre, la velocità stimata può variare a seconda della velocità della tua GPU.
Passaggio 1: Inizieremo installando il pacchetto Ultralytics. Apri il prompt dei comandi o il terminale ed esegui il comando mostrato di seguito.
pip install ultralyticsDai un'occhiata alla nostra Guida all'installazione di Ultralytics per istruzioni dettagliate e best practice sul processo di installazione. Se riscontri problemi durante l'installazione dei pacchetti richiesti per YOLOv8, la nostra Guida ai problemi comuni contiene soluzioni e suggerimenti utili.
Passaggio 2: Successivamente, importeremo le librerie necessarie. La libreria OpenCV ci aiuterà a gestire l'elaborazione video.
import cv2
from ultralytics import YOLO, solutionsPassaggio 3: Successivamente, possiamo caricare il modello Ultralytics YOLOv8 e recuperare i nomi delle classi che il modello è in grado di rilevare.
model = YOLO("yolov8n.pt")
names = model.model.namesScopri tutti i modelli che supportiamo per capire quale modello si adatta meglio al tuo progetto.
Passaggio 4: In questo passaggio, apriremo il file video di input utilizzando il modulo VideoCapture di OpenCV. Estrarremo anche la larghezza, l'altezza e i fotogrammi al secondo (fps) del video.
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))Passaggio 5: Qui, inizializzeremo il writer video per salvare i nostri risultati finali della stima della velocità. Il file video di output verrà salvato come “speed_estimation.avi”.
video_writer = cv2.VideoWriter("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))Passaggio 6: Successivamente, possiamo definire i punti della linea per la stima della velocità. Per il nostro video di input, questa linea sarà posizionata orizzontalmente al centro del fotogramma. Sentiti libero di giocare con i valori per posizionare la linea nelle posizioni più adatte, a seconda del tuo video di input.
line_pts = [(0, 360), (1280, 360)]Passaggio 7: Ora possiamo inizializzare l'oggetto di stima della velocità utilizzando i punti della linea definiti e i nomi delle classi.
speed_obj = solutions.SpeedEstimator(
reg_pts=line_pts,
names=names,
view_img=True,
)Passaggio 8: Il fulcro dello script elabora il video fotogramma per fotogramma. Leggiamo ogni fotogramma e rileviamo e tracciamo gli oggetti. La velocità degli oggetti tracciati viene stimata e il fotogramma annotato viene scritto nel video di output.
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
tracks = model.track(im0, persist=True, show=False)
im0 = speed_obj.estimate_speed(im0, tracks)
video_writer.write(im0)Passaggio 9: Infine, rilasciamo gli oggetti di acquisizione e scrittura video e chiudiamo tutte le finestre OpenCV.
cap.release()
video_writer.release()
cv2.destroyAllWindows()Passaggio 10: Salva il tuo script. Se stai lavorando dal tuo terminale o prompt dei comandi, esegui lo script usando il seguente comando:
python your_script_name.pyLe sfide della stima della velocità basata sulla visione#
È anche importante comprendere le sfide coinvolte nell'implementazione della stima della velocità utilizzando la computer vision. Condizioni meteorologiche sfavorevoli come pioggia, nebbia o neve possono causare problemi al sistema poiché possono ostacolare la visibilità della strada. Allo stesso modo, le occlusioni causate da altri veicoli o oggetti possono rendere difficile per questi sistemi tracciare e stimare accuratamente la velocità di un veicolo target. Condizioni di illuminazione scarsa che causano ombre o un riflesso del sole possono complicare ulteriormente il compito della stima della velocità.
Un'altra sfida riguarda la potenza di calcolo. Per stimare la velocità in tempo reale, dobbiamo elaborare una grande quantità di dati visivi provenienti da telecamere di traffico di alta qualità. La tua soluzione potrebbe richiedere hardware costoso per gestire tutto questo e garantire che tutto funzioni rapidamente e senza ritardi.
Poi, c'è la questione della privacy. I dati raccolti da questi sistemi possono includere i dettagli del veicolo di un individuo come marca, modello e informazioni sulla targa, che vengono raccolti senza il loro consenso. Alcune moderne telecamere HD possono persino catturare immagini degli occupanti all'interno dell'auto. Tale raccolta di dati può sollevare gravi questioni etiche e legali che devono essere gestite con la massima cura.
Verso il futuro a tutta velocità#
L'uso del modello Ultralytics YOLOv8 per la stima della velocità offre una soluzione flessibile ed efficiente per molti usi. Sebbene vi siano sfide, come la precisione in condizioni difficili e la risoluzione di problemi di privacy, i vantaggi sono molteplici. La stima della velocità abilitata dalla computer vision è più economica, adattabile e precisa rispetto ai vecchi metodi. È utile in vari settori come trasporti, sport, sorveglianza e auto a guida autonoma. Con tutti i benefici e le applicazioni, è destinata a diventare una parte fondamentale dei futuri sistemi intelligenti.
Ti interessa l'IA? Unisciti alla nostra community! Esplora il nostro repository GitHub per saperne di più su come stiamo usando l'IA per creare soluzioni innovative in vari settori come la sanità e l'agricoltura. Collabora, innova e impara con noi! 🚀






