Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Kalman Filter (KF)

Bộ lọc Kalman ước tính trạng thái biến đổi, chẳng hạn vị trí và vận tốc của một vật thể, bằng cách kết hợp dự đoán của model với các phép đo nhiễu. Toán học và code.

Bộ lọc Kalman (KF) là thuật toán đệ quy ước lượng trạng thái ẩn của một hệ thống biến đổi, chẳng hạn vị trí và vận tốc của một đối tượng, từ luồng phép đo nhiễu. Ở mỗi bước thời gian, bộ lọc dự đoán trạng thái tiếp theo dựa trên model mô tả cách hệ thống chuyển động, rồi hiệu chỉnh dự đoán đó bằng phép đo mới, với trọng số cho mỗi thành phần dựa trên mức độ bất định. Rudolf E. Kálmán công bố phương pháp này năm 1960; với hệ thống tuyến tính có nhiễu Gaussian, phương pháp tạo ra ước lượng có sai số bình phương trung bình nhỏ nhất. Bộ lọc được dùng trong bộ thu GPS, hệ thống dẫn đường máy bay và tàu vũ trụ, định vị robot và gần như mọi bộ theo dõi đa đối tượng trong thị giác máy tính, nơi bộ lọc làm mượt các phát hiện rung lắc và dự đoán vị trí xuất hiện tiếp theo của từng đối tượng.

Cách thức hoạt động của Bộ lọc Kalman#

Bộ lọc duy trì hai đại lượng: ước lượng trạng thái x, chẳng hạn vị trí và vận tốc, cùng ma trận hiệp phương sai P mô tả độ bất định của ước lượng đó. Mỗi chu kỳ gồm hai bước:

  1. Dự đoán: Model chuyển động F chiếu trạng thái về phía trước, x = F x, và độ bất định tăng thêm do nhiễu quá trình Q, đại diện cho chuyển động mà model không mô tả được: P = F P Fᵀ + Q.
  2. Cập nhật: Một phép đo mới z xuất hiện, liên hệ với trạng thái thông qua model đo lường H. Bộ lọc tính phần dư z − H x và hệ số Kalman K = P Hᵀ (H P Hᵀ + R)⁻¹, trong đó R là nhiễu đo lường. Trạng thái được hiệu chỉnh là x + K (z − H x), còn độ bất định giảm xuống (I − K H) P.

Hệ số Kalman quyết định mức cân bằng giữa model và cảm biến. Khi phép đo chính xác so với dự đoán, hệ số tiến gần 1 và ước lượng bám theo phép đo; khi phép đo nhiễu, hệ số tiến gần 0 và ước lượng bám theo dự đoán. Vì trạng thái có thể bao gồm các đại lượng không bao giờ được đo trực tiếp, bộ lọc cũng suy ra chúng: bộ theo dõi chỉ quan sát vị trí vẫn ước lượng được vận tốc. Khi thiếu phép đo, bộ lọc bỏ qua bước cập nhật và tiếp tục dựa trên dự đoán:

Bộ lọc Kalman trong theo dõi đối tượng#

Trong theo dõi đối tượng, mỗi track có một bộ lọc Kalman riêng. Trạng thái chứa tâm và kích thước của bounding box, cùng vận tốc của chúng; model vận tốc không đổi dự đoán vị trí của box ở frame tiếp theo. Các dự đoán này được ghép với phát hiện mới bằng Intersection over Union (IoU), và mỗi phát hiện được ghép trở thành phép đo dùng để cập nhật track tương ứng. Khi đối tượng bị che khuất trong vài frame, track tiếp tục di chuyển theo quỹ đạo dự đoán, nhờ đó phát hiện xuất hiện trở lại nằm đủ gần dự đoán để giữ nguyên ID cũ.

Mọi bộ theo dõi trong chế độ track của Ultralytics YOLO đều hoạt động theo cách này: KalmanFilterXYAH của ByteTrack theo dõi trạng thái 8 chiều gồm tâm box, tỷ lệ khung hình, chiều cao và vận tốc của chúng; BoT-SORT và TrackTrack dùng biến thể chiều rộng và chiều cao; cả hai đều điều chỉnh nhiễu theo kích thước box để đối tượng lớn ở gần chấp nhận được các bước nhảy pixel lớn hơn. Cùng các bước dự đoán và cập nhật có thể viết gọn trong vài dòng NumPy cho một tọa độ của tâm box:

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

Kết quả in ra sai số căn trung bình bình phương là 4.50 px cho các phát hiện thô và 2.48 px cho các ước lượng đã lọc; vận tốc ước lượng là 2.98 px mỗi frame, gần với giá trị thực 3 px, dù vận tốc chưa từng được đo.

Bộ lọc Kalman tiêu chuẩn giả định model chuyển động và đo lường tuyến tính với nhiễu Gaussian. Các biến thể của bộ lọc nới lỏng những giả định này:

  • Bộ lọc Kalman mở rộng (EKF): Tuyến tính hóa các model phi tuyến quanh ước lượng hiện tại bằng ma trận Jacobian ở mỗi bước; đây là lựa chọn tiêu chuẩn cho GPS và dẫn đường quán tính.
  • Bộ lọc Kalman không thứ nguyên (UKF): Truyền một tập nhỏ các điểm mẫu được chọn cẩn thận qua model phi tuyến; phương pháp này thường chính xác hơn tuyến tính hóa và không cần đạo hàm.
  • Bộ lọc hạt: Biểu diễn phân phối trạng thái bằng nhiều mẫu ngẫu nhiên có trọng số, nhờ đó xử lý được niềm tin phi Gaussian và đa đỉnh, chẳng hạn robot không biết mình đang ở hành lang nào trong hai hành lang, nhưng đòi hỏi chi phí tính toán cao hơn nhiều.
  • Model Markov ẩn (HMM): Dùng cùng phép đệ quy dự đoán và cập nhật cho trạng thái rời rạc; bộ lọc Kalman là phiên bản tương ứng cho trạng thái liên tục, tuyến tính-Gaussian.

Ứng dụng ngoài theo dõi#

  • Robot học và hợp nhất cảm biến: Robot kết hợp odometry bánh xe, IMU, lidar và camera thành một ước lượng tư thế; các phương pháp dựa trên EKF là cách tiếp cận kinh điển cho định vị và lập bản đồ đồng thời.
  • Thực tế tăng cường: Kính thực tế tăng cường lọc các phép đo tư thế đầu để giữ vật thể ảo ổn định với độ trễ thấp.
  • Kinh tế học và xử lý tín hiệu: Chuyên viên phân tích dùng làm mượt Kalman để ước lượng xu hướng không quan sát được từ chuỗi thời gian nhiễu.
  • Dẫn đường: Máy bay, tàu thuyền, drone và điện thoại kết hợp GPS với cảm biến quán tính để vị trí ổn định giữa các lần cập nhật vệ tinh. Dẫn đường cũng là ứng dụng lớn đầu tiên của bộ lọc: vào đầu thập niên 1960, Stanley F. Schmidt tại NASA Ames đã điều chỉnh bộ lọc để ước lượng quỹ đạo phi tuyến cho máy tính dẫn đường Apollo.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning