Esplora il filtro di Kalman esteso (EKF) per la stima dello stato non lineare. Scopri come migliora il tracciamento degli oggetti in Ultralytics e nei sistemi autonomi.
Il filtro di Kalman esteso (EKF) è un algoritmo matematico robusto progettato per stimare lo stato di un sistema dinamico che si comporta in modo non lineare. Mentre il filtro di Kalman standard (KF) fornisce una soluzione ottimale per i sistemi che si muovono in linea retta o seguono semplici equazioni lineari, la fisica del mondo reale raramente è così prevedibile. La maggior parte degli oggetti fisici, come un drone che combatte la resistenza del vento o un braccio robotico che ruota su più assi, segue percorsi curvi o complessi. L'EKF affronta questa complessità creando un'approssimazione lineare del sistema in un punto specifico nel tempo, consentendo agli ingegneri e ai data scientist di applicare tecniche di filtraggio efficienti alle attività di modellazione predittiva anche quando la meccanica sottostante è complicata.
Per gestire dinamiche complesse, l'EKF impiega un processo matematico chiamato linearizzazione, che essenzialmente stima la pendenza di una funzione nel punto operativo corrente. Ciò spesso comporta il calcolo di una matrice jacobiana per approssimare il modo in cui il sistema cambia in brevi intervalli. L'algoritmo opera in un ciclo ricorsivo composto da due fasi principali: previsione e aggiornamento. Nella fase di previsione, il filtro proietta lo stato corrente in avanti utilizzando un modello fisico di movimento. Nella fase di aggiornamento, corregge questa proiezione utilizzando nuovi dati, spesso rumorosi, provenienti da sensori come giroscopi o accelerometri. Questo ciclo continuo di previsione e correzione aiuta a ridurre il rumore dei dati e fornisce una stima più fluida e accurata dello stato reale rispetto a quella che potrebbe fornire un singolo sensore da solo.
Nel campo della visione artificiale (CV), il filtro di Kalman esteso svolge un ruolo fondamentale nel mantenere l'identità degli oggetti in movimento. Modelli avanzati come YOLO26 sono eccezionali nel rilevare oggetti in singoli fotogrammi, ma non comprendono intrinsecamente la continuità del movimento nel tempo. Integrando un EKF o una logica simile, un sistema di tracciamento degli oggetti può prevedere dove dovrebbe apparire un riquadro di delimitazione nel fotogramma video successivo in base alla sua velocità e traiettoria precedenti. Ciò è particolarmente utile per gestire le occlusioni, in cui un oggetto è temporaneamente nascosto alla vista; il filtro mantiene attiva la "track" stimando la posizione dell'oggetto fino a quando non è nuovamente visibile, una tecnica essenziale per un robusto tracciamento multi-oggetto (MOT).
La versatilità dell'EKF lo rende una tecnologia fondamentale in vari settori high-tech in cui l'apprendimento automatico (ML) si interseca con l'hardware fisico .
È utile distinguere il filtro di Kalman esteso dai metodi di filtraggio correlati per comprenderne l'utilità specifica :
Nel ultralytics pacchetto, gli algoritmi di tracciamento utilizzano internamente i concetti di filtraggio di Kalman per uniformare le
traiettorie e associare i rilevamenti tra i fotogrammi. Sebbene non sia necessario codificare manualmente la matrice matematica EKF quando si utilizzano
strumenti di alto livello, comprendere che essa alimenta il tracciatore aiuta a configurare i parametri per il
Piattaforma Ultralytics.
Ecco come avviare un tracker con un YOLO , che utilizza queste tecniche di filtraggio per la stima dello stato:
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()}")