一. Shape Classification
1.1Data
modelnet40分类数据集
链接:https://pan.baidu.com/s/13Ey0trCBY3CNxXzP8ugErQ 提取码:1234
1.2Train
1)check model 是否在model文件夹下
2)训练命令
python train_cls.py --model pointnet2_cls_msg --normal --log_dir pointnet_cls_msg
--model pointnet2_cls_msg ##选择pointnet2_cls_msg
--normal ##使用法向量信息
--log_dir pointnet_cls_msg##指定日志文件保存的路径
如果出现显存溢出情况,如:Runtime Rrror: CUDA out of memory.
python train_cls.py --model pointnet2_cls_msg --normal --log_dir pointnet_cls_msg --batch_size 16
batch_size :即一次训练所抓取的数据样本数量,BATCH_SIZE的大小影响训练速度和模型优化。默认是24。
若BATCH_SIZE=m(训练集样本数量);相当于直接抓取整个数据集,训练时间长,但梯度准确。但不适用于大样本训练,比如IMAGENET。只适用于小样本训练,但小样本训练一般会导致过拟合现象,因此不建议如此设置。
若BATCH_SIZE=1;梯度变化波动大,网络不容易收敛。
若BATCH_SIZE设置合适,梯度会变准确。
此时再增加BATCH_SIZE大小,梯度也不会变得更准确。
同时为了达到更高的训练网络精度,应该增大epoch,使训练时间变长。
3)训练结束
训练完成自动生成log文件夹,保存了日志文件和网络参数
检查是否有保存的模型文件 .pth 文件
\log\classification\pointnet2_cls_msg\checkpoints\best_model.pth
torch.save(model.state_dict(), "my_model.pth") # 只保存模型的参数
torch.save(model, "my_model.pth") # 保存整个模型
logs文件下的训练日志
\log\classification\pointnet2_cls_msg\logs\pointnet2_cls_msg.txt
1.3Test
1)测试命令
python test_classification.py --log_dir pointnet2_cls_msg
测试后log文件中保存了日志文件
2)测试日志
\log\classification\pointnet2_cls_msg\eval.txt
2023-07-23 11:23:27,599 - Model - INFO - Namespace(batch_size=24, gpu='0', log_dir='pointnet2_cls_msg', num_category=40, num_point=1024, num_votes=3, use_cpu=False, use_normals=False, use_uniform_sample=False)
3)评价指标
平均精度(mean accuracy,MA)和 总 体 精 度(overall accuracy,OA)两个最主要的分类评价指标分析对比不同的分类方法
二. Part Segmentation
2.1Data
shapenetcore_partanno_segmentation_benchmark_v0_normal
链接:https://pan.baidu.com/s/1uRQifmtBpXtQGuZVeZdJMg 提取码:1234
将数据解压到data\shapenetcore_partanno_segmentation_benchmark_v0_normal
0.073880 | 0.169750 | -0.193260 | 0.006987 | 0.999600 | 0.027960 | 1.000000 |
X | Y | Z | Nx | Ny | Nz | 部件编号 0,1,2 |
2.2Train
1)训练命令
python train_partseg.py --model pointnet2_part_seg_msg --normal --log_dir pointnet2_part_seg_msg
2.3Test
1)测试命令
python test_partseg.py --normal --log_dir pointnet2_part_seg_msg
三.Semantic Segmentation
3.1Data
下载3D indoor parsing dataset(S3DIS)数据集Stanford3dDataset_v1.2_Aligned_Version.zip,并解压到data/s3dis/Stanford3dDataset_v1.2_Aligned_Version/ #新建一个s3dis文件夹
-17.192 | 39.194 | 0.062 | 41 | 38 | 29 |
X | Y | Z | R | G | B |
需要对数据进一步处理,python collect_indoor3d_data.py用于数据的重组,转换为.npy格式文件,比如Area_1_hallway_1.npy(.npy为Numpy专用的二进制格式)
处理后的数据应将被保存在data/stanford_indoor3d/
“data/s3dis/Stanford3dDataset_v1.2_Aligned_Version文件夹下”
cd data_utils
python collect_indoor3d_data.py
注意: 在执行 collect_indoor3d_data.py应该会出现类似于下面的错误:
D:\pointnet\data\Stanford3dDataset_v1.2_Aligned_Version\Area_5/hallway_6/Annotations
D:\pointnet\data\Stanford3dDataset_v1.2_Aligned_Version\Area_5/hallway_6/Annotations ERROR!!
经查找具体位置为:Stanford3dDataset_v1.2_Aligned_Version\Area_5\hallway_6\Annotations\ceiling_1.txt中的第180389行数字185后。windows下建议使用EmEditor打开文件,会自动跳转到该行,数字185后面有一个类似空格的字符,实际上不是空格,删掉然后重新打一个空格就可以了。
3.2Train
1)训练命令
python train_semseg.py --model pointnet2_sem_seg --test_area 5 --log_dir pointnet2_sem_seg
可视化结果保存在log/sem_seg/pointnet2_sem_seg/visual/.ojb文件
2)测试命令
python test_semseg.py --log_dir pointnet2_sem_seg --test_area 5 --visual