项目简介
本项目基于PyTorch框架,复现了CVPR 2020论文《PointAugment: an Auto-Augmentation Framework for Point Cloud Classification》中的算法,并在原作者开源代码基础上开展一系列改进实验。通过不同实验设置和对比分析,探究PointAugment算法中Augmentor模块的实际作用和有效性。
项目的主要特性和功能
- 算法复现:复现PointAugment算法用于点云分类任务,在MN40数据集上测试PointNet和PointNet++使用传统数据增强(DA)和PointAugment数据增强(PA)的效果。
- 改进尝试:尝试改进Augmentor结构,将其backbone替换为基于Attention机制的PCT网络;简化Augmentor的loss,如将其设置为与classifier同向训练等。
- 消融实验:进行多项消融实验,评估Augmentor的作用,包括仅使用Classifier loss更新Augmentor、只保留Augmentor loss的第一项、去掉Augmentor仅训练classifier(分使用和不使用传统数据增强两种情况)、用噪音生成Augmentor中的M矩阵和D矩阵等。
- 结果分析:对比原论文结果和复现结果,分析实验数据,得出Augmentor在原文方法中未起到明显效果的结论。
安装使用步骤
环境准备
- 确保已安装Python 3.6、CUDA 10.0和Pytorch 1.7。
- 若运行时出现import error,需安装缺少的库,如TensorBoardX等。
数据准备
下载MN40数据集到本地文件夹。
运行实验
验证原文的PointAugment算法
python
python3 train_PA.py --data_dir ModelNet40_Folder
若运行报错,建议使用单卡训练。每次运行的记录会存入log下的文件夹,包含训练输出、命令行参数、tensorboard记录等。
其他实验
由于实验过程中频繁修改代码,运行以下实验需将对应log目录中的代码备份文件(xxx.py.backup)覆盖到Augment和Common文件夹中:
- 原文的PointAugment算法:log目录20210611 - 2107
- 用Classifier Loss更新Augmentor:log目录20210612 - 1525
- Augmentor Loss只保留第一项:log目录20210612 - 1637
- 只训练Classifier:log目录20210612 - 2152
- 只训练Classifier,并且去掉传统的数据增强:log目录20210615 - 1024
- 用PointNet++做Classifier,训练原文的PointAugment算法:log目录20210613 - 1820,使用指令python3 train_PA.py --data_dir ModelNet40_Folder --batch_size 12 --model_name pointnet2
- 用PointNet++做Classifier,只训练Classifier:log目录20210614 - 1015,使用指令python3 train_PA.py --data_dir ModelNet40_Folder --batch_size 12 --model_name pointnet2
- Augmentor改用PCT做backbone:log目录20210513 - 1012
- Augmentor改成不使用点云特征,随机生成M和D矩阵:log目录20210615 - 1551
注意:最后两项实验需在pytorch 1.1的库版本下运行。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】