GitPedia

PointNeXt

[NeurIPS'22] PointNeXt: Revisiting PointNet++ with Improved Training and Scaling Strategies

From guochengqian·Updated June 13, 2026·View on GitHub·

**PointNeXt** is a [NeurIPS'22] PointNeXt: Revisiting PointNet++ with Improved Training and Scaling Strategies The project is written primarily in Shell, distributed under the MIT License license, first published in 2022. It has gained significant community traction with 1,047 stars and 162 forks on GitHub. Key topics include: 3d-vision, pointcloud, pointnet2, pytorch.

PointNeXt

PWC
PWC
PWC
PWC

[arXiv] | [OpenPoints Library] | [Online Documentation]

<p align="center"> <img src="docs/projects/misc/effects_training_scaling.png" width=85% height=85% class="center"> </p>

Official PyTorch implementation for the following paper:

PointNeXt: Revisiting PointNet++ with Improved Training and Scaling Strategies

by Guocheng Qian, Yuchen Li, Houwen Peng, Jinjie Mai, Hasan Hammoud, Mohamed Elhoseiny, Bernard Ghanem

TL;DR: We propose improved training and model scaling strategies to boost PointNet++ to the state-of-the-art level. PointNet++ with the proposed model scaling is named as PointNeXt, the next version of PointNets.

<p align="center"> <img src="docs/projects/misc/pointnext.jpeg" width=85% height=85% class="center"> </p>

News

Features

In the PointNeXt project, we propose a new and flexible codebase for point-based methods, namely OpenPoints. The biggest difference between OpenPoints and other libraries is that we focus more on reproducibility and fair benchmarking.

  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. Reproducibility: all implemented models are trained on various tasks at least three times. Mean±std is provided in the PointNeXt paper. Pretrained models and logs are available.

  3. Fair Benchmarking: in PointNeXt, we find a large part of performance gain is due to the training strategies. In OpenPoints, all models are trained with the improved training strategies and all achieve much higher accuracy than the original reported value.

  4. 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)
    

    Here is an example of pointnet.yaml (model configuration for PointNet model):

    python
    model: NAME: BaseCls encoder_args: NAME: PointNetEncoder in_channels: 4 cls_args: NAME: ClsHead num_classes: 15 in_channels: 1024 mlps: [512,256] norm_args: norm: 'bn1d'
  5. Online logging: Support wandb for checking your results anytime anywhere. Just set wandb.use_wandb=True in your command.

    docs/misc/wandb.png


Installation

We provide a simple bash file to install the environment:

git clone --recurse-submodules git@github.com:guochengqian/PointNeXt.git
cd PointNeXt
source update.sh
source install.sh

Cuda-11.3 is required. Modify the install.sh if a different cuda version is used. See Install for detail.

Usage

Check our online documentation for detailed instructions.

A short instruction: all experiments follow the simple rule to train and test:

CUDA_VISIBLE_DEVICES=$GPUs python examples/$task_folder/main.py --cfg $cfg $kwargs
  • $GPUs is the list of GPUs to use, for most experiments (ScanObjectNN, ModelNet40, S3DIS), we only use 1 A100 (GPUs=0)
  • $task_folder is the folder name of the experiment. For example, for s3dis segmentation, $task_folder=s3dis
  • $cfg is the path to cfg, for example, s3dis segmentation, $cfg=cfgs/s3dis/pointnext-s.yaml
  • $kwargs are the other keyword arguments to use. For example, testing in S3DIS area 5, $kwargs should be mode=test, --pretrained_path $pretrained_path.

Model Zoo (pretrained weights)

see Model Zoo.

Visualization

More examples are available in the paper.

s3dis
shapenetpart


Acknowledgment

This library is inspired by PyTorch-image-models and mmcv.

Citation

If you find PointNeXt or the OpenPoints codebase useful, please cite:

tex
@InProceedings{qian2022pointnext, title = {PointNeXt: Revisiting PointNet++ with Improved Training and Scaling Strategies}, author = {Qian, Guocheng and Li, Yuchen and Peng, Houwen and Mai, Jinjie and Hammoud, Hasan and Elhoseiny, Mohamed and Ghanem, Bernard}, booktitle=Advances in Neural Information Processing Systems (NeurIPS), year = {2022}, }

Contributors

Showing top 7 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from guochengqian/PointNeXt via the GitHub API.Last fetched: 6/14/2026