Kalman Filter (KF)
Изучи, как фильтр Калмана оценивает состояния системы в условиях неопределённости. Научись использовать его для отслеживания объектов с Ultralytics YOLO26 и повышения точности ИИ.
Фильтр Калмана (KF) — это рекурсивный математический алгоритм, используемый для оценки состояния динамической системы во времени. Изначально разработанный Рудольфом Э. Калманом, этот метод необходим для обработки данных, которые содержат неопределённость, неточности или случайные вариации, часто называемые «шумом». Объединяя последовательность измерений, полученных во времени и содержащих статистические неточности, фильтр Калмана формирует оценки неизвестных переменных, которые точнее оценок, основанных только на одном измерении. В области машинного обучения (ML) и искусственного интеллекта (AI) он выступает важным инструментом для предиктивного моделирования, сглаживая резкие колебания данных, чтобы выявить истинную лежащую в их основе тенденцию.
Как работает фильтр Калмана#
Алгоритм работает в рамках двухэтапного цикла: предсказание и обновление (также называемое коррекцией). Он предполагает, что базовая система является линейной, а шум подчиняется гауссовскому распределению (колоколообразной кривой).
-
Предсказание: фильтр использует физическую модель, чтобы спрогнозировать текущее состояние на следующий момент времени. Например, если объект движется с постоянной скоростью, фильтр предсказывает его следующую позицию на основе стандартных кинематических уравнений. На этом этапе также оценивается неопределённость, связанная с этим предсказанием.
-
Обновление: когда от датчика поступает новое измерение, фильтр сравнивает предсказанное состояние с наблюдаемыми данными. Он вычисляет взвешенное среднее, определяемое усилением Калмана, отдавая большее доверие значению (предсказанию или измерению), которое характеризуется меньшей неопределённостью. В результате получается уточнённая оценка состояния, которая служит исходной точкой для следующего цикла.
Применение в компьютерном зрении и ИИ#
Изначально возникший в теории управления и аэрокосмической навигации, фильтр Калмана теперь повсеместно используется в современных конвейерах компьютерного зрения (CV).
- Отслеживание объектов: это наиболее распространённый вариант использования. Когда модель обнаружения, такая как YOLO26, идентифицирует объект в кадре видео, она предоставляет статичный снимок. Чтобы понять движение, трекеры, такие как BoT-SORT, используют фильтры Калмана для связывания обнаружений между кадрами. Если объект временно перекрыт (скрыт от наблюдения), фильтр использует предыдущую скорость объекта, чтобы предсказать его местоположение, не позволяя системе потерять «трек» или изменить идентификатор.
- Слияние данных датчиков в робототехнике: в робототехнике машины должны перемещаться, используя несколько зашумлённых датчиков. Робот-доставщик может использовать GPS (сигнал которого может дрейфовать), энкодеры колёс (которые могут проскальзывать) и IMUs (которые характеризуются шумом). Фильтр Калмана объединяет эти разнородные входные данные, чтобы предоставить единую надёжную координату для навигации, необходимую для безопасной эксплуатации автономных транспортных средств.
Различие между связанными понятиями#
Полезно отличать стандартный фильтр Калмана от его вариантов и альтернатив, встречающихся в статистическом искусственном интеллекте:
- Фильтр Калмана и расширенный фильтр Калмана (EKF): стандартный KF предполагает, что система подчиняется линейным уравнениям (прямым линиям). Однако движение в реальном мире — например, беспилотник, выполняющий вираж, — часто является нелинейным. EKF решает эту проблему, линеаризуя динамику системы на каждом шаге с помощью производных, что делает его подходящим для сложных траекторий.
- Фильтр Калмана и фильтр частиц: если KF опираются на гауссовские предположения, то фильтры частиц используют набор случайных выборок (частиц) для представления распределений вероятностей. Фильтры частиц более гибки при негауссовском шуме, но требуют значительно большей вычислительной мощности, что потенциально может влиять на скорость вывода в реальном времени.
Пример реализации#
В экосистеме Ultralytics фильтры Калмана непосредственно интегрированы в алгоритмы отслеживания. Тебе не нужно вручную записывать уравнения: ты можешь использовать их, включив режимы отслеживания. Платформа Ultralytics позволяет управлять наборами данных и обучать модели, которые можно легко развернуть с использованием этих возможностей отслеживания.
Ниже приведён краткий пример на Python, демонстрирующий отслеживание с помощью Ultralytics YOLO26, где лежащий в основе трекер автоматически применяет фильтрацию Калмана для сглаживания перемещений ограничивающих рамок:
from ultralytics import YOLO
# Load the latest YOLO26 model
model = YOLO("yolo26n.pt")
# Run tracking on a video source
# The 'botsort' tracker uses Kalman Filters internally for state estimation
results = model.track(source="traffic_video.mp4", tracker="botsort.yaml")
# Process results
for result in results:
# Access the tracked IDs (assigned and maintained via KF logic)
if result.boxes.id is not None:
print(f"Tracked IDs in frame: {result.boxes.id.cpu().numpy()}")Важность качества данных#
При развертывании в реальных условиях данные редко бывают идеальными. Камеры страдают от размытия в движении, а датчики испытывают сигнальный шум. Фильтр Калмана действует как усовершенствованный механизм очистки данных в контуре принятия решений. Постоянно уточняя оценки, он обеспечивает работу агентов AI на основе наиболее вероятной картины реальности, а не реакцию на каждый кратковременный сбой во входном потоке. Такая надёжность критически важна для приложений, связанных с безопасностью, — от мониторинга работы аэропорта до точной промышленной автоматизации.









