SchĂ€tzung der Geschwindigkeit mit Ultralytics YOLOv8 đ
Was ist eine GeschwindigkeitsabschÀtzung?
Bei der GeschwindigkeitsschĂ€tzung handelt es sich um die Berechnung der Bewegungsgeschwindigkeit eines Objekts in einem bestimmten Kontext, die hĂ€ufig bei Computer-Vision-Anwendungen eingesetzt wird. Mit Ultralytics YOLOv8 kannst du jetzt die Geschwindigkeit eines Objekts berechnen, indem du die Objektverfolgung mit Entfernungs- und Zeitdaten kombinierst, was fĂŒr Aufgaben wie Verkehr und Ăberwachung entscheidend ist. Die Genauigkeit der GeschwindigkeitsschĂ€tzung wirkt sich direkt auf die Effizienz und ZuverlĂ€ssigkeit verschiedener Anwendungen aus und ist damit eine SchlĂŒsselkomponente bei der Weiterentwicklung intelligenter Systeme und Echtzeit-Entscheidungsprozesse.
Pass auf: SchÀtzung der Geschwindigkeit mit Ultralytics YOLOv8
Vorteile der GeschwindigkeitsabschÀtzung?
- Effiziente Verkehrskontrolle: Genaue GeschwindigkeitsschĂ€tzungen helfen dabei, den Verkehrsfluss zu steuern, die Sicherheit zu erhöhen und Staus auf den StraĂen zu reduzieren.
- PrĂ€zise autonome Navigation: In autonomen Systemen wie selbstfahrenden Autos sorgt eine zuverlĂ€ssige GeschwindigkeitsschĂ€tzung fĂŒr eine sichere und genaue Fahrzeugnavigation.
- Erhöhte Sicherheit bei der Ăberwachung: Die GeschwindigkeitsschĂ€tzung in der Ăberwachungsanalyse hilft dabei, ungewöhnliche Verhaltensweisen oder potenzielle Bedrohungen zu erkennen und so die Wirksamkeit der SicherheitsmaĂnahmen zu verbessern.
Anwendungen in der realen Welt
Transport | Transport |
---|---|
SchĂ€tzung der Geschwindigkeit auf der StraĂe mit Ultralytics YOLOv8 | SchĂ€tzung der Geschwindigkeit auf einer BrĂŒcke mit Ultralytics YOLOv8 |
SchÀtzung der Geschwindigkeit mit YOLOv8 Beispiel
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()
Geschwindigkeit ist SchÀtzung
Die Geschwindigkeit ist eine SchĂ€tzung und möglicherweise nicht ganz genau. AuĂerdem kann die SchĂ€tzung je nach GPU-Geschwindigkeit variieren.
Optionale Argumente set_args
Name | Typ | Standard | Beschreibung |
---|---|---|---|
reg_pts |
list |
[(20, 400), (1260, 400)] |
Punkte, die das Gebiet der Region definieren |
names |
dict |
None |
Klassen Namen |
view_img |
bool |
False |
Rahmen mit ZĂ€hlungen anzeigen |
line_thickness |
int |
2 |
Dicke der Begrenzungsrahmen erhöhen |
region_thickness |
int |
5 |
Dicke fĂŒr Objektgegenbereich oder Linie |
spdl_dist_thresh |
int |
10 |
Euklidischer Abstandsschwellenwert fĂŒr Geschwindigkeitskontrolllinie |
Argumente model.track
Name | Typ | Standard | Beschreibung |
---|---|---|---|
source |
im0 |
None |
Quellverzeichnis fĂŒr Bilder oder Videos |
persist |
bool |
False |
Spuren zwischen Frames beibehalten |
tracker |
str |
botsort.yaml |
Tracking-Methode 'bytetrack' oder 'botsort' |
conf |
float |
0.3 |
Konfidenzschwelle |
iou |
float |
0.5 |
IOU-Schwelle |
classes |
list |
None |
Ergebnisse nach Klassen filtern, d.h. classes=0, oder classes=[0,2,3] |
verbose |
bool |
True |
Anzeige der Ergebnisse der Objektverfolgung |
Erstellt am 2024-01-05, Aktualisiert am 2024-05-08
Autoren: Burhan-Q (1), RizwanMunawar (2), glenn-jocher (2), AyushExel (1)