second.pytorch环境配置及训练运行折腾史

申明:本篇博客经过本人亲自实践,以下步骤都是本人亲自走过最后成功运行。在这过程中参考了这一篇博客(https://blog.csdn.net/Small_Munich/article/details/99053921),很感谢这位博主的帮助,也感谢原作者无私分享的程序(https://github.com/traveller59/second.pytorch),在他们的帮助下成功实现了second.pytorch代码的运行,现在分享出来与大家一起学习交流。在本篇博客中用到的安装包,我都放置在自己的百度云盘当中,如果有下载不方便的可以使用此百度云分享链接(链接: https://pan.baidu.com/s/1QEF9d0IQrg-oizMxY8icfw 提取码: ttnn )


程序运行环境:

  运行系统:Ubuntu16.04

  运行环境:使用virtualenv创建的second虚拟环境

  使用语言:Python3.6.5

  硬件支持:GTX1080Ti + CUDA10.0+CUDNN7.4.2 + PyTorch 1.1.0 + Cmake3.13.2


一、准备工作

  1、Python3.6.5的安装

    1.1 安装依赖库                 

sudo apt-get install openssl  
sudo apt-get install libssl-dev
sudo apt-get install libc6-dev gcc  
sudo apt-get install -y make build-essential zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm tk-dev 

    1.2 Python3.6.5 下载、解压、编译、安装

wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
tar xvf Python-3.6.5.tgz
cd Python-3.6.5
./configure --prefix=/usr/local/lib/python3.6
make -j8
sudo make install -j8

    1.3 添加软链接

sudo ln -s /usr/local/lib/python3.6/bin/python3.6 /usr/bin/python3.6
sudo ln -s /usr/local/lib/python3.6/bin/pip3.6 /usr/bin/pip3.6

    1.4 验证安装成功与否

     在终端输入python3.6,出现以下信息说明安装成功了

Python 3.6.5 (default, Dec 27 2019, 13:15:59) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

   2、Cmake 升级至3.13.2

    2.1 Cmake3.12.2下载并解压

      Cmake3.13.2官网下载地址  https://cmake.org/files/v3.13/

      下载好之后会在Downloads路径下,启动终端输入以下命令进行解压操作

tar zxvf cmake-3.13.2-Linux-x86_64.tar.gz

    2.2 创建软链接

       上一步解压好以后输入以下命令升级Cmake

sudo mv cmake-3.13.2-Linux-x86_64 /opt/cmake-3.13.2 
ln -s /opt/cmake-3.13.2/bin/* /usr/bin/

    2.3 验证Cmake版本

        输入以下命令查看Cmake版本

cmake --version

        这时候终端窗口会返回cmake的版本信息为3.13.2,说明cmake升级成功,可以使用了。

二、创建second虚拟环境

(这里所用的虚拟环境为Python3.6.5,程序要求使用python3+)

  1、使用以下命令创建second虚拟环境:

virtualenv -p /usr/bin/python3.6 second

  2、使用以下命令激活虚拟环境:

(注:根据自己的实际路径找到创建好的虚拟环境进行激活)

 source ~/second/bin/activate

创建虚拟环境详情请见(https://blog.csdn.net/r1141207831/article/details/95480766)如果已经创建好了,请忽略!

三、配置second.pytorch代码的环境

  (注意:以下操作均在上面创建好的second虚拟环境中执行)

  1、克隆second.pytorch代码

git clone https://github.com/traveller59/second.pytorch
cd  ./second.pytorch/second

  2、安装相关依赖项

pip install scikit-image scipy numba pillow==6.2.2 matplotlib fire tensorboardX protobuf opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install numpy==1.14.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install seaborn -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install psutil -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install flask flask_cors -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install shapely -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
easy_install pyopengl -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo apt-get install libboost-all-dev 

 (注意:这里一定要安装numpy1.14.0的版本,过高或过低都会出错)

  3、 安装torch和torchvision

    3.1 下载torch和torchvision

    官网下载地址 https://download.pytorch.org/whl/cu100/torch_stable.html 选择torch-1.1.0-cp36-cp36m-linux_x86_64.whltorchvision-0.3.0-cp36-cp36m-linux_x86_64.whl 进行下载

    3.2 安装torch和torchvision

pip install torch-1.1.0-cp36-cp36m-linux_x86_64.whl
pip install torchvision-0.3.0-cp36-cp36m-linux_x86_64.whl

    3.3 torch版本验证

import torch
print(torch.__version__)

    如果出现torch版本为1.1.0,说明安装成功。

  4、安装spconv

    4.1 克隆spconv代码

  git clone https://github.com/traveller59/spconv  --recursive

    4.2 编译spconv代码

  cd spconv
  python  setup.py  bdist_wheel

  (注意:如果这一步出错了,说明pytorch与pytorchvision版本匹配有问题)   

    4.3 安装spconv

  cd  ./dist   
  pip  install spconv-1.1-cp36-cp36m-linux_x86_64.whl

    至此,spconv编译到此结束了。

  5、安装Apex

    输入以下命令一次性安装成功

git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

  6、添加second.pytorch环境变量

export  PYTHONPATH=$PYTHONPATH:/your_second.pytorch_path/ 

 至此,关于second.pytorch在second虚拟环境下面的环境依赖安装结束。

四、代码运行

  1、下载数据

    从此处下载3D KITTI检测数据集。注释的描述可以在这里找到。要下载的数据包括:

  • Velodyne point clouds (29 GB): unzip it and put 'training' and 'testing' sub-folders into 'data/KITTI/point_cloud'
  • Training labels of object data set (5 MB) for input labels of VoxelNet: unzip it and put 'training' sub-folder into 'data/KITTI/label'
  • Camera calibration matrices of object data set (16 MB) for visualization of predictions: unzip it and put 'training' and 'testing' sub-folders into 'data/KITTI/calib'
  • Left color images of object data set (12 GB) for visualization of predictions: unzip it and put 'training' and 'testing' sub-folders into 'data/KITTI/image'

  2、准备数据格式

└── KITTI_DATASET_ROOT
       ├── training    <-- 7481 train data
       |   ├── image_2 <-- for visualization
       |   ├── calib
       |   ├── label_2
       |   ├── velodyne
       |   └── velodyne_reduced <-- empty directory
       └── testing     <-- 7580 test data
           ├── image_2 <-- for visualization
           ├── calib
           ├── velodyne
           └── velodyne_reduced <-- empty directory

  3、运行数据生成命令

python create_data.py kitti_data_prep --root_path=data/KITTI_DATASET_ROOT

    (这里的KITTI_DATASET_ROOT文件夹放在data下)

  4、修改参数配置

train_input_reader: {
  ...
  database_sampler {
    database_info_path: "/path/to/dataset_dbinfos_train.pkl"
    ...
  }
  dataset: {
    dataset_class_name: "DATASET_NAME"
    kitti_info_path: "/path/to/dataset_infos_train.pkl"
    kitti_root_path: "DATASET_ROOT"
  }
}
...
eval_input_reader: {
  ...
  dataset: {
    dataset_class_name: "DATASET_NAME"
    kitti_info_path: "/path/to/dataset_infos_val.pkl"
    kitti_root_path: "DATASET_ROOT"
  }
}

        在second.pytorch/second/ 下面有个configs文件夹,里面有每个训练参数文件的配置。以car.fhd.config为例,打开文件找到对应上面的部分,进行数据路径配置,修改成自己的数据路径即可。

  5、运行训练命令

python ./pytorch/train.py train --config_path=./configs/car.fhd.config --model_dir=/path/to/model_dir

(注意:这里使用的是单GPU训练,这里的/path/to路径可以设置为KITTI_DATASET_ROOT的路径)    

  6、运行评估命令

python ./pytorch/train.py evaluate --config_path=./configs/car.fhd.config --model_dir=/path/to/model_dir --measure_time=True --batch_size=1

(注意:这里使用的是单GPU评估,这里的/path/to路径可以设置为KITTI_DATASET_ROOT的路径)  


五、试用Kitti Viewer Web

1、输入以下命令启动服务

python ./kittiviewer/backend/main.py main

 如果出现以下信息说明正常,如有警告提示可以忽略

* Serving Flask app "second" (lazy loading)
* Environment: production
  WARNING: This is a development server. Do not use it in a production deployment.
  Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:16666/ (Press CTRL+C to quit)

2、输入下面命令启动本地服务

cd ./kittiviewer/frontend
python -m http.server

出现下面的信息,说明启动正常 ,如有警告提示可以忽略

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

3、打开浏览器输入网址 http://0.0.0.0:8000/ 

打开界面之后,在右侧参数栏里面输入自己文件所对应的路径,下面是我的路径,其中../为省略的路径信息,需要根据自己的路径补全。

ittiDataset:KittiDataset
backend:http://127.0.0.1:16666
rootPath:../second.pytorch/second/data/KITTI_DATASET_ROOT
infoPath:../second.pytorch/second/data/KITTI_DATASET_ROOT/kitti_infos_val.pkl
load
DetPath:../second.pytorch/second/model_dir/results/step_99040/result.pkl
loadDet
checkpointPath:/../second.pytorch/second/model_dir/voxelnet-99040.tckpt
configPath:../second.pytorch/second/configs/all.fhd.config
buildNet
inferrnce

然后在下方方框内输入索引号就可以看到图像了如下图所示。

4、试用Kitti Viewer(已弃用)

【这个程序运行需要依赖pyqt和pyqtgraph,所以在前面我加入了这两个库的安装步骤】

输入以下命令启动

python ./kittiviewer/viewer.py --root_path=data/KITTI_DATASET_ROOT

启动之后在右侧填充参数路径,如下图所示:

  至此second.pytorch环境配置以及训练全部结束,截止今天为止。总之在这个过程中出现了许多的坑,如果大家按照上面的步骤可以少走些弯路,当然这些并不能完全避免所有的错误,只能是走一步解决一部的错误,用了一星期左右的时间终于可以正常训练了。如果大家有在执行的过程中有什么问题也可以相互交流学习。


附录:

https://github.com/traveller59/second.pytorch/tree/master

https://github.com/traveller59/spconv

https://github.com/NVIDIA/apex

second.pytorch环境配置记录
https://blog.csdn.net/Small_Munich/article/details/99053921

ubuntu16.04安装cmake3.14.2步骤
https://blog.csdn.net/ruoruo12332/article/details/89358115

ubuntu 16.04 LTS +Python 3.6.5 安装
https://blog.csdn.net/lccever/article/details/80103192

ubuntu16.04+1080ti+cuda10.0+cudnn环境配置
https://blog.csdn.net/Ding19950107/article/details/89538228

cuda8.0升级至cuda9.0
https://www.cnblogs.com/guweixin/p/11134677.html

Ubuntu更新NVIDIA驱动版本
https://www.jianshu.com/p/e52b847970aa

发布了19 篇原创文章 · 获赞 21 · 访问量 5512

猜你喜欢

转载自blog.csdn.net/r1141207831/article/details/103756292