程序代码:https://github.com/qianguih/voxelnet
环境
运行系统:Ubuntu 18.04
使用语言:Python 3.6
硬件支持:GTX2080Ti + CUDA10.0 + CUDNN7.6.5 + TensorFlow-gpu1.15.4
安装依赖
根据readme要求需要安装以下库依赖库
- opencv
- shapely
- numba
- easydict
程序安装
1、克隆代码
2、编译Cython模块
python setup.py build_ext --inplace
3、编译评估(evaluation)代码
cd kitti_eval
g++ -o evaluate_object_3d_offline evaluate_object_3d_offline.cpp
4、向评估(evaluation)脚本授予执行权限
cd kitti_eval
chmod +x launch_test.sh
数据准备
1、下载数据
从KITTI官方网址下载3D KITTI检测数据集,下载的数据要包括:
- Velodyne point clouds (29 GB): input data to VoxelNet
- Training labels of object data set (5 MB): input label to VoxelNet
- Camera calibration matrices of object data set (16 MB): for
visualization of predictions - Left color images of object data set (12 GB): for visualization of
predictions
2、裁剪数据
在该项目中,我们使用裁剪的点云数据进行训练和验证。 图像坐标外部的点云将被删除。 更新data / crop.py中的目录,然后运行data / crop.py生成裁剪的数据。 请注意,裁剪的点云数据将覆盖原始点云数据。
3、数据分类
根据此处的协议将训练集分为训练集和验证集。并重新排列文件夹,使其具有以下结构:
└── DATA_DIR
├── training <-- training data
| ├── image_2
| ├── label_2
| └── velodyne
└── validation <--- evaluation data
| ├── image_2
| ├── label_2
| └── velodyne
4、更新config.py和kitti_eval / launch_test.sh中的数据集目录
五、开始训练
1、在config.py中指定要使用的GPU
在config.py中找到以下内容:
__C.GPU_AVAILABLE = '0,1'
然后改成以下内容:
__C.GPU_AVAILABLE = '0'
2、使用所需的超参数运行train.py以开始训练
python train.py --alpha 1 --beta 10
请注意,原作者在本文中介绍的超参数设置无法产生高质量的结果。因此,此处指定了其他设置。
在两个Nvidia 1080 Ti GPU上进行的培训大约需要3天(如论文中所述,共160个epochs)。在训练过程中,训练统计信息记录在log/default
中,可以通过tensorboard
监视。模型保存在save_model / default
中。中间验证结果储到文件夹predictions/XXX/data
中,其中XXX
为epoch数。指标将被计算并保存在predictions/XXX/log
中。如果将–vis标志设置为True,则中间结果的可视化结果将转储到文件夹references / XXX / vis
中。
3、训练结束之后,执行parse_log.py将生成学习曲线
python parse_log.py predictions
4、查看训练模型
在save_model / pre_trained_car中有一个针对car的预训练模型。
六、评估
1、训练完成后,运行test.py -n默认值以对验证集产生最终预测。将-n标志更改为pre_trained_car将开始测试预训练模型(目前仅提供汽车模型)。
python test.py
结果将转储到predictions/data中。如果想要转储可视化文件,请将–vis标志设置为True,并将其保存到predictions/vis中。
2、运行以下命令以测量预测的定量性能:
./kitti_eval/evaluate_object_3d_offline [DATA_DIR]/validation/label_2 ./predictions
至此VoxelNet_TensorFlow训练过程已经结束,但是这个版本的代码,非常的耗内存,经常导致机器死机,(我就是这样,跑到几轮就内存满了,跑不动了,等加了内存条再说吧),代码需要进一步的优化。
七、作者的表现
下表列出了当前的实施和训练方案。
鸟瞰检测性能:基于KITTI验证集的AP
参考(感谢)
https://blog.csdn.net/r1141207831/article/details/102943740
https://blog.csdn.net/r1141207831/article/details/96423897