最近在研究点云的3d detection,发现一个挺好的框架:mmdet3d,入坑了。配置环境过程中遇到了一系列的问题,现记录下来:
1.undefined symbol: _ZN3c107Warning4warnENS_14SourceLocationERKSsb
应该是mmcv-full、pytorch、cuda这些版本不匹配原因
尝试过
torch1.3.1+mmcv-full1.3.1 ×
torch1.7.1+mmcv-full1.3.1 ×
最后按recommend的
conda install pytorch1.5.0 cudatoolkit=10.1 torchvision0.6.0 -c pytorch
即torch1.5.1+mmcv-full1.3.1 √
2.import pycocotools._mask as _mask
File “pycocotools/_mask.pyx”, line 1, in init pycocotools._mask
ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject
应该是pycocotools的问题,按照重新配置了一下numpy的版本,原本是1.19
pycocotools==2.0.2
numpy==1.20.2
3.ImportError: cannot import name ‘ball_query_ext’ from ‘mmdet3d.ops.ball_query’ (/opt/sdatmp/lq/project/gitproject/mmdetection3d/mmdet3d/ops/ball_query/init.py)
感觉是编译的时候,目录应该多一级/src/:
warning: no files found matching ‘mmdet3d/ops//*.cpp’
warning: no files found matching 'mmdet3d/ops//.cu’
warning: no files found matching 'mmdet3d/ops/**/.h’
warning: no files found matching ‘mmdet3d/ops/**/*.cc’
warning: no files found matching ‘mmdet3d/VERSION’
替换gcc版本为5.5,ubuntu18.04下安装多个版本的gcc并随时替换,然后重新运行pip install -v -e .
import报同样的错,编译时报的错稍有不同
编译时有很多 changing mode 755的输出
运行mmdet3d.utils.collect_env.py
时,输出的环境信息如下:
可能是因为mmdet是用gcc7.3编译的,和mmdet3d用gcc5.5不一致,于是重新创建一个虚拟环境,从头开始配置一遍试试
还是不行
难道是g++也要修改版本?
知乎大佬说g++也要5.4,好吧,开始我的第三次尝试
sudo apt install gcc-5 g++-5
查看路径下是否存在多版本的gcc/g++
ls /usr/bin/gcc*
ls /usr/bin/g++*
指定软连接gcc-5和g+±5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 80 --slave /usr/bin/g++ g++ /usr/bin/g++-5
最后测试一下,分别都是对应版本5.5.0
gcc -v
g++ -v
终于successful了,喜极而泣啊!!!!
最后
多个版本cuda,当想使用其中某个版本时,为其创建软连接:
sudo ln -s /usr/local/cuda-10.1 /usr/local/cuda
后来运行过程中依然报错:
可能的问题:安装cuda的时候用的gcc编译版本和后面安装mmdet的时候不一致
解决方案:在gcc5.5、g++5.5的环境下重新安装cuda11.1,
安装cuda11.1过程:
直接在官网上安装deb包,用dpkg会报一系列的版本依赖错误,所以改用安装.run文件,并按照Ubuntu18.04安装cuda11.1方法安装
cuda教程中配置环境变量时少了一条,整体应该是:
# cuda 11.1
export PATH=/usr/local/cuda-11.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda-11.1
接着安装pytorch1.8.1
conda install pytorch torchvision torchaudio cudatoolkit=11.1
open3d的版本要装0.11的,0.12会报错
‘NoneType’ object has no attribute ‘point_size’
最后就装好啦,运行一下demo试试
总结:
运行python ./mmdet3d/utils/collect_env.py
,查看当前的环境