Controllo verde
Link copiato negli appunti

Ultralytics YOLOv8 per la stima della velocità nei progetti di visione artificiale

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

Probabilmente tutti abbiamo visto i cartelli con i limiti di velocità. Alcuni di noi potrebbero anche aver ricevuto una notifica automatica di violazione dei limiti di velocità per posta o per 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. I filmati in tempo reale catturati dalle telecamere ai semafori e sulle autostrade vengono utilizzati per stimare la velocità e rafforzare la sicurezza stradale.

La stima della velocità non si limita alla sicurezza in autostrada. Può essere utilizzata nello sport, nei veicoli autonomi e in diverse altre applicazioni. In questo articolo ti spiegheremo come utilizzare il modelloUltralytics YOLOv8 per la stima della velocità nei tuoi progetti di computer vision. Inoltre, ti illustreremo passo dopo passo un esempio di codifica in modo che tu possa provarlo da solo. Iniziamo!

La stima della velocità facilita 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 di persone subiscono lesioni non mortali, molte delle quali causano disabilità. L'importanza della sicurezza del traffico non può essere sopravvalutata, soprattutto se la stima della velocità aiuta a prevenire gli incidenti, a salvare vite umane e a mantenere le nostre strade sicure ed efficienti. 

La stima della velocità con la computer vision prevede il rilevamento e il tracciamento degli oggetti nei fotogrammi video per calcolare la velocità con cui si muovono. Algoritmi come YOLOv8 sono in grado di 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 misurare le distanze reali. Cronometrando il tempo impiegato dagli oggetti per spostarsi tra due punti, il sistema calcola la loro velocità utilizzando il rapporto distanza-tempo.

Figura 1. Stima della velocità con il modello Ultralytics YOLOv8

Oltre a catturare gli automobilisti, i sistemi di stima della velocità integrati nell'intelligenza artificiale possono raccogliere dati per fare previsioni sul traffico. Queste previsioni possono supportare le attività di gestione del traffico, come l'ottimizzazione dei tempi dei segnali e l'allocazione delle risorse. Le informazioni sui modelli di traffico e sulle cause di congestione possono essere utilizzate per pianificare nuove strade per ridurre la congestione del traffico.

Applicazioni della stima della velocità in altri settori

Le applicazioni della stima della velocità vanno oltre il monitoraggio delle strade. Può essere utile anche per monitorare le prestazioni degli atleti, aiutare i veicoli autonomi a capire 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 la computer vision. 

Ecco alcuni esempi di utilizzo della stima della velocità:

  • Le auto autonome di Tesla utilizzano una stima della velocità basata sulla visione per evitare le 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 città intelligenti 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 dei pedoni e prevenire gli incidenti.
  • I sistemi di monitoraggio del comportamento animale utilizzano la stima della velocità per tracciare il movimento degli animali e rilevare i segni di disagio o di malattia.
Figura 2. La stima della velocità può misurare la velocità di camminata di una persona.

I vantaggi della stima della velocità con la computer vision

I sistemi di stima della velocità basati sulla visione stanno sostituendo i metodi tradizionali basati sui 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 perfettamente integrate con le infrastrutture di traffico esistenti. Inoltre, questi sistemi possono essere realizzati 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 del traffico e la sicurezza.

Prova tu stesso: Stima della velocità utilizzando 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 attraverso il codice. Rileveremo i veicoli in movimento e stimeremo la loro 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 altro 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. 

Figura 3. Video di ingresso di auto su una strada

Prima di tuffarci, è importante notare che, in questo caso, il calcolo della distanza è approssimativo e si basa sulla distanza euclidea. La calibrazione della fotocamera non viene 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à del tuo GPU.

Passo 1: Inizieremo installando il pacchetto Ultralytics . Apri il prompt dei comandi o il terminale ed esegui il comando mostrato di seguito. 


pip install ultralytics

Dai un'occhiata alla nostra guida all'installazione diUltralytics per avere istruzioni passo-passo e le migliori pratiche sul processo di installazione. Se dovessi riscontrare dei problemi durante l'installazione dei pacchetti necessari per YOLOv8, la nostra guida sui problemi comuni contiene soluzioni e consigli utili.

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


import cv2
from ultralytics import YOLO, solutions

Fase 3: Poi, possiamo caricare il modello YOLOv8 e recuperare i nomi delle classi che il modello è in grado di rilevare.


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

Dai un'occhiata a tutti i modelli che supportiamo per capire quale sia il più adatto al tuo progetto.

Fase 4: in questa fase, 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))

Passo 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))

‍Fase6: 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. Puoi giocare con i valori per posizionare la linea nelle posizioni più adatte, a seconda del tuo video di ingresso. 


line_pts = [(0, 360), (1280, 360)]

Passo 7: ora possiamo inizializzare l'oggetto di stima della velocità utilizzando i punti di linea e i nomi delle classi definiti.


speed_obj = solutions.SpeedEstimator(reg_pts=line_pts,
                                      names=names,
                                      view_img=True,)

Fase 8: Il cuore 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 uscita.


while cap.isOpened():
  success, im0 = cap.read()
  if not success:        
    break
  tracks = model.track(im0, persist=True, show=False)
  im0 = speed_obj.estimate_speed(im0, tracks)
  video_writer.write(im0)

Fase 9: infine, rilasciamo gli oggetti di acquisizione video e di scrittura e chiudiamo tutte le finestre di OpenCV.


cap.release()
video_writer.release()
cv2.destroyAllWindows()

Passo 10: Salva lo script. Se stai lavorando dal tuo terminale o dal prompt dei comandi, esegui lo script con il seguente comando:


python your_script_name.py

Se il codice viene eseguito correttamente, il file video in uscita avrà il seguente aspetto.

Figura 4. L'output della stima della velocità utilizzando YOLOv8.


Le sfide della stima della velocità basata sulla visione

È inoltre importante comprendere le sfide che comporta l'implementazione della stima della velocità con la computer vision. Condizioni meteorologiche sfavorevoli come pioggia, nebbia o neve possono creare problemi al sistema in quanto possono ostruire 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 bersaglio. Anche le condizioni di scarsa illuminazione che causano ombre o riflessi del sole possono complicare ulteriormente il compito di stimare la velocità.

Un'altra sfida riguarda la potenza di calcolo. Per stimare la velocità in tempo reale, dobbiamo elaborare molti dati visivi provenienti da telecamere del traffico di alta qualità. La tua soluzione potrebbe richiedere un hardware costoso per gestire tutto questo e garantire che tutto funzioni rapidamente senza ritardi.

C'è poi il problema della privacy. I dati raccolti da questi sistemi possono includere i dettagli del veicolo di un individuo, come la marca, il modello e le informazioni sulla targa, che vengono raccolti senza il suo consenso. Alcune moderne telecamere HD possono persino catturare immagini degli occupanti dell'auto. Questa raccolta di dati può sollevare seri problemi etici e legali che devono essere gestiti con la massima attenzione.

Accelerare verso il futuro

L'utilizzo del modelloUltralytics YOLOv8 per la stima della velocità rappresenta una soluzione flessibile ed efficiente per molti usi. Anche se ci sono delle sfide, come l'accuratezza in condizioni difficili e la gestione della privacy, i vantaggi sono molteplici. La stima della velocità basata sulla computer vision è più economica, adattabile e precisa rispetto ai metodi precedenti. È utile in diversi settori come i trasporti, lo sport, la sorveglianza e le auto a guida autonoma. Grazie a tutti questi vantaggi e applicazioni, è destinata a diventare una parte fondamentale dei futuri sistemi intelligenti.

Sei interessato all'intelligenza artificiale? Entra in contatto con la nostra comunità! 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! 🚀

Logo di FacebookLogo di TwitterLogo di LinkedInSimbolo di copia-link

Leggi tutto in questa categoria

Costruiamo insieme il futuro
di AI!

Inizia il tuo viaggio nel futuro dell'apprendimento automatico