https://github.com/woodfrog/maptracker/assets/13405255/1c0e072a-cb77-4000-b81b-5b9fd40f8f39
This repository provides the official implementation of the paper MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping. MapTracker reconstructs temporally consistent vector HD maps, and the local maps can be progressively merged into a global reconstruction.
This repository is built upon StreamMapNet.
This paper presents a vector HD-mapping algorithm that formulates the mapping as a tracking task and uses a history of memory latents to ensure consistent reconstructions over time.
Our method, MapTracker, accumulates a sensor stream into memory buffers of two latent representations: 1) Raster latents in the bird's-eye-view (BEV) space and 2) Vector latents over the road elements (i.e., pedestrian-crossings, lane-dividers, and road-boundaries). The approach borrows the query propagation paradigm from the tracking literature that explicitly associates tracked road elements from the previous frame to the current, while fusing a subset of memory latents selected with distance strides to further enhance temporal consistency. A vector latent is decoded to reconstruct the geometry of a road element.
The paper further makes benchmark contributions by 1) Improving processing code for existing datasets to produce consistent ground truth with temporal alignments and 2) Augmenting existing mAP metrics with consistency checks. MapTracker significantly outperforms existing methods on both nuScenes and Agroverse2 datasets by over 8% and 19% on the conventional and the new consistency-aware metrics, respectively.
(Top) The architecture of MapTracker, consistsing of the BEV and VEC Modules and their memory buffers. (Bottom) The close-up views of the BEV and the vector fusion layers.
The BEV Module takes ConvNet features of onboard perspective images, the BEV memory buffer ${M{\text{BEV}}(t-1), M{\text{BEV}}(t-2),\ ... }$ and vehicle motions ${P^t{t-1}, P^t{t-2},\ ... }$ as input. It propagates the previous BEV memory $M{\text{BEV}}(t-1)$ based on vehicle motion to initialize $M{\text{BEV}}(t)$. In the BEV Memory Fusion layer, $M{\text{BEV}}(t)$ is integrated with selected history BEV memories ${M{\text{BEV}}^{*}(t'), t'\in \pi(t)}$, which is used for semantic segmentation and passed to the VEC Module.
The VEC Module propagates the previous latent vector memory $M{\text{VEC}}(t-1)$ with a PropMLP to initialize the vector queries $M{\text{VEC}}(t)$. In Vector Memory Fusion layer, each propagated $M{\text{VEC}}(t)$ is fused with its selected history vector memories ${M{\text{VEC}}^{*}(t'), t' \in \pi(t)}$. The final vector latents are decoded to reconstruct the road elements.
Please refer to the installation guide to set up the environment.
For how to download and prepare data for the nuScenes and Argoverse2 datasets, as well as downloading our checkpoints, please see the data preparation guide.
For instructions on how to run training, inference, evaluation, and visualization, please follow getting started guide.
We're grateful to the open-source projects below, their great work made our project possible:
If you find MapTracker useful in your research or applications, please consider citing:
@inproceedings{chen2024maptrakcer,
author = {Chen, Jiacheng and Wu, Yuefan and Tan, Jiaqi and Ma, Hang and Furukawa, Yasutaka},
title = {MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping},
journal = {arXiv preprint arXiv:2403.15951},
year = {2024}
}
This project is licensed under GPL, see the license file for details.