Stima della velocità utilizzando Ultralytics YOLOv8 🚀
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. Utilizzando Ultralytics YOLOv8 è ora possibile calcolare la velocità di un oggetto utilizzando il tracciamento dell'oggetto insieme ai dati relativi alla distanza e al tempo, fondamentali per attività come il traffico e la sorveglianza. L'accuratezza della stima della velocità influenza direttamente l'efficienza e l'affidabilità di varie applicazioni, rendendola una componente fondamentale per il progresso dei sistemi intelligenti e dei processi decisionali in tempo reale.
Guarda: Stima della velocità con Ultralytics YOLOv8
Vantaggi della stima della velocità ?
- Controllo del traffico efficiente: 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 YOLOv8 | Stima della velocità su un ponte utilizzando Ultralytics YOLOv8 |
Esempio di stima della velocità con YOLOv8
from ultralytics import YOLO
from ultralytics.solutions import speed_estimation
import cv2
model = YOLO("yolov8n.pt")
names = model.model.names
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))
# Video writer
video_writer = cv2.VideoWriter("speed_estimation.avi",
cv2.VideoWriter_fourcc(*'mp4v'),
fps,
(w, h))
line_pts = [(0, 360), (1280, 360)]
# Init speed-estimation obj
speed_obj = speed_estimation.SpeedEstimator()
speed_obj.set_args(reg_pts=line_pts,
names=names,
view_img=True)
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)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
La velocità è una stima
La velocità sarà una stima e potrebbe non essere completamente accurata. Inoltre, la stima può variare a seconda della velocità della GPU.
Argomenti opzionali set_args
Nome | Tipo | Predefinito | Descrizione |
---|---|---|---|
reg_pts |
list |
[(20, 400), (1260, 400)] |
Punti che definiscono l'area della regione |
names |
dict |
None |
Nomi delle classi |
view_img |
bool |
False |
Visualizza i fotogrammi con i conteggi |
line_thickness |
int |
2 |
Aumenta lo spessore dei riquadri di delimitazione |
region_thickness |
int |
5 |
Spessore per la regione o la linea del contatore dell'oggetto |
spdl_dist_thresh |
int |
10 |
Soglia di distanza euclidea per la linea di controllo della velocità |
Argomenti model.track
Nome | Tipo | Predefinito | Descrizione |
---|---|---|---|
source |
im0 |
None |
directory di origine per le immagini o i video |
persist |
bool |
False |
persistenza dei brani tra i fotogrammi |
tracker |
str |
botsort.yaml |
Metodo di tracciamento 'bytetrack' o 'botsort' |
conf |
float |
0.3 |
Soglia di fiducia |
iou |
float |
0.5 |
Soglia IOU |
classes |
list |
None |
filtrare i risultati per classe, ad esempio classi=0 o classi=[0,2,3]. |
verbose |
bool |
True |
Visualizza i risultati del tracciamento dell'oggetto |
Creato 2024-01-05, Aggiornato 2024-05-08
Autori: Burhan-Q (1), RizwanMunawar (2), glenn-jocher (2), AyushExel (1)