TensorFlow object detection API

https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/running_pets.md

1. 获取数据Oxford-IIIT Pets Dataset

# From tensorflow/models/research/
wget http://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz
wget http://www.robots.ox.ac.uk/~vgg/data/pets/data/annotations.tar.gz
# 解压
tar -xvf images.tar.gz
tar -xvf annotations.tar.gz

最后tensorflow/models/research/下文件结构

images/

annotations/
object_detection/

others 

2. 对数据进行转换

Tensorflow Object Detection API希望数据是TFRecode格式,所以先执行create_pet_tf_record脚本来将Oxford-IIIT pet数据集进行转换

注:要提前安装好需要的库,不然这一步会有不少错

#From tensorflow/models/research/
python object_detection/dataset_tools/create_pet_tf_record.py --label_map_path=object_detection/data/pet_label_map.pbtxt     --data_dir=`pwd`     --output_dir=`pwd`
# 在tensorflow/models/research/会生成10个标准的TFRecord文件:pet_faces_train.record-* pet_faces_val.record-*
cp pet_faces_train.record-* /tensorflow/models/research/object_detection/data
cp pet_faces_val.record-*  /tensorflow/models/research/object_detection/data
cp object_detection/data/pet_label_map.pbtxt ${YOUR_DIRECTORY}/data/pet_label_map.pbtxt

最后结果:

两个TFRecode文件将会在tensorflow/models/research/下生成,分别为pet_train_with_mask.record和pet_val_with_mask.record(和例子中给出的不一样)

遇到的问题:

  • TypeError: __init__() got an unexpected keyword argument ‘serialized_options‘

protobuf原来用的3.6.1版本,改成3.5.1就对了

可以在https://github.com/google/protobuf/releases下载exe文件,然后在系统变量中配置其路径

  • NewRandomAccessFile failed to Creat/Open: xxxx  No such process

文件的路径写错了,没有找到相应的文件

3. 下载已经训练好的COCO模型

下载训练好的模型,且放到data目录下

wget http://storage.googleapis.com/download.tensorflow.org/models/object_detection/faster_rcnn_resnet101_coco_11_06_2017.tar.gz
tar -xvf faster_rcnn_resnet101_coco_11_06_2017.tar.gz
cp faster_rcnn_resnet101_coco_11_06_2017/model.ckpt.* ${YOUR_DIRECTORY}/data/

 4. 配置对象检测pipeline

Tensorflow Object Detection API中模型参数、训练参数、评估参数都是在一个config文件中配置

object_detection/samples/configs下式一些object_detection配置文件的结构。这里用faster_rcnn_resnet101_pets.config作为配置的开始。搜索文件中的PATH_TO_BE_CONFIGURED,并修改,主要是数据存放的路径

5. object dectection代码进行打包

调用.sh文件,后面的/tmp/pycocotools是输出目录

.sh文件做的事情:

  • 下载https://github.com/cocodataset/cocoapi.git
  • 并且创建pycocotools目录,需要放到object_detection下
# From tensorflow/models/research/
# 下载pycocotools-2.0.tar到/tmp/pycocotools下
bash object_detection/dataset_tools/create_pycocotools_package.sh /tmp/pycocotools
# 然后解压到object_detection/下
tar -xvf faster_rcnn_resnet101_coco_11_06_2017.tar.gz /object_detection
# 进入PythonAPI,调用setup.py
python setup.py

问题:

  • cl: 命令行 error D8021 :无效的数值参数“/Wno-cpp”

https://blog.csdn.net/heiheiya/article/details/81128749

可以把这个项目下载下来,然后在PythonAPI中执行set up

  • 原教程中的cd slim&python setup.py sdists,是用来打包的(因为我是本地跑所以没有执行)

6. 开始训练和评估

为了开始训练和执行,在tensorflow/models/research/ 目录下执行如下命令

# From tensorflow/models/research/
python object_detection/model_main.py
  --pipeline_config_path=${YOUR_DIRECTORY}\object_detection\samples\configs\faster_rcnn_resnet101_pets.config
  --model_dir=${YOUR_DIRECTORY}\object_detection\data
  --num_train_steps=50000
  --num_eval_steps=2000
  --alsologtostderr

问题:

  • \object_detection\models\faster_rcnn_inception_resnet_v2_feature_extractor.py", line 28, in <module> from nets import inception_resnet_v2 ModuleNotFoundError: No module named ‘nets‘

因为我的目录中nets是在slim下的,只要到py文件中改下路径就好了

  • File "xx\tensorflow\models\research\object_detection\core\post_processing.py", line 150, in multiclass_non_max_suppressionscore_threshold=score_thresh)TypeError: non_max_suppression() got an unexpected keyword argument ‘score_threshold‘

post_processing.py中把multiclass_non_max_suppression的参数删除就可以了

7. tensorboard对过程进行监视

tensorboard --logdir=${YOUR_DIRECTORY}/model_dir

8. 导出tensorflow图

文件保存在${YOUR_DIRECTORY}/model_dir,一般包括如下三个文件

  • model.ckpt-${CHECKPOINT_NUMBER}.data-00000-of-00001
  • model.ckpt-${CHECKPOINT_NUMBER}.index
  • model.ckpt-${CHECKPOINT_NUMBER}.meta

找到一个要导出的checkpoint,执行命令

# From tensorflow/models/research/cp ${YOUR_DIRECTORY}/model_dir/model.ckpt-${CHECKPOINT_NUMBER}.* .
python object_detection/export_inference_graph.py     --input_type image_tensor     --pipeline_config_path object_detection/samples/configs/faster_rcnn_resnet101_pets.config     --trained_checkpoint_prefix model.ckpt-${CHECKPOINT_NUMBER}     --output_directory exported_graphs

最后exported_graphs中包含保存的模型和图

9. 一些小坑

  • 原来用git clone来下models文件,很容易失败。直接下载models.zip会快一些

原文地址:https://www.cnblogs.com/coolqiyu/p/9440475.html

时间: 2024-10-07 23:57:35

TensorFlow object detection API的相关文章

谷歌开源的TensorFlow Object Detection API视频物体识别系统实现(二)[超详细教程] ubuntu16.04版本

本节对应谷歌开源Tensorflow Object Detection API物体识别系统 Quick Start步骤(一): Quick Start: Jupyter notebook for off-the-shelf inference 本节步骤较为简单,具体操作如下: 1.在第一节安装好jupyter之后,在ternimal终端进入到models文件夹目录下,执行命令: jupyter-notebook 2.会在网页打开Jupyter访问object_detection文件夹,进入obj

TensorFlow object detection API应用二

前一篇讲述了TensorFlow object detection API的安装与配置,现在我们尝试用这个API搭建自己的目标检测模型. 一.准备数据集 本篇旨在人脸识别,在百度图片上下载了120张张钧甯的图片,存放在/models/research/object_detection下新建的images文件夹内,images文件夹下新建train和test两个文件夹,然后将120分为100和20张分别存放在train和test中. 接下来使用 LabelImg 这款小软件,对train和test

Install Tensorflow object detection API in Anaconda (Windows)

This blog is to explain how to install Tensorflow object detection API in Anaconda in Windows 10 as well as how to train train a convolution neural network to do object detection on your own data set. Steps: 1. Installation and Configuration Install

Tensorflow object detection API 搭建属于自己的物体识别模型

一.下载Tensorflow object detection API工程源码 网址:https://github.com/tensorflow/models,可通过Git下载,打开Git Bash,输入git clone https://github.com/tensorflow/models.git进行下载. 二.标记需要训练的图片 ①.在第一步下载的工程文件models\research\object_detection目录下,建立一个my_test_images用来放测试test和训练t

#tensorflow object detection api 源码分析

前言 Tensorflow 推出的 Object Detection API是一套抽象程度极高的目标检测框架,可以快速用于生产部署.但网络上大多数相关的中英文文章均只局限于应用层面的分析,对于该套框架的算法实现源码没有针对性的分析文章.对于选择tensorflow作为入门框架的深度学习新手,不仅应注重于算法本身的理解,更应注重算法的编码实现.本人也是刚入门深度学习的新手,深深困扰于tensorflow 目标检测框架的抽象代码,因此花费了大量时间分析源码,希望能对博友有益,同时受限于眼界,文章中必

[Tensorflow] Object Detection API - build your training environment

Prepare protoc Download Protocol Buffers Create folder: protoc and unzip it. [email protected]UX303UB$ ls models Others protoc train_data [email protected]-UX303UB$ ls protoc/ bin include readme.txt [email protected]-UX303UB$ ls protoc/bin/ protoc Pr

ubuntu Tensorflow object detection API 开发环境搭建

https://blog.csdn.net/dy_guox/article/details/79111949 [email protected]:~$ [email protected]:~$ source activate t20190518(t20190518) [email protected]:~$ (t20190518) [email protected]:~$ (t20190518) [email protected]:~$ (t20190518) [email protected]

谷歌开源的TensorFlow Object Detection API视频物体识别系统实现教程

教程:http://blog.csdn.net/xiaoxiao123jun/article/details/76605928 全部代码:https://github.com/lyj8330328/Object-Detection 原文地址:https://www.cnblogs.com/lyj-gyq/p/8488485.html

TensorFlow models - object detection API 安装

tensorflow 的 models 模块非常有用,不仅实现了各种模型,也包括了 原作者 训练好的模型及其使用方法,本文 以 object detection 为例 来说明如何使用 训练好 的模型: 首先呢,还是建议 去 官网 看看使用方法,因为 tensorflow 的版本混乱,网上教程针对的版本各不相同,所以各种坑: 下面是正题,本文针对 windows 操作系统: 第一步:下载 models 模块,解压 https://github.com/tensorflow/models 第二步:安