--- license: mit library_name: torch-pointcloud tags: - point-cloud - 3d - pytorch - torch-pointcloud - pointnext - segmentation datasets: - shapenetpart model-index: - name: pointnext-sm.shapenetpart.openpoints results: - task: type: point-cloud-segmentation dataset: name: ShapeNetPart type: shapenetpart metrics: - name: ins_mIoU type: mean_iou value: 86.88 - name: cls_mIoU type: mean_iou value: 84.48 --- # Model card for pointnext-sm.shapenetpart.openpoints A PointNeXt point cloud segmentation model (scaled PointNet++ with inverted residual blocks). Trained on ShapeNetPart. ## Model Details - **Model Type:** Point cloud semantic segmentation - **Model Stats:** - Params (M): 1.0 - Input channels: 7 - Classes: 50 - Features: 96 - **Dataset:** ShapeNetPart - **Metrics:** ins_mIoU 86.88, cls_mIoU 84.48 (reference 86.7) - **Paper:** [PointNeXt: Revisiting PointNet++ with Improved Training and Scaling Strategies](https://arxiv.org/abs/2206.04670) - **Converted from:** [guochengqian/PointNeXt](https://github.com/guochengqian/PointNeXt) (MIT) - **Library:** [torch-pointcloud](https://github.com/arthurdjn/pytorch-pointcloud) ## Install ```bash pip install torch-pointcloud ``` ## Usage ```python import torch import torch_pointcloud as tp from torch_pointcloud.utils.data import collate model, info = tp.create_model( "pointnext-sm.shapenetpart.openpoints", task="segmentation", pretrained=True, return_info=True, ) model = model.eval() # synthetic sample with the keys a dataset provides num_points = 8192 sample = { "pos": torch.randn(num_points, 3), "normal": torch.randn(num_points, 3), "category": torch.tensor(0), "segment": torch.zeros(num_points, dtype=torch.long), } data = info["transform"](sample) data = collate([data]) with torch.no_grad(): logits = model(data.get("x"), data["pos"], data["batch"], data["category"]) ``` ## Feature extraction ```python with torch.no_grad(): features = model.forward_features(data.get("x"), data["pos"], data["batch"]) model.reset_classifier(num_classes=0) with torch.no_grad(): features = model(data.get("x"), data["pos"], data["batch"], data["category"]) # (N, 96) ``` ## Citation ```bibtex @inproceedings{qian2022pointnext, title = {PointNeXt: Revisiting PointNet++ with Improved Training and Scaling Strategies}, author = {Guocheng Qian and Yuchen Li and Houwen Peng and Jinjie Mai and Hasan Abed Al Kader Hammoud and Mohamed Elhoseiny and Bernard Ghanem}, booktitle = {NeurIPS}, year = {2022} } @article{yi2016shapenetpart, title = {A Scalable Active Framework for Region Annotation in {3D} Shape Collections}, author = {Yi, Li and Kim, Vladimir G. and Ceylan, Duygu and Shen, I-Chao and Yan, Mengyan and Su, Hao and Lu, Cewu and Huang, Qixing and Sheffer, Alla and Guibas, Leonidas}, journal = {ACM Transactions on Graphics (TOG)}, volume = {35}, number = {6}, year = {2016} } @software{dujardin2026pytorchpointcloud, author = {Arthur Dujardin}, title = {PyTorch PointCloud}, year = {2026}, doi = {10.5281/zenodo.22159632}, url = {https://github.com/arthurdjn/pytorch-pointcloud}, } ```