Metadata-Version: 2.4
Name: openpoints
Version: 0.1.0
Summary: OpenPoints: point cloud understanding models, layers, datasets, transforms, optimizers, and training utilities.
Author: Guocheng Qian
License-Expression: MIT
Project-URL: Homepage, https://github.com/guochengqian/openpoints
Project-URL: Repository, https://github.com/guochengqian/openpoints
Project-URL: Issues, https://github.com/guochengqian/PointNeXt/issues
Keywords: point cloud,deep learning,pytorch,3d vision,PointNeXt
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: torch>=1.10
Requires-Dist: numpy>=1.20
Requires-Dist: scipy>=1.7
Requires-Dist: PyYAML>=5.4
Requires-Dist: multimethod>=1.8
Requires-Dist: termcolor>=1.1
Requires-Dist: shortuuid>=1.0
Requires-Dist: scikit-learn>=1.0
Requires-Dist: tqdm>=4
Requires-Dist: easydict>=1.9
Requires-Dist: h5py>=3
Requires-Dist: pandas>=1.3
Requires-Dist: torchvision>=0.11
Provides-Extra: data
Requires-Dist: easydict>=1.9; extra == "data"
Requires-Dist: h5py>=3; extra == "data"
Requires-Dist: pandas>=1.3; extra == "data"
Requires-Dist: torchvision>=0.11; extra == "data"
Provides-Extra: viz
Requires-Dist: matplotlib>=3.5; extra == "viz"
Requires-Dist: pyvista>=0.38; extra == "viz"
Provides-Extra: graph
Requires-Dist: numba>=0.56; extra == "graph"
Requires-Dist: ogb>=1.3; extra == "graph"
Requires-Dist: atom3d>=0.2; extra == "graph"
Requires-Dist: fast-pytorch-kmeans>=0.1; extra == "graph"
Provides-Extra: tfds
Requires-Dist: Pillow>=8; extra == "tfds"
Requires-Dist: tensorflow>=2; extra == "tfds"
Requires-Dist: tensorflow-datasets>=4; extra == "tfds"
Provides-Extra: wandb
Requires-Dist: wandb>=0.13; extra == "wandb"
Provides-Extra: dev
Requires-Dist: build>=1; extra == "dev"
Requires-Dist: twine>=4; extra == "dev"
Requires-Dist: pytest>=7; extra == "dev"
Provides-Extra: all
Requires-Dist: easydict>=1.9; extra == "all"
Requires-Dist: h5py>=3; extra == "all"
Requires-Dist: pandas>=1.3; extra == "all"
Requires-Dist: torchvision>=0.11; extra == "all"
Requires-Dist: matplotlib>=3.5; extra == "all"
Requires-Dist: pyvista>=0.38; extra == "all"
Requires-Dist: numba>=0.56; extra == "all"
Requires-Dist: ogb>=1.3; extra == "all"
Requires-Dist: atom3d>=0.2; extra == "all"
Requires-Dist: fast-pytorch-kmeans>=0.1; extra == "all"
Requires-Dist: Pillow>=8; extra == "all"
Requires-Dist: tensorflow>=2; extra == "all"
Requires-Dist: tensorflow-datasets>=4; extra == "all"
Requires-Dist: wandb>=0.13; extra == "all"
Dynamic: license-file

# OpenPoints

OpenPoints is a library built for fairly benchmarking and easily reproducing point-based methods for point cloud understanding. It is born in the course of [PointNeXt](https://github.com/guochengqian/PointNeXt) project and is used as an engine therein.

**For any question related to OpenPoints, please open an issue in [PointNeXt](https://github.com/guochengqian/PointNeXt) repo.**

OpenPoints currently supports reproducing the following models:
- PointNet
- DGCNN
- DeepGCN
- PointNet++
- ASSANet
- PointMLP
- PointNeXt
- Pix4Point
- PointVector



## Features

1. **Extensibility**: supports many representative networks for point cloud understanding, such as *PointNet, DGCNN, DeepGCN, PointNet++, ASSANet, PointMLP*, and our ***PointNeXt***. More networks can be built easily based on our framework since **OpenPoints support a wide range of basic operations including graph convolutions, self-attention, farthest point sampling, ball query, *e.t.c***.

2. **Ease of Use**: *Build* model, optimizer, scheduler, loss function,  and data loader *easily from cfg*. Train and validate different models on various tasks by simply changing the `cfg\*\*.yaml` file. 

      ```
   model = build_model_from_cfg(cfg.model)
   criterion = build_criterion_from_cfg(cfg.criterion_args)
   ```



## Installation

OpenPoints can be installed as the `openpoints` Python package:

```bash
pip install openpoints
```

The PyPI package installs the Python library (`import openpoints`) and the files needed by the datasets and configs. CUDA/C++ operators such as `pointnet2_batch_cuda`, `pointops_cuda`, `chamfer`, and `emd_cuda` are still built from a source checkout or source distribution for now because PyTorch/CUDA wheels must match the user's Python, PyTorch, CUDA, and platform versions.

For full training/evaluation with CUDA ops, install from source after installing PyTorch:

```bash
git clone --recursive https://github.com/guochengqian/openpoints.git
cd openpoints
pip install -e .[data,viz,wandb]
cd cpp/pointnet2_batch && python setup.py install && cd ../..
cd cpp/pointops && python setup.py install && cd ../..
cd cpp/chamfer_dist && python setup.py install && cd ../..
cd cpp/emd && python setup.py install && cd ../..
```

If the `openpoints` name is unavailable on a package index mirror, the same code can be published as `openpoints-torch`; the import name remains `openpoints`.

## Usage

OpenPoints serves as the engine for PointNeXt. Please refer to [PointNeXt](https://github.com/guochengqian/PointNeXt) for complete training, evaluation, and model-zoo examples.



## Citation

If you use this library, please kindly acknowledge our work:
```tex
@Article{qian2022pointnext,
  author  = {Qian, Guocheng and Li, Yuchen and Peng, Houwen and Mai, Jinjie and Hammoud, Hasan and Elhoseiny, Mohamed and Ghanem, Bernard},
  title   = {PointNeXt: Revisiting PointNet++ with Improved Training and Scaling Strategies},
  journal = {arXiv:2206.04670},
  year    = {2022},
}
```

