--- license: apache-2.0 library_name: torch-pointcloud tags: - point-cloud - 3d - pytorch - torch-pointcloud - point-mamba - classification datasets: - scanobjectnn base_model: torch-pointcloud/point-mamba-base.pretrain.dingkang-liang model-index: - name: point-mamba-base.scanobjectnn.dingkang-liang results: - task: type: point-cloud-classification dataset: name: ScanObjectNN type: scanobjectnn metrics: - name: OA type: accuracy value: 94.32 --- # Model card for point-mamba-base.scanobjectnn.dingkang-liang A PointMamba point cloud classification model (state space model over serialized points). Trained on ScanObjectNN. ## Model Details - **Model Type:** Point cloud classification - **Model Stats:** - Params (M): 12.3 - Classes: 15 - Features: 384 - **Dataset:** ScanObjectNN - **Metrics:** OA 94.32 (reference 94.32) - **Paper:** [PointMamba: A Simple State Space Model for Point Cloud Analysis](https://arxiv.org/abs/2402.10739) - **Converted from:** [LMD0311/PointMamba](https://github.com/LMD0311/PointMamba) (Apache-2.0) - **Library:** [torch-pointcloud](https://github.com/arthurdjn/pytorch-pointcloud) ## Install ```bash pip install torch-pointcloud ``` This checkpoint also needs `mamba-ssm`, which needs a build matching your torch and CUDA: see the [installation guide](https://pytorch-pointcloud.org/installation/). ## Usage ```python import torch import torch_pointcloud as tp from torch_pointcloud.utils.data import collate model, info = tp.create_model( "point-mamba-base.scanobjectnn.dingkang-liang", task="classification", pretrained=True, return_info=True, ) model = model.cuda().eval() # GPU-only kernels # synthetic sample with the keys a dataset provides num_points = 8192 sample = { "pos": torch.randn(num_points, 3), } data = info["transform"](sample) data = collate([data]) data = {key: value.cuda() for key, value in data.items()} with torch.no_grad(): logits = model(data.get("x"), data["pos"], data["batch"]) ``` ## Feature extraction ```python with torch.no_grad(): embeddings = model.forward_features(data.get("x"), data["pos"], data["batch"]) model.reset_classifier(num_classes=0) with torch.no_grad(): embeddings = model(data.get("x"), data["pos"], data["batch"]) # (B, 384) ``` ## Citation ```bibtex @inproceedings{liang2024pointmamba, title = {PointMamba: A Simple State Space Model for Point Cloud Analysis}, author = {Dingkang Liang and Xin Zhou and Wei Xu and Xingkui Zhu and Zhikang Zou and Xiaoqing Ye and Xiao Tan and Xiang Bai}, booktitle = {NeurIPS}, year = {2024} } @inproceedings{uy2019scanobjectnn, title = {Revisiting Point Cloud Classification: A New Benchmark Dataset and Classification Model on Real-World Data}, author = {Mikaela Angelina Uy and Quang-Hieu Pham and Binh-Son Hua and Duc Thanh Nguyen and Sai-Kit Yeung}, booktitle = {ICCV}, year = {2019} } @software{dujardin2026pytorchpointcloud, author = {Arthur Dujardin}, title = {PyTorch PointCloud}, year = {2026}, doi = {10.5281/zenodo.22159632}, url = {https://github.com/arthurdjn/pytorch-pointcloud}, } ```