• Stars
    star
    231
  • Rank 173,434 (Top 4 %)
  • Language
    Python
  • License
    MIT License
  • Created over 5 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Code for Revisiting Point Cloud Classification: A New Benchmark Dataset and Classification Model on Real-World Data, ICCV 2019

Revisiting Point Cloud Classification: A New Benchmark Dataset and Classification Model on Real-World Data

Revisiting Point Cloud Classification: A New Benchmark Dataset and Classification Model on Real-World Data

Mikaela Angelina Uy, Quang-Hieu Pham, Binh-Son Hua, Duc Thanh Nguyen and Sai-Kit Yeung

ICCV 2019 Oral Presentation

pic-network

Introduction

This work revisits the problem of point cloud classification but on real world scans as opposed to synthetic models such as ModelNet40 that were studied in other recent works. We introduce ScanObjectNN, a new benchmark dataset containing ~15,000 object that are categorized into 15 categories with 2902 unique object instances. The raw objects are represented by a list of points with global and local coordinates, normals, colors attributes and semantic labels. We also provide part annotations, which to the best of our knowledge is the first on real-world data. From our comprehensive benchmark, we show that our dataset poses great challenges to existing point cloud classification techniques as objects from real-world scans are often cluttered with background and/or are partial due to occlusions. Our project page can be found here, and the arXiv version of our paper can be found here.

@inproceedings{uy-scanobjectnn-iccv19,
      title = {Revisiting Point Cloud Classification: A New Benchmark Dataset and Classification Model on Real-World Data},
      author = {Mikaela Angelina Uy and Quang-Hieu Pham and Binh-Son Hua and Duc Thanh Nguyen and Sai-Kit Yeung},
      booktitle = {International Conference on Computer Vision (ICCV)},
      year = {2019}
  }

ScanObjectNN Dataset

We provide different variants of our scan dataset namely: OBJ_BG, PB_T25, PB_T25_R, PB_T50_R and PB_T50_RS as described in our paper. We released both the processed .h5 files and the raw .bin objects as described below.

h5 files

  • Download the h5_files.zipped to obtained all the h5 files. Main split was used for the experiments in the main paper, while splits 1-4 are the additional training/test splits reported in our supplementary material.
  • The pre-processed h5 files can be directly used by deep learning frameworks, containing fields:
    1. data: Nx3 point cloud
    2. label: class label
    3. mask: indicator whether each point is part of the object instance or the background.
  • Each object contained 2048 points, where each point is represented by its x, y, z coordinates.
  • We first ensured that a data sample had at least 2048 object instance points (excluding the background) before 2048 points were randomly selected (including the background points) and included into the h5 file. For the *_nobg h5 files, background points were first filtered out before the random selection.
  • Naming convention: Prefixes are training_* and test_* for training set and test set, respectively.
    • OBJ_BG / OBJ_ONLY: *objectdataset.h5
    • PB_T25: *objectdataset_augmented25_norot.h5
    • PB_T25_R: *objectdataset_augmented25rot.h5
    • PB_T50_R: *objectdataset_augmentedrot.h5
    • PB_T50_RS: *objectdataset_augmentedrot_scale75.h5

Raw files

We release all the raw object files of our ScanObjectNN dataset including all its variants.

  • To obtain the files, download the zipped files of each corresponding variant. object_dataset.zip refers to the unaugmented variant (OBJ_BG).
  • The list of all objects can be found at training_data/object_labels.txt. The format per line is (separated by '\t'):
    scene_folder    object_id    object_class    object_instance_label
    
  • The object .bin files are located at [object_class]/[scene_folder]_[object_id].bin in the dataset folder.
  • Each .bin file is a series of float32. The first float represents the total number of points in the object instance. Then every succeeding set of 11 floats represent the attributes of each point. (ie if there are m points in the point cloud, then there are (11m + 1) floats in the .bin file)
  • The attributes of each point are listed in the following order:
    x    y    z    nx    ny    nz    r    g    b    instance_label    semantic_label
    
  • We generated training and test split files located in training_data/, where 't' in each line of the text file indicates that the object is part of the test split.

Parts:

  • V0 of the raw files with complete parts can be found in object_dataset_complete_with_parts.zip. Corresponding part labels can be found in the xml files located in training_data/part_labels/.

Code

Installation

Pre-requisites:

  • python
  • cuda
  • tensorflow
  • h5py
  • scipy
  • sklearn

This code has been tested with Python 3.5, Tensorflow 1.10 and CUDA 9.0 on Ubuntu 16.04. Please follow instructions in PointNet++ to compile tf_ops in pointnet2/ and SpiderCNN/ subfolders.

Usage

Training

To train the benchmark classification models, run the following commands:

cd [method_folder]
python train.py

To see optional arguments, run:

cd [method_folder]
python train.py -h

To train using our BGA models, run:

cd [dgcnn or pointnet2]
python train_seg.py

The model files are pointnet2_cls_bga.py and dgcnn_bga.py.

Evaluation

To evaluate the benchmark classification models, run the following commands:

cd [method_folder]
python evaluate_scenennobjects.py

To evaluate our BGA models, run:

cd [dgcnn or pointnet2]
python evaluate_seg_scenennobjects.py

Generalization of real vs synthetic

To evaluate on ScanObjectNN when trained on ModelNet, run:

cd [method_folder]
python evaluate_real_trained_on_synthetic.py

To evaluate on ModelNet when trained on ScanObjectNN, run:

cd [method_folder]
python evaluate_synthetic_trained_on_real.py

The class mapping file can be found at mapping2.py, details can be found in our supplementary material. Before running these experiments, please make sure you have the trained model files and a single .h5 file for the ModelNet data. The arguments need to be specified accordingly.

Pre-trained Models

Pre-trained models can be downloaded here.

FAQ

Some commonly asked questions regarding our dataset and project can be found here. For any other inquiries, feel free to post a github issue.

References

Our released code heavily based on each methods original repositories as cited below:

License

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

More Repositories

1

lcd

[AAAI'20] LCD: Learned Cross-Domain Descriptors for 2D-3D Matching
Python
132
star
2

pointwise

Code for Pointwise Convolutional Neural Networks, CVPR 2018
Python
130
star
3

shellnet

ShellNet: Efficient Point Cloud Convolutional Neural Networks using Concentric Shells Statistics
Python
87
star
4

scenenn

Supplemental code and scripts for the paper SceneNN: A Scene Meshes Dataset with aNNotations
C++
72
star
5

riconv

Rotation Invariant Convolutions for 3D Point Clouds Deep Learning
Python
57
star
6

sese

A 3D scene mesh annotation tool
51
star
7

architectural_style_transfer

Code and data release for ICCP 2022 paper "Time-of-Day Neural Style Transfer for Architectural Photographs".
Python
35
star
8

shrec17

Supplementary code for SHREC 2017 RGB-D Object-to-CAD Retrieval track
Python
29
star
9

MarineGPT

The official implementation of MarineGPT
Python
24
star
10

RFNet-4D

Code release for ECCV 2022 paper "RFNet-4D: Joint Object Reconstruction and Flow Estimation from 4D Point Clouds"
Python
22
star
11

ElasticReconstruction

Code for RGBD reconstruction. Modified from the code from http://redwood-data.org/indoor/pipeline.html
C++
18
star
12

neural_scene_decoration

Code release for ECCV 2022 paper "Neural Scene Decoration from a Single Photograph"
Python
8
star
13

minimal_adversarial_pcd

Minimal Adversarial Examples for Deep Learning on 3D Point Clouds (ICCV 2021)
Python
5
star
14

Salt-Video

The labeling tool for dense video object segmentation
Python
5
star
15

nerfstyle

Source code for the paper "Locally Stylized Neural Radiance Fields"
Python
4
star
16

Marine_GPT-4V_Eval

The official repository of "Exploring Boundary of GPT-4V on Marine Analysis: A Preliminary Case Study".
4
star
17

shrec18

Supplementary code for SHREC 2018 RGB-D Object-to-CAD Retrieval track
Python
2
star
18

hkust-vgd.github.io

JavaScript
2
star
19

CoralSCOP

The official repository of "CoralSCOP: Segment any COral Image on this Planet". CVPR 2024
HTML
2
star
20

TTA

JavaScript
1
star
21

marinevideokit

1
star
22

CamoVidDataset

The official repository of "A Large-Scale Video Dataset for Moving Camouflaged Animals Understanding"
JavaScript
1
star