Ultralytics YOLO27:

Entfernungsberechnung mit Ultralytics YOLO26#

Was ist eine Entfernungsberechnung?#

Die Entfernungsberechnung ist der Prozess, den Abstand zwischen zwei erkannten Objekten innerhalb eines Bildes oder Videobilds zu messen. Bei Ultralytics YOLO26 wird der Mittelpunkt des Begrenzungsrahmens verwendet, um die Entfernung zwischen den vom Benutzer markierten Begrenzungsrahmen zu berechnen.



Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀

Visualisierungen#

Entfernungsberechnung mit Ultralytics YOLO26
Entfernungsberechnung mit Ultralytics YOLO26

Vorteile der Entfernungsberechnung#

  • Lokalisierungspräzision: Verbessert die genaue räumliche Positionierung bei Aufgaben der Computer Vision.
  • Größenschätzung: Ermöglicht die Schätzung der Objektgröße für ein besseres kontextuelles Verständnis.
  • Szenenverständnis: Verbessert das Verständnis von 3D-Szenen und ermöglicht dadurch bessere Entscheidungen in Anwendungen wie autonomen Fahrzeugen und Überwachungssystemen.
  • Kollisionsvermeidung: Ermöglicht es Systemen, mögliche Kollisionen durch die Überwachung der Abstände zwischen bewegten Objekten zu erkennen.
  • Räumliche Analyse: Erleichtert die Analyse von Beziehungen und Interaktionen zwischen Objekten innerhalb der überwachten Umgebung.
Entfernungsberechnung
  • Klicke mit der linken Maustaste auf zwei beliebige Begrenzungsrahmen, um die Entfernung zu berechnen.
  • Verwende die rechte Maustaste, um alle eingezeichneten Punkte zu löschen.
Die Entfernung ist ein Schätzwert

Die Entfernung ist eine Schätzung 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 Bilder hinweg und misst den euklidischen Abstand in Pixeln zwischen den Mittelpunkten von zwei beliebigen Begrenzungsrahmen, 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 die Entfernung abzulesen. Klicke mit der rechten Maustaste, um deine Auswahl zu löschen.

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

# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
    model="yolo26n.pt",  # path to the YOLO26 model file.
    show=True,  # display the output
)

# Process video
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)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

Argumente von DistanceCalculation()#

Hier ist eine Tabelle mit den Argumenten von DistanceCalculation:

ArgumentTypStandardwertBeschreibung
modelstrNonePfad zu einer YOLO-Modell-Datei von Ultralytics.
line_widthint2Linienstärke für die von der Lösung gezeichneten Boxen, Keypoints und Zählwerte.
verboseboolTrueAktiviert das Protokoll der Lösung pro Frame mit Eingabeform, Klassenanzahlen und Verarbeitungsgeschwindigkeit. Der Tracking-Aufruf selbst bleibt immer ohne Ausgabe.

Du kannst auch verschiedene Argumente von track in der Lösung DistanceCalculation verwenden.

ArgumentTypStandardwertBeschreibung
trackerstr'botsort.yaml'Gibt den zu verwendenden Tracking-Algorithmus an. 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 das Verfolgen weiterer Objekte, können aber Fehlalarme einschließen.
ioufloat0.7Legt den Schwellenwert für Intersection over Union (IoU) zum Filtern überlappender Erkennungen fest.
classeslistNoneFiltert Ergebnisse nach Klassenindex. Beispielsweise verfolgt classes=[0, 2, 3] nur die angegebenen Klassen.
devicestrNoneGibt das Gerät für die Inferenz an (z. B. cpu, cuda:0 oder 0). Ermöglicht die Auswahl zwischen CPU, einer bestimmten GPU oder anderen Rechengeräten für die Modellausführung.
imgszint or tuple640Ziel-Inferenzbildgröße: eine ganze Zahl für ein quadratisches Bild oder ein (height, width)-Paar. Die Formate werden an die Modellschrittweite angepasst.
max_detint300Maximale Anzahl pro Frame beibehaltener Detektionen vor dem Tracking, wodurch die Objekte begrenzt werden, die eine Solution in dichten Szenen verarbeitet.
quantizeint or strNoneInferenzpräzision: 16 (FP16) oder 32/nicht gesetzt (FP32) für PyTorch- und TorchScript-Modelle; andere Formate berechnen mit der Präzision, die ihr Artefakt und ihre Laufzeit auswählen. Ersetzt das veraltete half-Flag.

Darüber hinaus stehen die folgenden Argumente für die Visualisierung zur Verfügung:

ArgumentTypStandardwertBeschreibung
showboolFalseWenn True, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Dies ist nützlich für unmittelbares visuelles Feedback während der Entwicklung oder des Testens.
show_confboolTrueZeigt neben dem Label den Konfidenzwert für jede Erkennung an. Dadurch erhältst du Einblick in die Sicherheit des Modells bei jeder Erkennung.
show_labelsboolTrueZeigt Labels für jede Erkennung in der visuellen Ausgabe an. Dies ermöglicht ein unmittelbares Verständnis der erkannten Objekte.

Details zur Implementierung#

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

  1. Extrahiert die Mittelpunkte der ausgewählten Begrenzungsrahmen
  2. Berechnet den euklidischen Abstand zwischen diesen Mittelpunkten in Pixeln
  3. Zeigt die Entfernung zusammen mit einer Verbindungslinie zwischen den Objekten im Bild an

Die Implementierung verwendet die Methode mouse_event_for_distance, um Mausinteraktionen zu verarbeiten. Dadurch können Benutzer Objekte auswählen und Auswahlen bei Bedarf aufheben. Die Methode process verarbeitet die Bilder einzeln, verfolgt Objekte und berechnet Entfernungen.

Anwendungen#

Die Entfernungsberechnung mit YOLO26 hat zahlreiche praktische Anwendungen:

  • Einzelhandelsanalyse: Misst den Abstand von Kunden zu Produkten und analysiert die Wirksamkeit der Ladengestaltung
  • Arbeitssicherheit: Überwacht Sicherheitsabstände zwischen Mitarbeitenden und Maschinen
  • Verkehrsmanagement: Analysiert Fahrzeugabstände und erkennt zu dichtes Auffahren
  • Sportanalyse: Berechnet die Abstände zwischen Spielern, dem Ball und wichtigen Positionen auf dem Spielfeld
  • Gesundheitswesen: Stellt angemessene Abstände in Wartebereichen sicher und überwacht die Bewegungen von Patienten
  • Robotik: Ermöglicht es Robotern, angemessene Abstände zu Hindernissen und Personen einzuhalten

FAQ#

  • Um Entfernungen zwischen Objekten mit Ultralytics YOLO26 zu berechnen, musst du die Mittelpunkte der Begrenzungsrahmen der erkannten Objekte bestimmen. Dazu wird die Klasse DistanceCalculation aus dem Modul solutions von Ultralytics initialisiert und die Verfolgungsausgabe des Modells verwendet, um die Entfernungen zu berechnen.

  • Die Entfernungsberechnung 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 dadurch zu einem besseren kontextuellen Verständnis bei.
    • Szenenverständnis: Verbessert das Verständnis von 3D-Szenen und unterstützt dadurch bessere Entscheidungen in Anwendungen wie autonomem Fahren und Überwachung.
    • Echtzeitverarbeitung: Führt Berechnungen unmittelbar aus und eignet sich dadurch für die Analyse von Live-Videos.
    • Integrationsmöglichkeiten: Funktioniert nahtlos mit anderen YOLO26-Lösungen wie Objektverfolgung und Geschwindigkeitsschätzung.
  • Ja, du kannst mit Ultralytics YOLO26 Entfernungen in Echtzeit-Videostreams berechnen. Dazu werden Videobilder mit OpenCV erfasst, die Objekterkennung von YOLO26 ausgeführt und die Klasse DistanceCalculation verwendet, um Entfernungen zwischen Objekten in aufeinanderfolgenden Bildern zu berechnen. Eine ausführliche Implementierung findest du im Beispiel für Videostreams.

  • Um während der Entfernungsberechnung mit Ultralytics YOLO26 eingezeichnete Punkte zu löschen, kannst du mit der rechten Maustaste klicken. Dadurch werden alle von dir eingezeichneten Punkte gelöscht. Weitere Informationen findest du im Hinweisabschnitt unter dem Beispiel zur Entfernungsberechnung.

  • Zu den wichtigsten Argumenten für die Initialisierung der Klasse DistanceCalculation in Ultralytics YOLO26 gehören:

    • model: Pfad zur YOLO26-Modelldatei.
    • tracker: Zu verwendender Verfolgungsalgorithmus (Lösungen verwenden standardmäßig botsort.yaml).
    • conf: Konfidenzschwellenwert für Erkennungen.
    • show: Schalter zum Anzeigen der Ausgabe.

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

Kommentare