Octree-based Sparse Convolutional Neural Networks
Project description
O-CNN
This repository contains the pure PyTorch-based implementation of
O-CNN. The code has been tested with
Pytorch>=1.9.0
.
O-CNN is an octree-based sparse convolutional neural network framework for 3D
deep learning. O-CNN contains the CNN storage and computation into non-empty
sparse voxels for efficiency and uses the octree
data structure to organize
and index these sparse voxels.
The concept of sparse convolution in O-CNN is the same with
H-CNN,
SparseConvNet,
and
MinkowskiNet.
The key difference is that our O-CNN uses the octree
to index the sparse
voxels, while these 3 works use the Hash Table
.
Our O-CNN is published in SIGGRAPH 2017, H-CNN is published in TVCG 2018, SparseConvNet is published in CVPR 2018, and MinkowskiNet is published in CVPR 2019. Therefore, the idea of constraining CNN computation into sparse non-emtpry voxels is first proposed by our O-CNN. Currently, this type of 3D convolution is known as Sparse Convolution in the research community.
Key benefits of ocnn-pytorch
-
Simplicity. The ocnn-pytorch is based on pure PyTorch, it is portable and can be intalled with a simple command:
pip install ocnn
. Other sparse convolution frameworks heavily rely on C++ and CUDA, and it complicated to configure the compiling environment. -
Efficiency. The ocnn-pytorch is very efficient compared with other sparse convolution frameworks. It only takes 18 hours to train the network on ScanNet for 600 epochs with 4 V100 GPUs. For reference, under the same training settings, MinkowskiNet 0.4.3 takes 60 hours and MinkowskiNet 0.5.4 takes 30 hours.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.