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






