当前位置:   article > 正文

服务器运行PointRCNN代码全过程记录_pointrcnn怎么在服务器上运行

pointrcnn怎么在服务器上运行
纯新手入门对服务器和深度学习都不太了解,主要参考以下连链接,如有错误欢迎指出。
(64条消息) 云服务器复现PointRCNN代码踩坑总结_Matt今年18岁的博客-CSDN博客_pointrcnn 知乎
(64条消息) pointRCNN原理与复现_啦咔咔儿的博客-CSDN博客_pointrcnn复现
代码地址| 论文地址

一、数据准备

  1. KITTI数据集

官网地址:http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d

下载image_2,velodyne,calib,以及label几个文件

  1. 数据结构

将准备好的数据集放入object文件夹中,并将其通过软链接连接到PointRcnn文件的KITTI/object下

Linux命令--删除软连接 - KoMiles - 博客园 (cnblogs.com)

  1. PointRCNN
  2. ├── data
  3. │ ├── KITTI
  4. │ │ ├── ImageSets
  5. │ │ ├── object
  6. │ │ │ ├──training
  7. │ │ │ ├──calib & velodyne & label_2 & image_2 & (optional: planes)
  8. │ │ │ ├──testing
  9. │ │ │ ├──calib & velodyne & image_2
  10. ├── lib
  11. ├── pointnet2_lib
  12. ├── tools

二、环境配置

  1. 创建虚拟环境并激活

  1. conda create -n pointRCNN python=3.6
  2. conda activate pointRCNN

此处报错

  1. CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
  2. To initialize your shell, run
  3. $ conda init <SHELL_NAME>

解决,参考

  1. source activate
  2. (base) root@autodl-container-cbc41190ac-1699b82c:~# source deactivate1
  3. bash: deactivate1: No such file or directory
  4. (base) root@autodl-container-cbc41190ac-1699b82c:~# conda deactivate
  5. root@autodl-container-cbc41190ac-1699b82c:~# conda activate pointRCNN
  1. 下载源代码

git clone --recursive https://github.com/sshaoshuai/PointRCNN.git
  1. 安装pytorch1.0.0并配置依赖包

  1. conda install pytorch==1.0.0 torchvision==0.2.1 cuda100 -c pytorch
  2. pip install easydict
  3. pip install tqdm
  4. pip install tensorboardX
  5. pip install fire
  6. pip install numba
  7. pip install pyyaml
  8. pip install scikit-image
  9. pip install shapely

遇到问题

(1)Collecting package metadata (current_repodata.json): done

Solving environment: failed with initial frozen solve. Retrying with flexible solve.

解决:增加清华源

  1. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  2. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  3. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  4. conda config --set show_channel_urls yes
conda update --all

上述方法都不行,最后发现是开机的时候空闲GPU不够,选的无卡开机。。。有GPU后就好了

(2)pip版本太低也可能导致部分软件包安装失败,更新pip

pip install --upgrade pip
  1. 安装依赖pointnet2,iou3d,roipool3d

sh build_and_install.sh

报错(其他警告均忽略了)

ImportError: /root/miniconda3/envs/pointRCNN/lib/python3.6/site-packages/torch/lib/libmkldnn.so.0: undefined symbol: cblas_sgemm_alloc

安装MLK,参考

conda install mkl=2018 -c anaconda

三、跑代码

  1. Test Model

(1) 下载预训练模型,并放在tools文件夹下,下载链接

(2)快速演示

python eval_rcnn.py --cfg_file cfgs/default.yaml --ckpt PointRCNN.pth --batch_size 1 --eval_mode rcnn --set RPN.LOC_XZ_FINE False

报错:

  1. Traceback (most recent call last):
  2. File "eval_rcnn.py", line 865, in <module>
  3. cfg_from_file(args.cfg_file)
  4. File "/root/PointRCNN/tools/../lib/config.py", line 187, in cfg_from_file
  5. yaml_cfg = edict(yaml.load(f))
  6. TypeError: load() missing 1 required positional argument: 'Loader'

解决:将yaml.load(f)改为yaml.safe_load(f),参考

重新运行,报错

RuntimeError: cublas runtime error : the GPU program failed to execute at /opt/conda/conda-bld/pytorch_1549628766161/work/aten/src/THC/THCBlas.cu:441

查看Issue,目前没找到解决办法,可能是租的服务器显卡是3090,和cuda版本不匹配

参考下述链接,重新创建了一个虚拟环境安装pytorch1.8,并修改代码

Ubuntu20.04+RTX3090复现PointRCNN记录_ubuntu复现pointrcnn_BadgerL的博客-CSDN博客

复现pointrcnn+ubuntu16.043080显卡+pytorch1.7.1+cu110_少年NG的博客-CSDN博客

再次执行sh build_and_install.sh并重新测试评估,成功

  1. training

(1)自己训练模型,主要参照作者readme文件

  1. python generate_gt_database.py --class_name 'Car' --split train
  2. (这里发现使用软链接还是会报错,暂时没找到解决办法,目前是把数据集和代码放在一起)
  3. ## 一阶段
  4. python train_rcnn.py --cfg_file cfgs/default.yaml --batch_size 16 --train_mode rpn --epochs 200
  5. ## 二阶段
  6. python train_rcnn.py --cfg_file cfgs/default.yaml --batch_size 4 --train_mode rcnn --epochs 70 --ckpt_save_interval 2 --rpn_ckpt ../output/rpn/default/ckpt/checkpoint_epoch_200.pth

训练完成后结果会保存在PointRCNN/output/rcnn/default/ckpt中。

(2)生成可视化文件,此处参照其他博客进行了修改

  1. python eval_rcnn.py --cfg_file cfgs/default.yaml --ckpt ../output/rcnn/default/ckpt/checkpoint_epoch_70.pth --batch_size 2 --eval_mode rcnn
  2. ## evaluate all the checkpoints
  3. python eval_rcnn.py --cfg_file cfgs/default.yaml --eval_mode rcnn --eval_all

四、可视化

  1. kitti_obj_vis可视化源代码

因为我自己电脑装的双系统,所以这里选择将生成的预测结果下载下来,在本地进行可视化

(1)数据处理

将KITTI数据集按如下结构放置,并创建软链接

  1. kitti
  2. object
  3. testing
  4. calib
  5. 000000.txt
  6. image_2
  7. 000000.png
  8. label_2
  9. 000000.txt
  10. velodyne
  11. 000000.bin
  12. pred
  13. 000000.txt
  14. training
  15. calib
  16. 000000.txt
  17. image_2
  18. 000000.png
  19. label_2
  20. 000000.txt
  21. velodyne
  22. 000000.bin
  23. pred
  24. 000000.txt
  25. ## 软链接
  26. cd kitti_object_vis/data
  27. ln -s ../PointRCNN/data/KITTI/object object(注意删除下载好文件中本来的Object文件)

(2)环境配置

  1. ## 创建并激活虚拟环境
  2. conda create -n kitti_vis python=3.7 # vtk does not support python 3.8
  3. conda activate kitti_vis
  4. ## 安装软件包
  5. pip install opencv-python pillow scipy matplotlib
  6. conda install mayavi -c conda-forge
  7. ## 测试代码
  8. python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis

报错:

  1. QObject::moveToThread: Current thread (0x180c7f0) is not the object's thread (0x1e3c090).
  2. Cannot move to target thread (0x180c7f0)
  3. qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/chen/anaconda3/envs/kitti_vis/lib/python3.7/site-packages/cv2/qt/plugins" even though it was found.
  4. This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
  5. Available platform plugins are: xcb, eglfs, minimal, minimalegl, offscreen, vnc, webgl.
  6. 已放弃 (核心已转储)

解决参考记录opencv的 QObject::moveToThread:

将kitti_vis中cv2包里面的qt改成qt.bak

(3)显示预测结果,参考云服务器复现PointRCNN代码踩坑总结

再次出现于与上述相同错误,最后参考此链接解决。最终配置

  1. pip install opencv-python==4.1.2.30
  2. pip install pillow scipy matplotlib
  3. pip install vtk==8.1.2
  4. pip install mayavi==4.7.4
  5. pip install PyQt5==5.15.6

重新运行测试代码,报错。

  1. libGL error: MESA-LOADER: failed to open iris: /usr/lib/dri/iris_dri.so: 无法打开共享对象文件: 没有那个文件或目录 (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
  2. libGL error: failed to load driver: iris
  3. libGL error: MESA-LOADER: failed to open iris: /usr/lib/dri/iris_dri.so: 无法打开共享对象文件: 没有那个文件或目录 (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
  4. libGL error: failed to load driver: iris
  5. libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: 无法打开共享对象文件: 没有那个文件或目录 (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
  6. libGL error: failed to load driver: swrast
  7. ERROR: In /work/standalone-x64-build/VTK-source/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx, line 606
  8. vtkXOpenGLRenderWindow (0x3f6b640): Cannot create GLX context. Aborting.

搜索发现可能是anaconda的问题,参照此链接进行尝试,无效。

另一种解决办法,建立一个 /usr/lib/dri/iris_dri.so 的软连接,重新运行脚本报错

  1. libGL error: MESA-LOADER: failed to open iris: /lib/x86_64-linux-gnu/libLLVM-12.so.1: undefined symbol: ffi_type_sint32, version LIBFFI_BASE_7.0 (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
  2. libGL error: failed to load driver: iris
  3. libGL error: MESA-LOADER: failed to open iris: /lib/x86_64-linux-gnu/libLLVM-12.so.1: undefined symbol: ffi_type_sint32, version LIBFFI_BASE_7.0 (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
  4. libGL error: failed to load driver: iris
  5. libGL error: MESA-LOADER: failed to open swrast: /lib/x86_64-linux-gnu/libLLVM-12.so.1: undefined symbol: ffi_type_sint32, version LIBFFI_BASE_7.0 (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
  6. libGL error: failed to load driver: swrast
  7. no pred file

最终解决方案https://zhuanlan.zhihu.com/p/531801732

  1. Tensorboard结果可视化

(1)首先安装tensorflow参考链接(安装完后才发现服务器中预装有tensorboard。。。就当记录一下吧)

选择合适版本,通过conda安装

conda install tensorflow==2.5.0

安装ipykernel

 conda install ipykernel

将新建的环境环境写入notebook的kernel中

python -m ipykernel install --user --name env_tensorflow --display-name “env_tensorflow”

最后在启动页打开笔记本并测试,出现一些警告被忽略了

(2)启动tensorboard

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/664806
推荐阅读
相关标签
  

闽ICP备14008679号