ocnn 2.2.7__tar.gz → 2.2.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ocnn-2.2.7 → ocnn-2.2.8}/LICENSE +21 -21
- {ocnn-2.2.7 → ocnn-2.2.8}/MANIFEST.in +1 -1
- {ocnn-2.2.7/ocnn.egg-info → ocnn-2.2.8}/PKG-INFO +111 -112
- {ocnn-2.2.7 → ocnn-2.2.8}/README.md +82 -82
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/__init__.py +24 -24
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/dataset.py +160 -160
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/models/__init__.py +29 -29
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/models/autoencoder.py +155 -155
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/models/hrnet.py +192 -192
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/models/image2shape.py +128 -128
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/models/lenet.py +46 -46
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/models/ounet.py +94 -94
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/models/resnet.py +53 -53
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/models/segnet.py +72 -72
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/models/unet.py +105 -105
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/modules/__init__.py +26 -26
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/modules/modules.py +303 -303
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/modules/resblocks.py +158 -158
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/nn/__init__.py +44 -44
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/nn/octree2col.py +53 -53
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/nn/octree2vox.py +50 -50
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/nn/octree_align.py +46 -46
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/nn/octree_conv.py +429 -429
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/nn/octree_drop.py +55 -55
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/nn/octree_dwconv.py +222 -222
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/nn/octree_gconv.py +79 -79
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/nn/octree_interp.py +196 -196
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/nn/octree_norm.py +126 -126
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/nn/octree_pad.py +39 -39
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/nn/octree_pool.py +200 -200
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/octree/__init__.py +22 -22
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/octree/octree.py +770 -661
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/octree/points.py +323 -323
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/octree/shuffled_key.py +115 -115
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn/utils.py +205 -205
- {ocnn-2.2.7 → ocnn-2.2.8/ocnn.egg-info}/PKG-INFO +111 -112
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn.egg-info/not-zip-safe +1 -1
- {ocnn-2.2.7 → ocnn-2.2.8}/setup.cfg +9 -9
- {ocnn-2.2.7 → ocnn-2.2.8}/setup.py +35 -35
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn.egg-info/SOURCES.txt +0 -0
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn.egg-info/dependency_links.txt +0 -0
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn.egg-info/requires.txt +0 -0
- {ocnn-2.2.7 → ocnn-2.2.8}/ocnn.egg-info/top_level.txt +0 -0
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2022 Peng-Shuai Wang <wangps@hotmail.com>
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
|
13
|
-
all copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
-
THE SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 Peng-Shuai Wang <wangps@hotmail.com>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
recursive-exclude test *
|
|
1
|
+
recursive-exclude test *
|
|
@@ -1,112 +1,111 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: ocnn
|
|
3
|
-
Version: 2.2.
|
|
4
|
-
Summary: Octree-based Sparse Convolutional Neural Networks
|
|
5
|
-
Home-page: https://github.com/octree-nn/ocnn-pytorch
|
|
6
|
-
Author: Peng-Shuai Wang
|
|
7
|
-
Author-email: wangps@hotmail.com
|
|
8
|
-
License: MIT
|
|
9
|
-
Classifier: Programming Language :: Python :: 3
|
|
10
|
-
Classifier:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Requires-Dist:
|
|
16
|
-
Requires-Dist:
|
|
17
|
-
Requires-Dist:
|
|
18
|
-
|
|
19
|
-
Dynamic: author
|
|
20
|
-
Dynamic:
|
|
21
|
-
Dynamic:
|
|
22
|
-
Dynamic: description
|
|
23
|
-
Dynamic:
|
|
24
|
-
Dynamic:
|
|
25
|
-
Dynamic: license
|
|
26
|
-
Dynamic:
|
|
27
|
-
Dynamic: requires-
|
|
28
|
-
Dynamic:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
[](https://pepy.tech/project/ocnn)
|
|
37
|
-
[**
|
|
33
|
+
|
|
34
|
+
[](https://ocnn-pytorch.readthedocs.io/en/latest/?badge=latest)
|
|
35
|
+
[](https://pepy.tech/project/ocnn)
|
|
36
|
+
[](https://pepy.tech/project/ocnn)
|
|
37
|
+
[](https://pypi.org/project/ocnn/)
|
|
38
|
+
|
|
39
|
+
This repository contains the **pure PyTorch**-based implementation of
|
|
40
|
+
[O-CNN](https://wang-ps.github.io/O-CNN.html). The code has been tested with
|
|
41
|
+
`Pytorch>=1.6.0`, and `Pytorch>=1.9.0` is preferred. The *original*
|
|
42
|
+
implementation of O-CNN is based on C++ and CUDA and can be found
|
|
43
|
+
[here](https://github.com/Microsoft/O-CNN), which has received
|
|
44
|
+
[](https://github.com/microsoft/O-CNN) and
|
|
45
|
+
[](https://github.com/microsoft/O-CNN).
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
O-CNN is an octree-based 3D convolutional neural network framework for 3D data.
|
|
49
|
+
O-CNN constrains the CNN storage and computation into non-empty sparse voxels
|
|
50
|
+
for efficiency and uses the `octree` data structure to organize and index these
|
|
51
|
+
sparse voxels. Currently, this type of 3D convolution is known as Sparse
|
|
52
|
+
Convolution in the research community.
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
The concept of Sparse Convolution in O-CNN is the same with
|
|
56
|
+
[SparseConvNet](https://openaccess.thecvf.com/content_cvpr_2018/papers/Graham_3D_Semantic_Segmentation_CVPR_2018_paper.pdf),
|
|
57
|
+
[MinkowskiNet](https://github.com/NVIDIA/MinkowskiEngine), and
|
|
58
|
+
[SpConv](https://github.com/traveller59/spconv).
|
|
59
|
+
The key difference is that our O-CNN uses `octrees` to index the sparse voxels,
|
|
60
|
+
while these works use `Hash Tables`. However, I believe that `octrees` may be
|
|
61
|
+
the right choice for Sparse Convolution. With `octrees`, I can implement the
|
|
62
|
+
Sparse Convolution with pure PyTorch. More importantly, with `octrees`, I can
|
|
63
|
+
also build efficient transformers for 3D data --
|
|
64
|
+
[OctFormer](https://github.com/octree-nn/octformer), which is extremely hard
|
|
65
|
+
with `Hash Tables`.
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
Our O-CNN is published in SIGGRAPH 2017, SparseConvNet is published in CVPR
|
|
69
|
+
2018, and MinkowskiNet is published in CVPR 2019. Actually, our O-CNN was
|
|
70
|
+
submitted to SIGGRAPH in the end of 2016 and was officially accepted in March,
|
|
71
|
+
2017. <!-- The camera-ready version of our O-CNN was submitted to SIGGRAPH in April, 2018. -->
|
|
72
|
+
We just did not post our paper on Arxiv during the review process of SIGGRAPH.
|
|
73
|
+
Therefore, **the idea of constraining CNN computation into sparse non-emtpry
|
|
74
|
+
voxels, i.e. Sparse Convolution, is first proposed by our O-CNN**.
|
|
75
|
+
|
|
76
|
+
<!--
|
|
77
|
+
Developed in collaboration with authors from [PointCNN](https://arxiv.org/abs/1801.07791),
|
|
78
|
+
[Dr. Yangyan Li](https://yangyan.li/) and [Prof. Baoquan Chen](https://baoquanchen.info/),
|
|
79
|
+
-->
|
|
80
|
+
This library supports point cloud processing from the ground up.
|
|
81
|
+
The library provides essential components for converting raw point clouds into
|
|
82
|
+
octrees to perform convolution operations. Of course, it also supports other 3D
|
|
83
|
+
data formats, such as meshes and volumetric grids, which can be converted into
|
|
84
|
+
octrees to leverage the library's capabilities.
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
## Key benefits of ocnn-pytorch
|
|
88
|
+
|
|
89
|
+
- **Simplicity**. The ocnn-pytorch is based on pure PyTorch, it is portable and
|
|
90
|
+
can be installed with a simple command:`pip install ocnn`. Other sparse
|
|
91
|
+
convolution frameworks heavily rely on C++ and CUDA, and it is complicated to
|
|
92
|
+
configure the compiling environment.
|
|
93
|
+
|
|
94
|
+
- **Efficiency**. The ocnn-pytorch is very efficient compared with other sparse
|
|
95
|
+
convolution frameworks. It only takes 18 hours to train the network on
|
|
96
|
+
ScanNet for 600 epochs with 4 V100 GPUs. For reference, under the same
|
|
97
|
+
training settings, MinkowskiNet 0.4.3 takes 60 hours and MinkowskiNet 0.5.4
|
|
98
|
+
takes 30 hours.
|
|
99
|
+
|
|
100
|
+
## Citation
|
|
101
|
+
|
|
102
|
+
```bibtex
|
|
103
|
+
@article {Wang-2017-ocnn,
|
|
104
|
+
title = {{O-CNN}: Octree-based Convolutional Neural Networksfor {3D} Shape Analysis},
|
|
105
|
+
author = {Wang, Peng-Shuai and Liu, Yang and Guo, Yu-Xiao and Sun, Chun-Yu and Tong, Xin},
|
|
106
|
+
journal = {ACM Transactions on Graphics (SIGGRAPH)},
|
|
107
|
+
volume = {36},
|
|
108
|
+
number = {4},
|
|
109
|
+
year = {2017},
|
|
110
|
+
}
|
|
111
|
+
```
|
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
# O-CNN
|
|
2
|
-
|
|
3
|
-
**[Documentation](https://ocnn-pytorch.readthedocs.io)**
|
|
4
|
-
|
|
5
|
-
[](https://ocnn-pytorch.readthedocs.io/en/latest/?badge=latest)
|
|
6
|
-
[](https://pepy.tech/project/ocnn)
|
|
7
|
-
[](https://pepy.tech/project/ocnn)
|
|
8
|
-
[](https://pypi.org/project/ocnn/)
|
|
9
|
-
|
|
10
|
-
This repository contains the **pure PyTorch**-based implementation of
|
|
11
|
-
[O-CNN](https://wang-ps.github.io/O-CNN.html). The code has been tested with
|
|
12
|
-
`Pytorch>=1.6.0`, and `Pytorch>=1.9.0` is preferred. The *original*
|
|
13
|
-
implementation of O-CNN is based on C++ and CUDA and can be found
|
|
14
|
-
[here](https://github.com/Microsoft/O-CNN), which has received
|
|
15
|
-
[](https://github.com/microsoft/O-CNN) and
|
|
16
|
-
[](https://github.com/microsoft/O-CNN).
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
O-CNN is an octree-based 3D convolutional neural network framework for 3D data.
|
|
20
|
-
O-CNN constrains the CNN storage and computation into non-empty sparse voxels
|
|
21
|
-
for efficiency and uses the `octree` data structure to organize and index these
|
|
22
|
-
sparse voxels. Currently, this type of 3D convolution is known as Sparse
|
|
23
|
-
Convolution in the research community.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
The concept of Sparse Convolution in O-CNN is the same with
|
|
27
|
-
[SparseConvNet](https://openaccess.thecvf.com/content_cvpr_2018/papers/Graham_3D_Semantic_Segmentation_CVPR_2018_paper.pdf),
|
|
28
|
-
[MinkowskiNet](https://github.com/NVIDIA/MinkowskiEngine), and
|
|
29
|
-
[SpConv](https://github.com/traveller59/spconv).
|
|
30
|
-
The key difference is that our O-CNN uses `octrees` to index the sparse voxels,
|
|
31
|
-
while these works use `Hash Tables`. However, I believe that `octrees` may be
|
|
32
|
-
the right choice for Sparse Convolution. With `octrees`, I can implement the
|
|
33
|
-
Sparse Convolution with pure PyTorch. More importantly, with `octrees`, I can
|
|
34
|
-
also build efficient transformers for 3D data --
|
|
35
|
-
[OctFormer](https://github.com/octree-nn/octformer), which is extremely hard
|
|
36
|
-
with `Hash Tables`.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Our O-CNN is published in SIGGRAPH 2017, SparseConvNet is published in CVPR
|
|
40
|
-
2018, and MinkowskiNet is published in CVPR 2019. Actually, our O-CNN was
|
|
41
|
-
submitted to SIGGRAPH in the end of 2016 and was officially accepted in March,
|
|
42
|
-
2017. <!-- The camera-ready version of our O-CNN was submitted to SIGGRAPH in April, 2018. -->
|
|
43
|
-
We just did not post our paper on Arxiv during the review process of SIGGRAPH.
|
|
44
|
-
Therefore, **the idea of constraining CNN computation into sparse non-emtpry
|
|
45
|
-
voxels, i.e. Sparse Convolution, is first proposed by our O-CNN**.
|
|
46
|
-
|
|
47
|
-
<!--
|
|
48
|
-
Developed in collaboration with authors from [PointCNN](https://arxiv.org/abs/1801.07791),
|
|
49
|
-
[Dr. Yangyan Li](https://yangyan.li/) and [Prof. Baoquan Chen](https://baoquanchen.info/),
|
|
50
|
-
-->
|
|
51
|
-
This library supports point cloud processing from the ground up.
|
|
52
|
-
The library provides essential components for converting raw point clouds into
|
|
53
|
-
octrees to perform convolution operations. Of course, it also supports other 3D
|
|
54
|
-
data formats, such as meshes and volumetric grids, which can be converted into
|
|
55
|
-
octrees to leverage the library's capabilities.
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
## Key benefits of ocnn-pytorch
|
|
59
|
-
|
|
60
|
-
- **Simplicity**. The ocnn-pytorch is based on pure PyTorch, it is portable and
|
|
61
|
-
can be installed with a simple command:`pip install ocnn`. Other sparse
|
|
62
|
-
convolution frameworks heavily rely on C++ and CUDA, and it is complicated to
|
|
63
|
-
configure the compiling environment.
|
|
64
|
-
|
|
65
|
-
- **Efficiency**. The ocnn-pytorch is very efficient compared with other sparse
|
|
66
|
-
convolution frameworks. It only takes 18 hours to train the network on
|
|
67
|
-
ScanNet for 600 epochs with 4 V100 GPUs. For reference, under the same
|
|
68
|
-
training settings, MinkowskiNet 0.4.3 takes 60 hours and MinkowskiNet 0.5.4
|
|
69
|
-
takes 30 hours.
|
|
70
|
-
|
|
71
|
-
## Citation
|
|
72
|
-
|
|
73
|
-
```bibtex
|
|
74
|
-
@article {Wang-2017-ocnn,
|
|
75
|
-
title = {{O-CNN}: Octree-based Convolutional Neural Networksfor {3D} Shape Analysis},
|
|
76
|
-
author = {Wang, Peng-Shuai and Liu, Yang and Guo, Yu-Xiao and Sun, Chun-Yu and Tong, Xin},
|
|
77
|
-
journal = {ACM Transactions on Graphics (SIGGRAPH)},
|
|
78
|
-
volume = {36},
|
|
79
|
-
number = {4},
|
|
80
|
-
year = {2017},
|
|
81
|
-
}
|
|
82
|
-
```
|
|
1
|
+
# O-CNN
|
|
2
|
+
|
|
3
|
+
**[Documentation](https://ocnn-pytorch.readthedocs.io)**
|
|
4
|
+
|
|
5
|
+
[](https://ocnn-pytorch.readthedocs.io/en/latest/?badge=latest)
|
|
6
|
+
[](https://pepy.tech/project/ocnn)
|
|
7
|
+
[](https://pepy.tech/project/ocnn)
|
|
8
|
+
[](https://pypi.org/project/ocnn/)
|
|
9
|
+
|
|
10
|
+
This repository contains the **pure PyTorch**-based implementation of
|
|
11
|
+
[O-CNN](https://wang-ps.github.io/O-CNN.html). The code has been tested with
|
|
12
|
+
`Pytorch>=1.6.0`, and `Pytorch>=1.9.0` is preferred. The *original*
|
|
13
|
+
implementation of O-CNN is based on C++ and CUDA and can be found
|
|
14
|
+
[here](https://github.com/Microsoft/O-CNN), which has received
|
|
15
|
+
[](https://github.com/microsoft/O-CNN) and
|
|
16
|
+
[](https://github.com/microsoft/O-CNN).
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
O-CNN is an octree-based 3D convolutional neural network framework for 3D data.
|
|
20
|
+
O-CNN constrains the CNN storage and computation into non-empty sparse voxels
|
|
21
|
+
for efficiency and uses the `octree` data structure to organize and index these
|
|
22
|
+
sparse voxels. Currently, this type of 3D convolution is known as Sparse
|
|
23
|
+
Convolution in the research community.
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
The concept of Sparse Convolution in O-CNN is the same with
|
|
27
|
+
[SparseConvNet](https://openaccess.thecvf.com/content_cvpr_2018/papers/Graham_3D_Semantic_Segmentation_CVPR_2018_paper.pdf),
|
|
28
|
+
[MinkowskiNet](https://github.com/NVIDIA/MinkowskiEngine), and
|
|
29
|
+
[SpConv](https://github.com/traveller59/spconv).
|
|
30
|
+
The key difference is that our O-CNN uses `octrees` to index the sparse voxels,
|
|
31
|
+
while these works use `Hash Tables`. However, I believe that `octrees` may be
|
|
32
|
+
the right choice for Sparse Convolution. With `octrees`, I can implement the
|
|
33
|
+
Sparse Convolution with pure PyTorch. More importantly, with `octrees`, I can
|
|
34
|
+
also build efficient transformers for 3D data --
|
|
35
|
+
[OctFormer](https://github.com/octree-nn/octformer), which is extremely hard
|
|
36
|
+
with `Hash Tables`.
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
Our O-CNN is published in SIGGRAPH 2017, SparseConvNet is published in CVPR
|
|
40
|
+
2018, and MinkowskiNet is published in CVPR 2019. Actually, our O-CNN was
|
|
41
|
+
submitted to SIGGRAPH in the end of 2016 and was officially accepted in March,
|
|
42
|
+
2017. <!-- The camera-ready version of our O-CNN was submitted to SIGGRAPH in April, 2018. -->
|
|
43
|
+
We just did not post our paper on Arxiv during the review process of SIGGRAPH.
|
|
44
|
+
Therefore, **the idea of constraining CNN computation into sparse non-emtpry
|
|
45
|
+
voxels, i.e. Sparse Convolution, is first proposed by our O-CNN**.
|
|
46
|
+
|
|
47
|
+
<!--
|
|
48
|
+
Developed in collaboration with authors from [PointCNN](https://arxiv.org/abs/1801.07791),
|
|
49
|
+
[Dr. Yangyan Li](https://yangyan.li/) and [Prof. Baoquan Chen](https://baoquanchen.info/),
|
|
50
|
+
-->
|
|
51
|
+
This library supports point cloud processing from the ground up.
|
|
52
|
+
The library provides essential components for converting raw point clouds into
|
|
53
|
+
octrees to perform convolution operations. Of course, it also supports other 3D
|
|
54
|
+
data formats, such as meshes and volumetric grids, which can be converted into
|
|
55
|
+
octrees to leverage the library's capabilities.
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## Key benefits of ocnn-pytorch
|
|
59
|
+
|
|
60
|
+
- **Simplicity**. The ocnn-pytorch is based on pure PyTorch, it is portable and
|
|
61
|
+
can be installed with a simple command:`pip install ocnn`. Other sparse
|
|
62
|
+
convolution frameworks heavily rely on C++ and CUDA, and it is complicated to
|
|
63
|
+
configure the compiling environment.
|
|
64
|
+
|
|
65
|
+
- **Efficiency**. The ocnn-pytorch is very efficient compared with other sparse
|
|
66
|
+
convolution frameworks. It only takes 18 hours to train the network on
|
|
67
|
+
ScanNet for 600 epochs with 4 V100 GPUs. For reference, under the same
|
|
68
|
+
training settings, MinkowskiNet 0.4.3 takes 60 hours and MinkowskiNet 0.5.4
|
|
69
|
+
takes 30 hours.
|
|
70
|
+
|
|
71
|
+
## Citation
|
|
72
|
+
|
|
73
|
+
```bibtex
|
|
74
|
+
@article {Wang-2017-ocnn,
|
|
75
|
+
title = {{O-CNN}: Octree-based Convolutional Neural Networksfor {3D} Shape Analysis},
|
|
76
|
+
author = {Wang, Peng-Shuai and Liu, Yang and Guo, Yu-Xiao and Sun, Chun-Yu and Tong, Xin},
|
|
77
|
+
journal = {ACM Transactions on Graphics (SIGGRAPH)},
|
|
78
|
+
volume = {36},
|
|
79
|
+
number = {4},
|
|
80
|
+
year = {2017},
|
|
81
|
+
}
|
|
82
|
+
```
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
# --------------------------------------------------------
|
|
2
|
-
# Octree-based Sparse Convolutional Neural Networks
|
|
3
|
-
# Copyright (c) 2022 Peng-Shuai Wang <wangps@hotmail.com>
|
|
4
|
-
# Licensed under The MIT License [see LICENSE for details]
|
|
5
|
-
# Written by Peng-Shuai Wang
|
|
6
|
-
# --------------------------------------------------------
|
|
7
|
-
|
|
8
|
-
from . import octree
|
|
9
|
-
from . import nn
|
|
10
|
-
from . import modules
|
|
11
|
-
from . import models
|
|
12
|
-
from . import dataset
|
|
13
|
-
from . import utils
|
|
14
|
-
|
|
15
|
-
__version__ = '2.2.
|
|
16
|
-
|
|
17
|
-
__all__ = [
|
|
18
|
-
'octree',
|
|
19
|
-
'nn',
|
|
20
|
-
'modules',
|
|
21
|
-
'models',
|
|
22
|
-
'dataset',
|
|
23
|
-
'utils'
|
|
24
|
-
]
|
|
1
|
+
# --------------------------------------------------------
|
|
2
|
+
# Octree-based Sparse Convolutional Neural Networks
|
|
3
|
+
# Copyright (c) 2022 Peng-Shuai Wang <wangps@hotmail.com>
|
|
4
|
+
# Licensed under The MIT License [see LICENSE for details]
|
|
5
|
+
# Written by Peng-Shuai Wang
|
|
6
|
+
# --------------------------------------------------------
|
|
7
|
+
|
|
8
|
+
from . import octree
|
|
9
|
+
from . import nn
|
|
10
|
+
from . import modules
|
|
11
|
+
from . import models
|
|
12
|
+
from . import dataset
|
|
13
|
+
from . import utils
|
|
14
|
+
|
|
15
|
+
__version__ = '2.2.8'
|
|
16
|
+
|
|
17
|
+
__all__ = [
|
|
18
|
+
'octree',
|
|
19
|
+
'nn',
|
|
20
|
+
'modules',
|
|
21
|
+
'models',
|
|
22
|
+
'dataset',
|
|
23
|
+
'utils'
|
|
24
|
+
]
|