pointpillars开源代码复现中 遇到的问题

pointpillar代码的开源地址:https://github.com/nutonomy/second
第一步:从github上拷贝代码

git clone https://github.com/nutonomy/second.pytorch.git

第二步:首先安装Anaconda创建虚拟环境,我的电脑Ubuntuan16.04安装的是anaconda3,cuda10的版本。和readme一样,使用conda install 安装虚拟环境中的相关配置

conda create -n pointpillars python=3.7 anaconda
source activate pointpillars
conda install shapely pybind11 protobuf scikit-image numba pillow
conda install pytorch torchvision -c pytorch
conda install google-sparsehash -c bioconda

到这里都不会出现问题,如果出现问题建议重装anaconda,或者直接重装系统。<如果是网络错误,就检查有没有conda换源>

注意运行完上面的命令后,虚拟环境中安装的是pytorch13.0.0。

第三步,用pip安装

pip install --upgrade pip
pip install fire tensorboardX

第三步结束后,开始安装 稀疏卷积部分,这里的bash build.sh命令必须在pytorch13.0 的环境下运行,否则会报错

git clone [email protected]:facebookresearch/SparseConvNet.git
cd SparseConvNet/
bash build.sh

第四步 加一些环境变量,注意这里面的路径 需要改成你自己的路径,cuda 是cuda10

export NUMBAPRO_CUDA_DRIVER=/usr/lib/x86_64-linux-gnu/libcuda.so
export NUMBAPRO_NVVM=/usr/local/cuda/nvvm/lib64/libnvvm.so
export NUMBAPRO_LIBDEVICE=/usr/local/cuda/nvvm/libdevice
export PYTHONPATH=your second.pytorch path

从这里结束,下面要开始数据的预处理问题。

数据的预处理开始,需要将 虚拟环境中的cuda10下降到 cuda9,否则会报错,<具体将版本的命令我忘了,需要可以百度>

conda install cudatoolkit==9.0.0  ##  下降版本

数据预处理第一步:下载kitti数据集,按照readme的要求,把对应部分放在如下路径中:

└── 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

KITTI_DATASET_ROOT=/data/sets/kitti_second/
数据预处理第二步:运行下面的文件,对数据进行预处理。在运行过程中,可能会出现路径找不到的问题,直接将报错对应py文件的路径改为绝对路径,就OK了

python create_data.py create_kitti_info_file --data_path=KITTI_DATASET_ROOT
python create_data.py create_reduced_point_cloud --data_path=KITTI_DATASET_ROOT
python create_data.py create_groundtruth_database --data_path=KITTI_DATASET_ROOT

数据预处理第三步:修改配置文件./configs/pointpillars/car/xyres_16.proto

根据后面的train文件 我们先修改一个 配置文件就可以 对模型进行训练拉

train_input_reader: {
  ...
  database_sampler {
    database_info_path: "/path/to/kitti_dbinfos_train.pkl"
    ...
  }
  kitti_info_path: "/path/to/kitti_infos_train.pkl"
  kitti_root_path: "KITTI_DATASET_ROOT"
}
...
eval_input_reader: {
  ...
  kitti_info_path: "/path/to/kitti_infos_val.pkl"
  kitti_root_path: "KITTI_DATASET_ROOT"
}

修改配置文件,同样是更换路径为你自己的路径就可以了

到这里数据 预处理就结束了,后面是 模型的训练过程。

首先 你必须把 降级的 cuda 10升级回 cuda 10,否则会报错
升级结束后,就可以训练了

cd ~/second.pytorch/second
python ./pytorch/train.py train --config_path=./configs/pointpillars/car/xyres_16.proto --model_dir=/home/xqm/second.pytorch/second/

不过在训练的inference阶段,我出现了一个小bug:也就是一个需要bool型但是代码却是一个byte的错,需要做如下的修改,如果没有报错就不用修改了。
在second.pytorch\second\pytorch\models文件夹下的voxelnet.py的911行:
改为:

 opp_labels = (box_preds[..., -1] > 0) ^ dir_labels.bool()

就可以正常训练了

你可能感兴趣的:(代码复现)