Stima della velocità utilizzando Ultralytics YOLO11 🚀
Che cos'è la stima della velocità?
La stima della velocità è il processo di calcolo della velocità di movimento di un oggetto all'interno di un determinato contesto, spesso utilizzato nelle applicazioni di computer vision. Utilizzo di Ultralytics YOLO11 è ora possibile calcolare la velocità degli oggetti utilizzando il tracciamento degli oggetti insieme ai dati sulla distanza e sul tempo, fondamentali per attività come il monitoraggio del traffico e la sorveglianza. L'accuratezza della stima della velocità influenza direttamente l'efficienza e l'affidabilità di varie applicazioni, rendendola un componente chiave per il progresso dei sistemi intelligenti e dei processi decisionali in tempo reale.
Guarda: Stima della velocità con Ultralytics YOLO11
Scopri il nostro blog
Per un approfondimento sulla stima della velocità, consultate il nostro blog post: Ultralytics YOLO11 per la stima della velocità nei progetti di visione artificiale.
Vantaggi della stima della velocità
- Controllo efficiente del traffico: Una stima accurata della velocità aiuta a gestire il flusso del traffico, a migliorare la sicurezza e a ridurre la congestione stradale.
- Navigazione autonoma precisa: Nei sistemi autonomi come le auto a guida autonoma, una stima affidabile della velocità garantisce una navigazione sicura e precisa del veicolo.
- Maggiore sicurezza della sorveglianza: La stima della velocità nell'analisi della sorveglianza aiuta a identificare comportamenti insoliti o potenziali minacce, migliorando l'efficacia delle misure di sicurezza.
Applicazioni nel mondo reale
Trasporto | Trasporto |
---|---|
![]() |
![]() |
Stima della velocità su strada utilizzando Ultralytics YOLO11 | Stima della velocità su un ponte utilizzando Ultralytics YOLO11 |
La velocità è una stima
La velocità è una stima e potrebbe non essere completamente accurata. Inoltre, la stima può variare a seconda della velocità GPU e dei fattori ambientali.
Stima della velocità con Ultralytics YOLO
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("speed_management.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# speed region points
speed_region = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
# Initialize speed estimation object
speedestimator = solutions.SpeedEstimator(
show=True, # display the output
model="yolo11n.pt", # path to the YOLO11 model file.
region=speed_region, # pass region points
# classes=[0, 2], # estimate speed of specific classes.
# line_width=2, # adjust the line width for bounding boxes
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = speedestimator(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
SpeedEstimator
Argomenti
Ecco una tabella con i dati SpeedEstimator
argomenti:
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
model |
str |
None |
Percorso del file del modelloYOLO Ultralytics . |
region |
list |
[(20, 400), (1260, 400)] |
Elenco dei punti che definiscono la regione di conteggio. |
Il SpeedEstimator
consente l'utilizzo di track
parametri:
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
Specifica l'algoritmo di tracciamento da utilizzare, ad es, bytetrack.yaml o botsort.yaml . |
conf |
float |
0.3 |
Imposta la soglia di confidenza per i rilevamenti; valori più bassi consentono di tracciare un maggior numero di oggetti, ma possono includere falsi positivi. |
iou |
float |
0.5 |
Imposta la soglia Intersection over Union (IoU) per il filtraggio dei rilevamenti sovrapposti. |
classes |
list |
None |
Filtra i risultati per indice di classe. Ad esempio, classes=[0, 2, 3] tiene traccia solo delle classi specificate. |
verbose |
bool |
True |
Controlla la visualizzazione dei risultati del tracciamento, fornendo un output visivo degli oggetti tracciati. |
device |
str |
None |
Specifica il dispositivo per l'inferenza (ad es, cpu , cuda:0 o 0 ). Consente agli utenti di scegliere tra CPU, uno specifico GPU o altri dispositivi di calcolo per l'esecuzione del modello. |
Inoltre, sono supportate le seguenti opzioni di visualizzazione:
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
show |
bool |
False |
Se True visualizza le immagini o i video annotati in una finestra. Utile per un feedback visivo immediato durante lo sviluppo o il test. |
line_width |
None or int |
None |
Specifica la larghezza della linea delle caselle di delimitazione. Se None La larghezza della linea viene regolata automaticamente in base alle dimensioni dell'immagine. Fornisce una personalizzazione visiva per la chiarezza. |
FAQ
Come si fa a stimare la velocità di un oggetto usando Ultralytics YOLO11 ?
La stima della velocità degli oggetti con Ultralytics YOLO11 comporta la combinazione di tecniche di rilevamento e tracciamento degli oggetti. In primo luogo, è necessario rilevare gli oggetti in ogni fotogramma utilizzando il modello YOLO11 . Quindi, tracciare questi oggetti tra i fotogrammi per calcolare il loro movimento nel tempo. Infine, si utilizza la distanza percorsa dall'oggetto tra un fotogramma e l'altro e la frequenza dei fotogrammi per stimarne la velocità.
Esempio:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize SpeedEstimator
speedestimator = solutions.SpeedEstimator(
region=[(0, 360), (1280, 360)],
model="yolo11n.pt",
show=True,
)
while cap.isOpened():
success, im0 = cap.read()
if not success:
break
results = speedestimator(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
Per maggiori dettagli, consultate il nostro post ufficiale sul blog.
Quali sono i vantaggi dell'utilizzo di Ultralytics YOLO11 per la stima della velocità nella gestione del traffico?
L'utilizzo di Ultralytics YOLO11 per la stima della velocità offre notevoli vantaggi nella gestione del traffico:
- Maggiore sicurezza: Stima accurata della velocità dei veicoli per rilevare l'eccesso di velocità e migliorare la sicurezza stradale.
- Monitoraggio in tempo reale: Approfittate della capacità di rilevamento degli oggetti in tempo reale di YOLO11 per monitorare efficacemente il flusso di traffico e la congestione.
- Scalabilità: L'implementazione del modello su diverse configurazioni hardware, dai dispositivi edge ai server, garantisce soluzioni flessibili e scalabili per le implementazioni su larga scala.
Per ulteriori applicazioni, vedere i vantaggi della stima della velocità.
YOLO11 può essere integrato con altri framework di intelligenza artificiale come TensorFlow o PyTorch?
Sì, YOLO11 può essere integrato con altri framework di intelligenza artificiale come TensorFlow e PyTorch. Ultralytics fornisce il supporto per l'esportazione dei modelli YOLO11 in vari formati, come ad esempio ONNX, TensorRTe CoreMLgarantendo un'interoperabilità senza problemi con altri framework di ML.
Per esportare un modello YOLO11 in formato ONNX :
Per saperne di più sull'esportazione dei modelli, consultate la nostra guida all'esportazione.
Quanto è accurata la stima della velocità utilizzando Ultralytics YOLO11 ?
L'accuratezza della stima della velocità utilizzando Ultralytics YOLO11 dipende da diversi fattori, tra cui la qualità del tracciamento dell'oggetto, la risoluzione e la frequenza dei fotogrammi del video e le variabili ambientali. Sebbene lo stimatore di velocità fornisca stime affidabili, potrebbe non essere accurato al 100% a causa delle variazioni nella velocità di elaborazione dei fotogrammi e dell'occlusione degli oggetti.
Nota: considerare sempre il margine di errore e convalidare le stime con i dati di verità a terra, quando possibile.
Per ulteriori suggerimenti per migliorare la precisione, consultare la sezione Argomenti SpeedEstimator
sezione.