Abstandsberechnung mit Ultralytics YOLO26#
Was ist eine Abstandsberechnung?#
Die Distanzberechnung ist der Prozess der Messung des Raums zwischen zwei erkannten Objekten in einem Bild oder Videoframed. Im Fall von Ultralytics YOLO26 wird der Schwerpunkt des bounding box verwendet, um die Distanz für vom Benutzer hervorgehobene bounding box zu berechnen.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
Visualisierungen#
| Abstandsberechnung mit Ultralytics YOLO26 |
|---|
![]() |
Vorteile der Abstandsberechnung#
- Lokalisierungs-Präzision: Verbessert die genaue räumliche Positionierung bei computer vision-Aufgaben.
- 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 für eine bessere Entscheidungsfindung in Anwendungen wie autonomous vehicles und Überwachungssystemen.
- Kollisionsvermeidung: Ermöglicht Systemen, potenzielle Kollisionen durch Überwachung der Abstände zwischen sich bewegenden Objekten zu erkennen.
- Räumliche Analyse: Erleichtert die Analyse von Objektbeziehungen und Interaktionen innerhalb der überwachten Umgebung.
Abstandsberechnung
- Klicke mit der linken Maustaste auf zwei beliebige Begrenzungsrahmen, um den Abstand zu berechnen.
- Verwende die rechte Maustaste, um alle gezeichneten Punkte zu löschen.
- Klicke mit der linken Maustaste an eine beliebige Stelle im Frame, um neue Punkte hinzuzufügen.
Die Entfernung ist ein Schätzwert
Die Entfernung ist ein Schätzwert und möglicherweise nicht vollständig genau, da sie mithilfe von 2D-Daten berechnet wird, denen Tiefeninformationen fehlen.
Entfernungen mit YOLO26 berechnen#
Die DistanceCalculation-Lösung verfolgt Objekte über Frames hinweg und misst den euklidischen Abstand in Pixeln zwischen den Schwerpunkten von zwei beliebigen bounding box, die du mit der Maus auswählst. Führe das folgende Beispiel aus, klicke dann mit der linken Maustaste auf zwei Objekte, um die Verbindungslinie zu zeichnen und die Distanz abzulesen; klicke mit der rechten Maustaste, um deine Auswahl zu löschen.
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 windowsDistanceCalculation()-Argumente#
Hier ist eine Tabelle mit den DistanceCalculation-Argumenten:
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
model | str | None | Pfad zu einer Ultralytics YOLO-Modelldatei. |
line_width | int | 2 | Linienstärke für die Boxen, Keypoints und Zählungen, die die Lösung zeichnet. |
verbose | bool | True | Aktiviert das pro-Frame-Protokoll der Lösung für Eingabeform, Klassenzahlen und Verarbeitungsgeschwindigkeit. Der Tracking-Aufruf selbst verläuft immer im Hintergrund. |
Du kannst auch verschiedene track-Argumente in der DistanceCalculation-Lösung nutzen.
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Gibt den zu verwendenden Tracking-Algorithmus an. Integrierte Optionen: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Legt den Konfidenz-Schwellenwert für Detektionen fest; niedrigere Werte ermöglichen die Verfolgung von mehr Objekten, können aber zu falsch-positiven Ergebnissen führen. |
iou | float | 0.7 | Legt den Schwellenwert für die Intersection over Union (IoU) zum Filtern überlappender Detektionen fest. |
classes | list | None | Filtert Ergebnisse nach Klassenindex. Zum Beispiel verfolgt classes=[0, 2, 3] nur die angegebenen Klassen. |
device | str | None | Gibt das Gerät für die Inferenz an (z. B. cpu, cuda:0 oder 0). Ermöglicht Benutzern die Auswahl zwischen CPU, einer spezifischen GPU oder anderen Rechengeräten für die Modellausführung. |
Darüber hinaus sind die folgenden Visualisierungsargumente verfügbar:
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
show | bool | False | Falls True, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Nützlich für unmittelbares visuelles Feedback während der Entwicklung oder des Testens. |
show_conf | bool | True | Zeigt den Konfidenzwert für jede Erkennung neben dem Label an. Bietet Einblick in die Gewissheit des Modells für jede Erkennung. |
show_labels | bool | True | Zeigt Labels für jede Erkennung in der visuellen Ausgabe an. Ermöglicht ein sofortiges Verständnis der erkannten Objekte. |
Implementierungsdetails#
Die DistanceCalculation-Klasse funktioniert, indem sie Objekte über Video-Frames hinweg verfolgt und den euklidischen Abstand zwischen den Schwerpunkten ausgewählter bounding box berechnet. Wenn du auf zwei Objekte klickst, tut die Lösung Folgendes:
- Extrahiert die Schwerpunkte (Mittelpunkte) der ausgewählten Begrenzungsrahmen
- Berechnet den euklidischen Abstand zwischen diesen Schwerpunkten in Pixeln
- Zeigt den Abstand auf dem Frame mit einer Verbindungslinie zwischen den Objekten an
Die Implementierung verwendet die mouse_event_for_distance-Methode, um Mauseingaben zu verarbeiten, sodass Benutzer Objekte auswählen und Ausdrücke nach Bedarf löschen können. Die process-Methode übernimmt die Frame-für-Frame-Verarbeitung, die Verfolgung von Objekten und die Berechnung von Distanzen.
Anwendungen#
Die Abstandsberechnung mit YOLO26 hat zahlreiche praktische Anwendungen:
- Einzelhandelsanalyse: Miss die Kundennähe zu Produkten und analysiere die Effektivität des Ladenlayouts
- Industrielle Sicherheit: Überwache Sicherheitsabstände zwischen Arbeitern und Maschinen
- Verkehrsmanagement: Analysiere Fahrzeugabstände und erkenne dichtes Auffahren
- Sportanalyse: Berechne Abstände zwischen Spielern, dem Ball und wichtigen Spielfeldpositionen
- Gesundheitswesen: Stelle die Einhaltung angemessener Abstände in Wartebereichen sicher und überwache Patientenbewegungen
- Robotik: Ermögliche Robotern, angemessene Abstände zu Hindernissen und Personen einzuhalten
FAQ#
Um Distanzen zwischen Objekten mit Ultralytics YOLO26 zu berechnen, musst du die Schwerpunkte der bounding box der erkannten Objekte identifizieren. Dieser Prozess beinhaltet das Initialisieren der
DistanceCalculation-Klasse aus demsolutions-Modul von Ultralytics und die Verwendung der Tracking-Ausgaben des Modells, um die Distanzen zu berechnen.Die Verwendung der Abstandsberechnung mit Ultralytics YOLO26 bietet mehrere Vorteile:
- Lokalisierungspräzision: Bietet eine genaue räumliche Positionierung für Objekte.
- Größenschätzung: Hilft bei der Schätzung physischer Größen und trägt zu einem besseren kontextuellen Verständnis bei.
- Szenenverständnis: Verbessert das 3D-Szenenverständnis und unterstützt eine verbesserte Entscheidungsfindung in Anwendungen wie autonomem Fahren und Überwachung.
- Echtzeitverarbeitung: Führt Berechnungen sofort durch, wodurch sie für die Live-Videoanalyse geeignet ist.
- Integrationsfunktionen: Funktioniert nahtlos mit anderen YOLO26-Lösungen wie object tracking und speed estimation.
Ja, du kannst Distanzberechnungen in Echtzeit-Videostreams mit Ultralytics YOLO26 durchführen. Der Prozess umfasst das Erfassen von Videoframes mit OpenCV, das Ausführen der YOLO26-object detection und die Verwendung der
DistanceCalculation-Klasse zur Berechnung von Distanzen zwischen Objekten in aufeinanderfolgenden Frames. Eine detaillierte Implementierung findest du im video stream example.Um Punkte zu löschen, die während der Distanzberechnung mit Ultralytics YOLO26 gezeichnet wurden, kannst du einen Rechtsklick der Maus verwenden. Diese Aktion löscht alle von dir gezeichneten Punkte. Weitere Details findest du im Hinweisabschnitt unter dem distance calculation example.
Die wichtigsten Argumente für die Initialisierung der
DistanceCalculation-Klasse in Ultralytics YOLO26 umfassen:model: Pfad zur YOLO26-Modelldatei.tracker: Zu verwendender Tracking-Algorithmus (Solutions verwenden standardmäßigbotsort.yaml).conf: Konfidenz-Schwellenwert für Erkennungen.show: Flag, um die Ausgabe anzuzeigen.
Eine vollständige Liste und Standardwerte findest du unter den arguments of DistanceCalculation.
