Openpcdet-(2)自数据集训练数据集训练

一、代码修改

1、复制pcdet/datasets/kitti/kitti_dataset.py为WJ_dataset.py

  1. def get_infos()
  2. def get_label()
  3. 添加:from pcdet.utils import object3d_WJ
  4. 注释掉calib中参数的加载、计算代码

2、 复制pcdet/utils/object3d_kitti.py 为objetc3d_WJ.py,根据数据标注格式加载读取对应标签。

3、pcdet/datasets/dataset.py, __init__.py中添加

Openpcdet-(2)自数据集训练数据集训练_第1张图片

4、复制kitti_dataset.yaml为WJ_dataset.yaml

  1. DATASET: 'WJDataset'
  2. POINT_CLOUD_RANGE: [-73.44, -79.36, -6, 73.44, 79.36, 2] 类别信息
    类别信息
  3.  VOXEL_SIZE: [0.1, 0.1, 0.1]   注意:点云检测范围和voxelsize设定需谨慎,容易导致网络结构出现tensor尺度不匹配的问题。
  4. filter_by_min_points:添加类别
  5. SAMPLE_GROUPS:添加每个类别目标的采样个数

5、复制pv_rcnn.yaml

  1.  CLASS_NAMES: ['car', 'bicycle', 'bus', 'tricycle', 'pedestrian', 'truck'] #'semitrailer',
  2. _BASE_CONFIG_:修改为WJ_dataset.yaml路径
  3. filter_by_min_points:添加类别
  4. SAMPLE_GROUPS:添加每个类别目标的采样个数
  5. DENSE_HEAD中ANCHOR_GENERATOR_CONFIG:添加每类目标的anchor信息

6、tensorboard远程访问

     1、在登录远程服务器的时候使用命令:

ssh -L 8008:localhost:6006 [email protected]

如果6006冲突了,换成其他端口号。(一般ssh远程登录命令:ssh [email protected].×.××)

     2、训练完模型之后使用如下命令:

tensorboard --logdir=./tensorboard/ --port=6006

(‘/path/to/log-directory’为自己设定的日志存放路径)

最后,在本地访问地址:http://10.102.1.217:6006/ 

二、问题:

1、RuntimeError: Sizes of tensors must match except in dimension 1. Expected size 199 but got size 200 for tensor number 1 in the list

原因:base_bev_backbone.py文件中x = torch.cat(ups, dim=1)行。

网络下采样、上采样得到的特征图进行concat,但是第三维尺度不匹配。由于voxelsize设定导致。

PVRCNN官方建议 Voxel设置:X,Y方向个数是16的倍数。Z方向为40。

2、训练集和验证集数据都放在training文件夹下,否则出现如下错误。

assert img_file.exists()  # 如果该图片文件不存在,直接报错

3、训练完成后运行demo.py可视化模型检测结果,检测框错误,。

Openpcdet-(2)自数据集训练数据集训练_第2张图片

 解决方法:

    (1)检查生成的gt_database是否正确,可视化每个目标看方向,大小是否是标注的目标。

    (2)检测spconv库版本,训练和测试的版本不一致会有问题。

    4、训练模型的检测结果car类型车检测不到,其它类别目标可以检测到。

  解决方法:

     (1)数据验证:查看训练数据送到网络训练前,self.prepare_data(data_dict=input_dict)

是否正确。openpcdet将类别添加到box最后一列进行拼接,组成8维向量。删除了data_dict

中的names。

    (2)推理后处理验证:验证nms前目标的类别是否有car目标。

     (3)配置文件验证:配置文件中目标类别字符核对。(我的问题就出现在car和Car的大小写问题)。导致car目标在生成anchor时无对应,未进行训练。

Openpcdet-(2)自数据集训练数据集训练_第3张图片

你可能感兴趣的:(目标检测,深度学习,计算机视觉,python)