Abstandsberechnung mit Ultralytics YOLO26
Was ist eine Abstandsberechnung?
Das Messen der Lücke zwischen zwei Objekten wird in einem festgelegten Raum als Abstandsberechnung bezeichnet. Im Fall von Ultralytics YOLO26 wird der Schwerpunkt der begrenzenden Box verwendet, um den Abstand für vom Benutzer markierte begrenzende Boxen 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 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 der 3D-Szene für eine bessere Entscheidungsfindung in Anwendungen wie autonomen Fahrzeugen und Überwachungssystemen.
- Kollisionsvermeidung: Ermöglicht Systemen das Erkennen potenzieller Kollisionen durch Überwachung der Abstände zwischen sich bewegenden Objekten.
- Räumliche Analyse: Erleichtert die Analyse von Objektbeziehungen und Interaktionen innerhalb der überwachten Umgebung.
Abstandsberechnung
- Klicke mit der linken Maustaste auf zwei beliebige begrenzende Boxen, 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.
Abstand ist ein Schätzwert
Der Abstand ist ein Schätzwert und möglicherweise nicht völlig genau, da er anhand von 2D-Daten berechnet wird, denen Tiefeninformationen fehlen.
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. |
Du kannst auch verschiedene track Argumente in der DistanceCalculation Lösung nutzen.
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Legt den zu verwendenden Tracking-Algorithmus fest, z. B. bytetrack.yaml oder botsort.yaml. |
conf | float | 0.1 | 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 Intersection over Union (IoU) Schwellenwert zum Filtern überlappender Detektionen fest. |
classes | list | None | Filtert Ergebnisse nach Klassen-Index. Beispiel: classes=[0, 2, 3] verfolgt nur die angegebenen Klassen. |
verbose | bool | True | Steuert die Anzeige der Tracking-Ergebnisse und liefert eine visuelle Ausgabe der verfolgten Objekte. |
device | str | None | Spezifiziert das Gerät für die Inferenz (z. B. cpu, cuda:0 oder 0). Ermöglicht die Wahl zwischen CPU, einer spezifischen GPU oder anderen Recheneinheiten zur Modellausführung. |
Darüber hinaus stehen die folgenden Visualisierungsargumente zur Verfügung:
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
show | bool | False | Wenn True, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Nützlich für direktes visuelles Feedback während der Entwicklung oder beim Testen. |
line_width | int or None | None | Gibt die Linienbreite der Bounding-Boxen an. Wenn None, wird die Linienbreite automatisch basierend auf der Bildgröße angepasst. Bietet visuelle Anpassung für mehr Klarheit. |
show_conf | bool | True | Zeigt den Konfidenzwert für jede Erkennung neben dem Label an. Gibt Aufschluss über die Sicherheit des Modells bei jeder Erkennung. |
show_labels | bool | True | Zeigt Labels für jede Erkennung in der visuellen Ausgabe an. Bietet unmittelbares Verständnis der erkannten Objekte. |
Details zur Implementierung
Die DistanceCalculation Klasse arbeitet, indem sie Objekte über Video-Frames hinweg verfolgt und den euklidischen Abstand zwischen den Schwerpunkten ausgewählter begrenzender Boxen berechnet. Wenn du auf zwei Objekte klickst, macht die Lösung Folgendes:
- Extrahiert die Schwerpunkte (Mittelpunkte) der ausgewählten begrenzenden Boxen
- Berechnet den euklidischen Abstand zwischen diesen Schwerpunkten in Pixeln
- Zeigt den Abstand im Frame mit einer Verbindungslinie zwischen den Objekten an
Die Implementierung verwendet die Methode mouse_event_for_distance, um Mausinteraktionen zu handhaben, wodurch Benutzer Objekte auswählen und die Auswahl bei Bedarf löschen können. Die process Methode übernimmt die bildweise Verarbeitung, die Verfolgung von Objekten und die Berechnung der Abstände.
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 Positionen auf dem Spielfeld
- Gesundheitswesen: Stelle sicher, dass in Wartebereichen korrekte Abstände eingehalten werden und überwache Patientenbewegungen
- Robotik: Ermögliche Robotern, angemessene Abstände zu Hindernissen und Menschen einzuhalten
FAQ
Wie berechne ich Abstände zwischen Objekten mit Ultralytics YOLO26?
Um Abstände zwischen Objekten mit Ultralytics YOLO26 zu berechnen, musst du die Schwerpunkte der begrenzenden Boxen der erkannten Objekte identifizieren. Dieser Prozess umfasst das Initialisieren der DistanceCalculation Klasse aus dem solutions Modul von Ultralytics und die Verwendung der Tracking-Ausgaben des Modells zur Berechnung der Abstände.
Was sind die Vorteile der Verwendung der Abstandsberechnung mit Ultralytics YOLO26?
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, was zu einem besseren kontextuellen Verständnis beiträgt.
- Szenenverständnis: Verbessert das Verständnis der 3D-Szene und hilft bei einer verbesserten Entscheidungsfindung in Anwendungen wie autonomem Fahren und Überwachung.
- Echtzeitverarbeitung: Führt Berechnungen direkt durch, wodurch sie für die Live-Videoanalyse geeignet ist.
- Integrationsfähigkeiten: Arbeitet nahtlos mit anderen YOLO26 Lösungen zusammen, wie Objektverfolgung und Geschwindigkeitsschätzung.
Kann ich eine Abstandsberechnung in Echtzeit-Videostreams mit Ultralytics YOLO26 durchführen?
Ja, du kannst die Abstandsberechnung in Echtzeit-Videostreams mit Ultralytics YOLO26 durchführen. Der Prozess umfasst das Erfassen von Video-Frames mit OpenCV, das Ausführen der YOLO26 Objekterkennung und die Verwendung der DistanceCalculation Klasse, um Abstände zwischen Objekten in aufeinanderfolgenden Frames zu berechnen. Für eine detaillierte Implementierung siehe das Video-Stream-Beispiel.
Wie lösche ich Punkte, die während der Abstandsberechnung mit Ultralytics YOLO26 gezeichnet wurden?
Um Punkte zu löschen, die während der Abstandsberechnung mit Ultralytics YOLO26 gezeichnet wurden, kannst du einen Rechtsklick mit der Maus verwenden. Diese Aktion löscht alle Punkte, die du gezeichnet hast. Weitere Details findest du im Hinweis-Abschnitt unter dem Beispiel zur Abstandsberechnung.
Was sind die wichtigsten Argumente für die Initialisierung der DistanceCalculation Klasse in Ultralytics YOLO26?
Zu den wichtigsten Argumenten für die Initialisierung der DistanceCalculation Klasse in Ultralytics YOLO26 gehören:
model: Pfad zur YOLO26 Modelldatei.tracker: Der zu verwendende Tracking-Algorithmus (Standard ist 'botsort.yaml').conf: Konfidenz-Schwellenwert für Erkennungen.show: Flag zur Anzeige der Ausgabe.
Für eine vollständige Liste und Standardwerte siehe die Argumente von DistanceCalculation.
