关于object_detection的官网运行案例

首先需要把https://github.com/tensorflow/models/tree/r1.5的代码下载下来

然后进入到https://github.com/tensorflow/models/tree/r1.5/research/object_detection,下面有个README.md

1.installation:

    搭建GPU 环境,反正这个地方,搭建GPU的时候会遇到很多问题,自己多在百度上搜索和尝试,然后在终端依次输入以下命令:

pip install tensorflow-gpu

sudo apt-get install protobuf-compiler python-pil python-lxml

sudo pip install jupyter

sudo pip install matplotlib

sudo pip install pillow

sudo pip install lxml

sudo pip install jupyter

sudo pip install matplotlib

其次 # From tensorflow/models/research/,也就是在research下面的文件下输入:

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

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
python object_detection/builders/model_builder_test.py
运行完成会出现

关于object_detection的官网运行案例

 

2. Configuring an object detection pipeline:

         定义obeject_detection pipeline,就是给他一个配置文件,在配置文件里面写明需要用到的哪些model,可以参考object_detection/samples/configs,可以看到configs下面有很多标准的configs文件,可以根据这些成型的文件进行相应的修改。根据自己的经验来看,再进行自己数据训练之前,最好把官网的模型走一遍,以确定框架本身没有什么问题。

以faster_rcnn_resnet101_voc07.config为例子。

里面的model,包含了模型的本身的超参数

Train_config:训练时候所需要的超参数

train_input_reader:定义了数据所在的位置

eval_config:预测的时候给的超参数

eval_input_reader:测试数据所在的位置

3. Preparing inputs

直接从http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar下载
然后tar -xvf VOCtrainval_11-May-2012.tar解压
然后分别按着以下命令的格式输入:

python object_detection/dataset_tools/create_pascal_tf_record.py \

    --label_map_path=object_detection/data/pascal_label_map.pbtxt \

    --data_dir=VOCdevkit --year=VOC2012 --set=train \

    --output_path=pascal_train.record

python object_detection/dataset_tools/create_pascal_tf_record.py \

    --label_map_path=object_detection/data/pascal_label_map.pbtxt \

    --data_dir=VOCdevkit --year=VOC2012 --set=val \

    --output_path=pascal_val.record

关于object_detection的官网运行案例

关于object_detection的官网运行案例

 

python object_detection/dataset_tools/create_pascal_tf_record.py \

    --label_map_path=object_detection/data/pascal_label_map.pbtxt \

    --data_dir=/home/shnu/demo/models-master/research/data/VOCdevkit --year=VOC2012 --set=train \

    --output_path=pascal_train.record

python object_detection/dataset_tools/create_pascal_tf_record.py \

    --label_map_path=object_detection/data/pascal_label_map.pbtxt \

    --data_dir=/home/shnu/demo/models-master/research/data/VOCdevkit --year=VOC2012 --set=val \

    --output_path=pascal_val.record

然后在research文件下就会看到以下record文件。

关于object_detection的官网运行案例

数据准备好以后就可以在本地上跑了

Running locally

Recommended Directory Structure for Training and Evaluation建议的目录的结构

关于object_detection的官网运行案例

Pascal_label_map.bptxt在文件夹object_detection/data下面

关于object_detection的官网运行案例

关于object_detection的官网运行案例

关于object_detection的官网运行案例

Running the Training Job

然后训练:同样是在research的目录下输入以下的命令
# From the tensorflow/models/research/ directory

python object_detection/train.py \

    --logtostderr \

    --pipeline_config_path=${PATH_TO_YOUR_PIPELINE_CONFIG} \

    --train_dir=${PATH_TO_TRAIN_DIR}

PATH_TO_YOUR_PIPELINE_CONFIG=models/faster_rcnn_resnet101/faster_rcnn_resnet101_voc07.config

PATH_TO_TRAIN_DIR=models/faster_rcnn_resnet101/train/

关于object_detection的官网运行案例

但是启动过程遇到一个坑

关于object_detection的官网运行案例

这个是自己的cudnn的版本不兼容的问题,重点看but后面的内容but source was compiled with 7004 (compatibility version 7000),可以首先查看自己的cuda和cudnn的版本,用以下的命令查看,https://developer.nvidia.com/rdp/cudnn-archive

关于object_detection的官网运行案例

显然版本过高了,需要把cudnn的版本降低,开始在关于object_detection的官网运行案例没有找到linux的版本,选择换了一个7.0.5。

关于object_detection的官网运行案例

首先,需要把原来的cudnn版本卸载

sudo rm -rf /usr/local/cuda/include/cudnn.h

sudo rm -rf /usr/local/cuda/lib64/libcudnn*

然后按照 关于object_detection的官网运行案例里面的安装

关于object_detection的官网运行案例

然后再次运行:

                    python object_detection/train.py \

    --logtostderr \

    --pipeline_config_path=${PATH_TO_YOUR_PIPELINE_CONFIG} \

    --train_dir=${PATH_TO_TRAIN_DIR}

PATH_TO_YOUR_PIPELINE_CONFIG=models/faster_rcnn_resnet101/faster_rcnn_resnet101_voc07.config

PATH_TO_TRAIN_DIR=models/faster_rcnn_resnet101/train/

得到以下训练的过程

关于object_detection的官网运行案例

Running the Evaluation Job对数据进行相应的验证

同样在research下

# From the tensorflow/models/research/ directory

python object_detection/eval.py \

    --logtostderr \

    --pipeline_config_path=${PATH_TO_YOUR_PIPELINE_CONFIG} \

    --checkpoint_dir=${PATH_TO_TRAIN_DIR} \

    --eval_dir=${PATH_TO_EVAL_DIR}

PATH_TO_EVAL_DIR=/home/shnu/demo/models-master/research/models/faster_rcnn_resnet101/eval

关于object_detection的官网运行案例

需要重新配置环境:

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

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
python object_detection/builders/model_builder_test.py

占时只能解决到这了!!!!!!