Ultralytics YOLO27: Entre na lista de espera.
Licenciar o YOLO
Voltar ao glossário da Ultralytics

Kalman Filter (KF)

Um filtro de Kalman estima um estado variável, como a posição e a velocidade de um objeto, combinando previsões do modelo com medições ruidosas. Matemática e código.

Um filtro de Kalman (KF) é um algoritmo recursivo que estima o estado oculto de um sistema em mudança, como a posição e a velocidade de um objeto, a partir de uma sequência de medições ruidosas. A cada instante, prevê o próximo estado com base em um modelo de movimento do sistema e, em seguida, corrige essa previsão com a nova medição, ponderando cada uma de acordo com sua incerteza. Rudolf E. Kálmán publicou o método em 1960 e, para sistemas lineares com ruído gaussiano, ele fornece a estimativa de erro quadrático médio mínimo. O método é usado em receptores GPS, navegação de aeronaves e espaçonaves, localização de robôs e quase todos os rastreadores de múltiplos objetos em visão computacional, onde suaviza detecções instáveis e prevê onde cada objeto aparecerá em seguida.

Como funciona o filtro de Kalman#

O filtro mantém duas quantidades: uma estimativa de estado x, por exemplo, posição e velocidade, e uma matriz de covariância P que descreve o grau de incerteza dessa estimativa. Cada ciclo tem duas etapas:

  1. Previsão: Um modelo de movimento F projeta o estado para a frente, x = F x, e a incerteza aumenta devido ao ruído do processo Q, que representa movimentos não capturados pelo modelo: P = F P Fᵀ + Q.
  2. Atualização: Chega uma nova medição z, relacionada ao estado pelo modelo de medição H. O filtro calcula o resíduo z − H x e o ganho de Kalman K = P Hᵀ (H P Hᵀ + R)⁻¹, em que R é o ruído da medição. O estado corrigido é x + K (z − H x), e a incerteza diminui para (I − K H) P.

O ganho de Kalman define o equilíbrio entre o modelo e o sensor. Quando as medições são precisas em relação à previsão, o ganho se aproxima de 1 e a estimativa acompanha a medição; quando são ruidosas, o ganho se aproxima de 0 e a estimativa acompanha a previsão. Como o estado pode incluir quantidades que nunca são medidas diretamente, o filtro também as infere: um rastreador que observa apenas posições ainda estima a velocidade. Quando não há uma medição, o filtro ignora a atualização e segue com base na previsão:

Filtros de Kalman no rastreamento de objetos#

No rastreamento de objetos, cada trajetória tem seu próprio filtro de Kalman. O estado contém o centro e o tamanho da caixa delimitadora, além das respectivas velocidades; um modelo de velocidade constante prevê onde a caixa estará no próximo quadro. Essas previsões são associadas a novas detecções por Interseção sobre União (IoU), e cada detecção associada se torna a medição que atualiza sua trajetória. Quando um objeto fica oculto por alguns quadros, a trajetória continua seguindo o caminho previsto, de modo que a detecção que reaparece fica perto o bastante da previsão para manter o ID anterior.

Todos os rastreadores do modo de rastreamento do Ultralytics YOLO funcionam assim: KalmanFilterXYAH do ByteTrack rastreia um estado de 8 dimensões composto pelo centro da caixa, a proporção da imagem, a altura e suas velocidades; o BoT-SORT e o TrackTrack usam uma variante com largura e altura, e ambos ajustam o ruído de acordo com o tamanho da caixa, permitindo que objetos grandes e próximos tolerem saltos maiores em pixels. As mesmas etapas de previsão e atualização cabem em algumas linhas de NumPy para uma coordenada do centro de uma caixa:

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

A saída mostra um erro quadrático médio de 4.50 px para as detecções brutas e 2.48 px para as estimativas filtradas, além de uma velocidade estimada de 2.98 px por quadro, próxima dos 3 px reais, embora a velocidade nunca tenha sido medida.

O filtro de Kalman padrão pressupõe modelos lineares de movimento e medição com ruído gaussiano. Seus métodos relacionados flexibilizam essas suposições:

  • Filtro de Kalman estendido (EKF): Lineariza modelos não lineares em torno da estimativa atual usando jacobianos em cada etapa; é a escolha padrão para GPS e navegação inercial.
  • Filtro de Kalman unscented (UKF): Passa um pequeno conjunto de pontos de amostra cuidadosamente escolhidos pelo modelo não linear; costuma ser mais preciso que a linearização e não exige derivadas.
  • Filtro de partículas: Representa a distribuição do estado com muitas amostras aleatórias ponderadas, permitindo lidar com crenças não gaussianas e multimodais — como um robô que não sabe em qual de dois corredores está — com um custo computacional muito maior.
  • Modelo oculto de Markov (HMM): Usa a mesma recursão de previsão e atualização para estados discretos; o filtro de Kalman é seu equivalente para estados contínuos, lineares e gaussianos.

Aplicações além do rastreamento#

  • Robótica e fusão de sensores: Os robôs combinam odometria das rodas, IMUs, lidar e câmeras em uma única estimativa de pose; os métodos baseados em EKF são uma abordagem clássica para localização e mapeamento simultâneos.
  • Realidade aumentada: Os headsets filtram as medições da pose da cabeça para manter os objetos virtuais estáveis com baixa latência.
  • Economia e processamento de sinais: Analistas usam a suavização de Kalman para estimar tendências não observadas a partir de séries temporais ruidosas.
  • Navegação: Aeronaves, navios, drones e celulares combinam GPS com sensores inerciais para manter a posição estável entre as atualizações dos satélites. A navegação também foi a primeira grande aplicação do filtro: no início da década de 1960, Stanley F. Schmidt, da NASA Ames, adaptou-o à estimativa de trajetórias não lineares para o computador de navegação Apollo.

Explore as soluções

Visão computacional no desporto

Visão computacional no desporto

Descubra como o Ultralytics YOLO impulsiona a visão computacional no esporte com rastreamento de jogadores e bolas, análise de desempenho, insights para treinadores e reabilitação de atletas.
Saiba mais
Visão computacional para imagens aéreas

Visão computacional para imagens aéreas

Transforma imagens de drones e aéreas em informações em tempo real para a agricultura, a aquacultura, a conservação e a análise geoespacial com Ultralytics YOLO.
Saiba mais
Visão computacional no setor aeroespacial

Visão computacional no setor aeroespacial

Aplica visão computacional na indústria aeroespacial com Ultralytics YOLO para inspecionar aeronaves, detetar objetos estranhos na pista (FOD), apoiar operações aeroportuárias em terra e detetar defeitos em materiais compósitos.
Saiba mais
Visão computacional na segurança

Visão computacional na segurança

Protege todas as instalações com os modelos Ultralytics YOLO. A IA visual permite monitorizar perímetros, detetar ameaças, reconhecer matrículas e melhorar a segurança no local de trabalho.
Saiba mais
Visão computacional na robótica

Visão computacional na robótica

Potencia máquinas mais inteligentes com os modelos Ultralytics YOLO. A IA visual na robótica permite navegação autónoma, perceção, rastreamento de objetos e controlo em tempo real.
Saiba mais
Visão computacional na logística

Visão computacional na logística

Otimize a logística com os modelos Ultralytics YOLO. A IA de visão permite inspecionar pacotes, fazer triagem, rastrear veículos e monitorar a segurança em tempo real nos armazéns.
Saiba mais
Visão computacional no varejo

Visão computacional no varejo

Reinvente o varejo com os modelos Ultralytics YOLO. A IA de visão permite rastrear o estoque, monitorar prateleiras, gerenciar filas e obter insights mais inteligentes sobre clientes.
Saiba mais
Visão computacional na área da saúde

Visão computacional na área da saúde

Desenvolva soluções de saúde com os modelos Ultralytics YOLO. A IA de visão na área da saúde permite obter imagens médicas mais rapidamente, diagnósticos mais inteligentes e monitoramento de pacientes.
Saiba mais
Visão computacional na manufatura

Visão computacional na manufatura

Otimize a manufatura com modelos Ultralytics YOLO. A IA visual impulsiona o controle de qualidade, a detecção de defeitos, a conformidade com o uso de EPI e a automação da linha de montagem.
Saiba mais
Visão computacional no setor automotivo

Visão computacional no setor automotivo

Aplique visão computacional no setor automotivo com modelos Ultralytics YOLO. A IA visual aumenta a segurança viária, aprimora a assistência ao condutor e viabiliza a automação de veículos para estradas mais inteligentes.
Saiba mais
Visão computacional na agricultura

Visão computacional na agricultura

Leve a IA de visão à agricultura inteligente com os modelos Ultralytics YOLO. Aprimore o monitoramento de plantações, o rastreamento de animais e a agricultura de precisão para obter safras maiores e mais inteligentes.
Saiba mais

Vamos construir juntos o futuro da IA!

Comece sua jornada rumo ao futuro do aprendizado de máquina