
Implementación oficial de Pytorch para el siguiente documento:
PointNext: Revisiting PointNet ++ con estrategias de capacitación y escala mejoradas
por Guocheng Qian, Yuchen Li, Houwen Peng, Jinjie Mai, Hasan Hammoud, Mohamed Elhoseiny, Bernard Ghanem
TL; DR: Proponemos estrategias de capacitación y escala de modelos mejoradas para impulsar PointNet ++ al nivel de vanguardia. PointNet ++ con la escala de modelo propuesta se denomina PointNext, la próxima versión de PointNets.

En el proyecto PointNext, proponemos una base de código nueva y flexible para los métodos basados en puntos, a saber, OpenPoints . La mayor diferencia entre OpenPoints y otras bibliotecas es que nos centramos más en la reproducibilidad y la evaluación comparativa justa.
Extensibilidad : admite muchas redes representativas para la comprensión de la nube de puntos, como PointNet, DGCNN, DeepGCN, PointNet ++, Assanet, PointMLP y Our PointNext . Se pueden construir más redes fácilmente en función de nuestro marco, ya que OpenPoints admite una amplia gama de operaciones básicas que incluyen convoluciones de gráficos, autoatidos, muestreo de puntos más lejano, consulta de pelota, etc.
Reproducibilidad : todos los modelos implementados están capacitados en varias tareas al menos tres veces. La media ± ETS se proporciona en el papel de PointNext. Los modelos y registros previos a la aparición están disponibles.
Benchmarking justo : en PointNext, encontramos que una gran parte de la ganancia de rendimiento se debe a las estrategias de capacitación. En OpenPoints, todos los modelos están entrenados con las estrategias de entrenamiento mejoradas y todos logran una precisión mucho mayor que el valor informado original.
Facilidad de uso : modelo de compilación , optimizador, programador, función de pérdida y cargador de datos fácilmente desde CFG . Entrene y valida diferentes modelos en varias tareas simplemente cambiando el archivo cfg**.yaml .
model = build_model_from_cfg(cfg.model)
criterion = build_criterion_from_cfg(cfg.criterion_args)
Aquí hay un ejemplo de pointnet.yaml (Configuración del modelo para el modelo PointNet):
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' Registro en línea : soporte WandB para verificar sus resultados en cualquier momento en cualquier lugar. Simplemente establezca wandb.use_wandb=True en su comando.

Proporcionamos un archivo bash simple para instalar el entorno:
git clone --recurse-submodules [email protected]:guochengqian/PointNeXt.git
cd PointNeXt
source update.sh
source install.sh
Se requiere CUDA-11.3. Modifique el install.sh si se usa una versión CUDA diferente. Consulte la instalación para obtener detalles.
Consulte nuestra documentación en línea para obtener instrucciones detalladas.
Una breve instrucción: todos los experimentos siguen la regla simple para entrenar y probar:
CUDA_VISIBLE_DEVICES=$GPUs python examples/$task_folder/main.py --cfg $cfg $kwargs
mode=test, --pretrained_path $pretrained_path . Ver Model Zoo.
Hay más ejemplos disponibles en el documento.


Esta biblioteca está inspirada en los modelos de imagen Pytorch y MMCV.
Si encuentra útil PointNext o OpenPoints CodeBase, cite:
@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},
}