Skip to content
Projects

arthurdjn/pytorch-pointcloud

View on GitHub

arthurdjn/pytorch-pointcloud has 33 GitHub stars and 2 forks. GitHot measured 0 stars in 24 hours and +1 in 7 days. Last checked 2026-11-09 16:37 UTC. Last push 2026-10-30.

How these counts are measured

PyTorch Point Cloud models, scripts, pretrained weights -- PointNet++, KPConv, RandLA-Net, VoteNet, SPVCNN, 3DETR, PointTransformer, OctFormer, PointMamba and more

Measured star growth

in 24h
0
in 7 days
+1
in 15 days
Collecting history
in 1 month
Collecting history

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

README.md

Original
PyTorch PointCloud

Deep learning on point clouds, with PyTorch.
Models, pretrained weights, datasets, transforms and inferers, in the style of timm and PyG.

PyPI Python PyTorch License

Tests Hub sync

Documentation  ·  Model zoo  ·  Tutorials  ·  Changelog


ClassificationPart segmentationIndoor segmentation and detection

Feature similarityLiDAR segmentation and detectionLarge-scale features


[!WARNING] torch-pointcloud is in alpha and active development. Expect breaking changes.


Installation

pip install torch==2.10.0 --index-url https://download.pytorch.org/whl/cpu
pip install torch-pointcloud
pip install pyg-lib -f https://data.pyg.org/whl/torch-2.10.0+cpu.html

Most models also need pyg-lib, and some a CUDA extension (spconv, flash-attn, ...), built for your torch and CUDA versions. Read the installation documentation for further details.


Quickstart

import torch
import torch_pointcloud as tp

# Requires pyg-lib
model = tp.create_model(
    "pointnext-sm.scanobjectnn-hardest.openpoints",
    task="classification",
    pretrained=True,
).eval()

pos = torch.randn(2048, 3)  # (N, 3) coordinates
x = torch.cat([pos, pos[:, 1:2] - pos[:, 1].min()], dim=1)  # (N, 4) features: xyz + height
batch = torch.zeros(2048, dtype=torch.long)  # (N,) batch index

with torch.no_grad():
    logits = model(x, pos, batch)  # (1, 15)

Each checkpoint ships information about the model, such as the transform used to preprocess the input, metrics, license and more.

import torch_pointcloud as tp

model, info = tp.create_model("randlanet.semantickitti.tsung-han-wu", task="semantic-segmentation", pretrained=True, return_info=True)
info["transform"]  # the preprocessing pipeline of that checkpoint
info["weights"]["metrics"]  # {"mIoU": 55.39, "OA": 90.05}

tp.list_models("pointnext*")  # every registered PointNeXt config
tp.list_models(task="detection", pretrained=True)  # all detection checkpoints

See the examples directory for benchmarks and training recipes.


Why torch-pointcloud?

torch-pointcloud is a library of pretrained models that makes common layers and backbones easy to reuse. It does not replace research-first codebases such as Pointcept, OpenPCDet and MMDetection3D or OpenPoints but it complements them with a common interface that makes benchmarking and interoperability across architectures easier.


Contributing

Contributions are welcome. See CONTRIBUTING.md for the development setup and the pull request checks.


Citation

If you find this project useful, please consider citing:

@software{dujardin2026pytorchpointcloud,
  author = {Dujardin, Arthur},
  title = {PyTorch PointCloud},
  year = {2026},
  url = {https://github.com/arthurdjn/pytorch-pointcloud},
  doi = {10.5281/zenodo.22159632},
  license = {Apache-2.0}
}

License

Apache 2.0. See LICENSE.

Pretrained weights and adapted code keep the license of their source, and some checkpoints are restricted to non-commercial use (create_model warns when loading them). Most were trained on research-only datasets, whose terms also apply to the weights. See THIRD_PARTY_NOTICES.md.

Explore related projects