“九天毕昇”云平台:python3.7+CUDA10.1+torch1.6.0+spconcv1.2.1安装OpenPCDet全流程

  • 一.九天毕昇云平台
    • 1.运行环境
    • 2.云平台包含的第三方库
  • 二.开始搭建
    • 1.整理文件
    • 2.解压文件
    • 3.安装spconv-1.2.1
      • (1)安装第三方库
      • (2)安装wheel
      • (3)验证安装
    • 4.安装cmake-3.15.3
    • 5.搭建pcdet
      • (1)安装requirements.txt中的第三方库
      • (2)安装pcdet
  • 三.训练&测试&demo
    • 1.train.py
      • (1)添加环境变量,
      • (2)进行训练
      • (3)进行测试
      • (4)进行demo
  • 四.所有命令
    • 1.安装指令
    • 2.训练+测试+demo
    • 3.初始化指令
  • 五.训练自己的数据
  • 六.相比于官方文件所做的改动
    • 1.修改requirements中的参数
    • 2.添加了数据集
    • 3.更换了程序包
    • 4.spconv下重新下载了pybind11
  • 七.遇到问题
  • 八.文件说明
    • 一、tools文件夹下的文件
      • 1.cfgs下:
        • (1)dataset_configs下:
      • (2)kitti_models下
      • 2.train_utils
        • (1)train_untils.py
    • 二、pcdet文件夹下的文件
      • 1.datasets子文件下
        • (1)kitti下
  • 参考文献

耗时100h折磨,踩坑无数,终于搭建好平台。

以下是搭建过程,对于其他的云平台和本地搭建也同样适用,后面有搭建过程中遇到问题的解决方法。

一.九天毕昇云平台

官方网站:九天毕昇

关于九天云平台的具体介绍,可以参照
最良心算力平台 | 九天毕昇 |人工智能 | 深度学习 | 中国移动

1.运行环境

使用该云平台,能够省一些搭建和运行的时间,方便用户进行调整。

平台配置:8核32G + 1 V100,CUDA10.1,Ubuntu18.04,python3.7
安装环境:torch == 1.6.0,torchvision == 0.7.0,spconv == 1.2.1,cmake == 3.15.3,pcdet == 0.5.2,vtk == 8.1.2

2.云平台包含的第三方库

Package                Version
---------------------- -------------------
absl-py                1.0.0
aiohttp                3.8.1
aiosignal              1.2.0
anyio                  2.2.0
appdirs                1.4.4
argcomplete            1.12.3
argon2-cffi            20.1.0
asn1crypto             1.3.0
astor                  0.8.1
async-generator        1.10
async-timeout          4.0.1
asynctest              0.13.0
attrs                  21.2.0
Babel                  2.9.1
backcall               0.2.0
bleach                 4.0.0
bokeh                  2.4.2
cached-property        1.5.2
cachetools             4.2.4
certifi                2021.10.8
cffi                   1.14.0
cfgv                   3.1.0
chardet                3.0.4
charset-normalizer     2.0.4
click                  7.1.2
cma                    3.0.3
colorlog               4.1.0
conda                  4.11.0
conda-package-handling 1.6.0
cryptography           2.8
cycler                 0.10.0
debugpy                1.5.1
decorator              5.1.0
defusedxml             0.7.1
distlib                0.3.0
docopt                 0.6.2
entrypoints            0.3
filelock               3.0.12
flake8                 3.8.3
Flask                  1.1.2
Flask-Babel            1.0.0
frozenlist             1.2.0
funcsigs               1.0.2
gast                   0.2.2
google-auth            1.35.0
google-auth-oauthlib   0.4.6
google-pasta           0.2.0
graphviz               0.14
grpcio                 1.43.0
gunicorn               20.0.4
h5py                   3.6.0
hdfs                   2.5.8
identify               1.4.19
idna                   2.8
importlib-metadata     4.8.2
ipykernel              6.4.1
ipython                7.29.0
ipython-genutils       0.2.0
itsdangerous           1.1.0
jedi                   0.18.0
Jinja2                 3.0.2
joblib                 0.15.1
json5                  0.9.6
jsonschema             3.2.0
jupyter-client         7.0.6
jupyter-core           4.9.1
jupyter-server         1.4.1
jupyter-server-proxy   3.2.0
jupyter-tensorboard    0.2.0
jupyterlab             3.2.1
jupyterlab-nvdashboard 0.6.0
jupyterlab-pygments    0.1.2
jupyterlab-server      2.8.2
Keras-Applications     1.0.8
Keras-Preprocessing    1.1.2
kiwisolver             1.2.0
Markdown               3.3.6
MarkupSafe             2.0.1
matplotlib             3.2.1
matplotlib-inline      0.1.2
mccabe                 0.6.1
mistune                0.8.4
mkl-fft                1.3.1
mkl-random             1.2.2
mkl-service            2.4.0
multidict              5.1.0
nbclassic              0.2.6
nbclient               0.5.3
nbconvert              6.1.0
nbformat               5.1.3
nest-asyncio           1.5.1
nltk                   3.5
nodeenv                1.4.0
notebook               6.4.6
numpy                  1.21.2
oauthlib               3.1.1
objgraph               3.4.1
olefile                0.46
opencv-python          4.2.0.34
opt-einsum             3.3.0
packaging              21.3
paddlehub              1.7.1
paddlepaddle-gpu       1.8.2.post107
pandas                 1.0.4
pandocfilters          1.4.3
parso                  0.8.2
pathlib                1.0.1
pexpect                4.8.0
pickleshare            0.7.5
Pillow                 8.4.0
pip                    20.0.2
pre-commit             2.5.1
prettytable            0.7.2
prometheus-client      0.12.0
prompt-toolkit         3.0.20
protobuf               3.12.2
psutil                 5.8.0
ptyprocess             0.7.0
pyasn1                 0.4.8
pyasn1-modules         0.2.8
pycodestyle            2.6.0
pycosat                0.6.3
pycparser              2.19
pyflakes               2.2.0
Pygments               2.10.0
pynvml                 11.4.1
pyOpenSSL              19.1.0
pyparsing              3.0.4
pyrsistent             0.18.0
PySocks                1.7.1
python-dateutil        2.8.2
pytz                   2021.3
PyYAML                 5.3.1
pyzmq                  22.3.0
rarfile                3.1
regex                  2020.6.8
requests               2.22.0
requests-oauthlib      1.3.0
rsa                    4.8
ruamel-yaml            0.15.87
scipy                  1.4.1
Send2Trash             1.8.0
sentencepiece          0.1.92
setuptools             45.2.0.post20200210
simpervisor            0.4
six                    1.14.0
sniffio                1.2.0
tensorboard            2.1.1
tensorflow             2.1.0
tensorflow-estimator   2.1.0
termcolor              1.1.0
terminado              0.9.4
testpath               0.5.0
toml                   0.10.1
tornado                6.1
tqdm                   4.42.1
traitlets              5.1.1
typing-extensions      3.10.0.2
urllib3                1.25.8
virtualenv             20.0.23
visualdl               2.0.0b6
wcwidth                0.2.5
webencodings           0.5.1
Werkzeug               1.0.1
wheel                  0.34.2
wrapt                  1.13.3
yapf                   0.26.0
yarl                   1.6.3
zipp                   3.6.0

二.开始搭建

相关文件的下载链接:
链接:https://pan.baidu.com/s/12AIlZhTFyiI3Y3HizgSkzQ
提取码:6666

官方文件多少有点问题(后面会说),所以搭建时就不用clone指令了。同时我对下载来的官方文件添加删除了一些些,该链接里头就是修改好的文件。

下载好后,先在云平台上上传好数据集,创建项目并导入(具体操作看上面的视频链接),导入的文件会存在/data/usr文件夹中。

1.整理文件

首先,在/data/usr文件夹中,将下载的三个文件:PointCloudDet3D.zip,cmake-3.15.3.tar.gz,spconv-1.2.1.zip拷贝(或剪切)到/root下。
)

2.解压文件

在默认的根目录下使用指令:

unzip PointCloudDet3D.zip
unzip spconv-1.2.1.zip

3.安装spconv-1.2.1

(1)安装第三方库

由于平台本身缺少torch等第三方库文件,会影响spconv的安装,所以先把第三方库装上。

先检查一下/root/PointCloudDet3D下的requirements.txt 文件是不是如下内容:

numpy
torch==1.6.0
torchvision==0.7.0
numba
tensorboardX
easydict
pyyaml
scikit-image
tqdm
SharedArray
vtk==8.1.2

如果是就下一步用以下指令安装,不是则复制上方将原内容覆盖掉。

cd /root/PointCloudDet3D
pip install -r requirements.txt

出现以下两个错误
ERROR: paddlepaddle-gpu 1.8.2.post107 has requirement gast>=0.3.3, but you’ll have gast 0.2.2 which is incompatible.

ERROR: paddlepaddle-gpu 1.8.2.post107 has requirement scipy<=1.3.1; python_version >= “3.5”, but you’ll have scipy 1.4.1 which is incompatible.

不用管,用不到paddlepaddle-gpu。如果更改gast和scipy版本会影响TensorFlow的正常使用。

(2)安装wheel

cd /root/spconv-1.2.1
python setup.py bdist_wheel
cd dist
pip install spconv-1.2.1-cp37-cp37m-linux_x86_64.whl

没有报错,且最后一步为removing build/bdist.linux-x86_64/wheel,说明wheel安装成功。

(3)验证安装

输入

python
import spconv

若没报错,说明安装成功。

4.安装cmake-3.15.3

等待时间会很长,大约半个小时到一个小时。
使用以下命令进行安装:

cd
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 再进行安装一次。

5.搭建pcdet

(1)安装requirements.txt中的第三方库

打开终端使用命令,前面如果安装过了,就不用安装了。

cd /root/PointCloudDet3D
pip install -r requirements.txt

(2)安装pcdet

使用命令安装pcdet

cd /root/PointCloudDet3D
python setup.py develop

出现Finished processing dependencies for pcdet==0.5.2+0表明安装成功。

三.训练&测试&demo

1.train.py

(1)添加环境变量,

首先添加环境变量:

export LD_LIBRARY_PATH=/usr/local/lib/python3.6/dist-packages/cntk/libs:"${LD_LIBRARY_PATH}"

(2)进行训练

进入PointCloudDet3D文件夹下运行,注意pv_rcnn.yaml的路径对不对。

cd /root/PointCloudDet3D/tools
python train.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml

注意格式,train.py 文件后面需要加上需要训练模型的位置,不加会报错。如:
想要训练pv_rcnn,则需要加入pv_rcnn.yaml所在的文件路径;
想要训练voxelrcnn,则需要加入voxelrcnn所在的文件路径。

目前pcdet0.5.2仅包含以下的几个模型:

(3)进行测试

在训练完成的基础上进行,对训练的pth文件进行加载并测试数据,路径为/root/PointCloudDet3D/output/kitti_models/pv_rcnn/default/ckpt/checkpoint_epoch_*.pth

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数据的位置,一般都放在output中(train后才会生成,否则木有文件数据)

(4)进行demo

首先要安装mayavi

pip install mayavi

运行代码,除了需要加上ckpt中训练的pth路径外,还需要加上data的路径,即 /root/PointCloudDet3D/data/kitti,否则也会报错。

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

四.所有命令

1.安装指令

为了方便搭建,干脆直接把以上所有命令总结一下。在整理完文件后,可以直接复制以下命令直接搭建完毕,一气呵成:

#解压
unzip PointCloudDet3D.zip
unzip spconv-1.2.1.zip#安装三方包
cd /root/PointCloudDet3D
pip install -r requirements.txt #安装spconv
cd /root/spconv-1.2.1
python setup.py bdist_wheel
cd dist
pip install spconv-1.2.1-cp37-cp37m-linux_x86_64.whl#安装cmake
cd
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#安装pcdet
cd /root/PointCloudDet3D
python setup.py develop
#安装mayavi
pip install mayavi

2.训练+测试+demo

export LD_LIBRARY_PATH=/usr/local/lib/python3.6/dist-packages/cntk/libs:"${LD_LIBRARY_PATH}"
cd /root/PointCloudDet3D/tools
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

搭建总共要花一个多小时的时间,训练、测试、demo共两小时,耐心等待即可。

3.初始化指令

每次重新打开项目时,路径和pcdet安装都会被清除,所以加入如下指令进行初始化:

#pcdet文件夹
cd PointCloudDet3D
python setup.py develop
export LD_LIBRARY_PATH=/usr/local/lib/python3.6/dist-packages/cntk/libs:"${LD_LIBRARY_PATH}"
cd tools
python train.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml

五.训练自己的数据

这里有我自己在官方下载的数据集,超大!warning!
链接:https://pan.baidu.com/s/1kZ1I45qGX7NNjMFzt7wK1w
提取码:6666

2022-11-3 补充info文件和reduce文件
链接:https://pan.baidu.com/s/1ptf_kfOzDYDLq6j_ByUg4Q?pwd=6666
提取码:6666

需要将/root/PointCloudDet3D/tools/dataset_configs/cfgs/kitti_dataset.yaml中,将第二行改为自己想要的路径,例如:我的数据集的名字叫做kitti_big,则可以改为DATA_PATH: ‘…/data/kitti_big’

接着再用代码进行训练,python train.py --cfg_file cfgs/kitti_models/pointpillar.yaml会自动索引。

还有其他博主说的方法:3D目标检测——代码理解——OpenPCDet:数据处理适应自己的点云数据

六.相比于官方文件所做的改动

利用其它文章中的clone指令,可以得到官方文件,但是官方文件有些文件缺失,有些版本不够,还有些程序包压根就是有问题的,导致我查阅了很久很久才找到问题,以下就是我对文件的改动:

1.修改requirements中的参数

进入OpenPCDet-master文件夹,打开requirements.txt,将下面内容复制
numpy
torch == 1.6.0
torchvision == 0.7.0
numba
tensorboardX
easydict
pyyaml
scikit-image
tqdm
SharedArray
vtk==8.1.2

改动原因:
1.将torch>=1.1修改为torch == 1.6.0 ,torchvision == 0.7.0:因为torch=>1.1默认安装为最新版本torch1.12.0版本,与自带的CUDA10.1不匹配。
2.vtk==8.1.2:用pip install vtk会自动安装最新版本,而安装mayavi时,会有一个build搭建环境的过程,如果vtk版本过高,会导致安装失败。

其他直接pip install安装最新的就行,不影响运行。

2.添加了数据集

其他文章中,都要用info生成数据集。因为生成时,时常出问题,我干脆直接下下来放到PointCloudDet3D文件里头。

具体生成文件可以下载:
链接:https://pan.baidu.com/s/1JORT2ZJ_fwintcY0m7DhIg?pwd=6666
提取码:6666

3.更换了程序包

之前用的时pcdet0.3.0进行安装,发现安装好后,里面的程序根本运行不了,直接换成了pcdet0.5.2进行安装。

4.spconv下重新下载了pybind11

此问题说明spconv安装缺文件,从官方下载下来的spconv1.2.1,文件夹下的third_party/pybind11是空的,需要自己手动去下载。

pybind11链接:https://github.com/pybind/pybind11/tree/3b1dbebabc801c9cf6f0953a4c20b904d444f879

七.遇到问题

由于遇到的问题非常多,所以直接写在另一篇博客中:安装OpenPCDet时遇到的问题

八.文件说明

主要是自己看过的几个比较重要的源代码文件。

一、tools文件夹下的文件

train.py:训练
test.py:测试
demo.py:可视化
参考:PV-RCNN代码解读——demo.py & test.py

1.cfgs下:

(1)dataset_configs下:

kitti_dataset.yaml:在该文件中,可以修改数据集位置。

…/data/kitti表示的就是/root/PointCloudDet3D/data/kitti。

(2)kitti_models下

该文件夹下包含各种模型:

在使用训练程序时,可以加上想要训练的模型,如:python train.py --cfg_file cfgs/kitti_models/pointpillar.yaml

2.train_utils

(1)train_untils.py

①里面有tqdm进度条函数

 with tqdm.trange(start_epoch, total_epochs, desc='epochs', dynamic_ncols=True, leave=(rank == 0)) as tbar:total_it_each_epoch = len(train_loader)

tqdm.tqdm函数用法:

pbar = tqdm.tqdm(total=total_it_each_epoch, leave=leave_pbar, desc='train', dynamic_ncols=True)#tqdm就是进度条
#total:迭代元素的多少,用len(iterable)代替,
#leave:如果True,显示所有的进度条,如果是None,只显示第一个进度条
#dynamic_ncols:设置为True之后,ncols相当于无效,ncol-改变进度条&环境的宽度
#desc:进度条的前面的提示。

借鉴:tqdm 简介及正确的打开方式
②里面有训练并保存训练模型的函数

def train_model(model, optimizer, train_loader, model_func, lr_scheduler, optim_cfg,start_epoch, total_epochs, start_iter, rank, tb_log, ckpt_save_dir, train_sampler=None,lr_warmup_scheduler=None, ckpt_save_interval=1, max_ckpt_save_num=50,merge_all_iters_to_one_epoch=False):

二、pcdet文件夹下的文件

1.datasets子文件下

(1)kitti下

①kitti_dataset.py
用于生成数据,里面有生成图片,pkl,txt等文件的程序,生成的数据会放在/root/PointCloudDet3D/data/kitti文件夹下。
生成数据的指令:

python -m pcdet.datasets.kitti.kitti_dataset create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml

因为经常报错,所以直接下下来放data里了。
代码具体详情请看:3D目标检测——代码理解——OpenPCDet:数据处理kitti_dataset.py的理解

②kitti_object_eval_python下的eval.py
参考:3D目标检测——代码理解——OpenPCDet:验证eval部分分析

参考文献

[1]Openpcdet-(1)环境配置及kitti数据集训练
[2]zjkclpch / OpenPCDet2

九天毕昇”云平台:python3.7+CUDA10.1+torch1.6.0+spconcv1.2.1安装OpenPCDet全流程相关推荐

  1. 智能家居(7) —— 人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)

    目录 一.祥云人工智能开放平台 二.编译openSSL支持libcurl的https访问 安装SSL依赖库openSSL(使用工具wget) curl库重新配置,编译,安装 三.编程实现人脸识别 翔云 ...

  2. 为什么我推荐你使用中国移动的九天 · 毕昇云GPU平台

    ​ 不限制深度学习框架内置 tensorflow pytorch mxnet等常见深度学习框架,有两种访问模式,jupyterlab交互模式,vscode访问模式. 分享给你一个宝藏 AI 学习和实战 ...

  3. 智能家居(七) —— 人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)

    人工智能OCR识别平台介绍 OCR (Optical Character Recognition,光学字符识别) 百度搜索OCR识别,可以发现有很多大厂都在做这个项目,比如百度OCR,腾讯OCR,科大 ...

  4. 新浪云平台创建mysql数据库并使用php7.0版本连接

    在新浪云平台上创建共享型mysql数据库 创建数据库 点击管理 选择导入 从navicat中取出已存在的sql文件 在navicat转储sql文件 注意,保存时文件要命名成新浪云数据库名 将转储 好的 ...

  5. SAP云平台和SAP C4C之间的OAuth2.0配置

    The OAuth 2.0 based authentication between SCP and C4C requires the same user-id to exist in both SA ...

  6. 九天·毕昇 试玩体验

    九天-毕昇  一站式人工智能学习和实战平台 https://jtedu.cmri.cn/#/homecn/#/home 中国移动和北京邮电大学联合研发,为AI学习者提供充沛的GPU算力.丰富的数据和学 ...

  7. 超级组合:用户中心+云平台

    在Web3.0时代,一体化是个趋势,框架级别的用户中心,用户资源一体化框架需求应运而生,用户中心加云平台这个组合也随之出现.下面介绍两种框架级别的用户中心加云平台的组合. 1.用户中心UCenter ...

  8. 《Python分布式计算》 第5章 云平台部署Python (Distributed Computing with Python)

    序言 第1章 并行和分布式计算介绍 第2章 异步编程 第3章 Python的并行计算 第4章 Celery分布式应用 第5章 云平台部署Python 第6章 超级计算机群使用Python 第7章 测试 ...

  9. 智安荣誉丨智安【一站式等保云平台】荣获第六届“创客中国”网络安全中小企业创新创业大赛优胜奖!

    图片 2021年9月18日,由工业和信息化部.财政部指导,工业和信息化部网络安全产业发展中心(工业和信息化部信息中心).成都市经济和信息化局.成都高新技术产业开发区管理委员会联合主办的第六届" ...

最新文章

  1. AI是万能的吗?当前AI仍面临的难题是什么?
  2. linux系统的编译原理,GCC编译原理_Linux编程_Linux公社-Linux系统门户网站
  3. 播放失败246106异常代码_web前端面试题:您能读懂的Promise源码实现(手写代码)...
  4. 宇宙飞行器的几种飞行原理设计
  5. 在 Scale Up 中使用 Health Check - 每天5分钟玩转 Docker 容器技术(145)
  6. kaggle-Santander 客户交易预测总结
  7. 安义县农业结构调整-农业大健康·林裕豪:从玉农业谋定基地
  8. org.apache.poi 读取数字问题
  9. utf-8转换gbk代码_将代码转换为现金-如何以Web开发人员的身份赚钱并讲述故事。...
  10. ABP入门系列(1)——通过模板创建MAP版本项目
  11. 阿里 BladeDISC 深度学习编译器正式开源
  12. imp命令导入指定表_转载:Oracle导出导入dmp文件(exp.imp命令行)
  13. 基于LM331的电压-频率转换电路详细介绍
  14. CSS3实现5个常用的网页动画效果
  15. PSNR、SSIM、BD-rate和BD-PSNR
  16. C语言之i++,++i,i--,--i
  17. java 反射 获取 实例_java通过类反射获取某个类的所有信息--代码实例
  18. SQL FULL OUTER JOIN
  19. 数学(零)零散知识点
  20. QNX系列:二、进程间消息传递

热门文章

  1. RFID技术在固定资产管理中的作用
  2. 面试官:你很优秀,现在就签合同!95后扭头就走:不把我当人
  3. 苹果cmsv8巴黎影视网站模板蓝色风格免费主题
  4. 阿里天池比赛多次拿前3,如何做到?
  5. 桌面计算机网络图标不见了怎么办,桌面图标不见了怎么办?这里有妙招
  6. Android之 颜色选择器
  7. 推荐一个强大的开源动态线程池项目
  8. 来看看中国计算机视觉行业发展有什么动态?
  9. 防止matplotlib画完图后自动关闭NN
  10. TC Games问题解答:连接、卡顿、控制视角解决方法,无需安卓模拟器玩手机游戏