PointNet系列代码复现详解(1)—PointNet分类部分

想尽快入门点云,因此就从这个经典的点云处理神经网络开始。源码已经有了中文注释,但在一些对于自己不理解的地方添加了一些注释。欢迎大家一起讨论。

代码是来自github:GitHub - yanx27/Pointnet_Pointnet2_pytorch: PointNet and PointNet++ implemented by pytorch (pure python) and on ModelNet, ShapeNet and S3DIS.

PointNet系列代码复现详解(2)—PointNet++part_seg_葭月甘九的博客-CSDN博客

先学习的是分类部分代码

train_classification.py

下面代码就是获取当前文件所在的路径,赋值给BASE_DIRROOT_DIR被赋值为BASE_DIR,表示当前文件所在的目录为根目录。将models目录添加到根目录下,并使用sys.path.append()将该路径添加到Python解释器的搜索路径中,以便于在程序中导入models目录下的模块和类。

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
ROOT_DIR = BASE_DIR
sys.path.append(os.path.join(ROOT_DIR, 'models'))

下面就是一些命令行参数,设置一些训练网络的基本参数

比如是否使用GPU,训练批次大小,模型,训练总轮数,以及优化器,训练日志保存路径等等。具体看代码后。

def parse_args():
    '''PARAMETERS'''
    parser = argparse.ArgumentParser('training')
    parser.add_argument('--use_cpu', action='store_true', default=False, help='use cpu mode')
    parser.add_argument('--gpu', type=str, default='0', help='specify gpu device')
    parser.add_argument('--batch_size', type=int, default=24, help='batch size in training')
    parser.add_argument('--model', default='pointnet_cls', help='model name [default: pointnet_cls]')
    parser.add_argument('--num_category', default=40, type=int, choices=[10, 40], help='training on ModelNet10/40')
    parser.add_argument('--epoch', default=200, type=int, help='number of epoch in training')
    parser.add_argument('--learning_rate', default=0.001, type=float, help='learning rate in training')
    parser.add_argument('--num_point', type=int, default=1024, help='Point Number')
    parser.add_argument('--optimizer', type=str, default='Adam', help='optimizer for training')
    parser.add_argument('--log_dir', type=str, default=None, help='experiment root')
    parser.add_argument('--decay_rate', type=float, default=1e-4, help='decay rate')
    parser.add_argument('--use_normals', action='store_true', default=False, help='use normals')
    parser.add_argument('--process_data', action='store_true', default=False, help='save data offline')
    parser.add_argument('--use_uniform_sample', action='store_true', default=False, help='use uniform sampiling')
    return parser.parse_args()
  • --use_cpu:是否使用CPU模式。
  • --gpu:指定GPU设备的编号。
  • --batch_size:训练时的批大小。
  • --model:指定使用的模型名称。
  • --num_category:指定数据集的类别数,可选值为10和40。
  • --epoch:训练的轮数。
  • --learning_rate:学习率。
  • --num_point:点云中的点数。
  • --optimizer:优化器类型,默认为Adam。
  • --log_dir:实验的根目录。
  • --decay_rate:衰减率。
  • --use_normals:是否使用法向量。
  • --process_data:是否将数据离线保存。
  • --use_uniform_sample:是否使用均匀采样策略

下面就是主函数里网络训练的设置

1.log_string(str)用于记录训练数据,然后是读取命令行参数,调用gpu

    def log_string(str):
        logger.info(str)
     
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值