PV-RCNN代码应用——参数修改

PV-RCNN:papercode
PV-RCNN代码解读——数据处理

1. 修改kitti_dataset.yaml

打开tools/cfgs/dataset_configs/kitti_dataset.yaml
可能需要更改的内容有

# 第3行,点云范围,根据实际自己的点云范围调整
POINT_CLOUD_RANGE: [0, -40, -3, 70.4, 40, 1] 
# 顺序为[x_min, y_min, z_min, x_max, y_max, z_max]

# 第65-72行,体素参数,根据点云的稠密程度调整
VOXEL_SIZE: [0.05, 0.05, 0.1] #体素大小
MAX_POINTS_PER_VOXEL: 5 #每个体素的最高点数
      MAX_NUMBER_OF_VOXELS: { #体素数量上限
        'train': 16000,
        'test': 40000
      }

这里是我写的统计点云数据范围代码

2. 更改点云数据velodyne

我的点云数据文件名叫pseudo-lidar_velodyne

 1. 将自己的pseudo-lidar_velodyne文件放入data/kitti/training
 2. 进入pcdet/datasets/kitti/kitti_object_eval_python/kitti_common.py
 3. 将第47行代码中的'velodyne'改为'pseudo-lidar_velodyne'
3. 训练

PV-RCNN代码应用于我们自己的点云数据,进入tools
官方给出的训练代码为

python train.py --cfg_file ${CONFIG_FILE}

我这里使用的参数batch_sizeworkers是2,epochs是10,储存路径命名为'mydata_1'

python train.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --batch_size 2 --workers 2 --epochs 10 --extra_tag 'mydata_1'
3. 测试

进入tools,官方给出的训练代码为

python test.py --cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE} --ckpt ${CKPT}

训练的结果储存在output/kitti_models/pv_rcnn/default/ckpt
我使用的文件是checkpoint_epoch_10.pthbatch_size是2
extra_tag表示储存路径的一个文件夹名,最好和训练的参数保持一致

python test.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --batch_size 2 --ckpt ../output/kitti_models/pv_rcnn/mydata_1/ckpt/checkpoint_epoch_10.pth --extra_tag 'mydata_1'
4. 可视化

进入tools,官方给出的可视化代码为

python demo.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml \
    --ckpt pv_rcnn_8369.pth \
    --data_path ${POINT_CLOUD_DATA}
    # The original KITTI .bin data within data/kitti, like data/kitti/training/velodyne/000008.bin

Kitti的数据看一下效果

python demo.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --ckpt ../output/kitti_models/pv_rcnn/kitti_1/ckpt/checkpoint_epoch_10.pth --data_path ../data/kitti/training/velodyne/000000.bin

改成自己的训练结果和点云数据
这里get_velodyne_path()中的点云名字使用的是pseudo-lidar_velodyne

python demo.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --ckpt ../output/kitti_models/pv_rcnn/mydata_1/ckpt/checkpoint_epoch_10.pth --data_path ../data/kitti/training/pseudo-lidar_velodyne/000000.bin
5. 可能遇到的错误

以下错误表示没有检测到目标

ValueError: zero-size array to reduction operation minimum which has no identity

我的其他PV-RCNN代码应用系列文章,如果对你有帮助的话,请给我点赞哦~
PV-RCNN环境配置
PV-RCNN代码应用——更改测试集文件
PV-RCNN代码应用——参数修改
PV-RCNN代码应用——二进制文件统计点云数据范围

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
PV-RCNNPoint-Voxel-Region-based Convolutional Neural Network)是一种用于点云目标检测的神经网络模型,其主要思想是将点云数据转换为体素(Voxel)表示,通过将点云划分为不同的体素,将点云数据转换为体素特征图,然后通过卷积神经网络提取特征,最后使用区域建议网络(Region Proposal Network,RPN)和ROI池化层进行目标检测。 PV-RCNN代码解读主要可以从数据预处理、网络模型构建和训练步骤三个方面进行说明。 首先,在数据预处理阶段,代码会先将原始的点云数据转换为体素表达。将点云数据进行体素化可以提高计算效率,同时也有利于在三维空间中建模目标。其次,代码会对体素进行特征提取,通过卷积神经网络对体素特征图进行卷积和池化操作,从而得到更具有表达能力的特征表示。 其次,在网络模型构建阶段,代码会搭建PV-RCNN的网络结构,包括体素特征提取网络和目标检测网络。体素特征提取网络通常采用多层卷积神经网络,用于提取点云体素的特征表示。目标检测网络则包括RPN和ROI池化层,用于生成目标的候选框,并对候选框进行分类和回归。 最后,在训练步骤中,代码会使用已标注的点云数据进行网络模型的训练。通常采用交叉熵损失函数进行分类损失计算,并使用边界框回归损失函数计算位置预测的误差。通过反向传播和优化算法,更新网络参数,使网络能够更好地适应目标检测的任务。 通过对PV-RCNN代码的解读,我们可以更深入地理解其工作原理和实现方式,从而更好地应用于点云目标检测的研究和实践。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值