Ultralytics YOLO27: Únete a la lista de espera.
Licencia YOLO
Volver al glosario de Ultralytics

Kalman Filter (KF)

Un filtro de Kalman estima un estado cambiante, como la posición y la velocidad de un objeto, combinando predicciones del modelo con mediciones ruidosas. Matemáticas y código.

Un filtro de Kalman (KF) es un algoritmo recursivo que estima el estado oculto de un sistema cambiante, como la posición y la velocidad de un objeto, a partir de un flujo de mediciones ruidosas. En cada paso temporal, predice el estado siguiente a partir de un modelo del movimiento del sistema y después corrige esa predicción con la nueva medición, ponderando cada una según su incertidumbre. Rudolf E. Kálmán publicó el método en 1960 y, para sistemas lineales con ruido gaussiano, proporciona la estimación de error cuadrático medio mínimo. Se utiliza en receptores GPS, navegación de aeronaves y naves espaciales, localización de robots y casi todos los rastreadores de múltiples objetos en visión artificial, donde suaviza las detecciones inestables y predice dónde aparecerá cada objeto a continuación.

Cómo funciona el filtro de Kalman#

El filtro mantiene dos cantidades: una estimación del estado x, por ejemplo, la posición y la velocidad, y una matriz de covarianza P que describe la incertidumbre de esa estimación. Cada ciclo consta de dos pasos:

  1. Predicción: Un modelo de movimiento F proyecta el estado hacia delante, x = F x, y la incertidumbre aumenta debido al ruido del proceso Q, que recoge el movimiento que el modelo no contempla: P = F P Fᵀ + Q.
  2. Actualización: Llega una nueva medición z, relacionada con el estado mediante el modelo de medición H. El filtro calcula el residuo z − H x y la ganancia de Kalman K = P Hᵀ (H P Hᵀ + R)⁻¹, donde R es el ruido de medición. El estado corregido es x + K (z − H x), y la incertidumbre se reduce a (I − K H) P.

La ganancia de Kalman determina el equilibrio entre el modelo y el sensor. Cuando las mediciones son precisas en relación con la predicción, la ganancia se aproxima a 1 y la estimación sigue la medición; cuando son ruidosas, la ganancia se aproxima a 0 y la estimación sigue la predicción. Como el estado puede incluir cantidades que nunca se miden directamente, el filtro también las infiere: un rastreador que solo observa posiciones sigue estimando la velocidad. Cuando falta una medición, el filtro omite la actualización y continúa con su predicción:

Filtros de Kalman en el seguimiento de objetos#

En el seguimiento de objetos, cada trayectoria tiene su propio filtro de Kalman. El estado contiene el centro y el tamaño de la caja delimitadora, además de sus velocidades, y un modelo de velocidad constante predice dónde estará la caja en el siguiente fotograma. Esas predicciones se emparejan con las nuevas detecciones mediante la intersección sobre unión (IoU), y cada detección emparejada se convierte en la medición que actualiza su trayectoria. Cuando un objeto queda oculto durante unos fotogramas, la trayectoria continúa por la ruta predicha, de modo que la detección que reaparece queda lo bastante cerca de su predicción como para conservar el ID anterior.

Todos los rastreadores de Ultralytics YOLO funcionan así en el modo de seguimiento: KalmanFilterXYAH de ByteTrack sigue un estado de 8 dimensiones formado por el centro de la caja, la relación de aspecto, la altura y sus velocidades; BoT-SORT y TrackTrack utilizan una variante basada en el ancho y el alto, y ambos escalan el ruido según el tamaño de la caja para que los objetos grandes y cercanos toleren saltos mayores en píxeles. Los mismos pasos de predicción y actualización caben en unas pocas líneas de NumPy para una coordenada del centro de una caja:

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")

Imprime un error cuadrático medio de 4.50 px para las detecciones sin filtrar y de 2.48 px para las estimaciones filtradas, así como una velocidad estimada de 2.98 px por fotograma, próxima a los 3 px reales, aunque nunca se midió la velocidad.

El filtro de Kalman estándar presupone modelos lineales de movimiento y medición con ruido gaussiano. Sus variantes relajan esos supuestos:

  • Filtro de Kalman extendido (EKF): Linealiza los modelos no lineales alrededor de la estimación actual mediante jacobianos en cada paso; es la opción estándar para GPS y navegación inercial.
  • Filtro de Kalman unscented (UKF): Pasa un pequeño conjunto de puntos de muestra cuidadosamente elegidos por el modelo no lineal; suele ser más preciso que la linealización y no necesita derivadas.
  • Filtro de partículas: Representa la distribución del estado con muchas muestras aleatorias ponderadas, por lo que puede manejar creencias no gaussianas y multimodales, como la incertidumbre de un robot que no sabe en cuál de dos pasillos se encuentra, a costa de un consumo computacional mucho mayor.
  • Modelo oculto de Markov (HMM): Utiliza la misma recursión de predicción y actualización para estados discretos; el filtro de Kalman es su equivalente para estados continuos, lineales y gaussianos.

Aplicaciones más allá del seguimiento#

  • Robótica y fusión de sensores: Los robots combinan la odometría de las ruedas, las IMU, el lidar y las cámaras en una única estimación de la pose, y los métodos basados en EKF son una opción clásica para la localización y el mapeo simultáneos.
  • Realidad aumentada: Los cascos filtran las mediciones de la pose de la cabeza para mantener estables los objetos virtuales con baja latencia.
  • Economía y procesamiento de señales: Los analistas utilizan el suavizado de Kalman para estimar tendencias no observadas a partir de series temporales ruidosas.
  • Navegación: Las aeronaves, los barcos, los drones y los teléfonos combinan el GPS con sensores inerciales para que la posición se mantenga estable entre las correcciones por satélite. La navegación también fue la primera aplicación importante del filtro: a principios de la década de 1960, Stanley F. Schmidt, de NASA Ames, lo adaptó a la estimación de trayectorias no lineales para el ordenador de navegación del Apollo.

Explora las soluciones

Visión artificial en el deporte

Visión artificial en el deporte

Descubre cómo Ultralytics YOLO impulsa la visión artificial en el deporte con el seguimiento de jugadores y balones, analíticas de rendimiento, información útil para entrenadores y rehabilitación de deportistas.
Más información
Visión artificial para imágenes aéreas

Visión artificial para imágenes aéreas

Convierte imágenes aéreas y de drones en información útil en tiempo real para la agricultura, la acuicultura, la conservación y el análisis geoespacial con Ultralytics YOLO.
Más información
Visión artificial en el sector aeroespacial

Visión artificial en el sector aeroespacial

Aplica la visión artificial en el sector aeroespacial con Ultralytics YOLO para inspeccionar aeronaves, detectar objetos extraños en pistas, gestionar operaciones en tierra y detectar defectos en materiales compuestos.
Más información
Visión artificial en seguridad

Visión artificial en seguridad

Protege todas tus instalaciones con los modelos Ultralytics YOLO. La IA visual permite supervisar perímetros, detectar amenazas, reconocer matrículas y mejorar la seguridad laboral.
Más información
Visión artificial en robótica

Visión artificial en robótica

Potencia máquinas más inteligentes con los modelos Ultralytics YOLO. La IA visual en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Visión artificial en logística

Visión artificial en logística

Agiliza la logística con modelos Ultralytics YOLO. La IA visual permite inspeccionar paquetes, clasificarlos, realizar el seguimiento de vehículos y supervisar la seguridad del almacén en tiempo real.
Más información
Visión artificial en el comercio minorista

Visión artificial en el comercio minorista

Reinventa el comercio minorista con modelos Ultralytics YOLO. La IA visual permite realizar el seguimiento del inventario, supervisar estanterías, gestionar colas y obtener información más útil sobre los clientes.
Más información
Visión artificial en el sector sanitario

Visión artificial en el sector sanitario

Desarrolla soluciones sanitarias con modelos Ultralytics YOLO. La IA visual en el sector sanitario permite acelerar el diagnóstico por imagen, mejorar los diagnósticos y supervisar a los pacientes.
Más información
Visión artificial en la fabricación

Visión artificial en la fabricación

Optimiza la fabricación con modelos Ultralytics YOLO. La IA visual mejora el control de calidad, la detección de defectos, el cumplimiento de las normas de uso de EPI y la automatización de las líneas de montaje.
Más información
Visión artificial en la automoción

Visión artificial en la automoción

Aplica la visión artificial al sector de la automoción con modelos Ultralytics YOLO. La IA visual mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para lograr carreteras más inteligentes.
Más información
Visión artificial en la agricultura

Visión artificial en la agricultura

Incorpora la IA de visión a la agricultura inteligente con modelos Ultralytics YOLO. Impulsa la monitorización de cultivos, el seguimiento del ganado y la agricultura de precisión para obtener cosechas más abundantes e inteligentes.
Más información

¡Construyamos juntos el futuro de la IA!

Inicia tu recorrido hacia el futuro del aprendizaje automático