Skip to main content

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.08.05: Release v2.3.3, this release mainly adds specialized octree convolutions, flexible start_depth construction, a ShapeNet normal-estimation workflow.
  • 2026.05.07: Release v2.3.2, this release focuses on stability, performance, and usability improvements.
  • 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},
}

Metadata

Release files for ocnn 2.3.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ocnn 2.3.3
File Size Uploaded
ocnn-2.3.3.tar.gz 53.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ocnn 2.3.3
File Interpreter ABI Platform
ocnn-2.3.3-py3-none-any.whl Python 3 none any Details

Total release size: 130.4 kB

Release files / ocnn-2.3.3.tar.gz

Download URL ocnn-2.3.3.tar.gz
Size 53.1 kB
Tags Source
SHA-256 checksum
How to use checksums
0d704bc23723e0150f01746fd355bd7beb42b2ad0d060e017e17295994f173f8
BLAKE2b-256 checksum
How to use checksums
5214f7e97fcdc800d33d4d58ae168c422ac83b4cafbc1145edf10d5d56304ebc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / ocnn-2.3.3-py3-none-any.whl

Download URL ocnn-2.3.3-py3-none-any.whl
Size 77.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3a27ecc7972186ccfeab1f76e400c57972726f3d3082b7043bd9068090e45629
BLAKE2b-256 checksum
How to use checksums
218601c8063d2a3aee05aa09da1a0fc4f4aba0fcbbc310a40eba39d7dc6e0e45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

2.3.3 This release

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.8

2 release files

2.2.7

2 release files

2.2.6

2 release files

2.2.5

2 release files

2.2.4

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.9

2 release files

2.1.8

2 release files

2.1.7

2 release files

2.1.6

2 release files

2.1.5

2 release files

2.1.4

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page