Yolo Vision Shenzhen
Shenzhen
Únete ahora
Glosario

Filtro de Kalman Extendido (EKF)

Explora el filtro de Kalman extendido (EKF) para la estimación de estados no lineales. Descubre cómo mejora el seguimiento de objetos en Ultralytics y los sistemas autónomos.

El filtro de Kalman extendido (EKF) es un algoritmo matemático robusto diseñado para estimar el estado de un sistema dinámico que se comporta de forma no lineal. Mientras que el filtro de Kalman estándar (KF) proporciona una solución óptima para sistemas que se mueven en línea recta o siguen ecuaciones lineales simples, la física del mundo real rara vez es tan previsible. La mayoría de los objetos físicos, como un dron que lucha contra la resistencia del viento o un brazo robótico que gira sobre múltiples ejes, siguen trayectorias curvas o complejas. El EKF aborda esta complejidad creando una aproximación lineal del sistema en un momento específico, lo que permite a los ingenieros y científicos de datos aplicar técnicas de filtrado eficientes a tareas de modelado predictivo, incluso cuando la mecánica subyacente es complicada.

Mecanismo y linealización

Para manejar dinámicas complejas, el EKF emplea un proceso matemático llamado linealización, que básicamente estima la pendiente de una función en el punto de operación actual. Esto a menudo implica calcular una matriz jacobiana para aproximar cómo cambia el sistema en intervalos cortos. El algoritmo opera en un bucle recursivo que consta de dos fases principales: predicción y actualización. En la fase de predicción, el filtro proyecta el estado actual hacia adelante utilizando un modelo físico de movimiento. En la fase de actualización, corrige esta proyección utilizando datos nuevos, a menudo ruidosos, procedentes de sensores como giroscopios o acelerómetros. Este ciclo continuo de predicción y corrección ayuda a reducir el ruido de los datos y proporciona una estimación más suave y precisa del estado real que la que podría proporcionar un solo sensor por sí solo.

Relevancia en la visión artificial

En el ámbito de la visión artificial (CV), el filtro de Kalman extendido desempeña un papel fundamental en el mantenimiento de la identidad de los elementos en movimiento. Los modelos avanzados como YOLO26 son excepcionales para detectar objetos en fotogramas individuales , pero no comprenden de forma inherente la continuidad del movimiento a lo largo del tiempo. Al integrar un EKF o una lógica similar, un sistema de seguimiento de objetos puede predecir dónde debería aparecer un cuadro delimitador en el siguiente fotograma de vídeo basándose en su velocidad y trayectoria anteriores. Esto resulta especialmente útil para gestionar oclusiones, en las que un objeto queda temporalmente bloqueado de la vista; el filtro mantiene eltrack estimando la posición del objeto hasta que vuelve a ser visible, una técnica esencial para un seguimiento multiobjeto (MOT) robusto.

Aplicaciones en el mundo real

La versatilidad del EKF lo convierte en una tecnología fundamental en diversas industrias de alta tecnología donde el aprendizaje automático (ML) se cruza con el hardware físico:

  • Vehículos autónomos: Los coches autónomos dependen de la fusión de sensores para circular con seguridad. Un EKF fusiona distintos flujos de datos procedentes de sistemas de posicionamiento global (GPS), LiDAR y radar para calcular la posición y la orientación precisas del vehículo en la carretera, compensando las pérdidas de señal o el ruido ambiental.
  • Robótica: Los robots que operan en entornos no estructurados utilizan algoritmos de localización y mapeo simultáneos (SLAM). El EKF ayuda al robot a construir un mapa de una habitación y, al mismo tiempo, a determinar su propia ubicación dentro de ese mapa, corrigiendo el deslizamiento de las ruedas o la deriva de los sensores para garantizar un movimiento preciso.
  • Estimación de la postura: En aplicaciones como la realidad virtual o el análisis deportivo, el seguimiento de las articulaciones humanas requiere suavizar los puntos clave temblorosos. Los algoritmos EKF refinan el resultado de los modelos de aprendizaje profundo para crear animaciones de movimiento fluidas y naturales para los sistemas de reconocimiento de acciones.

Comparación con conceptos relacionados

Es útil distinguir el filtro de Kalman extendido de otros métodos de filtrado relacionados para comprender su utilidad específica :

  • EKF frente al filtro de Kalman (KF): El KF estándar es matemáticamente óptimo y computacionalmente más económico, pero falla cuando los sistemas son altamente no lineales. El EKF amplía el KF para que funcione con sistemas no lineales mediante aproximación.
  • EKF frente a filtro de partículas: un filtro de partículas gestiona muy bien la no linealidad y el ruido no gaussiano utilizando muchas muestras aleatorias (partículas) para representar la probabilidad. Sin embargo, requiere una potencia de cálculo significativamente mayor , lo que convierte al EKF en la opción preferida para sistemas integrados con recursos limitados.
  • EKF frente al filtro de Kalman sin aroma (UKF): El filtro de Kalman sin aroma ofrece un término medio, utilizando puntos de muestreo deterministas para manejar la no linealidad sin el complejo cálculo que requiere el EKF, aunque este último sigue siendo un estándar industrial para muchos sistemas de control.

Ejemplo de aplicación

In the ultralytics paquete, los algoritmos de seguimiento utilizan conceptos de filtrado de Kalman internamente para suavizar las trayectorias y asociar las detecciones entre fotogramas. Aunque no se codifica manualmente la matemática de la matriz EKF cuando se utilizan herramientas de alto nivel, comprender que es lo que impulsa el rastreador ayuda a configurar los parámetros para el Plataforma Ultralytics.

A continuación se explica cómo iniciar un rastreador con un YOLO , que utiliza estas técnicas de filtrado para la estimación de estado:

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

Únase a la comunidad Ultralytics

Únete al futuro de la IA. Conecta, colabora y crece con innovadores de todo el mundo

Únete ahora