Slide 1

Slide 1 text

オンラインマッピング x トラッキング 紹介する論⽂: MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24) Michiya Abe @abemii_ Nov. 16, 2024. コンピュータビジョン勉強会@関東 ECCV2024 読み会 ※資料中の図表等は特に記載 のない限り上記論⽂から引⽤

Slide 2

Slide 2 text

2 ● 経歴 ● 2019 :修⼠(情報理⼯学) ● 2019 ~ :⾃動運転向け画像認識の研究開発 @ SenseTime ● 興味 ● 物体検出‧⾛路認識の DNN モデルの開発 ● モデルの量⼦化,エッジでの⾼速化 ⾃⼰紹介 Michiya Abe Twitter: @abemii_ Blog: https://abemii.hatenablog.com/ ※ 発表内容は所属機関と一切関係しません

Slide 3

Slide 3 text

3 ⾞載センサの⼊⼒を(いい感じに)処理して,⾃⾞の経路計画‧制御を⾏う 背景 | ⾃律⾛⾏システム いろいろな処理 車に取り付けた色々なセンサからの入力 t=1 t=2 t=3 経路計画 将来の自車両の経路を決める https://www.nuscenes.org/nuscenes 入力 出力 t=1 アクセル・ブレーキ ステアリング 制御 アクセル・ブレーキ・ ステアリングの制御を行う ● 知覚 ○ 物体検出/トラッキング ○ オンラインマッピング ● モーション予測 ● 経路計画 ● 制御 今日はこれの話

Slide 4

Slide 4 text

4 路⾯のペイント‧マークなどの情報から道路構造を推定して,地図を作るタスク 経路計画などの後段のタスクで使うため,⾃⾞を中⼼とする⿃瞰図の座標系で, それぞれの要素のクラスと(ベクトル化された)点列の情報がほしい 背景 | オンラインマッピングとは? 航空写真: https://www.openstreetmap.org/edit#map=19/40.445290/-79.976280 ⾃⾞ □ 横断歩道 (ped. crossing) — 道路境界 (road boundary) — ⾞線分割線 (lane divider) X Y クラス: 道路境界 点列: [(x1, y1), …, (xN, yN)] (ポリライン) クラス: 横断歩道 点列: [(x1, y1), …, (xN, yN)] (ポリゴン) O

Slide 5

Slide 5 text

5 背景 | 典型的なオンラインマッピングのモデル(セグメンテーションベース) X Y https://www.nuscenes.org/nuscenes マルチビューカメラ (6 ~ 7 個くらい) の画像から それぞれ画像特徴を抽出 鳥瞰図 (BEV) グリッド上の 密な特徴マップをエンコード (代表的手法: BEVFormer, Lift-Splat) Segment ation Head BEV 特徴上で Segmentation Post- Process NMS, インスタンス分割, ベクトル化などのポスト 処理 各地図要素の 位置・形状(点列) クラス を出力 クラス: 道路境界 点列: [(x1, y1), …, (xN, yN)] (ポリライン) クラス: 横断歩道 点列: [(x1, y1), …, (xN, yN)] (ポリゴン) HDMapNet (Li +, ICRA2022) など ● ⼿作りのポスト処理が必要(時間がかかる) ● Segmentation マスクのピクセル間の関係性がモデル化できない → ベクトル化された地図を直接予測! 課題 ※ BEV 特徴マップの可視化画像は,UniAD の bev embedding (256 dim) のうち,最初の 3 channels をRGB で可視化したもの

Slide 6

Slide 6 text

6 背景 | 典型的なオンラインマッピングのモデル(セグメンテーションベース) X Y https://www.nuscenes.org/nuscenes マルチビューカメラ (6 ~ 7 個くらい) の画像から それぞれ画像特徴を抽出 鳥瞰図 (BEV) グリッド上の 密な特徴マップをエンコード (代表的手法: BEVFormer, Lift-Splat) Segment ation Head BEV 特徴上で Segmentation Post- Process NMS, インスタンス分割, ベクトル化などのポスト 処理 各地図要素の 位置・形状(点列) クラス を出力 クラス: 道路境界 点列: [(x1, y1), …, (xN, yN)] (ポリライン) クラス: 横断歩道 点列: [(x1, y1), …, (xN, yN)] (ポリゴン) HDMapNet (Li +, ICRA2022) など ● ⼿作りのポスト処理が必要(時間がかかる) ● Segmentation マスクのピクセル間の関係性がモデル化できない → ベクトル化された地図を直接予測! 課題 ※ BEV 特徴マップの可視化画像は,UniAD の bev embedding (256 dim) のうち,最初の 3 channels をRGB で可視化したもの 自動運転のためのビジョン技術 (p.29) 佐藤育郎先生 (MIRU2024, チュートリアル ) BEV 特徴 = ⾃⾞を中⼼とするグリッド上の特徴マップ 代表的⼿法 Lift-Splat (Philion+, ECCV20) 各カメラのピクセルの奥⾏き ⽅向の深度分布にしたがって ,特徴をBEVに落とす BEVFormer (Li+, ECCV22) Transformer ベース BEV グリッド上のクエリから 各カメラの情報を取り寄せる ※このチュートリアルが とてもわかりやすいので おすすめです

Slide 7

Slide 7 text

7 背景 | 典型的なオンラインマッピングのモデル(セグメンテーションベース) X Y https://www.nuscenes.org/nuscenes マルチビューカメラ (6 ~ 7 個くらい) の画像から それぞれ画像特徴を抽出 鳥瞰図 (BEV) グリッド上の 密な特徴マップをエンコード (代表的手法: BEVFormer, Lift-Splat) Segment ation Head BEV 特徴上で Segmentation Post- Process NMS, インスタンス分割, ベクトル化などのポスト 処理 各地図要素の 位置・形状(点列) クラス を出力 クラス: 道路境界 点列: [(x1, y1), …, (xN, yN)] (ポリライン) クラス: 横断歩道 点列: [(x1, y1), …, (xN, yN)] (ポリゴン) HDMapNet (Li +, ICRA2022) など ● ⼿作りのポスト処理が必要(時間がかかる) ● Segmentation マスクのピクセル間の関係性がモデル化できない → ベクトル化された地図を直接予測! 課題 ※ BEV 特徴マップの可視化画像は,UniAD の bev embedding (256 dim) のうち,最初の 3 channels をRGB で可視化したもの

Slide 8

Slide 8 text

8 背景 | 典型的なオンラインマッピングのモデル(ベクトルベース) https://www.nuscenes.org/nuscenes BEV 特徴をデコードし, ベクトル化された 地図要素を直接推定 MapTR (Liao +, ICLR2023) など X Y マルチビューカメラ (6 ~ 7 個くらい) の画像から それぞれ画像特徴を抽出 鳥瞰図 (BEV) グリッド上の 密な特徴マップをエンコード (代表的手法: BEVFormer, Lift-Splat) ※ BEV 特徴マップの可視化画像は,UniAD の bev embedding (256 dim) のうち,最初の 3 channels をRGB で可視化したもの Decoder (Deformable DETR ベース) 各地図要素の 位置・形状(点列) クラス を出力 クラス: 道路境界 点列: [(x1, y1), …, (xN, yN)] (ポリライン) クラス: 横断歩道 点列: [(x1, y1), …, (xN, yN)] (ポリゴン) ● 単フレームモデルの場合,現時刻でカメラから⾒えない部分の推定が難しい → マルチフレームモデルで過去の情報も利⽤する! 課題

Slide 9

Slide 9 text

9 背景 | 典型的なオンラインマッピングのモデル(ベクトルベース) BEVFormer で エンコード 画像上の特徴を トークン化 BEV 特徴との Cross-Attn は Deformable Attn. を採⽤ (Deformable DETR と同じ) DETR の構造 (Carion +, ECCV 2020) 典型的なオンラインマッピングモデルの構造 MapTR (Liao +, ICLR2023) など 点列の座標を逐次的に洗練 させていく (Deformable DETR と同じ) 各物体のインスタンスを表す ⾼次元ベクトルの集合 各地図要素の1点1点を表す ⾼次元ベクトルの集合

Slide 10

Slide 10 text

10 背景 | 典型的なオンラインマッピングのモデル(ベクトルベース) https://www.nuscenes.org/nuscenes BEV 特徴をデコードし, ベクトル化された 地図要素を直接推定 MapTR (Liao +, ICLR2023) など X Y マルチビューカメラ (6 ~ 7 個くらい) の画像から それぞれ画像特徴を抽出 鳥瞰図 (BEV) グリッド上の 密な特徴マップをエンコード (代表的手法: BEVFormer, Lift-Splat) ※ BEV 特徴マップの可視化画像は,UniAD の bev embedding (256 dim) のうち,最初の 3 channels をRGB で可視化したもの Decoder (Deformable DETR ベース) 各地図要素の 位置・形状(点列) クラス を出力 クラス: 道路境界 点列: [(x1, y1), …, (xN, yN)] (ポリライン) クラス: 横断歩道 点列: [(x1, y1), …, (xN, yN)] (ポリゴン) ● 単フレームモデルの場合,現時刻でカメラから⾒えない部分の推定が難しい → マルチフレームモデルで過去の情報も利⽤する! 課題

Slide 11

Slide 11 text

11 地図要素のトラッキング 航空写真: https://www.openstreetmap.org/edit#map=19/40.445290/-79.976280 ⾃⾞ □ 横断歩道 (ped. crossing) — 道路境界 (road boundary) — ⾞線分割線 (lane divider) X Y O ⾃⾞の 移動 (R, t) X Y O 過去の検出と 今の検出を統合 ● 地図要素は⾃⾞や他⾞の動きに依らず,同位置‧ 同形状であり続ける ● 遮蔽などで現時刻で検出できなかった地図要素を, 過去の情報から推定できる X Y O ⾃⾞の移動分 (R, t) をキャンセル = 今の座標系 に変換

Slide 12

Slide 12 text

12 MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping Jiacheng Chen 1*, Yuefan Wu 1*, Jiaqi Tan 1*, Hang Ma 1, and Yasutaka Furukawa 1,2 1 Simon Fraser University 2 Wayve (* equal contribution) ECCV 2024 (Oral) 今回紹介する論⽂ ● 地図要素のトラッキング ○ 時系列で⼀貫した形状‧IDが付与された地図要素を予測 ● メモリバッファを⽤いた過去の情報の保持‧抽出 ○ 過去のフレームのBEV 特徴と Vector 特徴をそれぞれメモリに保持して貯めておく. ○ ⾃⾞の動きに応じて必要なフレームの情報をサンプルして統合 ● ベンチマークに関する改善 ○ 既存データセットの処理⽅法の改善し,時系列的に⼀貫性のある GT を⽣成 ○ 時系列的⼀貫性を考慮した評価指標である C-mAP を提案 Paper: https://arxiv.org/pdf/2403.15951 / Project page: https://map-tracker.github.io/ / Code: https://github.com/woodfrog/maptracker

Slide 13

Slide 13 text

13 モデルの構造の話 ● 典型的なマッピングモデルの BEV エンコーダと Vector デコーダに, メモリバッファへの保存と抽出して統合する機構を導⼊ 学習の話 ● トラッキングの学習 ● フレーム間の⾃⾞姿勢の変化に応じてクエリを変換するモジュールの学習 ⼿法

Slide 14

Slide 14 text

14 モデルの構造の話 ● 典型的なマッピングモデルの BEV エンコーダと Vector デコーダに, メモリバッファへの保存と抽出して統合する機構を導⼊ 学習の話 ● トラッキングの学習 ● フレーム間の⾃⾞姿勢の変化に応じてクエリを変換するモジュールの学習 ⼿法

Slide 15

Slide 15 text

15 ⼿法 | 全体構造 BEV 特徴をつくる BEV Encoder パート 地図要素を検出する Decoder パート

Slide 16

Slide 16 text

16 ⼿法 | 全体構造 単フレームのマッピングモデルと同じ BEV と Vector のメモリ バッファの仕組み BEV/Vector メモリを 時間伝播し,現時刻の BEV/Vector 初期クエリ と統合 サンプルしたフレームの メモリと統合する仕組 み BEV 特徴をつくる BEV Encoder パート 地図要素を検出する Vector Decoder パート

Slide 17

Slide 17 text

17 ⼿法 | (1) メモリバッファ BEV と Vector のメモリ バッファの仕組み BEV 特徴をつくる BEV Encoder パート 地図要素を検出する Vector Decoder パート

Slide 18

Slide 18 text

18 過去の情報を保持する⽅法 ⼿法 | (1) メモリバッファ t - 3 t - 2 t - 1 メモリ 現在の 結果 t - 2 t - 1 t t - 3 t - 2 メモリ バッファ 現在の 結果 t t - 1 抽出 更新 単⼀のメモリを使⽤ メモリバッファを使⽤ ● 逐次的にメモリを更新していく ● 複雑な道路状況により,メモリがロスする 可能性がある (StreamMapNet はこちらの⽅法) ● 過去の数フレーム分のメモリを溜め込む ○ 現時刻で更新された BEV 特徴と Vector 特徴をメモリバッファに追加していく → MapTracker はこの⽅法を採⽤

Slide 19

Slide 19 text

19 ⼿法 | (2) BEV / Vector 特徴の時間伝播 BEV/Vector メモリを 時間伝播し,現時刻の BEV/Vector 初期クエリ と統合 BEV 特徴をつくる BEV Encoder パート 地図要素を検出する Vector Decoder パート

Slide 20

Slide 20 text

20 前の時刻で更新された BEV / Vector 特徴を,⾃⾞の動きに応じて変換し, BEV / Vector 特徴の初期クエリと統合 ⼿法 | (2) BEV / Vector 特徴の時間伝播 BEV 特徴をつくる BEV Encoder パート 地図要素を検出する Vector Decoder パート Affine 変換で ⾃⾞の動きの分を キャンセル ⾃⾞の動き情報を⼊⼒した MLP でクエリを暗黙的に変換し, ⾃⾞の動きの分をキャンセル

Slide 21

Slide 21 text

21 ⼿法 | (3) Self-Attention, Cross-Attention (Deformable Attention) BEV 特徴をつくる BEV Encoder パート 地図要素を検出する Vector Decoder パート

Slide 22

Slide 22 text

22 ⼿法 | (4) メモリ情報と更新した BEV / Vector クエリの統合 BEV 特徴をつくる BEV Encoder パート 地図要素を検出する Vector Decoder パート サンプルしたフレームの メモリと統合する仕組 み

Slide 23

Slide 23 text

23 メモリバッファから数フレーム分の BEV/Vector メモリをサンプルして ⾃⾞姿勢に応じて変換し,現時刻の BEV/Vector クエリと相互作⽤ ⼿法 | (4) メモリ情報と更新した BEV / Vector クエリの統合 (1/3) BEV 特徴をつくる BEV Encoder パート 地図要素を検出する Vector Decoder パート ⾃⾞の移動量に基づいて サンプルするフレームを決定 メモリ バッファ サンプルした メモリ 時刻 - 1 - T … 移動量 1 m 15 m 10 m 5 m - 2

Slide 24

Slide 24 text

24 メモリバッファから数フレーム分の BEV/Vector メモリをサンプルして ⾃⾞姿勢に応じて変換し,現時刻の BEV/Vector クエリと相互作⽤ ⼿法 | (4) メモリ情報と更新した BEV / Vector クエリの統合 (2/3) BEV 特徴をつくる BEV Encoder パート 地図要素を検出する Vector Decoder パート BEV メモリ: アフィン変換, Vector メモリ:MLP で現時刻の⾃⾞姿勢に合わせて変換 ( (2) とおなじ)

Slide 25

Slide 25 text

25 メモリバッファから数フレーム分の BEV/Vector メモリをサンプルして ⾃⾞姿勢に応じて変換し,現時刻の BEV/Vector クエリと相互作⽤ ⼿法 | (4) メモリ情報と更新した BEV / Vector クエリの統合 (3/3) BEV 特徴をつくる BEV Encoder パート 地図要素を検出する Vector Decoder パート 変換された BEV メモリのセットと 現時刻の BEV クエリを結合し, CNN で処理 現時刻の Vector クエリを query, 変換された Vector メモリのセットを key, value として Cross-Attn. で相互作⽤

Slide 26

Slide 26 text

26 ⼿法 | (5) 更新された BEV/Vector クエリをメモリバッファに追加 BEV 特徴をつくる BEV Encoder パート 地図要素を検出する Vector Decoder パート

Slide 27

Slide 27 text

27 モデルの構造の話 ● 典型的なマッピングモデルの BEV エンコーダと Vector デコーダに, メモリバッファへの保存と抽出して統合する機構を導⼊ 学習の話 ● トラッキングの学習 ● フレーム間の⾃⾞姿勢の変化に応じてクエリを変換するモジュールの学習 ⼿法

Slide 28

Slide 28 text

28 3 種類の損失関数の合計 ● BEV セグメンテーションの損失 ○ 各クラスについて,前景か背景かの⼆値分類を⾏う ⼿法 | 学習時の損失関数 (1/3) BEV 特徴 予測マスク 予測マスク GTマスク GTマスク lane divider ped. crossing mask head …

Slide 29

Slide 29 text

29 3 種類の損失関数の合計 ● トラッキングの損失 ○ デコーダから出⼒された各地図要素のクラス‧点列について, GTとのマッチング結果に基づき,分類‧回帰の損失を計算(DETR と同じ) ○ MOTR (Zeng+, ECCV22) と同様,トラッキングを考慮した割り当てが⾏われる ⼿法 | 学習時の損失関数 (2/3) 時刻 0 時刻 1 トラックされている予測と GTの割り当ては,前の時刻 のものを利⽤

Slide 30

Slide 30 text

30 3 種類の損失関数の合計 ● 時間伝播に関する損失 ○ Vector メモリの変換のために使わる MLP モジュール (PropMLP) の学習のため ○ 現在のクエリを前の時刻に変換したクエリに対する検出と, それをさらに現在のフレームに逆変換したクエリに対する検出の損失を計算 ⼿法 | 学習時の損失関数 (3/3) クエリを前の時刻 に変換して検出 逆に今の時刻に変 換して検出 現在時刻 現在時刻

Slide 31

Slide 31 text

31 実験 | nuScenes, Argoverse2 で実験 → SOTA(⼤幅に良い) nuScenes Argoverse2 ※ GT の作り⽅が論⽂によって微妙に異なる 形状‧ID が⼀貫するように改めて作成した GT データ Train/Val/Test をリークがないように分割しなおした場合でも, ベースラインの StreamMapNet を⼤きく上回った 時系列での⼀貫性を評価できるように提案された指標

Slide 32

Slide 32 text

32 実験 | 定性的結果も良い(各フレームの検出結果をオンラインでマージしたもの)

Slide 33

Slide 33 text

33 ● ⾃動運転におけるオンラインマッピングのタスクと典型的な⼿法 について紹介 ○ MapTR (Liao+, ICRA23) など ● オンラインマッピングにトラッキングの機構をつけた MapTracker ○ 時系列で⼀貫した形状‧IDが付与された地図要素を予測 ○ メモリバッファを⽤いた過去の情報の保持‧抽出 まとめ

Slide 34

Slide 34 text

34 ● Papers ● Jiacheng Chen, Yuefan Wu, Jiaqi Tan, Hang Ma, Yasutaka Furukawa. MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping. In ECCV, 2024. ● Jonah Philion, Sanja Fidler. Lift, Splat, Shoot: Encoding Images From Arbitrary Camera Rigs by Implicitly Unprojecting to 3D. In ECCV, 2020. ● Zhiqi Li, Wenhai Wang, Hongyang Li, Enze Xie, Chonghao Sima, Tong Lu, Qiao Yu, Jifeng Dai. BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers. In ECCV, 2022. ● Qi Li, Yue Wang, Yilun Wang, Hang Zhao. HDMapNet: An Online HD Map Construction and Evaluation Framework. In ICRA, 2022 ● Bencheng Liao, Shaoyu Chen, Xinggang Wang, Tianheng Cheng, Qian Zhang, Wenyu Liu, Chang Huang. MapTR: Structured Modeling and Learning for Online Vectorized HD Map Construction. In ICRA, 2023. ● Nicolas Carion, Francisco Massa, Gabriel Synnaeve, Nicolas Usunier, Alexander Kirillov, Sergey Zagoruyko. End-to-End Object Detection with Transformers. In ECCV, 2020. ● Xizhou Zhu, Weijie Su, Lewei Lu, Bin Li, Xiaogang Wang, Jifeng Dai. Deformable DETR: Deformable Transformers for End-to-End Object Detection. In ICLR, 2021. ● Tianyuan Yuan, Yicheng Liu, Yue Wang, Yilun Wang, Hang Zhao. StreamMapNet: Streaming Mapping Network for Vectorized Online HD Map Construction. In WACV, 2023. ● Fangao Zeng, Bin Dong, Yuang Zhang, Tiancai Wang, Xiangyu Zhang, Yichen Wei. MOTR: End-to-End Multiple-Object Tracking with Transformer. In ECCV, 2022. ● 講演資料 ● 佐藤. ⾃動運転のためのビジョン技術 (MIRU2024, チュートリアル) References

Slide 35

Slide 35 text

35 ● Query の粒度は? ● インスタンス単位 (VectorMapNet, TopoNet, LaneSegNet) ● 点単位 (StreamMapNet, MapTracker) ● ハイブリッド (MapTR, MapTRv2 など) ● Self-Attention 部分の⼯夫はある? ● Decoupled SA (インスタンス間,インスタンス内) (MapTRv2) など ● BEV 特徴との Cross-Attention 部分の⼯夫はある? ● Multi-Point Attention (StreamMapNet) ● Lane Attention (LaneSegNet) など ● 点列の回帰⽅法は? ● relative, absolute おまけ | Online Mapping モデルの鑑賞ポイント

Slide 36

Slide 36 text

36 おまけ | Deform. Attn. とその発展形 MapTR など StreamMapNet, MapTracker クエリの作り⽅ インスタンスクエリと点クエリ のハイブリッド(加算) (回帰時は点クエリとみなせる) 点クエリ 参照点の更新 前の層の予測結果 前の層の予測結果 点の回帰の⽅法 参照点からのオフセットを出⼒ (relative) 原点からの絶対的位置を出⼒ (absolute) これの紹介は省いたが, MapTracker の Cross-Attention モ ジュールは StreamMapNet で提案された Multi-Point Attention を採⽤している. Vanilla な Deform. Attn. (VectorMapNet, TopoNet) インスタンスクエリ (物体検出と同じ) 初期化したもの(更新しない) 参照点からのオフセットを 出⼒ (relative)