查看: 1580|回复: 2

Tensorflow Object Detection API使用

[复制链接]

665

主题

1234

帖子

6670

积分

xdtech

Rank: 5Rank: 5

积分
6670
发表于 2018-12-25 22:25:01 | 显示全部楼层 |阅读模式
一、安装 Tensorflow 及 Object Detection API
[color=rgba(0, 0, 0, 0.75)]

1.安装Tensorflow
[color=rgba(0, 0, 0, 0.75)]

TensorFlow中文社区文档:Tensorflow安装

[color=rgba(0, 0, 0, 0.75)]

2.安装Object Detection API
[color=rgba(0, 0, 0, 0.75)]

参考Github上,TensorFlow   models/research/object_detection里的安装教程

[color=rgba(0, 0, 0, 0.75)]

添加库的路径到PYTHONPATH,使用编辑器如gedit打开~/.bashrc 文件,将以下命令添加到一个新行。其中pwd 代表models/research 的路径,可去掉`符号,然后在终端bash一下。




[color=rgba(0, 0, 0, 0.75)]

# From tensorflow/models/research/export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
  • 1
  • 2
[color=rgba(0, 0, 0, 0.75)]

注:pip install 如果是用sudo,则安装系统默认python下的包,如果TensorFlow是安装在其他python下(如miniconda),则不加sudo。



二、使用 Oxford-IIIT Pet 数据集进行测试
[color=rgba(0, 0, 0, 0.75)]

1.下载解压数据集,并将其转换为TFRecords
[color=rgba(0, 0, 0, 0.75)]

参考Github上,TensorFlow   models/research/object_detection里的说明文档

[color=rgba(0, 0, 0, 0.75)]

Pet数据集里有部分图片损毁,应该删除掉,否则会在运行eval.py时报以下错误:Corrupt JPEG data: 240 extraneous bytes before marker 0xd9 。参考文档可知,egyptian_mau_14, 139, 145, 156, 167, 177, 186, 191; abyssinian_5, 34; chihuahua_121; beagle_116 为损坏的文件,应删去对应的.jpg; .xmls; 以及list.txt、test.txt、trainval.txt 里对应的行。

[color=rgba(0, 0, 0, 0.75)]

2.下载用于迁移学习的预训练模型
[color=rgba(0, 0, 0, 0.75)]

Tensorflow Detection Model Zoo里下载COCO-pretrained SSD with MobileNet model,存放在models/research文件夹中,并解压。

[color=rgba(0, 0, 0, 0.75)]

tar -xvf ssd_mobilenet_v1_coco_2017_11_17.tar.gz

3.配置对象检测管道
[color=rgba(0, 0, 0, 0.75)]

参考文档

[color=rgba(0, 0, 0, 0.75)]

在 Tensorflow object detection API 里,配置文件定义了模型参数、训练参数等参数,文件为 object_detection/protos/pipeline.proto  。在此实验中,采用一些预定义模板,选择在 object_detection/samples/configs 文件夹中的模板,此处采用 ssd_mobilenet_v1_pets.config作为而配置管道的起点。如果不采用预定义模板配置管道,参考Configuring the Object Detection Training Pipeline

[color=rgba(0, 0, 0, 0.75)]

在ssd_mobilenet_v1_pets.config 文件中,修改 fine_tune_checkpoint、 input_path  和 label_map_path 路径。fine_tune_checkpoint  应该提供一个已存在的checkpoint路 ,在下载的预训练模型的文件中包含有 model.ckpt.data-00000-of-00001, model.ckpt.index, model.ckpt.meta ,比如fine_tune_checkpoint 的路径可设置为/home/cyj/Project/models/research/ssd_mobilenet_v1_coco_2017_11_17/model.ckpt 。



4.运行
[color=rgba(0, 0, 0, 0.75)]

运行训练程序

[color=rgba(0, 0, 0, 0.75)]

# From the tensorflow/models/research/ directorypython object_detection/train.py \    --logtostderr \    --pipeline_config_path=${PATH_TO_YOUR_PIPELINE_CONFIG} \    --train_dir=${PATH_TO_TRAIN_DIR} \
  • 1
  • 2
  • 3
  • 4
  • 5
[color=rgba(0, 0, 0, 0.75)]

${PATH_TO_YOUR_PIPELINE_CONFIG}指向管道训练文件,如/home/cyj/Project/models/research/object_detection/samples/configs/ssd_mobilenet_v1_pets.config, ${PATH_TO_TRAIN_DIR} 定义训练事件写入路径,先新建相关train 文件夹,如/home/cyj/Project/models/research/train,output_inference_graph.pb 为导出的训练的模型。

TensorFlow 模型保存参考文档

[color=rgba(0, 0, 0, 0.75)]

运行测试程序

[color=rgba(0, 0, 0, 0.75)]

# From the tensorflow/models/research/ directorypython 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}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
[color=rgba(0, 0, 0, 0.75)]

${PATH_TO_EVAL_DIR} 定义测试事件写入路径,先新建相关 eval 文件夹,如 /home/cyj/Project/models/research/eval。

[color=rgba(0, 0, 0, 0.75)]

运行Tensorboard
模型训练和测试的过程可通过Tensorboard进行查看,使用以下命令运行Tensorboard:

[color=rgba(0, 0, 0, 0.75)]

tensorboard --logdir=${PATH_TO_MODEL_DIRECTORY}
  • 1
[color=rgba(0, 0, 0, 0.75)]

其中${PATH_TO_MODEL_DIRECTORY} 指向包含train 和 eval 的目录。例如 ~$ tensorboard --

logdir=/home/cyj/Project/models/research

未完, 待续。


回复

使用道具 举报

166

主题

616

帖子

1万

积分

xdtech

Rank: 5Rank: 5

积分
11590
发表于 2018-12-26 17:19:08 | 显示全部楼层
似乎还没
写完
后续呢?
继续来吗,作者?
回复

使用道具 举报

166

主题

616

帖子

1万

积分

xdtech

Rank: 5Rank: 5

积分
11590
发表于 2019-1-13 09:26:38 | 显示全部楼层
好多人都在测试
这个API
看来
是真的好用啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表