Yolo 深圳
深セン
今すぐ参加
用語集

カルマンフィルタ(KF)

不確実性下におけるカルマンフィルタのシステム状態推定手法を探求する。Ultralytics YOLO26を用いた物体追跡への応用を学び、AIの精度向上を図る。

カルマンフィルタ(KF)は、動的システムの状態を時間経過とともに推定するために用いられる再帰的な数学的アルゴリズムである。ルドルフ・E・カルマンによって最初に導入されたこの技術は、不確実、不正確、あるいは「ノイズ」と呼ばれるランダムな変動を含むデータの処理に不可欠である。 統計的な不正確さを含む時間経過に伴う一連の測定値を組み合わせることで、カルマンフィルタは単一の測定値のみに基づく推定値よりも精密な未知変数の推定値を生成する。機械学習(ML) や人工知能(AI)の分野では、予測モデリングの重要なツールとして機能し、ギザギザしたデータポイントを平滑化して真の潜在的な傾向を明らかにする。

カルマンフィルターの仕組み

このアルゴリズムは予測更新(補正とも呼ばれる)という二段階のサイクルで動作する。基盤となるシステムが線形であり、ノイズがガウス分布(ベル曲線)に従うことを前提としている。

  1. 予測:フィルタは物理モデルを用いて現在の状態を時間軸に沿って将来へ投影する。 例えば、物体が一定速度で移動している場合、フィルタは標準的な運動方程式に基づいてその次の位置を予測する。 このステップでは、その予測に伴う不確実性も推定される。
  2. 更新:センサーから新たな測定値が届くと、フィルタは予測状態と観測データを比較します。カルマンゲインによって決定される加重平均を計算し、不確実性の少ない値(予測値または測定値)をより信頼します。その結果、精緻化された状態推定値が得られ、これが次のサイクルの基準となります。

コンピュータビジョンとAIにおける応用

カルマンフィルタは、もともと制御理論と航空宇宙ナビゲーションに起源を持つが、現代のコンピュータビジョン(CV)パイプラインでは広く普及している。

  • 物体追跡:これが最も一般的なユースケースです。YOLO26のような検出モデルが動画フレーム内で物体を識別すると、静的なスナップショットを提供します。動きを理解するため、BoT-SORTのようなトラッカーはカルマンフィルタを活用し、フレーム間で検出結果を連結します。物体が一時的に遮蔽(視界から遮られる)された場合、フィルタはその物体の前回の速度を用いて位置を予測し、システムが「追跡」を失ったりIDを切り替えたりするのを防ぎます。 検出結果をフレーム間で連結します。オブジェクトが一時的に遮蔽(視界から遮られる)された場合、フィルタはオブジェクトの 直前の速度を用いて位置を予測し、システムが「track」を喪失したりIDを切り替えたりするのを防ぎます。
  • ロボット工学におけるセンサーフュージョン: ロボット工学では、機械は複数のノイズの多いセンサーを用いてナビゲーションを行わなければならない。配送ロボットはGPS(ドリフトが発生する可能性あり)、車輪エンコーダ(スリップが発生する可能性あり)、IMU(ノイズが多い)を使用する可能性がある。カルマンフィルタはこれらの異なる入力を融合し、ナビゲーションのための単一で信頼性の高い座標を提供する。これは自律走行車の安全な運用に不可欠である。

関連概念の区別

統計的AIに見られる標準カルマンフィルタとその変種・代替手法を区別することは有益である:

  • カルマンフィルタ対 拡張カルマンフィルタ(EKF) 標準的なKFはシステムが線形方程式(直線)に従うと仮定する。しかし、ドローンが旋回するといった現実世界の運動は非線形であることが多い。EKFは各ステップで微分を用いてシステムダイナミクスを線形化することでこの問題を解決し、複雑な軌道に適応可能とする。
  • カルマンフィルタ対粒子フィルタ:カルマンフィルタはガウス分布の仮定に依存するのに対し、 粒子フィルタは確率分布を表すためにランダムなサンプル群(粒子)を用いる。 粒子フィルタは非ガウスノイズに対してより柔軟であるが、 計算能力が大幅に必要となり、リアルタイム推論速度に影響を及ぼす可能性がある。

実施例

Ultralytics では、カルマンフィルタが追跡アルゴリズムに直接統合されています。 数式を手動で記述する必要はなく、追跡モードを有効化することで活用できます。 Ultralytics 、データセットの管理やモデルのトレーニングが可能であり、 これらの追跡機能を備えたモデルを容易にデプロイできます。

以下はPython を用いた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エージェントが入力ストリームの一時的な不具合に反応するのではなく、最も確率の高い現実に基づいて動作することを保証する。この信頼性は、空港運営の監視から精密な産業オートメーションに至るまで、安全性が極めて重要なアプリケーションにおいて最優先事項である。

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加