Learn how the Extended Kalman Filter (EKF) handles non-linear systems for accurate object tracking and sensor fusion. Enhance your [YOLO26](https://docs.ultralytics.com/models/yolo26/) projects on the [Ultralytics Platform](https://platform.ultralytics.com).
Der Extended Kalman Filter (EKF) ist ein robuster mathematischer Algorithmus, der entwickelt wurde, um den Zustand eines dynamischen Systems zu schätzen, das sich nichtlinear verhält. Während der Standard- Kalman-Filter (KF) eine optimale Lösung für Systeme bietet, die sich in geraden Linien bewegen oder einfachen linearen Gleichungen folgen, ist die Physik in der realen Welt selten so vorhersehbar. Die meisten physikalischen Objekte, wie beispielsweise eine Drohne, die gegen den Luftwiderstand ankämpft, oder ein Roboterarm, der sich um mehrere Achsen dreht, folgen gekrümmten oder komplexen Bahnen. Der EKF begegnet dieser Komplexität, indem er eine lineare Annäherung des Systems zu einem bestimmten Zeitpunkt erstellt, sodass Ingenieure und Datenwissenschaftler effiziente Filtertechniken für vorausschauende Modellierungsaufgaben anwenden können, selbst wenn die zugrunde liegende Mechanik kompliziert ist.
Um komplexe Dynamiken zu verarbeiten, verwendet der EKF einen mathematischen Prozess namens Linearisierung, der im Wesentlichen die Steigung einer Funktion am aktuellen Betriebspunkt schätzt. Dazu muss häufig eine Jacobimatrix berechnet werden, um zu approximieren, wie sich das System über kurze Intervalle verändert. Der Algorithmus arbeitet in einer rekursiven Schleife, die aus zwei Hauptphasen besteht: Vorhersage und Aktualisierung. In der Vorhersagephase projiziert der Filter den aktuellen Zustand mithilfe eines physikalischen Bewegungsmodells vorwärts. In der Aktualisierungsphase korrigiert er diese Projektion anhand neuer, oft verrauschter Daten von Sensoren wie Gyroskopen oder Beschleunigungsmessern. Dieser kontinuierliche Zyklus aus Vorhersage und Korrektur trägt dazu bei, Datenrauschen zu reduzieren und liefert eine glattere, genauere Schätzung des tatsächlichen Zustands, als es ein einzelner Sensor allein leisten könnte.
Im Bereich der Computervision (CV) spielt der erweiterte Kalman-Filter eine entscheidende Rolle bei der Aufrechterhaltung der Identität sich bewegender Objekte. Fortschrittliche Modelle wie YOLO26 sind hervorragend darin, Objekte in einzelnen Bildern zu erkennen, aber sie verstehen von Natur aus nicht die Bewegungskontinuität über einen längeren Zeitraum. Durch die Integration eines EKF oder einer ähnlichen Logik kann ein Objektverfolgungssystem vorhersagen, wo ein Begrenzungsrahmen im nächsten Videobild erscheinen sollte, basierend auf seiner vorherigen Geschwindigkeit und Flugbahn. Dies ist besonders nützlich für den Umgang mit Verdeckungen, bei denen ein Objekt vorübergehend nicht sichtbar ist. Der Filter hält dietrack aufrecht, indem er die Position des Objekts schätzt, bis es wieder sichtbar ist – eine Technik, die für eine robuste Multi-Objekt-Verfolgung (MOT) unerlässlich ist.
Die Vielseitigkeit des EKF macht ihn zu einer Schlüsseltechnologie in verschiedenen Hightech-Branchen, in denen maschinelles Lernen (ML) mit physischer Hardware zusammentrifft:
Es ist hilfreich, den erweiterten Kalman-Filter von verwandten Filtermethoden zu unterscheiden, um seine spezifische Nützlichkeit zu verstehen:
In der ultralytics Paket verwenden Tracking-Algorithmen intern Kalman-Filterkonzepte, um
Trajektorien zu glätten und Erkennungen über Frames hinweg zuzuordnen. Auch wenn Sie die EKF-Matrix-Mathematik bei der Verwendung von
High-Level-Tools nicht manuell programmieren, hilft das Verständnis, dass sie den Tracker antreibt, bei der Konfiguration der Parameter für die
Ultralytics.
So initiieren Sie einen Tracker mit einem YOLO , das diese Filtertechniken für die Zustandsschätzung nutzt:
from ultralytics import YOLO
# Load the latest YOLO26 model (nano version for speed)
model = YOLO("yolo26n.pt")
# Track objects in a video source
# Trackers like BoT-SORT or ByteTrack use Kalman filtering logic internally
results = model.track(source="https://ultralytics.com/images/bus.jpg", tracker="botsort.yaml")
# Print the ID of the tracked objects
for r in results:
if r.boxes.id is not None:
print(f"Track IDs: {r.boxes.id.numpy()}")