Yolo Vision Shenzhen
Shenzhen
Jetzt beitreten

Ultralytics YOLOv8 zur Geschwindigkeitsschätzung in Computer-Vision-Projekten

Abirami Vina

5 Min. Lesezeit

23. Mai 2024

Entdecken Sie, wie das Ultralytics YOLOv8-Modell für die Geschwindigkeitsschätzung in Ihren Computer-Vision-Projekten verwendet werden kann. Probieren Sie es selbst mit einem einfachen Codebeispiel aus.

Wir haben wahrscheinlich alle Schilder mit Geschwindigkeitsbegrenzungen gesehen. Einige von uns haben vielleicht sogar eine automatische Benachrichtigung über eine Geschwindigkeitsüberschreitung per Post oder E-Mail erhalten. Künstliche Intelligenz (KI)-Verkehrsmanagementsysteme können dank Computer Vision Geschwindigkeitsüberschreitungen automatisch erkennen. Echtzeitaufnahmen von Kameras an Straßenlaternen und auf Autobahnen werden zur Geschwindigkeitsschätzung und zur Erhöhung der Verkehrssicherheit verwendet.

Geschwindigkeitsschätzung ist nicht nur auf die Sicherheit auf Autobahnen beschränkt. Sie kann in Sport, autonomen Fahrzeugen und verschiedenen anderen Anwendungen eingesetzt werden. In diesem Artikel werden wir erörtern, wie Sie das Ultralytics YOLOv8-Modell für die Geschwindigkeitsschätzung in Ihren Computer-Vision-Projekten verwenden können. Wir werden auch Schritt für Schritt ein Codebeispiel durchgehen, damit Sie es selbst ausprobieren können. Fangen wir an!

Geschwindigkeitsschätzung vereinfacht das Verkehrsmanagement

Laut der Weltgesundheitsorganisation (WHO) sterben jährlich etwa 1,19 Millionen Menschen bei Verkehrsunfällen aufgrund von Geschwindigkeitsüberschreitungen. Zusätzlich erleiden 20 bis 50 Millionen weitere nicht-tödliche Verletzungen, von denen viele zu Behinderungen führen. Die Bedeutung der Verkehrssicherheit kann nicht hoch genug eingeschätzt werden, insbesondere wenn die Schätzung der Geschwindigkeit hilft, Unfälle zu verhindern, Leben zu retten und unsere Straßen sicher und effizient zu halten. 

Die Geschwindigkeitsschätzung mithilfe von Computer Vision umfasst das Erkennen und Verfolgen von Objekten in Videobildern, um zu berechnen, wie schnell sie sich bewegen. Algorithmen wie YOLOv8 können Objekte wie Fahrzeuge in aufeinanderfolgenden Bildern identifizieren und verfolgen. Das System misst die Entfernung, die diese Objekte zurücklegen, mithilfe von kalibrierten Kameras oder Referenzpunkten, um reale Entfernungen zu ermitteln. Indem das System misst, wie lange sich Objekte zwischen zwei Punkten bewegen, berechnet es ihre Geschwindigkeit anhand des Distanz-Zeit-Verhältnisses.

Abb. 1. Geschwindigkeitsschätzung mit dem Ultralytics YOLOv8 Modell

Neben der Erfassung von Geschwindigkeitsübertretungen können KI-integrierte Systeme zur Geschwindigkeitsschätzung Daten sammeln, um Vorhersagen über den Verkehr zu treffen. Diese Vorhersagen können Aufgaben des Verkehrsmanagement unterstützen, wie z. B. die Optimierung von Ampelzeiten und die Zuweisung von Ressourcen. Erkenntnisse über Verkehrsmuster und Ursachen von Staus können zur Planung neuer Straßen zur Reduzierung von Verkehrsstaus verwendet werden.

Anwendungen der Geschwindigkeitsschätzung in anderen Branchen

Anwendungen zur Geschwindigkeitsschätzung gehen über die Überwachung von Straßen hinaus. Sie können auch nützlich sein, um die Leistung von Sportlern zu überwachen, autonomen Fahrzeugen zu helfen, die Geschwindigkeit von Objekten in ihrer Umgebung zu verstehen, verdächtiges Verhalten zu erkennen usw. Überall dort, wo eine Kamera zur Messung der Geschwindigkeit eines Objekts eingesetzt werden kann, kann die Geschwindigkeitsschätzung mithilfe von Computer Vision verwendet werden. 

Hier sind einige Beispiele für die Verwendung von Geschwindigkeitsschätzung:

  • Teslas autonome Autos verwenden eine visionsbasierte Geschwindigkeitsschätzung, um Kollisionen zu vermeiden.
  • Computer Vision und Geschwindigkeitsschätzung werden bei den Olympischen Spielen 2024 eingesetzt, um die Leistungsanalyse bei Leichtathletik-Veranstaltungen zu verbessern.
  • Smart Cities erforschen die Ganganalyse von Fußgängern, um die Gehgeschwindigkeit zu überwachen und die urbane Mobilität und Sicherheit zu erhöhen. Diese Systeme können Fahrer auf die Anwesenheit von Fußgängern aufmerksam machen und Unfälle verhindern.
  • Tierverhaltensüberwachungssysteme verwenden Geschwindigkeitsschätzung, um die Tierbewegung zu verfolgen und Anzeichen von Not oder Krankheit zu erkennen.
Abb. 2. Die Geschwindigkeitsschätzung kann die Gehgeschwindigkeit einer Person messen.

Die Vorteile der Geschwindigkeitsschätzung mithilfe von Computer Vision

Vision-basierte Geschwindigkeitsmesssysteme ersetzen traditionelle sensorbasierte Methoden aufgrund ihrer höheren Genauigkeit, Kosteneffizienz und Flexibilität. Im Gegensatz zu Systemen, die auf teure Sensoren wie LiDAR angewiesen sind, verwendet Computer Vision Standardkameras, um die Geschwindigkeit in Echtzeit zu überwachen und zu analysieren. Computer-Vision-Lösungen zur Geschwindigkeitsschätzung lassen sich nahtlos in die bestehende Verkehrsinfrastruktur integrieren. Darüber hinaus können diese Systeme so aufgebaut werden, dass sie eine Reihe komplexer Aufgaben wie die Identifizierung von Fahrzeugtypen und die Analyse von Verkehrsmustern durchführen, um den gesamten Verkehrsfluss und die Sicherheit zu verbessern.

Probieren Sie es selbst aus: Geschwindigkeitsschätzung mit YOLOv8

Nachdem wir nun ein klares Verständnis der Geschwindigkeitsschätzung und ihrer Anwendungen haben, wollen wir uns genauer ansehen, wie Sie die Geschwindigkeitsschätzung durch Code in Ihre Computer-Vision-Projekte integrieren können. Wir werden sich bewegende Fahrzeuge erkennen und ihre Geschwindigkeit mit dem YOLOv8-Modell schätzen.

Dieses Beispiel verwendet ein Video von Autos auf einer Straße, das aus dem Internet heruntergeladen wurde. Sie können dasselbe Video oder ein beliebiges relevantes Video verwenden. Das YOLOv8-Modell identifiziert die Mitte jedes Fahrzeugs und berechnet seine Geschwindigkeit basierend darauf, wie schnell diese Mitte eine horizontale Linie im Videobild überschreitet. 

Bevor wir eintauchen, ist es wichtig zu beachten, dass die Distanzberechnung in diesem Fall approximativ ist und auf der euklidischen Distanz basiert. Eine Kamerakalibrierung wird nicht berücksichtigt, weshalb die Geschwindigkeitsschätzung möglicherweise nicht ganz genau ist. Außerdem kann die geschätzte Geschwindigkeit je nach Geschwindigkeit Ihrer GPU variieren.

Schritt 1: Zuerst installieren wir das Ultralytics-Paket. Öffnen Sie Ihre Eingabeaufforderung oder Ihr Terminal und führen Sie den unten gezeigten Befehl aus.

pip install ultralytics 

Werfen Sie einen Blick in unseren Ultralytics Installationsleitfaden für Schritt-für-Schritt-Anleitungen und Best Practices zum Installationsprozess. Wenn Sie bei der Installation der erforderlichen Pakete für YOLOv8 auf Probleme stoßen, bietet unser Leitfaden zu häufigen Problemen Lösungen und hilfreiche Tipps.

Schritt 2: Als Nächstes importieren wir die erforderlichen Bibliotheken. Die OpenCV-Bibliothek hilft uns bei der Videoverarbeitung.

import cv2
from ultralytics import YOLO, solutions

Schritt 3: Dann können wir das YOLOv8-Modell laden und die Namen der Klassen abrufen, die das Modell erkennen kann.

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

Schauen Sie sich alle Modelle an, die wir unterstützen, um zu verstehen, welches Modell am besten zu Ihrem Projekt passt.

Schritt 4: In diesem Schritt öffnen wir die Eingabevideodatei mit dem VideoCapture-Modul von OpenCV. Wir extrahieren auch die Breite, Höhe und Bilder pro Sekunde (fps) des Videos.

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

Schritt 5: Hier initialisieren wir den Video-Writer, um unsere Endergebnisse der Geschwindigkeitsschätzung zu speichern. Die Ausgabevideodatei wird als “speed_estimation.avi” gespeichert.

video_writer = cv2.VideoWriter("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

Schritt 6: Als Nächstes definieren wir die Linienpunkte für die Geschwindigkeitsschätzung. Für unser Eingangsvideo wird diese Linie horizontal in der Mitte des Bildes platziert. Sie können gerne mit den Werten experimentieren, um die Linie an den am besten geeigneten Positionen zu platzieren, abhängig von Ihrem Eingangsvideo.

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

Schritt 7: Jetzt können wir das Geschwindigkeitsschätzungsobjekt mit den definierten Linienpunkten und Klassennamen initialisieren.

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

Schritt 8: Der Kern des Skripts verarbeitet das Video Frame für Frame. Wir lesen jeden Frame und erkennen und verfolgen Objekte. Die Geschwindigkeit der verfolgten Objekte wird geschätzt, und der annotierte Frame wird in das Ausgabevideo geschrieben.

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)
  

Schritt 9: Schließlich geben wir die Videoaufnahme- und Writer-Objekte frei und schließen alle OpenCV-Fenster.

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

Schritt 10: Speichern Sie Ihr Skript. Wenn Sie von Ihrem Terminal oder Ihrer Eingabeaufforderung aus arbeiten, führen Sie das Skript mit dem folgenden Befehl aus:

python your_script_name.py


Die Herausforderungen der visionsbasierten Geschwindigkeitsschätzung

Es ist auch wichtig, die Herausforderungen bei der Implementierung der Geschwindigkeitsschätzung mithilfe von Computer Vision zu verstehen. Ungünstige Wetterbedingungen wie Regen, Nebel oder Schnee können Probleme für das System verursachen, da sie die Sicht auf die Straße behindern können. In ähnlicher Weise können Verdeckungen durch andere Fahrzeuge oder Objekte es diesen Systemen erschweren, die Geschwindigkeit eines Zielfahrzeugs genau zu verfolgen und zu schätzen. Schlechte Lichtverhältnisse, die Schatten verursachen, oder Blendung durch die Sonne können die Aufgabe der Geschwindigkeitsschätzung zusätzlich erschweren.

Eine weitere Herausforderung betrifft die Rechenleistung. Um die Geschwindigkeit in Echtzeit zu schätzen, müssen wir eine große Menge an visuellen Daten von hochwertigen Verkehrskameras verarbeiten. Ihre Lösung erfordert möglicherweise teure Hardware, um all dies zu bewältigen und sicherzustellen, dass alles schnell und ohne Verzögerungen funktioniert.

Dann gibt es noch das Problem des Datenschutzes. Die von diesen Systemen erfassten Daten können die Fahrzeugdaten einer Person wie Marke, Modell und Kennzeicheninformationen enthalten, die ohne deren Zustimmung erfasst werden. Einige moderne HD-Kameras können sogar Bilder der Insassen im Auto aufnehmen. Eine solche Datenerfassung kann ernste ethische und rechtliche Fragen aufwerfen, die mit größter Sorgfalt behandelt werden müssen.

Mit Vollgas in die Zukunft

Die Verwendung des Ultralytics YOLOv8-Modells zur Geschwindigkeitsschätzung bietet eine flexible und effiziente Lösung für viele Anwendungen. Obwohl es Herausforderungen gibt, wie z. B. die Genauigkeit unter schwierigen Bedingungen und die Berücksichtigung von Datenschutzfragen, sind die Vorteile vielfältig. Computer Vision-gestützte Geschwindigkeitsschätzung ist kostengünstiger, anpassungsfähiger und präziser als ältere Methoden. Sie ist in verschiedenen Sektoren wie Transport, Sport, Überwachung und selbstfahrenden Autos nützlich. Angesichts all der Vorteile und Anwendungen wird sie ein wichtiger Bestandteil zukünftiger intelligenter Systeme sein.

Interessieren Sie sich für KI? Vernetzen Sie sich mit unserer Community! Erkunden Sie unser GitHub-Repository, um mehr darüber zu erfahren, wie wir KI einsetzen, um innovative Lösungen in verschiedenen Branchen wie dem Gesundheitswesen und der Landwirtschaft zu entwickeln. Arbeiten Sie mit uns zusammen, entwickeln Sie Innovationen und lernen Sie mit uns! 🚀

Lasst uns gemeinsam die Zukunft
der KI gestalten!

Beginnen Sie Ihre Reise mit der Zukunft des maschinellen Lernens

Kostenlos starten
Link in die Zwischenablage kopiert