Home

Awesome

Implementation of [AAAI'23 Oral] "GLT-T: Global-Local Transformer Voting for 3D Single Object Tracking in Point Clouds"

Introduction

Current 3D single object tracking methods are typically based on VoteNet, a 3D region proposal network. Despite the success, using a single seed point feature as the cue for offset learning in VoteNet prevents high-quality 3D proposals from being generated. Moreover, seed points with different importance are treated equally in the voting process, aggravating this defect. To address these issues, we propose a novel global-local transformer voting scheme to provide more informative cues and guide the model pay more attention on potential seed points, promoting the generation of high-quality 3D proposals. Technically, a global-local transformer (GLT) module is employed to integrate object- and patch-aware prior into seed point features to effectively form strong feature representation for geometric positions of the seed points, thus providing more robust and accurate cues for offset learning. Subsequently, a simple yet effective training strategy is designed to train the GLT module. We develop an importance prediction branch to learn the potential importance of the seed points and treat the output weights vector as a training constraint term. By incorporating the above components together, we exhibit a superior tracking method GLT-T. Extensive experiments on challenging KITTI and NuScenes benchmarks demonstrate that GLT-T achieves state-of-the-art performance in the 3D single object tracking task. Besides, further ablation studies show the advantages of the proposed global-local transformer voting scheme over the original VoteNet.

<img src="docs/Architecture.png" align="center" width="100%">

Please refer to the Paper for more details.

Setup

Installation

KITTI dataset

NuScenes dataset

Note: We following Open3DSOT for dataset setting. More details can be referred to it.

Quick Start

Training

To train a model (e.g., for the Car category), you must specify the .yaml file with --cfg argument.

python3.7 main.py  --cfg ./cfgs/Car_kitti.yaml

You can also use CUDA_VISIBLE_DEVICES to select specific GPUs.

CUDA_VISIBLE_DEVICES=0,1,2,3 python3.7 main.py  --cfg ./cfgs/Car_kitti.yaml

Testing

To test a trained model (e.g., for the Car category), you must load spedific model with --checkpoint and add --test flag.

python3.7 main.py  --cfg ./cfgs/Car_kitti.yaml --checkpoint ./trained_model/Car_kitti.ckpt --test

Visualization

Visualization code is integrated into ./models/base_model.py, you can add --track to specify point cloud sequence.

python3.7 main.py  --cfg ./cfgs/Car_kitti.yaml --checkpoint ./trained_model/Car_kitti.ckpt --test --track 0/1/2...

Citation

If you find GLT-T useful, please consider citing:

@inproceedings{nie2023glt,
  title={GLT-T: Global-Local Transformer Voting for 3D Single Object Tracking in Point Clouds},
  author={Nie, Jiahao and He, Zhiwei and Yang, Yuxiang and Gao, Mingyu and Zhang, Jing},
  booktitle={Proceedings of the AAAI Conference on Artificial Intelligence},
  volume={37},
  number={2},
  pages={1957--1965},
  year={2023}
}

Acknowledgement

This repo builds on the top of Open3DSOT.

Thank shanjiayao for his implementation of PTT, and Jasonkks for his implementation of PTTR.