
Implementação oficial de Pytorch para o seguinte artigo:
PointNext: Revisitando PointNet ++ com estratégias de treinamento e escala aprimoradas
Por Guocheng Qian, Yuchen Li, Houwen Peng, Jinjie Mai, Hasan Hammoud, Mohamed Elaseiny, Bernard Ghanem
TL; DR: Propomos estratégias aprimoradas de treinamento e modelagem para aumentar o PointNet ++ para o nível de ponta. PointNet ++ com a escala de modelo proposta é nomeada como PointNext, a próxima versão do PointNets.

No projeto PointNext, propomos uma base de código nova e flexível para métodos baseados em pontos, como OpenPoints . A maior diferença entre o OpenPoints e outras bibliotecas é que nos concentramos mais na reprodutibilidade e no benchmarking justo.
Extensibilidade : suporta muitas redes representativas para o entendimento da nuvem de pontos, como PointNet, DGCNN, DeepGCN, PointNet ++, Assanet, PointMLP e nosso PointNext . Mais redes podem ser construídas facilmente com base em nossa estrutura, pois os OpenPoints suportam uma ampla gama de operações básicas, incluindo convoluções gráficas, auto-atendimento, amostragem mais distante de pontos, consulta de bola, etc.
Reprodutibilidade : Todos os modelos implementados são treinados em várias tarefas pelo menos três vezes. A média ± DST é fornecida no papel PointNext. Modelos e logs pré -tenhados estão disponíveis.
Benchmarking justo : no PointNext, descobrimos que uma grande parte do ganho de desempenho se deve às estratégias de treinamento. Nos pontos de abertura, todos os modelos são treinados com as estratégias de treinamento aprimoradas e todas alcançam uma precisão muito maior do que o valor relatado original.
Facilidade de uso : Build Model, Optimizer, Scheduler, Perda Função e carregador de dados facilmente do CFG . Treine e valida modelos diferentes em várias tarefas, simplesmente alterando o arquivo cfg**.yaml .
model = build_model_from_cfg(cfg.model)
criterion = build_criterion_from_cfg(cfg.criterion_args)
Aqui está um exemplo de pointnet.yaml (configuração do modelo para o 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 on -line : Suporte Wandb para verificar seus resultados a qualquer hora em qualquer lugar. Basta definir wandb.use_wandb=True em seu comando.

Fornecemos um arquivo bash simples para instalar o ambiente:
git clone --recurse-submodules [email protected]:guochengqian/PointNeXt.git
cd PointNeXt
source update.sh
source install.sh
CUDA-11.3 é necessário. Modifique o install.sh se uma versão CUDA diferente for usada. Consulte a instalação para obter detalhes.
Verifique nossa documentação on -line para obter instruções detalhadas.
Uma instrução curta: Todas as experiências seguem a regra simples de treinar e testar:
CUDA_VISIBLE_DEVICES=$GPUs python examples/$task_folder/main.py --cfg $cfg $kwargs
mode=test, --pretrained_path $pretrained_path . Veja Modelo Zoológico.
Mais exemplos estão disponíveis no artigo.


Esta biblioteca é inspirada nos modelos Pytorch-Image e MMCV.
Se você encontrar o PointNext ou a base de código do OpenPoints útil, 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},
}