【摘要】 使用Anaconda建立虚拟环境
感谢Little_sky_jty提供的一些解决方法
conda create -n pointpillars python=3.7 anaconda
source activate pointpillars
# conda install shapely pybind11 protobuf scikit-image num…
使用Anaconda建立虚拟环境
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.py
中get_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