Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Licenza YOLO
Torna al glossario di Ultralytics

Kalman Filter (KF)

Un filtro di Kalman stima uno stato variabile, come la posizione e la velocità di un oggetto, combinando le previsioni del modello con misurazioni rumorose. Matematica e codice.

Un filtro di Kalman (KF) è un algoritmo ricorsivo che stima lo stato nascosto di un sistema in evoluzione, per esempio la posizione e la velocità di un oggetto, a partire da una sequenza di misurazioni rumorose. A ogni istante temporale prevede lo stato successivo usando un modello del movimento del sistema, quindi corregge la previsione con la nuova misurazione, ponderando ciascuna in base al rispettivo grado di incertezza. Rudolf E. Kálmán pubblicò il metodo nel 1960; per i sistemi lineari con rumore gaussiano, il metodo fornisce la stima con l'errore quadratico medio minimo. È usato nei ricevitori GPS, nella navigazione di aeromobili e veicoli spaziali, nella localizzazione dei robot e in quasi tutti i tracker multi-oggetto nella visione artificiale, dove attenua le rilevazioni instabili e prevede dove apparirà ogni oggetto.

Come funziona il filtro di Kalman#

Il filtro mantiene due quantità: una stima dello stato x, per esempio posizione e velocità, e una matrice di covarianza P che descrive il grado di incertezza della stima. Ogni ciclo prevede due passaggi:

  1. Previsione: un modello di movimento F proietta lo stato in avanti, x = F x, e l'incertezza aumenta in base al rumore di processo Q, che tiene conto dei movimenti non rappresentati dal modello: P = F P Fᵀ + Q.
  2. Aggiornamento: arriva una nuova misurazione z, collegata allo stato dal modello di misurazione H. Il filtro calcola il residuo z − H x e il guadagno di Kalman K = P Hᵀ (H P Hᵀ + R)⁻¹, dove R è il rumore di misurazione. Lo stato corretto è x + K (z − H x) e l'incertezza si riduce a (I − K H) P.

Il guadagno di Kalman determina il compromesso tra modello e sensore. Quando le misurazioni sono precise rispetto alla previsione, il guadagno si avvicina a 1 e la stima segue la misurazione; quando sono rumorose, il guadagno si avvicina a 0 e la stima segue la previsione. Poiché lo stato può includere quantità mai misurate direttamente, il filtro le deduce comunque: un tracker che osserva solo le posizioni stima anche la velocità. Quando manca una misurazione, il filtro salta l'aggiornamento e prosegue usando la previsione:

Filtri di Kalman nel tracciamento degli oggetti#

Nel tracciamento degli oggetti, ogni traccia ha il proprio filtro di Kalman. Lo stato contiene il centro e le dimensioni del riquadro di delimitazione, oltre alle rispettive velocità, e un modello a velocità costante prevede dove si troverà il riquadro nel fotogramma successivo. Queste previsioni vengono abbinate alle nuove rilevazioni tramite l'intersezione sull'unione (IoU) e ogni rilevazione abbinata diventa la misurazione che aggiorna la traccia. Quando un oggetto è nascosto per alcuni fotogrammi, la traccia continua lungo il percorso previsto, così la rilevazione che ricompare si trova abbastanza vicino alla previsione da mantenere il vecchio ID.

Ogni tracker nella modalità track di Ultralytics YOLO funziona così: KalmanFilterXYAH di ByteTrack traccia uno stato a 8 dimensioni composto dal centro del riquadro, dal rapporto d'aspetto, dall'altezza e dalle rispettive velocità; BoT-SORT e TrackTrack usano una variante basata su larghezza e altezza. Entrambi scalano il rumore in base alle dimensioni del riquadro, così gli oggetti grandi e vicini tollerano salti maggiori in pixel. Gli stessi passaggi di previsione e aggiornamento si possono implementare in poche righe di NumPy per una coordinata del centro del riquadro:

import numpy as np

F = np.array([[1.0, 1.0], [0.0, 1.0]])  # constant-velocity model, state = [position, velocity]
H = np.array([[1.0, 0.0]])  # the detector measures position only
Q = 0.001 * np.eye(2)  # process noise: how far real motion may stray from the model
R = np.array([[25.0]])  # measurement noise: detections jitter by about 5 px

rng = np.random.default_rng(0)
truth = 100 + 3.0 * np.arange(60)  # box center moving 3 px per frame
z = truth + rng.normal(0, 5.0, truth.size)  # noisy detections

x, P = np.array([z[0], 0.0]), np.diag([25.0, 100.0])  # start from the first detection
estimates = [x[0]]
for measurement in z[1:]:
    x, P = F @ x, F @ P @ F.T + Q  # predict
    K = P @ H.T @ np.linalg.inv(H @ P @ H.T + R)  # Kalman gain
    x = x + K @ (measurement - H @ x)  # update with the weighted residual
    P = (np.eye(2) - K @ H) @ P
    estimates.append(x[0])

print(f"Detection error: {np.sqrt(np.mean((z - truth) ** 2)):.2f} px")
print(f"Kalman error: {np.sqrt(np.mean((np.array(estimates) - truth) ** 2)):.2f} px")
print(f"Estimated velocity: {x[1]:.2f} px/frame")

Restituisce un errore quadratico medio di 4.50 px per le rilevazioni grezze e di 2.48 px per le stime filtrate, oltre a una velocità stimata di 2.98 px per fotogramma, vicina al valore reale di 3 px, benché la velocità non sia mai stata misurata.

Il filtro di Kalman standard presuppone modelli lineari di movimento e misurazione con rumore gaussiano. Le varianti rilassano queste ipotesi:

  • Filtro di Kalman esteso (EKF): linearizza i modelli non lineari attorno alla stima corrente usando le matrici jacobiane a ogni passaggio; è la scelta standard per il GPS e la navigazione inerziale.
  • Filtro di Kalman unscented (UKF): fa passare un piccolo insieme di punti campione scelti con attenzione attraverso il modello non lineare. In genere è più accurato della linearizzazione e non richiede derivate.
  • Filtro particellare: rappresenta la distribuzione dello stato con molti campioni casuali ponderati, così gestisce distribuzioni non gaussiane e multimodali, come nel caso di un robot incerto su quale di due corridoi stia percorrendo, ma con un costo computazionale molto maggiore.
  • Modello di Markov nascosto (HMM): usa la stessa ricorsione di previsione e aggiornamento per gli stati discreti; il filtro di Kalman ne è l'equivalente per gli stati continui lineari gaussiani.

Applicazioni oltre il tracciamento#

  • Robotica e fusione dei sensori: i robot combinano odometria delle ruote, IMU, lidar e telecamere in un'unica stima della posa. I metodi basati sull'EKF sono un approccio classico alla localizzazione e mappatura simultanee.
  • Realtà aumentata: i visori filtrano le misurazioni della posa della testa per mantenere stabili gli oggetti virtuali con bassa latenza.
  • Economia ed elaborazione dei segnali: gli analisti usano il filtraggio di Kalman per stimare tendenze non osservate a partire da serie temporali rumorose.
  • Navigazione: aeromobili, navi, droni e telefoni combinano il GPS con i sensori inerziali per mantenere stabile la posizione tra una correzione satellitare e l'altra. La navigazione fu anche la prima applicazione importante del filtro: nei primi anni Sessanta, Stanley F. Schmidt della NASA Ames lo adattò alla stima di traiettorie non lineari per il computer di navigazione Apollo.

Esplora le soluzioni

La visione artificiale nello sport

La visione artificiale nello sport

Scopri come Ultralytics YOLO alimenta la computer vision nello sport con il tracciamento di giocatori e palloni, l'analisi delle prestazioni, gli approfondimenti per gli allenatori e la riabilitazione degli atleti.
Scopri di più
Computer vision per immagini aeree

Computer vision per immagini aeree

Trasforma immagini aeree e riprese da drone in informazioni utili in tempo reale per agricoltura, acquacoltura, conservazione e analisi geospaziale con Ultralytics YOLO.
Scopri di più
Computer vision nel settore aerospaziale

Computer vision nel settore aerospaziale

Applica la visione artificiale nel settore aerospaziale con Ultralytics YOLO per l'ispezione degli aeromobili, il rilevamento di FOD sulle piste, le operazioni di terra aeroportuali e il rilevamento di difetti nei materiali compositi.
Scopri di più
Visione artificiale nella sicurezza

Visione artificiale nella sicurezza

Proteggi ogni sito con i modelli Ultralytics YOLO. L'IA visiva alimenta il monitoraggio perimetrale, il rilevamento delle minacce, il riconoscimento delle targhe e la sicurezza sul lavoro.
Scopri di più
Visione artificiale nella robotica

Visione artificiale nella robotica

Dai più potenza alle macchine intelligenti con i modelli Ultralytics YOLO. Nell'ambito della robotica, l'IA visiva alimenta la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.
Scopri di più
Visione artificiale nella logistica

Visione artificiale nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. L'IA per la visione consente l'ispezione dei pacchi, la selezione, il tracciamento dei veicoli e il monitoraggio della sicurezza nei magazzini in tempo reale.
Scopri di più
Visione artificiale nel commercio al dettaglio

Visione artificiale nel commercio al dettaglio

Ripensa il commercio al dettaglio con i modelli Ultralytics YOLO. L'IA per la visione consente di tracciare le scorte, monitorare gli scaffali, gestire le code e ottenere informazioni più approfondite sui clienti.
Scopri di più
Visione artificiale in ambito sanitario

Visione artificiale in ambito sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. In ambito sanitario, l'IA per la visione consente di elaborare più rapidamente le immagini mediche, migliorare la diagnostica e monitorare i pazienti.
Scopri di più
Computer vision nella produzione

Computer vision nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La visione basata sull'IA migliora il controllo qualità, il rilevamento dei difetti, la conformità ai requisiti sui DPI e l'automazione delle linee di assemblaggio.
Scopri di più
Computer vision nel settore automobilistico

Computer vision nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La visione basata sull'IA migliora la sicurezza stradale, i sistemi di assistenza alla guida e l'automazione dei veicoli, per strade più intelligenti.
Scopri di più
Visione artificiale in agricoltura

Visione artificiale in agricoltura

Porta l'IA visiva nell'agricoltura intelligente con i modelli Ultralytics YOLO. Gestisci il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per ottenere raccolti più abbondanti e intelligenti.
Scopri di più

Costruiamo insieme il futuro dell'IA!

Inizia il tuo percorso verso il futuro del machine learning