Kalman Filter (KF)
Khám phá cách Kalman Filter ước tính trạng thái hệ thống trong điều kiện không chắc chắn. Tìm hiểu cách sử dụng Kalman Filter để tracking object với Ultralytics YOLO26 nhằm cải thiện độ chính xác của AI.
Bộ lọc Kalman (KF) là một thuật toán toán học đệ quy được sử dụng để ước tính trạng thái của một hệ thống động theo thời gian. Do Rudolf E. Kálmán giới thiệu lần đầu, kỹ thuật này rất cần thiết để xử lý dữ liệu không chắc chắn, không chính xác hoặc chứa các biến thiên ngẫu nhiên, thường được gọi là "nhiễu". Bằng cách kết hợp một chuỗi phép đo được quan sát theo thời gian có chứa những sai số thống kê, Bộ lọc Kalman tạo ra các ước tính về những biến chưa biết chính xác hơn so với việc chỉ dựa trên một phép đo riêng lẻ. Trong các lĩnh vực học máy (ML) và trí tuệ nhân tạo (AI), bộ lọc này đóng vai trò là một công cụ quan trọng cho mô hình hóa dự đoán, giúp làm mượt các điểm dữ liệu gấp khúc để thể hiện xu hướng thực sự bên dưới.
Cách Bộ lọc Kalman hoạt động#
Thuật toán hoạt động theo một chu kỳ gồm hai bước: dự đoán và cập nhật (còn được gọi là hiệu chỉnh). Thuật toán giả định rằng hệ thống bên dưới là tuyến tính và nhiễu tuân theo phân phối Gaussian (đường cong hình chuông).
-
Dự đoán: Bộ lọc sử dụng một model vật lý để chiếu trạng thái hiện tại về phía trước theo thời gian. Ví dụ: nếu một vật thể đang chuyển động với vận tốc không đổi, bộ lọc sẽ dự đoán vị trí tiếp theo của vật thể dựa trên các phương trình động học tiêu chuẩn. Bước này cũng ước tính độ không chắc chắn gắn với dự đoán đó.
-
Cập nhật: Khi một phép đo mới đến từ cảm biến, bộ lọc so sánh trạng thái được dự đoán với dữ liệu quan sát được. Bộ lọc tính toán một giá trị trung bình có trọng số—được xác định bởi Độ lợi Kalman—đặt mức tin cậy cao hơn vào giá trị (dự đoán hoặc phép đo) có độ không chắc chắn thấp hơn. Kết quả là một ước tính trạng thái được tinh chỉnh, làm cơ sở cho chu kỳ tiếp theo.
Ứng dụng trong Thị giác Máy tính và AI#
Mặc dù bắt nguồn từ lý thuyết điều khiển và dẫn đường hàng không vũ trụ, Bộ lọc Kalman hiện đã trở nên phổ biến trong các pipeline thị giác máy tính (CV) hiện đại.
- Theo dõi vật thể: Đây là trường hợp sử dụng phổ biến nhất. Khi một model phát hiện như YOLO26 xác định một vật thể trong một khung hình video, model cung cấp một ảnh chụp tĩnh. Để hiểu chuyển động, các tracker như BoT-SORT sử dụng Bộ lọc Kalman để liên kết các kết quả phát hiện qua nhiều khung hình. Nếu một vật thể tạm thời bị che khuất (bị chắn khỏi tầm nhìn), bộ lọc sử dụng vận tốc trước đó của vật thể để dự đoán vị trí, giúp hệ thống không mất "track" hoặc chuyển đổi ID.
- Hợp nhất cảm biến trong robot: Trong robotics, máy móc phải điều hướng bằng nhiều cảm biến nhiễu. Một robot giao hàng có thể sử dụng GPS (có thể bị trôi), bộ mã hóa bánh xe (có thể bị trượt) và IMUs (có nhiễu). Bộ lọc Kalman hợp nhất các đầu vào khác biệt này để cung cấp một tọa độ duy nhất, đáng tin cậy cho việc điều hướng, yếu tố thiết yếu để vận hành phương tiện tự hành an toàn.
Phân biệt các khái niệm liên quan#
Việc phân biệt Bộ lọc Kalman tiêu chuẩn với các biến thể và giải pháp thay thế trong AI thống kê là rất hữu ích:
- Bộ lọc Kalman so với Bộ lọc Kalman mở rộng (EKF): KF tiêu chuẩn giả định hệ thống tuân theo các phương trình tuyến tính (đường thẳng). Tuy nhiên, chuyển động trong thế giới thực—chẳng hạn như drone nghiêng khi vào cua—thường là phi tuyến. EKF giải quyết vấn đề này bằng cách tuyến tính hóa động lực học của hệ thống ở mỗi bước bằng đạo hàm, nhờ đó phù hợp với các quỹ đạo phức tạp.
- Bộ lọc Kalman so với Bộ lọc hạt: Trong khi KF dựa trên các giả định Gaussian, bộ lọc hạt sử dụng một tập hợp các mẫu ngẫu nhiên (hạt) để biểu diễn các phân phối xác suất. Bộ lọc hạt linh hoạt hơn đối với nhiễu không Gaussian nhưng đòi hỏi năng lực tính toán lớn hơn đáng kể, có thể ảnh hưởng đến tốc độ suy luận theo thời gian thực.
Ví dụ triển khai#
Trong hệ sinh thái Ultralytics, Bộ lọc Kalman được tích hợp trực tiếp vào các thuật toán tracking. Bạn không cần tự viết các phương trình; có thể tận dụng chúng bằng cách bật các chế độ tracking. Nền tảng Ultralytics cho phép bạn quản lý dataset và train model có thể dễ dàng triển khai cùng các khả năng tracking này.
Dưới đây là một ví dụ ngắn gọn sử dụng Python để thực hiện tracking với Ultralytics YOLO26, trong đó tracker bên dưới tự động áp dụng bộ lọc Kalman để làm mượt chuyển động của bounding box:
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()}")Tầm quan trọng đối với chất lượng dữ liệu#
Trong triển khai thực tế, dữ liệu hiếm khi hoàn hảo. Camera bị ảnh hưởng bởi hiện tượng nhòe do chuyển động, còn cảm biến gặp nhiễu tín hiệu. Bộ lọc Kalman hoạt động như một cơ chế làm sạch dữ liệu tinh vi trong vòng lặp ra quyết định. Bằng cách liên tục tinh chỉnh các ước tính, bộ lọc đảm bảo rằng AI agent hoạt động dựa trên thực tế có xác suất cao nhất thay vì phản ứng với mọi trục trặc nhất thời trong luồng đầu vào. Độ tin cậy này đặc biệt quan trọng đối với các ứng dụng quan trọng về an toàn, từ giám sát hoạt động sân bay đến tự động hóa công nghiệp chính xác.









