复现AVOD

复现过程主要参考https://zhuanlan.zhihu.com/p/87136172 这位博主

之前跟着官方github(https://github.com/kujason/avod)
环境一直配置不好,之后直接使用博主提供的yaml配置文件,之后进行略微调整即可

与博主不同的是,我使用的系统是CentOS。

我把博主的文章搬过来:

一、环境搭建
我使用的系统是ubuntu 16.04,用anaconda搭建的虚拟环境,至于anaconda在ubuntu上怎样安装,大家可以自己在网上查,教程很多。

安装完anaconda以后,anaconda中搭建avod运行环境有两种方法:

(注意,这两种方法选择一种就可以,别两种全做了)

  1. 使用我导出的环境配置复制环境
    anaconda 可以把当前环境所装的软件导出到一个配置文件中,有了这个配置文件,就可以在别的电脑上通过导入配置文件的的方式让ananconda自动安装该环境中所有的软件。

具体步骤为:

1)下载我导出的配置文件。

文件放在百度网盘里(链接:https://pan.baidu.com/s/1s5sUiz6XXlIa1WCJJ065uA, 提取码:fciq),文件名称是avod.yaml

2)导入配置文件,复制环境

在终端进入avod.yaml配置文件所在的文件夹,输入下面的命令即可完成环境复制。复制过程中会下载和安装软件,耐心等它安装完就行。

conda env create -f avod.yaml
  1. 单独安装各个软件
    具体步骤为:

1)创建anaconda环境

在终端输入如下指令

conda create -n avod python=3.5

2)按顺序安装软件

按顺序逐行执行以下命令就行

conda install tensorflow-gpu=1.3.0
conda install matplotlib
conda install py-opencv
conda install pandas
conda install pillow
conda install scipy
conda install sklearn

---------------重要的分割线---------------

最后别忘了进入创建好的环境,再执行后面的操作,进入环境的指令为

conda activate avod

二、下载代码并配置工程

  1. 下载代码
    代码可以使用原作者的代码,也可以使用我注释的代码,注释内容暂时还不多,会持续更新。

1)使用原作者代码

下载链接:https://github.com/kujason/avod

下载之后别忘了执行指令下载依赖库,指令为:

git submodule update --init --recursive

2)使用注释版代码

下载链接:https://github.com/Little-Potato-1990/avod_Re
(这里我依然使用原作者的代码,没有使用注释版代码,主要原因是下载不下来)
2. 编译代码
代码中需要编译的有两项:

1)wavedata依赖库

它的目录在 wavedata/wavedata/tools/core/lib 中,在lib文件夹下按顺序执行下列指令

cmake src
make

2)protobuf文件

protobuf是google的一个开源的用来做数据通信的库,关于它的介绍大家有兴趣可以去网上查。在avod/protos文件中有很多.proto文件,这些文件定义了通信用的数据内容和格式,但是想在程序中使用他们,得使用protobuf对他们进行编译,给每个.proto文件生成一个python文件。编译也很简单,执行下面一条指令就行

protoc avod/protos/*.proto --python_out=.

执行中之后会提示你有语法错误,不用管他,看avod/protos文件中是否生成了python文件,只要生成了,这一步就可以结束了。

  1. 配置环境变量
    工程是基于python编写的,定义了很多模块,这些模块之间需要互相调用,但各个模块又是相对独立的,所以需要把各个模块的路径添加到python的环境变量中,以方便他们之间互相调用。

在终端输入这条指令打开设置环境变量的文件

sudo gedit ~/.bashrc

在文件的最后输入添加下面两行(注意,这里面的路径是绝对路径,这是我电脑里的路径,大家要根据自己电脑的存放路径来改)

export PYTHONPATH=$PYTHONPATH:'/home/rq/project/project_detect/avod_Re/wavedata'
export PYTHONPATH=$PYTHONPATH:'/home/rq/project/project_detect/avod_Re'

配置环境变量以后,为了让它生效,需要重新打开终端,然后再使用如下指令重新进入anaconda环境

conda activate avod
  1. 准备数据集
    作者使用KITTI数据集来验证算法,我们来看下具体的步骤

1)下载数据集

KITTI数据集的下载路径为:http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d

数据不用全部下载,只需要下载下图中框出的这些就可以

复现AVOD_第1张图片
**

**

(这里的数据集,我也没有在官网上下载,关键问题是,下载不下来
我直接用了另一个博主的网盘文件,我拷贝到自己网盘了,链接放下面链接:https://pan.baidu.com/s/1oI6pT6NVgKoMkpHh6XQxNQ 
提取码:1edi  自取)

**

**
2)下载附加数据文件

这个附加数据文件包括两部分:

trainval.txt、train.txt、val.txt:这三个文件帮助程序把训练数据又重新分为训练集和验证集
planes:这个是作者自己生成的路面平面拟合参数,它的用处等我们后面讲详细代码时再讲
以上文件我放在了自己的百度网盘里,链接: https://pan.baidu.com/s/1s5sUiz6XXlIa1WCJJ065uA, 提取码:fciq(细心的读者可能已经发现了,和刚才anaconda环境配置文件的链接是一样的,我把它们放在一起了)

3)整理存放目录

程序读取文件是按照一定的目录结构读取的,它们的目录结构如下图:
复现AVOD_第2张图片

要注意的是,testing和training中都有image_2、velodyne两个文件夹,但它们的内容是不同的,分别是测试集和训练集中的内容,而它们都有的calib、label_2两个文件夹中的内容是相同的。

object文件夹放在~/Kitti/文件夹中,这是程序默认的,如果不想放这个目录里,得修改程序,所以我们先不找这个麻烦了,就先放这了。
(博主的数据集结构这个图搞得特别好,有一点不同的是,我testing文件夹下没有放label_2)
5. 生成Mini-batch
Mini-batch 是 RPN 所需要的东西,在终端中输入如下指令即可生成

python scripts/preprocessing/gen_mini_batches.py

执行过程需要几分钟,等一等吧。

如果成功,会在avod/data目录下生成label_clusters和mini_batches两个文件夹。

  1. 训练
    一条指令启动训练
python avod/experiments/run_training.py --pipeline_config=avod/configs/pyramid_cars_with_aug_example.config  --device='0' --data_split='train'

在我的电脑配置下需要执行24小时左右,我的电脑GPU型号是:GTX 1070Ti
(我的配置是RTX 2080,但是运行到一般服务器断了,就不想再搞了,继续下面的吧。)
去忙点别的吧,等训练完了再过来。

  1. 验证
    执行如下指令
python avod/experiments/run_evaluation.py --pipeline_config=avod/configs/pyramid_cars_with_aug_example.config --device='0' --data_split='val'

这时候会提示如下信息

INFO:tensorflow:No new checkpoints found in /home/avod/avod/data/outputs/pyramid_cars_with_aug_example/checkpoints. Will try again in 30 seconds

这是作者的问题,我们在程序里搜索pyramid_cars_with_aug_example,然后把它改成你自己outputs下的真实文件夹名字就行

在我的电脑配置下需要执行30小时左右

接着等吧

执行完以后使用下面的指令调用tensorboard画出训练过程中的各个指标的变化趋势

cd avod/data/outputs/pyramid_cars_with_aug_example
tensorboard --logdir logs

注意,这只是调用了tensorboard,输入指令以后终端会给出如下提示
在这里插入图片描述

这告诉我们,如果想看变化趋势的曲线,需要在浏览器中打开终端提示的网址,我的曲线如下图所示

我们可以看到,里面有rpn_loss、avod_loss等指标的变化趋势(感觉跳动有点大)

(这里,我们还可以在本地的浏览器上进行浏览,服务器地址+6006即可。如192.168.a.b:6006,效果见下图)
复现AVOD_第3张图片

(后面的没有做测试了,后续有时间再说…………)
8. Inference
执行run inference,执行这一步是干啥的,暂时还不清楚

python avod/experiments/run_inference.py --checkpoint_name='pyramid_cars_with_aug_example' --data_split='val' --ckpt_indices=120 --device='0'
  1. 查看结果
    这一步是生成带预测框的2d图片,输入指令
python demos/show_predictions_2d.py

会生成图片,自动存放在文件夹avod/data/outputs/pyramid_cars_with_aug_example/predictions/images_2d/predictions/val/120000/0.1中

这里放几张图片看下效果吧

到这里,就完成网络所有的训练和使用流程了。

你可能感兴趣的:(复现模型,数据融合,centos,ubuntu,linux)