Zum Inhalt springen

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

import cv2
from ultralytics import YOLO, solutions

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 = solutions.SpeedEstimator(
    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.

Argumente SpeedEstimator

Name Typ Standard Beschreibung
names dict None Wörterbuch der Klassennamen.
reg_pts list [(20, 400), (1260, 400)] Liste der regionalen Punkte fĂŒr die GeschwindigkeitsschĂ€tzung.
view_img bool False Ob das Bild mit Kommentaren angezeigt werden soll.
line_thickness int 2 Dicke der Linien zum Zeichnen von KĂ€sten und Spuren.
region_thickness int 5 Dicke der Regionslinien.
spdl_dist_thresh int 10 Entfernungsschwelle fĂŒr die Geschwindigkeitsberechnung.

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-18
Autoren: glenn-jocher (4), Burhan-Q (1), RizwanMunawar (2), AyushExel (1)

Kommentare