littlebot
Published on 2025-04-10 / 0 Visits
0

【源码】基于PyTorch框架的PointAugment算法复现与实验

项目简介

本项目基于PyTorch框架,复现了CVPR 2020论文《PointAugment: an Auto-Augmentation Framework for Point Cloud Classification》中的算法,并在原作者开源代码基础上开展一系列改进实验。通过不同实验设置和对比分析,探究PointAugment算法中Augmentor模块的实际作用和有效性。

项目的主要特性和功能

  1. 算法复现:复现PointAugment算法用于点云分类任务,在MN40数据集上测试PointNet和PointNet++使用传统数据增强(DA)和PointAugment数据增强(PA)的效果。
  2. 改进尝试:尝试改进Augmentor结构,将其backbone替换为基于Attention机制的PCT网络;简化Augmentor的loss,如将其设置为与classifier同向训练等。
  3. 消融实验:进行多项消融实验,评估Augmentor的作用,包括仅使用Classifier loss更新Augmentor、只保留Augmentor loss的第一项、去掉Augmentor仅训练classifier(分使用和不使用传统数据增强两种情况)、用噪音生成Augmentor中的M矩阵和D矩阵等。
  4. 结果分析:对比原论文结果和复现结果,分析实验数据,得出Augmentor在原文方法中未起到明显效果的结论。

安装使用步骤

环境准备

  1. 确保已安装Python 3.6、CUDA 10.0和Pytorch 1.7。
  2. 若运行时出现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】