Ultralytics YOLO27:
Get Started

Entfernungsmessung mit Ultralytics YOLO26#

Was ist Entfernungsmessung?#

Bei der Entfernungsmessung wird der Abstand zwischen zwei erkannten Objekten innerhalb eines Bildes oder Videobilds gemessen. Bei Ultralytics YOLO26 wird der Schwerpunkt der Bounding Box verwendet, um den Abstand zwischen den vom Benutzer markierten Bounding Boxes zu berechnen.



Ansehen: So schätzt du mit Ultralytics YOLO den Abstand zwischen erkannten Objekten in Pixeln 🚀

Visualisierungen#

Entfernungsmessung mit Ultralytics YOLO26
Entfernungsmessung mit Ultralytics YOLO26

Vorteile der Entfernungsmessung#

  • Lokalisierungspräzision: Verbessert die genaue räumliche Positionierung bei Aufgaben des maschinellen Sehens.
  • Größenschätzung: Ermöglicht die Schätzung der Objektgröße und sorgt so für ein besseres kontextuelles Verständnis.
  • Szenenverständnis: Verbessert das Verständnis von 3D-Szenen und unterstützt so bessere Entscheidungen in Anwendungen wie autonomen Fahrzeugen und Überwachungssystemen.
  • Kollisionsvermeidung: Ermöglicht Systemen, mögliche Kollisionen zu erkennen, indem sie die Abstände zwischen bewegten Objekten überwachen.
  • Räumliche Analyse: Ermöglicht die Analyse von Beziehungen und Interaktionen zwischen Objekten innerhalb der überwachten Umgebung.
Entfernungsmessung
  • Klicke mit der linken Maustaste auf zwei beliebige Bounding Boxes, um den Abstand zu berechnen.
  • Klicke mit der rechten Maustaste, um alle eingezeichneten Punkte zu löschen.
Die Entfernung ist ein Schätzwert

Die Entfernung ist ein Schätzwert und möglicherweise nicht ganz genau, da sie anhand von 2D-Daten berechnet wird, denen Tiefeninformationen fehlen.

Entfernungen mit YOLO26 berechnen#

Die Lösung DistanceCalculation verfolgt Objekte über mehrere Videobilder hinweg und misst den euklidischen Abstand in Pixeln zwischen den Schwerpunkten zweier Bounding Boxes, die du mit der Maus auswählst. Führe das folgende Beispiel aus und klicke dann mit der linken Maustaste auf zwei Objekte, um die Verbindungslinie einzuzeichnen und den Abstand abzulesen. Klicke mit der rechten Maustaste, um die Auswahl aufzuheben.

Entfernungsmessung mit 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("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Entfernungsmessungsobjekt initialisieren
distancecalculator = solutions.DistanceCalculation(
    model="yolo26n.pt",  # Pfad zur YOLO26-Modelldatei.
    show=True,  # # Ausgabe anzeigen
)

# Video verarbeiten
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = distancecalculator(im0)

    print(results)  # auf die Ausgabe zugreifen

    video_writer.write(results.plot_im)  # das verarbeitete Bild schreiben.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # Alle geöffneten Fenster schließen

Argumente für DistanceCalculation()#

Hier ist eine Tabelle mit den Argumenten für DistanceCalculation:

ArgumentTypStandardBeschreibung
modelstrNonePfad zu einer Ultralytics-YOLO-Modelldatei.
line_widthint2Linienstärke für die Boxen, Keypoints und Zählwerte, die von der Lösung eingezeichnet werden.
verboseboolTrueAktiviert das Protokoll der Lösung für jedes Bild, das Eingabeform, Klassenanzahlen und Verarbeitungsgeschwindigkeit enthält. Der Tracking-Aufruf selbst gibt grundsätzlich keine Meldungen aus.

Du kannst in der Lösung DistanceCalculation auch verschiedene Argumente für track verwenden.

ArgumentTypStandardBeschreibung
trackerstr'tracktrack.yaml'Legt den zu verwendenden Verfolgungsalgorithmus fest. Integrierte Optionen: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Legt den Konfidenzschwellenwert für Erkennungen fest. Niedrigere Werte ermöglichen die Verfolgung weiterer Objekte, können aber auch falsch positive Ergebnisse einschließen.
ioufloat0.7Legt den Schwellenwert für die Schnittmenge über Vereinigung (IoU) fest, um überlappende Erkennungen herauszufiltern.
classeslistNoneFiltert die Ergebnisse nach Klassenindex. Beispielsweise verfolgt classes=[0, 2, 3] nur die angegebenen Klassen.
devicestrNoneLegt das Gerät für die Inferenz fest (z. B. cpu, cuda:0 oder 0). So kannst du für die Modellausführung zwischen CPU, einer bestimmten GPU oder anderen Rechengeräten wählen.
imgszint or tuple640Zielbildgröße für die Inferenz: eine Ganzzahl für ein quadratisches Bild oder ein (height, width)-Paar. Die Formen werden an den Modellschritt angepasst.
max_detint300Maximale Anzahl der Erkennungen, die pro Bild vor der Verfolgung beibehalten werden. Dadurch wird die Anzahl der Objekte begrenzt, die eine Lösung in dichten Szenen verarbeitet.
quantizeint or strNoneInferenzpräzision: 16 (FP16) oder 32/unset (FP32) für PyTorch- und TorchScript-Modelle außerhalb der CPU; andere Formate verwenden die Präzision, die ihr Artefakt und ihre Laufzeitumgebung vorgeben. Ersetzt das veraltete Argument half.

Außerdem stehen die folgenden Visualisierungsargumente zur Verfügung:

ArgumentTypStandardBeschreibung
showboolFalseWenn True aktiviert ist, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Nützlich für unmittelbares visuelles Feedback während der Entwicklung oder beim Testen.
show_confboolTrueZeigt neben der Bezeichnung den Konfidenzwert jeder Erkennung an. Gibt Aufschluss darüber, wie sicher sich das Modell bei der jeweiligen Erkennung ist.
show_labelsboolTrueZeigt für jede Erkennung eine Bezeichnung in der visuellen Ausgabe an. So lassen sich erkannte Objekte sofort erkennen.

Implementierungsdetails#

Die Klasse DistanceCalculation verfolgt Objekte über Videobilder hinweg und berechnet den euklidischen Abstand zwischen den Schwerpunkten ausgewählter Bounding Boxes. Wenn du auf zwei Objekte klickst, führt die Lösung Folgendes aus:

  1. Ermittelt die Schwerpunkte (Mittelpunkte) der ausgewählten Bounding Boxes
  2. Berechnet den euklidischen Abstand zwischen diesen Schwerpunkten in Pixeln
  3. Zeigt den Abstand im Bild mit einer Verbindungslinie zwischen den Objekten an

Die Implementierung verwendet die Methode mouse_event_for_distance für Mausinteraktionen, damit Benutzer Objekte auswählen und die Auswahl bei Bedarf aufheben können. Die Methode process verarbeitet die Bilder nacheinander, verfolgt Objekte und berechnet Abstände.

Anwendungsfälle#

Die Entfernungsmessung mit YOLO26 hat zahlreiche praktische Anwendungsbereiche:

  • Einzelhandelsanalysen: Misst, wie nahe Kunden an Produkten sind, und analysiert die Wirksamkeit der Ladengestaltung
  • Arbeitssicherheit in der Industrie: Überwacht Sicherheitsabstände zwischen Beschäftigten und Maschinen
  • Verkehrsmanagement: Analysiert Fahrzeugabstände und erkennt zu dichtes Auffahren
  • Sportanalyse: Berechnet Abstände zwischen Spielern, dem Ball und wichtigen Positionen auf dem Spielfeld
  • Gesundheitswesen: Stellt angemessene Abstände in Wartebereichen sicher und überwacht die Bewegung von Patienten
  • Robotik: Ermöglicht Robotern, angemessene Abstände zu Hindernissen und Menschen einzuhalten

Häufig gestellte Fragen#

  • Um mit Ultralytics YOLO26 Abstände zwischen Objekten zu berechnen, musst du die Schwerpunkte der Bounding Boxes der erkannten Objekte ermitteln. Dazu initialisierst du die Klasse DistanceCalculation aus dem Modul solutions von Ultralytics und verwendest die Verfolgungsergebnisse des Modells, um die Abstände zu berechnen.

  • Die Entfernungsmessung mit Ultralytics YOLO26 bietet mehrere Vorteile:

    • Lokalisierungspräzision: Ermöglicht eine genaue räumliche Positionierung von Objekten.
    • Größenschätzung: Hilft bei der Schätzung physischer Größen und trägt so zu einem besseren kontextuellen Verständnis bei.
    • Szenenverständnis: Verbessert das Verständnis von 3D-Szenen und unterstützt bessere Entscheidungen in Anwendungen wie autonomem Fahren und Überwachung.
    • Echtzeitverarbeitung: Führt Berechnungen unmittelbar aus und eignet sich damit für die Live-Videoanalyse.
    • Integrationsmöglichkeiten: Funktioniert nahtlos mit anderen YOLO26-Lösungen wie Objektverfolgung und Geschwindigkeitsschätzung.
  • Ja, mit Ultralytics YOLO26 kannst du in Echtzeit Video-Streams messen. Dabei werden Videobilder mit OpenCV aufgenommen, die YOLO26-Objekterkennung ausgeführt und mithilfe der Klasse DistanceCalculation die Abstände zwischen Objekten in aufeinanderfolgenden Bildern berechnet. Eine ausführliche Implementierung findest du im Beispiel für einen Video-Stream.

  • Um bei der Entfernungsmessung mit Ultralytics YOLO26 eingezeichnete Punkte zu löschen, klicke mit der rechten Maustaste. Dadurch werden alle eingezeichneten Punkte gelöscht. Weitere Informationen findest du im Hinweisabschnitt des Beispiels zur Entfernungsmessung.

  • Zu den wichtigsten Argumenten zum Initialisieren der Klasse DistanceCalculation in Ultralytics YOLO26 gehören:

    • model: Pfad zur YOLO26-Modelldatei.
    • tracker: Zu verwendender Verfolgungsalgorithmus (standardmäßig verwenden Solutions tracktrack.yaml).
    • conf: Konfidenzschwellenwert für Erkennungen.
    • show: Kennzeichnet, ob die Ausgabe angezeigt werden soll.

    Eine vollständige Liste und die Standardwerte findest du unter Argumente von DistanceCalculation.

Kommentare