1. PointNet
输入点云集:X, 维度[n,3],n表示点云集中点的个数,3表示空间坐标xyz;
分类网络输出为:y, 维度k,k的大小取决与类别数量;
y = f(X) = B(Maxpool(A(X))), A, B表示神经网络;
分割网络输出为:维度[n, m], n表示点云集中点的个数,m的大小取决与类别数量;
图:(CVPR) PointNet:用于3D分类和分割的点集深度学习 - 详细解读_点云 stn-CSDN博客;
2. PointNet++
输入输出与PointNet一致
链接:https://pan.baidu.com/s/10Nk4Zd3S_NklY5PJwzmnWA
提取码:6688
https://github.com/yanx27/Pointnet_Pointnet2_pytorch
环境配置:
conda create -n pointnet++ python=3.8
conda activate pointnet++
conda install pytorch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 pytorch-cuda=11.8 -c pytorch -c nvidia
程序运行:
python train_classification.py --model pointnet2_cls_ssg --log_dir pointnet2_cls_ssg
python test_classification.py --log_dir pointnet2_cls_ssg
测试:
python test_classification.py --use_normals --log_dir pointnet2_msg_normals
# PARAMETER ...
# Namespace(batch_size=24, gpu='0', log_dir='pointnet2_msg_normals', num_category=40, num_point=1024, num_votes=3, use_cpu=False, use_normals=True, use_uniform_sample=False)
# Load dataset ...
# The size of test data is 2468
# 100%|█████████████████████████████████████████████████████████████████████████████████| 103/103 [01:23<00:00, 1.23it/s]
# Test Instance Accuracy: 0.928155, Class Accuracy: 0.904519