Skip to content

Latest commit

 

History

History
32 lines (22 loc) · 1.98 KB

README.md

File metadata and controls

32 lines (22 loc) · 1.98 KB

Two-stage 3D-object-recognition

Linlin Li, Jiawei Chen

This repo is a PyTorch implementation for two-stage PointConv for Classification on Point Clouds adapting from PointConv(https://arxiv.org/abs/1811.07246). Our code skeleton is borrowed from DylanWusee/pointconv_pytorch.

Nonnegligible differences in the prediction accuracy of different objects are reported in 3D object classification. For example, Garcia et al (https://ieeexplore.ieee.org/document/7727386) realized that classifiers, especially those CNN-based classifiers, were confused on objects that look alike, such as desk and table. Due to the nature of the CNNs, which is heavily dependent on the combinations of features, this type of errors are common. Rather than directly training a classifier to distinguish between all classes of objects, a two-stage classifier is proposed to improve prediction accuracy, especially for objects with similar appearance.

Installation

The code is modified from repo PointConv_pytorch. Please install PyTorch, pandas, and sklearn. The code has been tested with Python 3.7, pytorch 1.6, CUDA 10.2.

Usage

ModelNet40 Classification

Download the ModelNet40 dataset from here. This dataset is the same one used in PointNet, thanks to Charles Qi. Copy the unziped dataset to ./data/ModelNet. Data Source: https://modelnet.cs.princeton.edu. And then run data/ModelNet/data_preprocessing.ipynb to process and prepare data.

To train the K-1 classifier,

python kb1_train_cls_conv.py

To train the binary classifier,

python b_train_cls_conv.py

To evaluate the two-stage classifier,

python k_eval_cls_conv.py --checkpoint=/path/to/checkpoint