Skip to main content

Octree-based Sparse Convolutional Neural Networks

Project description

O-CNN

Documentation

Documentation Status Downloads Downloads PyPI

This repository contains the pure PyTorch-based implementation of O-CNN. The code is compatible with Pytorch>=1.6.0, while Pytorch>=2.8.0 is required for Triton-based convolutions. The original implementation of O-CNN is based on C++ and CUDA and can be found here, which has received stars - O-CNN and forks - O-CNN.

O-CNN is an octree-based 3D convolutional neural network framework for 3D data. O-CNN constrains 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. Currently, this type of 3D convolution is known as Sparse Convolution in the research community.

The concept of Sparse Convolution in O-CNN is the same with SparseConvNet, MinkowskiNet, and SpConv. The key difference is that our O-CNN uses octrees to index the sparse voxels, while these works use Hash Tables. However, I believe that octrees may be the right choice for Sparse Convolution. With octrees, I can implement the Sparse Convolution with pure PyTorch. More importantly, with octrees, I can also build efficient transformers for 3D data -- OctFormer, which is extremely hard with Hash Tables.

Our O-CNN is published in SIGGRAPH 2017, SparseConvNet is published in CVPR 2018, and MinkowskiNet is published in CVPR 2019. Actually, our O-CNN was submitted to SIGGRAPH in the end of 2016 and was officially accepted in March, 2017. We just did not post our paper on Arxiv during the review process of SIGGRAPH. Therefore, the idea of constraining CNN computation into sparse non-emtpry voxels, i.e. Sparse Convolution, is first proposed by our O-CNN.

This library supports point cloud processing from the ground up. The library provides essential components for converting raw point clouds into octrees to perform convolution operations. Of course, it also supports other 3D data formats, such as meshes and volumetric grids, which can be converted into octrees to leverage the library's capabilities.

Updates

  • 2026.02.08: Release v2.3.1, improving the interfaces of octree convolutions and simplifying the triton kernels.
  • 2026.02.02: Release v2.3.0, incorporating Triton to accelerate octree-based sparse convolution, resulting in a performance boost of up to 2.5 times faster than the latest spconv!
  • 2025.12.18: Release v2.2.8, improving neighbor search efficiency.

Key Benefits

  • Simplicity. The ocnn-pytorch is based on pure PyTorch, it is portable and can be installed with a simple command:pip install ocnn. Other sparse convolution frameworks heavily rely on C++ and CUDA, and it is complicated to configure the compiling environment.

  • Efficiency. The ocnn-pytorch is very efficient compared with other sparse convolution frameworks. It is even 2.5 times faster than the latest spconv implementation! Check the benchmark code and results for details. ✨

Citation

@article {Wang-2017-ocnn,
  title    = {{O-CNN}: Octree-based Convolutional Neural Networksfor {3D} Shape Analysis},
  author   = {Wang, Peng-Shuai and Liu, Yang and Guo, Yu-Xiao and Sun, Chun-Yu and Tong, Xin},
  journal  = {ACM Transactions on Graphics (SIGGRAPH)},
  volume   = {36},
  number   = {4},
  year     = {2017},
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ocnn-2.3.1.tar.gz (49.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ocnn-2.3.1-py3-none-any.whl (73.2 kB view details)

Uploaded Python 3

File details

Details for the file ocnn-2.3.1.tar.gz.

File metadata

  • Download URL: ocnn-2.3.1.tar.gz
  • Upload date:
  • Size: 49.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for ocnn-2.3.1.tar.gz
Algorithm Hash digest
SHA256 cbb44189667269975d0427b50a1b14df219ea0ccbdd071f8e50d03b61511dc6b
MD5 a0ae47bf4599553dbe0cd955492c9dfe
BLAKE2b-256 bba71fbdf0016ae8ac00fd2bf1486dc6854797db5ac6ad3d2f18be56d09a3f35

See more details on using hashes here.

File details

Details for the file ocnn-2.3.1-py3-none-any.whl.

File metadata

  • Download URL: ocnn-2.3.1-py3-none-any.whl
  • Upload date:
  • Size: 73.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for ocnn-2.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 80e442f41dd577df2d638e371a4887505d4d5aff6387e2b311703043b6e9c29d
MD5 50a9b9348b2dae02e426ed52be5250e1
BLAKE2b-256 348a95e88a7cc6e83b055446cc66834b03bdce082d0738abc8c8b5982ea7586c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page