PyTorch Point Cloud models, scripts, pretrained weights -- PointNet++, KPConv, RandLA-Net, VoteNet, SPVCNN, 3DETR, PointTransformer, OctFormer, PointMamba and more
See the code
Deep learning on point clouds, with PyTorch.
Models, pretrained weights, datasets, transforms and inferers, in the style of
timm and
PyG.
Documentation · Model zoo · Tutorials · Changelog






[!WARNING]
torch-pointcloudis in alpha and active development. Expect breaking changes.
pip install torch-pointcloud
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.
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
# Requires spconv and flash-attn
model, info = tp.create_model("ptv3-base.scannet20.pointcept", task="semantic-segmentation", pretrained=True, return_info=True)
info["transform"] # the preprocessing pipeline of that checkpoint
info["weights"]["metrics"] # {"mIoU": 77.40, "OA": 92.01}
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.
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.
Contributions are welcome. See CONTRIBUTING.md for the development setup and the pull request checks.
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}
}
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.
PyTorch Point Cloud models, scripts, pretrained weights -- PointNet++, KPConv, RandLA-Net, VoteNet, SPVCNN, 3DETR, PointTransformer, OctFormer, PointMamba and more
See the code
Deep learning on point clouds, with PyTorch.
Models, pretrained weights, datasets, transforms and inferers, in the style of
timm and
PyG.
Documentation · Model zoo · Tutorials · Changelog






[!WARNING]
torch-pointcloudis in alpha and active development. Expect breaking changes.
pip install torch-pointcloud
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.
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
# Requires spconv and flash-attn
model, info = tp.create_model("ptv3-base.scannet20.pointcept", task="semantic-segmentation", pretrained=True, return_info=True)
info["transform"] # the preprocessing pipeline of that checkpoint
info["weights"]["metrics"] # {"mIoU": 77.40, "OA": 92.01}
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.
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.
Contributions are welcome. See CONTRIBUTING.md for the development setup and the pull request checks.
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}
}
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.