想尽快入门点云,因此就从这个经典的点云处理神经网络开始。源码已经有了中文注释,但在一些对于自己不理解的地方添加了一些注释。欢迎大家一起讨论。
PointNet系列代码复现详解(2)—PointNet++part_seg_葭月甘九的博客-CSDN博客
先学习的是分类部分代码
train_classification.py
下面代码就是获取当前文件所在的路径,赋值给BASE_DIR
。ROOT_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)