以下是搭建过程,对于其他的云平台和本地搭建也同样适用,后面有搭建过程中遇到问题的解决方法。
官方网站:九天毕昇
关于九天云平台的具体介绍,可以参照
最良心算力平台 | 九天毕昇 |人工智能 | 深度学习 | 中国移动
使用该云平台,能够省一些搭建和运行的时间,方便用户进行调整。
平台配置: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
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文件夹中。
首先,在/data/usr文件夹中,将下载的三个文件:PointCloudDet3D.zip,cmake-3.15.3.tar.gz,spconv-1.2.1.zip拷贝(或剪切)到/root下。
)
在默认的根目录下使用指令:
unzip PointCloudDet3D.zip
unzip spconv-1.2.1.zip
由于平台本身缺少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的正常使用。
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安装成功。
输入
python
import spconv
等待时间会很长,大约半个小时到一个小时。
使用以下命令进行安装:
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 再进行安装一次。
打开终端使用命令,前面如果安装过了,就不用安装了。
cd /root/PointCloudDet3D
pip install -r requirements.txt
使用命令安装pcdet
cd /root/PointCloudDet3D
python setup.py develop
出现Finished processing dependencies for pcdet==0.5.2+0表明安装成功。
首先添加环境变量:
export LD_LIBRARY_PATH=/usr/local/lib/python3.6/dist-packages/cntk/libs:"${LD_LIBRARY_PATH}"
进入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所在的文件路径。
在训练完成的基础上进行,对训练的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后才会生成,否则木有文件数据)
首先要安装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
为了方便搭建,干脆直接把以上所有命令总结一下。在整理完文件后,可以直接复制以下命令直接搭建完毕,一气呵成:
#解压
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
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共两小时,耐心等待即可。
每次重新打开项目时,路径和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
需要将/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指令,可以得到官方文件,但是官方文件有些文件缺失,有些版本不够,还有些程序包压根就是有问题的,导致我查阅了很久很久才找到问题,以下就是我对文件的改动:
进入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安装最新的就行,不影响运行。
其他文章中,都要用info生成数据集。因为生成时,时常出问题,我干脆直接下下来放到PointCloudDet3D文件里头。
之前用的时pcdet0.3.0进行安装,发现安装好后,里面的程序根本运行不了,直接换成了pcdet0.5.2进行安装。
此问题说明spconv安装缺文件,从官方下载下来的spconv1.2.1,文件夹下的third_party/pybind11是空的,需要自己手动去下载。
pybind11链接:https://github.com/pybind/pybind11/tree/3b1dbebabc801c9cf6f0953a4c20b904d444f879
由于遇到的问题非常多,所以直接写在另一篇博客中:安装OpenPCDet时遇到的问题
主要是自己看过的几个比较重要的源代码文件。
train.py:训练
test.py:测试
demo.py:可视化
参考:PV-RCNN代码解读——demo.py & test.py
kitti_dataset.yaml:在该文件中,可以修改数据集位置。
…/data/kitti表示的就是/root/PointCloudDet3D/data/kitti。
在使用训练程序时,可以加上想要训练的模型,如:python train.py --cfg_file cfgs/kitti_models/pointpillar.yaml
①里面有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):
①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
等