• Stars
    star
    130
  • Rank 277,575 (Top 6 %)
  • Language
    Python
  • License
    MIT License
  • Created over 6 years ago
  • Updated almost 5 years ago

Reviews

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

Repository Details

Code for Pointwise Convolutional Neural Networks, CVPR 2018

Pointwise Convolutional Neural Networks

This is the release of the code for the paper `Pointwise Convolutional Neural Networks' in CVPR 2018.

Usage

The code is tested in latest Ubuntu 18.04 LTS with CUDA 9.2 and Tensorflow 1.9.

First, we need to compile the convolution operator as follows:

cd tf_ops/conv3p/
chmod 777 tf_conv3p_compile.sh
./tf_conv3p_compile.sh -a

The result is a dynamic library file named tf_conv3p.so. The Python training and evaluation code loads this library for pointwise convolution. By default, the library contains both a CPU and a GPU implementation of the convolution operator. The use_gpu flag in param.json can be set to true to enable the convolution on the GPU.

To train object classification, execute

python train_modelnet40_acsd.py [epoch]

To evaluate, execute

python eval_modelnet40_acsd.py [epoch] 

By default, epoch is 0 if it is not passed as a parameter to the above command. During training, the network is saved after each epoch. You can resume the training if the network was saved before. Just pass the epoch number to the training command.

Similar code structure is adopted for scene segmentation task. For this task, we also provide a re-implementation of PointNet in PyTorch based on the open source implementation by fxia22.

Training Data

Troubleshooting

If you are using Tensorflow 1.4, you might want to try compiling with tf_conv3p_compile_tf14.sh instead. It fixes some include paths due to nsync_cv.h, and set the flag _GLIBCXX_USE_CXX11_ABI=0 to make it compatible to libraries compiled with GCC version earlier than 5.1.

Performance

As this is a custom convolution operator we built with minimum optimization tricks that we know, you might find it running more slowly than those Tensorflow built-in operators. Despite that, the experiments were done on NVIDIA GTX 1070, GTX 1080, and Titan X (first generation) without big issues.

It will take hours or 1-2 days depending on your setup to finish training for object recognition. For scene segmentation, it might take longer.

Dependencies

This code includes the following third party libraries and data:

  • Scaled exponential linear units (SeLU) for self-normalization in neural network.

  • ModelNet40 data from PointNet

  • Some other utility code from PointNet

  • h5py

Citation

Please cite our paper

@inproceedings{hua-pointwise-cvpr18,
    title = {Pointwise Convolutional Neural Networks},
    author = {Binh-Son Hua and Minh-Khoi Tran and Sai-Kit Yeung},
    booktitle = {Computer Vision and Pattern Recognition (CVPR)},
    year = {2018}
}

if you find this useful for your work.

Future work

We made this simple operator with the hope that existing techniques in 2D image understanding tasks can be brought to 3D in a more straightforward manner. More research along this direction is encouraged.

Please contact the authors at [email protected] if you have any queries.

More Repositories

1

scanobjectnn

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

lcd

[AAAI'20] LCD: Learned Cross-Domain Descriptors for 2D-3D Matching
Python
132
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