Octree-based Sparse Convolutional Neural Networks
Project description
O-CNN
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
and
.
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
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.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbb44189667269975d0427b50a1b14df219ea0ccbdd071f8e50d03b61511dc6b
|
|
| MD5 |
a0ae47bf4599553dbe0cd955492c9dfe
|
|
| BLAKE2b-256 |
bba71fbdf0016ae8ac00fd2bf1486dc6854797db5ac6ad3d2f18be56d09a3f35
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80e442f41dd577df2d638e371a4887505d4d5aff6387e2b311703043b6e9c29d
|
|
| MD5 |
50a9b9348b2dae02e426ed52be5250e1
|
|
| BLAKE2b-256 |
348a95e88a7cc6e83b055446cc66834b03bdce082d0738abc8c8b5982ea7586c
|