Kalman Filter (KF)
カルマンフィルタが不確実な状況下でシステム状態をどのように推定するかを探究します。Ultralytics YOLO26での物体追跡に使用し、AIの精度を向上させる方法を学びましょう。
カルマンフィルタ (KF) は、動的システムの現在の状態を時系列で推定するために使用される再帰的な数学アルゴリズムです。ルドルフ・E・カルマンによって導入されたこの手法は、不確実性や不正確さを含むデータ、あるいは「ノイズ」と呼ばれるランダムな変動を含むデータを処理する上で不可欠です。カルマンフィルタは、統計的な不正確さを含む一連の時系列観測データを組み合わせることで、単一の測定値に基づく場合よりも正確な未知変数の推定値を提供します。機械学習 (ML) や 人工知能 (AI) の分野において、カルマンフィルタは 予測モデリング の重要なツールとして機能し、不規則なデータポイントを平滑化して背後に隠れた真の傾向を明らかにします。
Link to this sectionカルマンフィルタの仕組み#
このアルゴリズムは、予測 と 更新(補正とも呼ばれる)という2ステップのサイクルで動作します。対象となるシステムは線形であり、ノイズは ガウス分布(ベルカーブ)に従うと仮定しています。
-
予測: フィルタは物理モデルを使用して、現在の状態を時間軸上で先に進めて予測します。例えば、物体が一定の速度で移動している場合、標準的な 運動方程式 に基づいて次の位置を予測します。このステップでは、予測に伴う 不確実性 も推定されます。
-
更新: センサーから新しい測定値が到着すると、フィルタは予測された状態と観測されたデータを比較します。次に、カルマンゲイン によって決定される加重平均を計算し、不確実性が低い値(予測値または測定値)の方により高い信頼性を置きます。その結果、次のサイクルの基準となる洗練された 状態推定 が得られます。
Link to this sectionコンピュータビジョンとAIにおける応用#
カルマンフィルタは、もともと制御理論や航空宇宙ナビゲーションに根ざしたものですが、現在では現代の コンピュータビジョン (CV) パイプラインにおいて遍在しています。
- 物体追跡: これは最も一般的な使用例です。YOLO26 のような検出モデルがビデオフレーム内の物体を識別する際、それは静的なスナップショットを提供します。動きを理解するために、BoT-SORT のようなトラッカーはカルマンフィルタを利用してフレーム間での検出をリンクさせます。物体が一時的に遮蔽された(視界から外れた)場合、フィルタは物体の前回の速度を使用して現在位置を予測し、システムが「追跡」を見失ったりIDが切り替わったりするのを防ぎます。
- ロボティクスにおけるセンサーフュージョン: ロボティクス では、機械はノイズの多い複数のセンサーを使用してナビゲーションを行う必要があります。配送ロボットはGPS(ドリフトが発生する可能性がある)、ホイールエンコーダ(スリップする可能性がある)、IMU(ノイズが多い)を使用する場合があります。カルマンフィルタは、これらの異なる入力を統合してナビゲーションのための単一で信頼性の高い座標を提供し、安全な 自動運転車 の運用に不可欠な役割を果たします。
Link to this section関連概念の区別#
標準的なカルマンフィルタと、統計的AI に見られるバリエーションや代替手法を区別することは有益です。
- カルマンフィルタ vs 拡張カルマンフィルタ (EKF): 標準のKFは、システムが線形方程式(直線)に従うと仮定します。しかし、ドローンが旋回するような現実世界の動きは非線形であることがよくあります。EKFは、各ステップで微分を用いてシステムダイナミクスを線形化することでこの問題を解決し、複雑な軌道に適したものとなります。
- カルマンフィルタ vs 粒子フィルタ: KFはガウス分布の仮定に依存しますが、粒子フィルタ は一連のランダムなサンプル(粒子)を使用して確率分布を表現します。粒子フィルタは非ガウスノイズに対してより柔軟ですが、計算能力を大幅に必要とするため、リアルタイム推論 の速度に影響を与える可能性があります。
Link to this section実装例#
Ultralyticsエコシステムにおいて、カルマンフィルタは追跡アルゴリズムに直接統合されています。方程式を手動で記述する必要はなく、追跡モードを有効にするだけで利用できます。Ultralytics Platform を使用すると、データセットの管理や、これらの追跡機能を備えて簡単にデプロイできるモデルのトレーニングが可能です。
以下は、YOLO26 を使用して追跡を実行するPythonの簡潔な例です。ここでは、基盤となるトラッカーがカルマンフィルタリングを自動的に適用して バウンディングボックス の動きを平滑化しています。
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()}")Link to this sectionデータ品質の重要性#
現実世界の導入環境において、データが完璧であることは稀です。カメラはモーションブラーに悩まされ、センサーは信号ノイズを経験します。カルマンフィルタは、決定ループ内で洗練された データクレンジング メカニズムとして機能します。推定値を継続的に洗練させることで、AIエージェント が入力ストリームの瞬間的な不具合に反応するのではなく、最も確からしい現実に立脚して動作することを保証します。この信頼性は、空港運営の監視 から精密な産業オートメーションに至るまで、安全性が重要視されるアプリケーションにおいて極めて重要です。






