1、本文遇到的问题分为两个章节:云平台安装遇到的问题和本地安装遇到的问题。
2、云平台和本地:云平台有些解决方案放在本地不一定适用,本地放在云平台亦是如此,大家需要尝试一下。
3、版本问题:如果遇到奇奇怪怪的问题,应该首先检查是不是因为版本的问题,我推荐是装高不装低,除非程序硬性要求。(主要是低版本问题太多,太难安装了)
4、环境搭建
九天毕昇云平台安装Openpcdet:九天毕昇”云平台:python3.7+CUDA10.1+torch1.6.0+spconcv1.2.1安装OpenPCDet全流程https://blog.csdn.net/weixin_44013732/article/details/126030624
本地安装Openpcdet:
Ubuntu 22.04从零开始安装Openpcdet 0.6.0——详细记录过程https://blog.csdn.net/weixin_44013732/article/details/130651896
以下是在九天毕昇云平台中安装出现的问题,采用低版本安装:
CUDA10.1+torch1.6.0+spconv1.2.1+pcdet0.5.2
解决方法:
sudo find / -name libcuhash.so
输入:export LD_LIBRARY_PATH=/root/.local/lib/python3.7/site-packages/spconv:"${LD_LIBRARY_PATH}"
参照:OSError: libcuhash.so: cannot open shared object file: No such file or directory
解决方法:
python train/test/demo.py时,后面没有加路径,可以改为:
python train.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml
python test.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --batch_size 1 --ckpt /root/PointCloudDet3D/output/kitti_models/pv_rcnn/default/ckpt/checkpoint_epoch_51.pth --save_to_file
python demo.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --ckpt /root/PointCloudDet3D/output/kitti_models/pv_rcnn/default/ckpt/checkpoint_epoch_51.pth --data_path /root/PointCloudDet3D/data/kitti
train.py:train.py 文件后面需要加上需要训练模型的位置.(即yaml)
test.py:除了yaml路径外,还需要加入pth数据的位置,一般都放在output中(train后才会生成,否则木有文件数据)
demo.py:运行代码,除了需要加上ckpt中训练的pth路径外,还需要加上data的路径,即 /root/PointCloudDet3D/data/kitti,否则也会报错。
如果加上仍然报错,可能是程序本身的问题。
解决方法:删除高版本torch,找到适合CUDA的torch低版本,对应好torchvision。
解决方法:apt-get update升级乌班图
解决方法:
①如果是网络问题:
用vim编辑器进行添加DNS
(1)使用sudo vi /etc/resolv.conf
(2)按i插入:
(3)nameserver 202.96.134.133
(4)nameserver 8.8.8.8
(5)按Esc退出,并输入:wq!强制退出并保存。
(6)用vim /etc/apt/sources.list进入镜像源界面
(7)再用sudo apt-get update进行更新。
②如果不是网络问题:
不要在指令前加sudo,例如: sudo apt-get update改为 apt-get update。
解决方法:
该错误为当前用户没有权限对文件作修改,如果是root权限,可以:wq! 强行保存退出;
解决方法:
[O]pen Read-Only: 打开此档案成为只读档, 可以用在你只是想要查阅该档案内容并不想要进行编辑行为时。
(E)dit anyway:还是用正常的方式打开你要编辑的那个档案, 并不会载入暂存盘的内容。不过很容易出现两个使用者互相改变对方的档案等问题!
( R )ecover: 就是加载暂存盘的内容,用在你要救回之前未储存的工作。 不过当你救回来并且储存离开 vim 后,还是要手动自行删除那个暂存档喔!
(D)elete it: 你确定那个暂存档是无用的!那么开启档案前会先将这个暂存盘删除! 这个动作其实是比较常做的!因为你可能不确定这个暂存档是怎么来的,所以就删除掉他吧!
(Q)uit: 按下 q 就离开 vim ,不会进行任何动作回到命令提示字符。
(A)bort: 忽略这个编辑行为
解决方法:使用jar命令进行解压,jar xvf xxxx.zip,xvf前不要加-
解决方法:
apt-get update (不要加sudo)
apt-get upgrade
解决方法:
安装:apt-get install zip
zip xxx.zip xxx
或者pip install zip
解决方法:
pip install vtk==8.1.2
将VTK版本降级
解决方法:apt-get install yum
解决方法:
可能1:torch版本太高,cuda10.1适合安装torch1.5.0-torch1.7.0。推荐使用torch1.6.0,目前没有出错,其他两个版本依旧报错。
可能2:其他第三方库版本太高或太低,例如安装mmdet时,mmcv-full安装1.6.2就会报出这样的错误,而mmcv-full==1.6.1时就不会。
解决方法:
Yaml 5.1版本之后就弃用了不安全的load加载方式,需要在load方法中加入指定的加载器,或者使用安全加载api, 通过默认加载器使load函数的安全得到加强。
直接安装指定版本下的 yaml 包即可
pip uninstall pyyaml
pip install pyyaml==5.1
解决方法:
安装torch1.8.0 以上版本,否则torch/lib里没有该文件,所以采用find命令进行查找。
sudo find / -name libtorch_cpu.so
查到相应的路径用下列代码
export LD_LIBRARY_PATH=文件路径:"${LD_LIBRARY_PATH}"
例如:
export LD_LIBRARY_PATH=/usr/local/lib/python3.6/dist-packages/torch/lib:"${LD_LIBRARY_PATH}"
export LD_LIBRARY_PATH=/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/lib:"${LD_LIBRARY_PATH}"
解决方法:
pytorch版本太低,需要用torch1.5及以上的。
解决方法:
spconv虽然安装上了,但是安装有缺口,需要重新配置。
或者是由于版本不适配的问题。
解决方法:
这是CUDA10.0版本的东西,
通过find找到该文件:
sudo find / -name libcudart.so.10.0
找到文件路径,/usr/local/lib/python3.6/dist- packages/cntk/libs/libcudart.so.10.0
将上面的路径添加到临时路径
export LD_LIBRARY_PATH=/usr/local/lib/python3.6/distpackages/cntk/libs:"${LD_LIBRARY_PATH}"
find查找后,发现文件是在python3.6的cntk文件夹下,我的环境是python3.7,不能安装cntk(cntk最高版本只支持python 3.6),只能通过export 临时加入环境变量。
解决方法:
这是cmake安装命令(在本地安装):
#解压
tar -xvzf cmake-3.15.3.tar.gz
cd cmake-3.15.3
./bootstrap #执行引导文件
#该命令执行需要一定时间,请耐心等待。成功执行结束之后,末尾提示:CMake has bootstrapped. Now run make.
make
sudo make install
cmake --version
cd ..
rm -rf cmake-3.15.3 #清理安装源代码
pip install cmake==3.15.3
前面时建立安装环境,最后还需要加上pip install cmake==3.15.3否则还是显示没安装上。
问题如下:
subprocess.CalledProcessError: Command '['cmake', '/home/zdj/spconv', '-DCMAKE_PREFIX_PATH=/home/zdj/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch', '-DPYBIND11_PYTHON_VERSION=3.7', '-DSPCONV_BuildTests=OFF', '-DPYTORCH_VERSION=10600', '-DCMAKE_CUDA_FLAGS="--expt-relaxed-constexpr" -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/zdj/spconv/build/lib.linux-x86_64-3.7/spconv', '-DCMAKE_BUILD_TYPE=Release']' returned non-zero exit status 1.
解决方法1:
此问题说明spconv安装缺文件,从官方下载下来的spconv1.2.1,文件夹下的third_party/pybind11是空的,需要自己手动去下载。
pybind11链接:
[https://github.com/pybind/pybind11/tree/3b1dbebabc801c9cf6f0953a4c20b904d444f879](https://github.com/pybind/pybind11/tree/3b1dbebabc801c9cf6f0953a4c20b904d444f879)
解决方法2:电脑是30系列显卡时,需要安装CUDA11.x,属于高版本,spconv需要安装2.x。
每台主机问题多种多样,出现这种问题很多情况下是版本不适配。
解决方法:
卸载了重新装,就是这么神奇。
借鉴:spconv库安装成功但是无法import
解决方法:
程序本身有问题,用pcdet0.3.0运行时出现的错误,转用pcdet0.5.2就可以运行。
解决方法:
再次执行pyhton setup.py develop进行安装。
解决方法:
①更改数据生成路径:
来到/pcdet/pcdet/datasets/kitti/kitti_dataset.py文件:
倒数第三行和倒数第四行修改data_path和save_path,修改为
data_path=ROOT_DIR / 'pcdet' / 'data' / 'kitti',
save_path=ROOT_DIR/ 'pcdet' / 'data' / 'kitti'。
②更改数据索引路径
来到/pcdet/tools/cfgs/datasets_configs/kitti_dataset.yaml文件:
修改第二行路径DATA_PATH为DATA_PATH: '/root/pcdet/data/kitti'。
解决方法:
在/pcdet/pcdet/datasets/__init__.py:存着build_dataloader,里面有DataLoader函数——数据加载器,64行,将num_workers=works中的works直接改为0。
切忌将上面的works改为0(上面的输入参数),否则仍然没有用,直接删掉改为0就好。
解决方法:
程序有问题,请换一个程序包尝试。用pcdet0.3.0运行时出现的错误,转用pcdet0.5.2就可以运行。
解决方法:
训练test.py时后面需要加上cfgs的访问地址和ckpt的访问地址,如下:
python test.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --batch_size 1 --ckpt /root/PointCloudDet3D/output/kitti_models/pv_rcnn/default/ckpt/checkpoint_epoch_51.pth --save_to_file
这个地址就是训练模型yaml的地址和训练好的pth的地址,pth只有在train过后才会自动生成。
解决方法:
可能1:
pcdet安装版本太低,问题中提到的错误是高版本的东西。如果用pcdet0.3.0安装,却运行了pcdet0.5.2的东西,则会出现这种错误。
需要再次安装高版本的pcdet,即python pcdet.py develop。
可能2:
程序包本身错误。
解决方法:pcdet版本太高,spconv与pcdet不匹配。
可以选择升级spconv,也可以选择降级pcdet。
解决方法:
data里头没数据,需要生成数据或者拷贝数据,或者缺少某些文件。
我提供给大家一个生成好的data文件:
小型kitti数据集
本地安装的版本比较高:
CUDA11.1+ ‘torch1.9.1+cu111’ + spconv-cu111 2.1.25+pcdet0.6.0
以上是在云平台上安装过程中出现的问题,下面是在本地遇到的问题:
解决方法:
参考:Linux安装CUDA GCC版本不兼容
加入--override即可,例如:
sudo sh cuda_10.2.89_440.33.01_linux.run --override
问题描述:这个问题其实是gcc/g++编译时,出现版本不匹配的问题,最终会导致编译不出build文件夹下的.o文件。
解决方法1:
缺少g++编译器,可以用以下指令去安装g++:
sudo apt-get install build-essential
参考:报错subprocess.CalledProcessError: Command ‘[‘which‘, ‘g++‘]‘ returned non-zero exit status 1.
解决方法2:
用上面的方法有可能出现以下情况(反正我电脑是没用):
unsupported GNU version! gcc versions later than 10 are not supported! The nvcc flag -allow-unsupported-compiler can be used to override this version check; however, using an unsupported host compile...
也就是说,你的gcc和g++版本过高啦,这个指令sudo apt-get install build-essential
会自动安装与系统匹配的最新g++版本,需要手动降版本安装(略麻烦,但是有用):
安装过程如下:
①检查版本
首先查看下你之前安装的gcc版本:
gcc -v
如果显示:
说明你安装的是高版本:11.30
②手动降版本
根据问题描述:gcc versions later than 10 are not supported!
说明我们要安装gcc10版本以下的,这里我们选择安装gcc-9
先卸载之前的:
卸载原来高版本的gcc
sudo apt-get remove gcc
通过autoremove指令卸载高版本g++:
sudo apt autoremove
安装gcc-9
sudo apt-get install gcc-9
安装g++-9
sudo apt-get install g++-9
③添加软连接
但是这样还没有安装完,你使用gcc -v指令仍然不能看到你的gcc版本
是因为我们还需要手动加入软链接,用来链接我们的gcc和g++。
具体操作如下:
输入指令,删除之前的软连接:
sudo rm /usr/bin/gcc
sudo rm /usr/bin/g++
构建新的软连接:
sudo ln -s /usr/bin/gcc-9 /usr/bin/gcc
sudo ln -s /usr/bin/g++-9 /usr/bin/g++
这时我们再看看我们的gcc版本:
9.5.0版本,没错,接下来跑一下python setup.py develop
好了,原来gcc编译的位置没报错,解决啦!剩下就是漫长的build环节~
参考:简单实现gcc/g++更换版本
解决方法:
将/OpenPCDet-master/setup.py下的这段代码:
cmdclass={'build_ext': BuildExtension}
更改为:
cmdclass={'build_ext': BuildExtension.with_options(use_ninja=False)}
该步骤是为了pytorch禁用ninja。
解决方法参考:
[VoteNet]报错出现错误“subprocess.CalledProcessError: Command ‘[‘ninja‘, ‘-v‘]‘ returned nonzero exit state_天蓝色秋裤的博客-CSDN博客
博主真牛比。
解决方法:
以下解决方法仅适用于pcdet:
你往上面翻一翻,看看是不是有个这样的问题:
如果是,恭喜你,参照33号问题,问题解决。
如果不是,抱歉我还没遇到::>_<::,有些博客说是pytorch版本的问题:
问题:
/home/xyy/anaconda3/compiler_compat/ld: cannot find /home/xyy/OpenPCDet-master/build/temp.linux-x86_64-3.7/pcdet/ops/iou3d_nms/src/iou3d_nms_kernel.o: 没有那个文件或目录
collect2: error: ld returned 1 exit status
error: command 'g++' failed with exit status 1
问题描述:应该是根据网上的方法,将cpp_extention.py文件中的['ninja','--v'] 改成['ninja','--version'],这样的方法治标不治本,导致build文件夹下的.o文件根本编译不出来。
解决方法:
把['ninja','--version']改回['ninja','--v'],接着会报33号错误,查看上面的解决方法。
解决方法:
缺少cuda环境变量设置,主要是缺少CUDA_HOME变量设置。
①检查Linux下的环境变量中有没有将cuda添加上去
vim ~/.bashrc #打开环境变量脚本
②添加下面几行代码
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64
③记得更新:source ~/.bashrc。
④再运行一下python setup.py develop就没问题啦:明显看到到building的时候没有卡。
解决方法:
按照以下指令安装:
pip install sharedarray==3.1.0
安装的版本尽量不要太高,否则可能会影响后续安装,因人而异。
解决方法:
出现这个错误(ImportError: numpy.core.multiarray failed to import)往往是因为numpy版本过低,但是numpy=1.19.5显然已经很高。追溯错误发现是import SharedArray导致报错,经查是因为sharedarray库版本过高,所以对其进行降级处理:
pip install sharedarray==3.1.0
原文链接:关于Numpy的版本错误_numpy版本过高_炒饭小哪吒的博客-CSDN博客
问题描述:该问题与38类似,都有可能是因为sharedarray版本导致的。
解决方法:
出现这个问题,有博主说是numpy版本太高,scikit-image版本太低了,我觉得可以一试:
①升级skimage包可解决问题:
pip install --upgrade scikit-image
②更改sharedarray版本
如果还有问题,可以参照38号报错,有可能是sharedarray版本太高,导致numpy和skimage在互相拉扯,你升级哪一个都会报错。
解决方法:
pip install opencv-python
pip install opencv-contrib-python
解决方法:
使用指令:
pip install av2
python3.7安装av2时会报错:
提示到:Requires-Python >=3.8,说明没有适配python3.7的‘av2’。
因此,安装av2时尽量保持python>=3.8版本。
解决方法:
使用指令
pip install kornia
不能使用torch1.9.1以下的版本安装,否则安装korina时会遇到如下提示:
上面是安装完torch1.8.1的提示:kornia 0.6.12 requires torch>=1.9.1。是因为它的requirement.txt文件中要求torch>=1.9.1。
当然,你也可以选择安装低版本的kornia进行安装,我没有尝试过。
答:
sudo chmod -R 777 文件夹名称
参考:jenkins:PermissionError [Errno 13] Permission denied 权限问题解决