Chapter 15
追尾 — 点の列を軌跡に変える
この章のゴール.
フレームごとにばらつく検出点から、滑らかで途切れない「物体の軌跡」を作る一連の機構—— 予測・対応付け・平滑化・トラック管理——を、α-β フィルタの式とともに手に入れること。 カルマンフィルタが「α と β を自動で決める仕組み」だと言えるようになること。
この章で使う既出の用語(定義は各リンク先). RCS の揺らぎ(04 章 4〜5 節)、ドップラー・視線方向速度(07 章 5 節)、フレーム(09 章 1 節)、分解能(09 章 4 節、10 章 5 節)、見逃し・誤警報・\(P_d\)・\(P_{fa}\)(13 章 2 節)、検出点・点群・クラスタリング(13 章 6 節)
1. 問題 — 検出は「点」でしかない
CFAR(13 章)を通った検出点には 3 つの不都合がある。
| 不都合 | 中身 |
|---|---|
| ばらつく | 距離・角度に測定雑音が乗る。特に角度は分解能が粗い(10 章) |
| 抜ける | RCS の揺らぎ(04 章)で \(P_d < 1\)。フレームによっては消える |
| 偽物が混ざる | \(P_{fa} > 0\) である以上、誤警報は必ず出続ける |
このままでは「前のフレームの点と今の点が同じ物体か」すら分からない。 追尾(tracking)とは、時系列の点群から 「物体ごとの滑らかな状態(位置・速度)」を推定し続ける処理である。パイプラインは 4 段:
- 予測: 既存トラック(追尾中の物体仮説)の現在位置を運動モデル(「物体はこう動くはず」という仮定。2 節 では等速直線運動)で先読みする
- ゲーティング: 予測位置の周囲に「探索窓(ゲート)」を張る
- 対応付け: ゲート内の検出点をトラックに割り当てる
- 更新: 割り当てられた点でトラックの状態を修正し、トラックの生成・削除を管理する
2. α-β フィルタ — 最小の追尾フィルタ
1 次元(距離だけ)で考える。トラックの状態は位置 \(\hat{x}\) と速度 \(\hat{v}\)。 フレーム間隔を \(T\)、今フレームの観測値を \(z\) とする。
予測(フレーム間隔は数十 ms なので、その間は速度が変わらない=等速で進んだとみなす。加減速のずれは更新で取り込む):
更新(予測と観測のずれ=イノベーション \(r = z - x_p\) を、割合を決めて取り込む):
\(r\) は位置のずれ [m] なので、速度 [m/s] の修正に使うには「\(T\) 秒でこれだけずれた」と読んで \(T\) で割る。\(\alpha, \beta\) はどちらも無次元の割合である。 これがα-β フィルタである。パラメータの意味は直感的で、
| パラメータ | 大きくすると | 小さくすると |
|---|---|---|
| \(\alpha\)(位置の信頼配分。0〜1) | 観測に飛びつく: 応答が速いがギザギザ | 予測を信じる: 滑らかだが遅れる |
| \(\beta\)(速度の修正量。0〜2 の範囲で、かつ \(\beta < 4 - 2\alpha\) のとき発散しないことが知られている) | 速度変化(加減速)への追従が速い | 速度推定が安定するが機動に遅れる |
平滑化と応答性は両立しない——配分だけが選べる.
雑音を消したければ観測を信じない(α 小)。機動に付いていきたければ観測を信じる(α 大)。 α-β フィルタはこの配分を固定値として人間が決める。 「なら、状況に応じて配分を自動で変えられないか?」——それがカルマンフィルタである。
追尾フィルタを動かす
Web 版のこの見出しの下には動く図がある。雑音まみれの検出点列に α-β フィルタをかけ、α・β を動かして 「滑らかさ ↔ 追従の速さ」のトレードオフと、目標の急な機動での挙動を確かめられる。
3. カルマンフィルタ — 配分を不確かさから計算する
カルマンフィルタは、α-β と同じ「予測→更新」の骨格に、不確かさの帳簿を追加したものである。 不確かさは分散(推定値と真値のずれの 2 乗の平均)で測る。1 次元の位置だけで書くと:
- 予測の不確かさ \(P\)(位置の推定誤差の分散 [m²])。予測のたびに、モデルの不完全さぶん(この 1 フレームで実際に起きうる加減速などによる位置のずれの分散 \(Q\))だけ増やす: \(P \leftarrow P + Q\)
- 観測の不確かさ \(R\)(センサの測定雑音の分散 [m²])は与えられている
- 更新時の取り込み割合(カルマンゲイン)を、両者の比から毎回計算し、観測を取り込んだぶん \(P\) を減らす:
\(K\) が α の役を務め、その値は自動で動く。 予測に自信があれば(\(P \ll R\))観測を軽く扱い、自信がなければ(\(P \gg R\))観測に飛びつく。 トラック開始直後は \(P\) を大きく(何も知らない)初期化するので \(K \approx 1\) で機敏に動き、更新のたびに \((1-K)\) 倍で \(P\) が減っていく。 やがて「予測で \(Q\) 増える」と「更新で減る」が釣り合う値に落ち着き(収束)、\(K\) は小さな一定値になって滑らかに——人間が決めていた配分が、分散の算術に置き換わる。
実務のレーダー追尾では、状態を(位置 x, y・速度 vx, vy)などに拡張した多次元カルマンフィルタが標準である(\(P, Q, R\) は成分ごとの分散とその相関を並べた行列になるが、上の式の骨格は同じ)。 レーダーは視線方向速度(ドップラー)を直接観測できる(07 章)ため、 速度を差分から推定するしかないセンサより初期収束が速い——追尾でもレーダーの強みが効く。
4. ゲーティングと対応付け — どの点を誰に渡すか
複数のトラックと複数の検出点があるとき、「誰の観測か」を決めるのが対応付け(association)である。
- ゲーティング: トラックの予測位置を中心に、予測の不確かさに応じた窓を張り、外の点は候補から外す(計算量と誤対応の削減)。レーダーは距離方向の不確かさが小さく角度方向が大きいので、窓は円ではなく楕円になる
- 最近傍法(NN): ゲート内で最も近い点を採用。単純・軽量
- GNN(Global NN): 全トラック×全点の組について「予測位置と検出点の距離(不確かさで割ったもの)」をコストとし、コストの合計が最小になる割り当てを一括で解く。この割り当て問題を効率よく解く定番手順がハンガリアン法である(中身は本シリーズでは扱わない)。交差ですれ違う 2 目標の取り違えが減る
- JPDA・MHT(名前だけ): JPDA は 1 つの点を複数トラックに確率の重みで按分して取り込む、MHT は「どの点がどのトラックか」の候補の組み合わせを複数フレームぶん保持しておき後で決める、という上級手法。混雑環境用
追尾の失敗は、フィルタではなく対応付けで起きる.
2 台の車が並走して接近すると、分解能(09 章〜10 章)が足りず検出点が融合し、 ゲートが重なって観測の取り違え(トラックスワップ)が起きる。 追尾性能の上限を決めているのは実はセンサの分解能であり、 「イメージングレーダー(多数の仮想素子で角度分解能を上げ、物体の形が分かるほど点を密にしたレーダー)で点を増やす」(16 章)動機はここにもつながる。
5. トラック管理 — 生まれてから消えるまで
誤警報を 1 回拾っただけでトラックを立てると幽霊だらけになる。 逆に 1 回見逃しただけで消すと、本物が瞬断でぶつ切りになる。確認と猶予の状態機械(トラックが取りうる「状態」をいくつか決め、状態ごとの遷移ルールで管理する仕組み。下の表がそれ)を置くのが定石である。
| 状態 | 遷移ルール(例: M-of-N 論理——直近 \(N\) フレーム中 \(M\) 回) |
|---|---|
| 仮トラック | 新しい検出点で生成 |
| 確定トラック | 直近 \(N\) フレーム中 \(M\) 回対応付けに成功したら昇格(例: 3-of-5 は \(M = 3, N = 5\)) |
| 消滅待ち | 対応付け失敗が続いたら予測だけで維持(コースティング)。\(K\) 回連続(目安 3〜5 回)で失敗したら削除 |
\(P_d\)・\(P_{fa}\)(13 章)と M-of-N の設計はつながっている—— 検出段で \(P_{fa}\) を少し緩めても、確認論理が偽トラックを濾し取る。 検出と追尾は別々の箱ではなく、1 つの検出システムの前段と後段として一緒に設計するものである。
6. この章のまとめ
| ポイント | 内容 |
|---|---|
| 問題 | 検出点はばらつき・抜け・偽物を含む「点」。物体の軌跡は追尾が作る |
| 4 段 | 予測 → ゲーティング → 対応付け → 更新(トラック管理を含む) |
| α-β | \(\hat{x} \leftarrow x_p + \alpha r\)、\(\hat{v} \leftarrow \hat{v} + (\beta/T) r\)。滑らかさと追従の固定配分 |
| カルマン | 配分 \(K = P/(P+R)\) を不確かさ(分散)の帳簿 \(P \leftarrow P + Q\)、\(P \leftarrow (1-K)P\) から毎回計算する α-β の一般化 |
| 対応付け | 失敗の主戦場。NN → GNN → JPDA/MHT。上限はセンサ分解能が決める |
| 管理 | M-of-N で確認、コースティングで瞬断に耐え、連続失敗で消す |