All Projects → mikacuy → Pointnetvlad

mikacuy / Pointnetvlad

Licence: mit
PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place Recognition, CVPR 2018

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Pointnetvlad

Dss
Differentiable Surface Splatting
Stars: ✭ 175 (-21.87%)
Mutual labels:  point-cloud
Orb Slam2 with semantic label
orb-slam2 with semantic label
Stars: ✭ 186 (-16.96%)
Mutual labels:  point-cloud
Samplenet
Differentiable Point Cloud Sampling (CVPR 2020 Oral)
Stars: ✭ 212 (-5.36%)
Mutual labels:  point-cloud
Vision3d
Research platform for 3D object detection in PyTorch.
Stars: ✭ 177 (-20.98%)
Mutual labels:  point-cloud
3d Pointcloud
Papers and Datasets about Point Cloud.
Stars: ✭ 179 (-20.09%)
Mutual labels:  point-cloud
Point Transformer Pytorch
Implementation of the Point Transformer layer, in Pytorch
Stars: ✭ 199 (-11.16%)
Mutual labels:  point-cloud
Dbnet
DBNet: A Large-Scale Dataset for Driving Behavior Learning, CVPR 2018
Stars: ✭ 172 (-23.21%)
Mutual labels:  point-cloud
Kitti Dataset
Visualising LIDAR data from KITTI dataset.
Stars: ✭ 217 (-3.12%)
Mutual labels:  point-cloud
3dgnn pytorch
3D Graph Neural Networks for RGBD Semantic Segmentation
Stars: ✭ 187 (-16.52%)
Mutual labels:  point-cloud
Liblas
C++ library and programs for reading and writing ASPRS LAS format with LiDAR data
Stars: ✭ 211 (-5.8%)
Mutual labels:  point-cloud
Displaz
A hackable lidar viewer
Stars: ✭ 177 (-20.98%)
Mutual labels:  point-cloud
Cloud annotation tool
L-CAS 3D Point Cloud Annotation Tool
Stars: ✭ 182 (-18.75%)
Mutual labels:  point-cloud
Frustum Convnet
The PyTorch Implementation of F-ConvNet for 3D Object Detection
Stars: ✭ 203 (-9.37%)
Mutual labels:  point-cloud
Meshlab
The open source mesh processing system
Stars: ✭ 2,619 (+1069.2%)
Mutual labels:  point-cloud
Pclpy
Python bindings for the Point Cloud Library (PCL)
Stars: ✭ 212 (-5.36%)
Mutual labels:  point-cloud
Torchsparse
A high-performance neural network library for point cloud processing.
Stars: ✭ 173 (-22.77%)
Mutual labels:  point-cloud
Msn Point Cloud Completion
Morphing and Sampling Network for Dense Point Cloud Completion (AAAI2020)
Stars: ✭ 196 (-12.5%)
Mutual labels:  point-cloud
Point Cloud Annotation Tool
Stars: ✭ 224 (+0%)
Mutual labels:  point-cloud
Cgal
The public CGAL repository, see the README below
Stars: ✭ 2,825 (+1161.16%)
Mutual labels:  point-cloud
Graph Cnn In 3d Point Cloud Classification
Code for A GRAPH-CNN FOR 3D POINT CLOUD CLASSIFICATION (ICASSP 2018)
Stars: ✭ 206 (-8.04%)
Mutual labels:  point-cloud

PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place Recognition

PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place Recognition CVPR 2018, Salt Lake City, USA

Mikaela Angelina Uy and Gim Hee Lee

National University of Singapore

pic-network

Introduction

The PointNetVLAD is a deep network that addresses the problem of large-scale place recognition through point cloud based retrieval. The arXiv version of PointNetVLAD can be found here.

@inproceedings{uy2018pointnetvlad,
      title={PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place Recognition},
      author={Uy, Mikaela Angelina and Lee, Gim Hee},
      booktitle={The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
      year={2018}
}

Benchmark Datasets

The benchmark datasets introdruced in this work can be downloaded here.

  • All submaps are in binary file format
  • Ground truth GPS coordinate of the submaps are found in the corresponding csv files for each run
  • Filename of the submaps are their timestamps which is consistent with the timestamps in the csv files
  • Use CSV files to define positive and negative point clouds
  • All submaps are preprocessed with the road removed and downsampled to 4096 points

Oxford Dataset

  • 45 sets in total of full and partial runs
  • Used both full and partial runs for training but only used full runs for testing/inference
  • Training submaps are found in the folder "pointcloud_20m_10overlap/" and its corresponding csv file is "pointcloud_locations_20m_10overlap.csv"
  • Training submaps are not mutually disjoint per run
  • Each training submap ~20m of car trajectory and subsequent submaps are ~10m apart
  • Test/Inference submaps found in the folder "pointcloud_20m/" and its corresponding csv file is "pointcloud_locations_20m.csv"
  • Test/Inference submaps are mutually disjoint

NUS (Inhouse) Datasets

  • Each inhouse dataset has 5 runs
  • Training submaps are found in the folder "pointcloud_25m_10/" and its corresponding csv file is "pointcloud_centroids_10.csv"
  • Test/Infenrence submaps are found in the folder "pointcloud_25m_25/" and its corresponding csv file is "pointcloud_centroids_25.csv"
  • Training submaps are not mutually disjoint per run but test submaps are

Project Code

Pre-requisites

  • Python
  • CUDA
  • Tensorflow
  • Scipy
  • Pandas
  • Sklearn

Code was tested using Python 3 on Tensorflow 1.4.0 with CUDA 8.0

sudo apt-get install python3-pip python3-dev python-virtualenv
virtualenv --system-site-packages -p python3 ~/tensorflow
source ~/tensorflow/bin/activate
easy_install -U pip
pip3 install --upgrade tensorflow-gpu==1.4.0
pip install scipy, pandas, sklearn

Dataset set-up

Download the zip file of the benchmark datasets found here. Extract the folder on the same directory as the project code. Thus, on that directory you must have two folders: 1) benchmark_datasets/ and 2) pointnetvlad/

Generate pickle files

We store the positive and negative point clouds to each anchor on pickle files that are used in our training and evaluation codes. The files only need to be generated once. The generation of these files may take a few minutes.

cd generating_queries/ 

# For training tuples in our baseline network
python generate_training_tuples_baseline.py

# For training tuples in our refined network
python generate_training_tuples_refine.py

# For network evaluation
python generate_test_sets.py

Model Training and Evaluation

To train our network, run the following command:

python train_pointnetvlad.py

To evaluate the model, run the following command:

python evaluate.py

Pre-trained Models

The pre-trained models for both the baseline and refined networks can be downloaded here

Submap generation

Added the rough MATLAB code that was used for submap generation upon requests. Some functions are gotten from the toolbox of Oxford Robotcar.

Some clarification: The voxel grid filter was used to downsample the cloud to 4096, which was done by selecting a leaf size that initially downsamples the cloud close to 4096 points, after which we randomly add points to make the cloud have exactly 4096 points. Please feel free to send me an email ([email protected]) for any further questions.

License

This repository is released under MIT License (see LICENSE file for details).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].