目录:
开始熟悉API的使用
简介
安装就不用说了
首先介绍一下配置文件的格式,我是参照官方给的API配置说明记录的:API配置
目标检测API是使用protobuf配置训练评估的过程,配置文件可以看作分为5个部分:
- model:决定你用什么样的模型
- train_config: 训练的参数
- eval_config: 决定评估时用什么样的指标
- train_input_config: 训练数据
- eval_input_config: 测试数据
所以要使用这个API,首先我们就要将这5个部分按照这样的格式写好
当然,在object detection文件夹中提供了一些已经写好的配置文件,可供我们直接使用:locate: object_detection/samples/configs
接下来,我们就按照github上的例程来使用
第一步:准备数据
参照github,这里使用VOC2007数据为例子,使用object_detection/samples/configs下已经定义好的配置文件,我使用的是faster_rcnn_resnet101_voc07.config
打开这个配置文件,可以看到简介的1\2\3部分已经帮我们写好了,我们需要提供的仅仅是4\5的数据部分,可以看到我们需要提供相应的input_path和label_map_path,这两者分别代表原始数据的TFrecord文件,以及数据的标签名和id的对应关系的文件
1. 得到TFrecord文件
由于tensorflow处理数据要转成TFrecord的格式,所以我们的数据要转成它的格式,官网给出了转换的代码:
在object detection目录下运行即可:
转换训练部分的数据:
python create_pascal_tf_record.py \
--data_dir='/home/data/VOC2007train' \
--year=VOC2007 \
--set=train \
--output_path='/home/data/pascal_train.record'
转换测试部分的数据:
python create_pascal_tf_record.py \
--data_dir='/home/data/VOC2007train' \
--year=VOC2007 \
--set=val \
--output_path='/home/data/pascal_val.record'
data_dir就是我们下载好的VOC数据的路径,output_path就是我们存放tfrecord文件的地方啦
2. 得到映射关系的文件
可以在object_detection/data路径下看到为我们提供了一些文件,这些文件后缀为.pbtxt,里面有VOC数据的映射文件,所以就直接拿过来用啦
最后总结一下,数据准备部分需要做如下几步:
- 下载好数据
- 将数据准换成TFrecord的形式
- 提供数据相关的.pbtxt(类别名和id number的映射关系)
- 将这些文件信息写到配置文件中去
第二步:训练模型
配置文件的数据部分写完了之后,理论上是可以开始训练了,我们可以看一下训练的配置部分,也就是简介上说的2/
里面有一个要注意的是:
fine_tune_checkpoint: “PATH_TO_BE_CONFIGURED/model.ckpt”
这一个地方可以提供预训练的权重,有这样的模型文件的话可以让我们的训练过程更快,官方也提供了一些预训练好的模型
同样,官方提供了训练部分相应的代码,如下,以我的为例:
# From the tensorflow/models/ directory
python object_detection/train.py \
--logtostder \
--pipeline_config_path=/***/faster_rcnn_resnet101/faster_rcnn_resnet101_voc07.config \
--train_dir=/***/train
pipeline_config_path 为我们使用的model配置文件
train_dir自己设定的在训练过程中记录模型的文件夹
\ 代表换行
第三步:评估
评估部分和训练部分一样,官方也提供了代码,这里用到的就是配置文件中的5/啦
代码如下:
python object_detection/eval.py \
--logtostderr \
--pipeline_config_path=/***/faster_rcnn_resnet101_voc07.config \
--checkpoint_dir=/***/train \
--eval_dir=/***/test
同样的,eval_dir就是自己设定的存放评估时做记录的路径
checkpoint_dir就是训练的时候的模型记录的路径即train_dir
总结:
细节等等,以及还有一些没记录清楚的或者说错了,最好就是去官方github官方github上看啦,第一次写博客,感觉略辛苦,哈哈,今天就写这些了,希望很容易遗忘的东西以及需要记下来的东西,经过记录,下次再看的时候很快就记起来,共勉。