PointPillars(一)环境搭建/模型训练问题汇总

【摘要】 使用Anaconda建立虚拟环境

感谢Little_sky_jty提供的一些解决方法

conda create -n pointpillars python=3.7 anaconda
source activate pointpillars
# conda install shapely pybind11 protobuf scikit-image num…

使用Anaconda建立虚拟环境

感谢Little_sky_jty提供的一些解决方法

conda create -n pointpillars python=3.7 anaconda
source activate pointpillars
# conda install shapely pybind11 protobuf scikit-image numba pillow
# conda install pytorch torchvision -c pytorch
# conda install google-sparsehash -c bioconda

  
 

安装科学计算等依赖库,注意numpy版本

直接使用conda install shapely pybind11 protobuf scikit-image numba pillow,默认安装numpy版本是最高版本,我的是1.19.2,这样训练会出现如下问题TypeError: ‘numpy.float64’ object cannot be interpreted as an integer
感谢qq_4187065提供的方法

源码如下

 for i in range(overlap_ranges.shape[1]): for j in range(overlap_ranges.shape[2]): min_overlaps[:, i, j] = np.linspace(*overlap_ranges[:, i, j])

  
 

出错原因:
numpy版本1.17.2,支持np.linspace(0.5,0.95,10.0)最后一位作为np.float64输入,正常运行。
numpy版本1.19.1,不支持np.linspace浮点数作为最后一个参数。

如果安装其他低版本numpy,比如1.16.0,会出现PointPillars训练内存不够处理:RuntimeError: DataLoader worker (pid) is killed by signal: Killed.
即使增加交换空间的虚拟内存或者减少num_worker线程数量也无法解决这个问题

增加虚拟内存方法

second.pytorch/second/data/kitti_common.pyget_kitti_image_info函数可以设置num_worker,源码如下:

def get_kitti_image_info(path, training=True, label_info=True, velodyne=False, calib=False, image_ids=7481, extend_matrix=True, num_worker=8, #  num_worker=4, relative_path=True, with_imageshape=True):

  
 

我们anconda虚拟环境需要进行这些操作,查看本地numpy版本,并删除,重新安装1.17.2版本

(pointpillars) t@t-Default-string:~$ conda list | grep numpy
numpy 1.19.2 py37h54aff64_0 defaults
numpy-base 1.19.2 py37hfa32c7d_0 defaults

  
 
conda uninstall numpy==1.19.2
conda install numpy==1.17.2
conda install shapely pybind11 protobuf scikit-image numba pillow

  
 

安装GPU版本pytorch和torchvision,注意torch的gpu版本

我的机器是2080Ti的显卡,安装的cuda是10.0版本所以,直接使用conda install pytorch torchvision -c pytorch,会有问题,这样安装的gpu版本的torch基本会出现和本机cuda版本不一直
这是我之前写的,使用清华源,下载安装匹配python版本和cuda版本的pytorch与torchvision

其他类型问题

second.pytorch\second\pytorch\models文件夹下的voxelnet.py的911行:

opp_labels = (box_preds[..., -1] > 0) ^ dir_labels.byte()
# 换成如下
opp_labels = (box_preds[..., -1] > 0) ^ dir_labels.bool()

  
 

模型训练和测试

Car AP@0.70, 0.70, 0.70:
bbox AP:90.70, 88.99, 87.53
bev  AP:90.25, 87.87, 85.67
3d   AP:81.45, 75.33, 70.39
aos  AP:90.62, 88.60, 86.86
Car AP@0.70, 0.50, 0.50:
bbox AP:90.70, 88.99, 87.53
bev  AP:90.82, 90.11, 89.50
3d   AP:90.82, 90.01, 89.27
aos  AP:90.62, 88.60, 86.86

Car coco AP@0.50:0.05:0.95:
bbox AP:70.33, 66.57, 65.25
bev  AP:69.33, 66.11, 64.61
3d   AP:56.28, 52.84, 51.35
aos  AP:70.27, 66.31, 64.78

  
 

文章来源: blog.csdn.net,作者:CcaozzZ,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/czzc1990/article/details/115556199

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享