论文:SMOKE:Single-Stage Monocular 3D Object Detection via Keypoint Estimation
 论文链接
 源码
 操作系统:ubuntu18.04
 显卡:RTX2080TI
一、搭环境(前面和GitHub上一样,补上我踩的坑)
 1.创建虚拟环境
conda create -n smoke python=3.7
 
2.激活smoke环境
source activate smoke
 
3.创建pytorch环境
 torch官方提供的方法
注意:
 我的显卡是2080TI,我没安装最新的torch,怕有问题,我之前用的1.7, 1.8, 1.9都是没问题的。所以我安装了1.7。
我一般都不用conda安装,喜欢用pip安装,这边看自己的习惯。
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio===0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
 
4.检查环境是否搭建成功
python
import torch
torch.cuda.is_available()
torch.zeros(1).cuda()
 
二、 准备训练工作
 1.克隆代码
 文件夹找到smoke环境,右键,选择从终端打开,执行:
git clone https://github.com/lzccccc/SMOKE
 
2.修改DCNv2文件
 说明:这里使用的torch版本为1.7,所以要修改成对应1.7版本的dcn文件
 pytorch1.7时需要用这个库torch1.7对应的DVN2
首先下载DCNv2文件:
git clone -b pytorch_1.7 https://github.com/lbin/DCNv2.git
 
然后,将SMOKE源码中的smoke/csrc中的文件全部替换为DCNv2/src中的文件,将smoke/layers/dcn_v2.py文件替换为DCNv2/dcn_v2.py文件。
 3.上述工作完成后,再cd到SMOKE目录:
cd SMOKE
python setup.py build develop
 
然后新建数据集目录,并连接到数据集(提前准备好数据集格式)
mkdir datasets
ln -s /path_to_kitti_dataset datasets/kitti
 
注意:
 关于数据集稍微啰嗦一句。
 我的数据集目录结构是这样的,train的SMOKE/datasets/kitti/training
kitti
│──training
│    ├──calib 
│    ├──label_2 
│    ├──image_2
│    └──ImageSets
└──testing
     ├──calib 
     ├──image_2
     └──ImageSets
 
我的网盘kitti数据集链接: https://pan.baidu.com/s/1te2spGGUtSiNmCOZNqvODQ
 提取码: 7btg
 可以自取,下好了按照上面目录放就行。
4.开始训练
对于单GPU,执行:
python tools/plain_train_net.py --config-file "configs/smoke_gn_vector.yaml"
 
根据自己电脑的性能,修改config中的batch_size,修改num_works=0。
 5.在单GPU上进行test:
python tools/plain_train_net.py --eval-only --config-file "configs/smoke_gn_vector.yaml"
 
测试DCN是否可以编译:
git clone -b pytorch_1.7 https://github.com/lbin/DCNv2.git
cd DCNv2
./make.sh
 
正常人到这边应该结束了。能训练能预测不报错。但我不是正常人,在单GPU上进行test一直报错。
错误1
 FileNotFoundError: [Errno 2] No such file or directory: ‘./smoke/data/datasets/evaluation/kitti/kitti_eval’
 官方issues里找到了解决方案:
../smoke/data/datasets/evaluation/kitti/kitti_eval 
should be
 ./smoke/data/datasets/evaluation/kitti/kitti_eval
 
错误2
 FileNotFoundError: [Errno 2] No such file or directory: ‘datasets/kitti/testing/ImageSets/test.txt’
 数据集链接是这个
下好了里面的txt放ImageSets里
错误3
 ERROR: Couldn’t read: 004627.txt of ground truth. Please write me an email! An error occurred while processing your results
官方issues有解决方案 官方issues
 两种方法我都可以。造成这个的原因
 
 解释的很清楚。因为测试集没有标签,所以将config/smoke_gn_vector.yaml里的 using " TEST: (“kitti_test”,) " and TEST_SPLIT: “test” 换成"TEST: (“kitti_train”,)" and TEST_SPLIT: “val”。
 第一种:
also make sure to have gnuplot, ghostscript, texlive-extra-utils installed
 
这样再测试我是没问题的。
第二种:
sudo apt-get install texlive-extra-utils
sudo apt-get install gnuplot
sudo apt-get install ghostscript
git clone https://github.com/asharakeh/kitti_native_evaluation.git
cd /content/kitti_native_evaluation
cmake ./
make
 
再运行这句:
./evaluate_object_3d_offline /media/qiao/autopilot/SMOKE/datasets/kitti/training/label_2  /media/qiao/autopilot/SMOKE/tools/logs/inference/kitti_train
 
result would be similar to this :
 …
 cyclist_detection_AP : 96.161880 96.238068 91.152649
 PDFCROP 1.38, 2012/11/02 - Copyright © 2002-2012 by Heiko Oberdiek.
 ==> 1 page written on cyclist_detection_AP.pdf’. cyclist_orientation_AOS : 95.185928 95.402016 90.347366 PDFCROP 1.38, 2012/11/02 - Copyright © 2002-2012 by Heiko Oberdiek. ==> 1 page written on cyclist_orientation_AOS.pdf’.
 car_detection_BEV_AP : 86.162407 82.500969 75.850616
 PDFCROP 1.38, 2012/11/02 - Copyright © 2002-2012 by Heiko Oberdiek.
 ==> 1 page written on `car_detection_BEV_AP.pdf’.
 
接下来不算问题,我想可视化kitti数据集,网上找了找办法。
 链接: KITTI Object data transformation and visualization
我是直接用的smoke虚拟环境:
- 安装 opencv, pillow, scipy, matplotlib
 
pip install opencv-python pillow scipy matplotlib
 
- 安装mayai
官方是conda install mayavi -c conda-forge
我直接pip install mayavi --user - test install
 
python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis
 
这句运行的时候报错。
 错误1
 pip install pyqt5时报错:Preparing wheel metadata … error
 按照这个博客解决问题 anaconda下tensorflow安装遇到的问题记录及解决办法
sudo pip install --user pyqtwebengine==5.12
sudo pip install --user pyqt5==5.12
sudo pip install typed-ast
 
这三行可以解决问题。
其他问题我忘了,想起来再补。
 运行
 python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --show_image_with_boxes

 我这边也是能正常显示图像结果的。



















