Extended Kalman Filter (EKF)
Explore le filtre de Kalman étendu (EKF) pour l'estimation d'état non linéaire. Apprends comment il améliore le suivi d'objets dans Ultralytics YOLO26 et les systèmes autonomes.
Le Filtre de Kalman étendu (EKF) est un algorithme mathématique robuste conçu pour estimer l'état d'un système dynamique se comportant de manière non linéaire. Alors que le Filtre de Kalman (KF) standard fournit une solution optimale pour les systèmes se déplaçant en ligne droite ou suivant des équations linéaires simples, la physique du monde réel est rarement aussi prévisible. La plupart des objets physiques, comme un drone luttant contre la résistance du vent ou un bras robotique tournant sur plusieurs axes, suivent des trajectoires courbes ou complexes. L'EKF répond à cette complexité en créant une approximation linéaire du système à un moment précis, permettant aux ingénieurs et aux scientifiques des données d'appliquer des techniques de filtrage efficaces aux tâches de modélisation prédictive, même lorsque les mécanismes sous-jacents sont compliqués.
Link to this sectionMécanisme et linéarisation#
Pour gérer la dynamique complexe, l'EKF utilise un processus mathématique appelé linéarisation, qui estime essentiellement la pente d'une fonction au point de fonctionnement actuel. Cela implique souvent le calcul d'une matrice jacobienne pour approximer la manière dont le système change sur de courts intervalles. L'algorithme fonctionne dans une boucle récursive composée de deux phases principales : la prédiction et la mise à jour. Dans la phase de prédiction, le filtre projette l'état actuel en avant à l'aide d'un modèle physique de mouvement. Dans la phase de mise à jour, il corrige cette projection en utilisant de nouvelles données, souvent bruitées, provenant de capteurs comme des gyroscopes ou des accéléromètres. Ce cycle continu de prédiction et de correction aide à réduire le bruit des données et fournit une estimation plus fluide et plus précise de l'état réel que ce qu'un seul capteur pourrait fournir seul.
Link to this sectionPertinence en vision par ordinateur#
Dans le domaine de la vision par ordinateur (CV), le Filtre de Kalman étendu joue un rôle essentiel dans le maintien de l'identité des objets en mouvement. Des modèles avancés comme YOLO26 sont exceptionnels pour détecter des objets dans des images isolées, mais ils ne comprennent pas intrinsèquement la continuité du mouvement dans le temps. En intégrant un EKF ou une logique similaire, un système de suivi d'objets peut prédire où une bounding box devrait apparaître dans la prochaine image vidéo en fonction de sa vitesse et de sa trajectoire précédentes. Ceci est particulièrement utile pour gérer les occlusions, où un objet est temporairement masqué ; le filtre maintient le « suivi » actif en estimant la position de l'objet jusqu'à ce qu'il soit à nouveau visible, une technique essentielle pour un suivi multi-objets (MOT) robuste.
Link to this sectionApplications concrètes#
La polyvalence de l'EKF en fait une technologie de référence dans diverses industries de haute technologie où l'apprentissage automatique (ML) croise le matériel physique :
- Véhicules autonomes : Les voitures autonomes s'appuient sur la fusion de capteurs pour naviguer en toute sécurité. Un EKF fusionne des flux de données distincts provenant de systèmes de positionnement global (GPS), de LiDAR et de radar pour calculer la position et l'orientation précises du véhicule sur la route, en compensant les pertes de signal ou le bruit environnemental.
- Robotique : Les robots opérant dans des environnements non structurés utilisent des algorithmes de SLAM (Simultaneous Localization and Mapping). L'EKF aide un robot à construire une carte d'une pièce tout en déterminant simultanément sa propre position au sein de cette carte, en corrigeant le glissement des roues ou la dérive des capteurs pour garantir un mouvement précis.
- Estimation de pose : Dans des applications telles que la réalité virtuelle ou l'analyse sportive, le suivi des articulations humaines nécessite de lisser les points clés instables. Les algorithmes EKF affinent la sortie des modèles d'apprentissage profond pour créer des animations de mouvement fluides et naturelles pour les systèmes de reconnaissance d'actions.
Link to this sectionComparaison avec des concepts associés#
Il est utile de distinguer le Filtre de Kalman étendu des méthodes de filtrage apparentées pour comprendre son utilité spécifique :
- EKF vs Filtre de Kalman (KF) : Le KF standard est mathématiquement optimal et moins coûteux en calcul, mais il échoue lorsque les systèmes sont hautement non linéaires. L'EKF étend le KF pour travailler avec des systèmes non linéaires via l'approximation.
- EKF vs Filtre particulaire : Un filtre particulaire gère très bien la non-linéarité et le bruit non gaussien en utilisant de nombreux échantillons aléatoires (particules) pour représenter la probabilité. Cependant, il nécessite une puissance de calcul nettement plus importante, ce qui fait de l'EKF un choix privilégié pour les systèmes embarqués aux ressources limitées.
- EKF vs Filtre de Kalman sans parfum (UKF) : Le Filtre de Kalman sans parfum offre un juste milieu, en utilisant des points d'échantillonnage déterministes pour gérer la non-linéarité sans le calcul complexe requis par l'EKF, bien que l'EKF reste une norme industrielle pour de nombreux systèmes de contrôle.
Link to this sectionExemple d'implémentation#
Dans le package ultralytics, les algorithmes de suivi utilisent des concepts de filtrage de Kalman en interne pour lisser les trajectoires et associer les détections entre les images. Bien que tu ne codes pas manuellement les calculs matriciels de l'EKF lors de l'utilisation d'outils de haut niveau, comprendre qu'il alimente le tracker t'aide à configurer les paramètres pour la Plateforme Ultralytics.
Voici comment initialiser un tracker avec un modèle YOLO, qui utilise ces techniques de filtrage pour l'estimation d'état :
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()}")





