Sintonizzati su YOLO Vision 2025!
25 settembre 2025
10:00 — 18:00 BST
Evento ibrido
Yolo Vision 2024

Ultralytics YOLOv8 per la stima della velocità in progetti di computer vision

Abirami Vina

5 minuti di lettura

23 mag 2024

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 tutti visto i segnali stradali dei limiti di velocità. Alcuni di noi potrebbero aver anche ricevuto una notifica automatica di violazione dei limiti di velocità per posta o e-mail. I sistemi di gestione del traffico basati sull'intelligenza artificiale (AI) possono segnalare automaticamente le violazioni dei limiti di velocità grazie alla computer vision. Le riprese in tempo reale acquisite dalle telecamere ai semafori e sulle autostrade vengono utilizzate per la stima della velocità e per rafforzare la sicurezza stradale.

La stima della velocità non si limita alla sicurezza autostradale. Può essere utilizzata nello sport, nei veicoli autonomi e in varie altre applicazioni. In questo articolo, discuteremo come è possibile utilizzare il modello Ultralytics YOLOv8 per la stima della velocità nei tuoi progetti di computer vision. Inoltre, esamineremo passo dopo passo un esempio di codice in modo che tu possa provarlo 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 dovuti all'eccesso di velocità. Inoltre, altri 20-50 milioni subiscono lesioni non mortali, molte delle quali causano disabilità. L'importanza della sicurezza stradale non può essere sopravvalutata, soprattutto quando la stima della velocità aiuta a prevenire incidenti, salva vite e mantiene le nostre strade sicure ed efficienti. 

La stima della velocità tramite computer vision implica il rilevamento e il tracciamento di oggetti nei fotogrammi video per calcolare la loro velocità di movimento. Algoritmi come YOLOv8 possono identificare e tracciare oggetti come veicoli attraverso fotogrammi consecutivi. Il sistema misura la distanza percorsa da questi oggetti utilizzando telecamere calibrate o punti di riferimento per valutare le distanze nel mondo reale. Misurando il tempo impiegato dagli oggetti per spostarsi tra due punti, il sistema calcola la loro velocità utilizzando il rapporto distanza-tempo.

Fig 1. Stima della velocità utilizzando il modello Ultralytics YOLOv8

Oltre a individuare gli eccessi di velocità, i sistemi di stima della velocità integrati con l'AI 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 per ridurre la congestione del traffico.

Applicazioni della stima della velocità in altri settori

Le applicazioni di 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, rilevare comportamenti sospetti, ecc. Ovunque sia possibile utilizzare una telecamera per misurare la velocità di un oggetto, è possibile utilizzare la stima della velocità tramite computer vision. 

Ecco alcuni esempi di dove 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 negli eventi di atletica leggera.
  • Le smart city stanno studiando l'analisi dell'andatura dei pedoni per monitorare la velocità di camminata e aumentare la mobilità e la sicurezza urbana. Questi sistemi possono avvisare i conducenti della presenza di pedoni ed evitare incidenti.
  • I sistemi di monitoraggio del comportamento animale utilizzano la stima della velocità per tracciare i movimenti 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 metodi tradizionali basati su sensori grazie alla loro maggiore precisione, economicità e flessibilità. A differenza dei sistemi che si basano su 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 facilmente con l'infrastruttura di traffico esistente. Inoltre, questi sistemi possono essere costruiti per eseguire una serie di attività complesse come l'identificazione del tipo di veicolo e l'analisi dei modelli di traffico per migliorare il flusso e la sicurezza generale del traffico.

Provalo tu stesso: stima della velocità utilizzando YOLOv8

Ora che abbiamo una chiara comprensione della stima della velocità e delle sue applicazioni, esaminiamo più da vicino come è possibile integrare la stima della velocità nei tuoi progetti di computer vision tramite codice. Rileveremo i veicoli in movimento e ne stimeremo la velocità utilizzando il modello YOLOv8.

Questo esempio utilizza un video di auto su una strada scaricato da Internet. Puoi utilizzare lo stesso video o qualsiasi video pertinente. Il modello YOLOv8 identifica il centro di ogni veicolo e calcola la sua velocità in base alla velocità con cui questo centro attraversa una linea orizzontale nel fotogramma del video. 

Prima di addentrarci nei dettagli, è importante notare che, in questo caso, il calcolo della distanza è approssimativo e basato sulla distanza euclidea. La calibrazione della telecamera non è presa in considerazione e quindi la stima della velocità potrebbe non essere del tutto accurata. Inoltre, la velocità stimata può variare a seconda della velocità della 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 ultralytics 

Consulta la 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 offre soluzioni e suggerimenti utili.

Passaggio 2: Successivamente, importeremo le librerie richieste. La libreria OpenCV ci aiuterà a gestire l'elaborazione video.

import cv2
from ultralytics import YOLO, solutions

Passaggio 3: Quindi, possiamo caricare il modello YOLOv8 e recuperare i nomi delle classi che il modello può rilevare.

model = YOLO("yolov8n.pt")
names = model.model.names

Dai un'occhiata a 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. Estraiamo 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 video writer per salvare i 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 nucleo 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 lo script. Se stai lavorando dal terminale o dal prompt dei comandi, esegui lo script utilizzando il seguente comando:

python your_script_name.py


Le sfide della stima della velocità basata sulla visione

È inoltre importante comprendere le sfide legate all'implementazione della stima della velocità tramite computer vision. Condizioni meteorologiche sfavorevoli come pioggia, nebbia o neve possono causare problemi al sistema in quanto 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 con precisione la velocità di un veicolo target. Scarse condizioni di illuminazione che causano ombre o il riflesso del sole possono anche 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 molti dati visivi da telecamere di alta qualità per il traffico. La tua soluzione potrebbe richiedere hardware costoso per gestire tutto questo e garantire che tutto funzioni rapidamente 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 serie questioni etiche e legali che devono essere gestite con la massima cura.

A tutta velocità verso il futuro

L'utilizzo del modello Ultralytics YOLOv8 per la stima della velocità fornisce una soluzione flessibile ed efficiente per molti usi. Sebbene ci siano sfide, come l'accuratezza in condizioni difficili e la risoluzione dei problemi di privacy, i vantaggi sono molteplici. La stima della velocità abilitata dalla computer vision è più economica, adattabile e precisa rispetto ai metodi precedenti. È utile in vari settori come trasporti, sport, sorveglianza e auto a guida autonoma. Con tutti i vantaggi e le applicazioni, è destinata a essere una parte fondamentale dei futuri sistemi intelligenti.

Ti interessa l'AI? Entra in contatto con la nostra community! Esplora il nostro repository GitHub per saperne di più su come stiamo utilizzando l'AI per creare soluzioni innovative in vari settori come sanità e agricoltura. Collabora, innova e impara con noi! 🚀

Costruiamo insieme il futuro
dell'AI!

Inizia il tuo viaggio con il futuro del machine learning

Inizia gratis
Link copiato negli appunti