TensorFlow使用object detection训练并识别自己的模型

使用object detection训练并识别自己的模型

1.安装tensorflow(version>=1.4.0)

2.部署tensorflow models
  - 在这里下载
  - 解压并安装
    - 解压后重命名为models复制到tensorflow/目录下
    - 在linux下
      - 进入tensorflow/models/research/目录,运行protoc object_detection/protos/*.proto --python_out=.
      - 在~/.bashrc file.中添加slim和models/research路径
      export PYTHONPATH=$PYTHONPATH:/path/to/slim:/path/to/research
    - 在windows下
      - 下载protobuf(version==3.3,已知3.5版本会报错) 
      - 解压后将protoc.exe放入C:\Windows下
      - 在tensorflow/models/research/打开powershell,运行protoc object_detection/protos/*.proto --python_out=.

3.训练数据准备(标记分类的图片)
  - 安装labelImg 用来手动标注图片 ,图片需要是png或者jpg格式
  - 标注信息会被保存为xml文件,使用 这个脚本 将所有xml文件转换为一个csv文件(xml文件路径识别在29行,根据情况自己修改)
  - 把生成的csv文件分成训练集和测试集

4.生成TFRecord文件
  - 使用 这个脚本 将两个csv文件生成出两个TFRecord文件(训练自己的模型,必须使用TFRecord格式文件。图片路径识别在86行,根据情况自己修改)

5.创建label map文件
  id需要从1开始,class-N便是自己需要识别的物体类别名,文件后缀为.pbtxt
    item{
      id:1
      name: ‘class-1‘
      }
    item{
      id:2
      name: ‘class-2‘
      }

6.下载模型并配置文件
  - 下载一个模型(文件后缀.tar.gz)
  - 修改对应的训练pipline配置文件 
    - 查找文件中的PATH_TO_BE_CONFIGURED字段,并做相应修改
      - num_classes 改为你模型中包含类别的数量
      - fine_tune_checkpoint 解压.tar.gz文件后的路径 + /model.ckpt
      - from_detection_checkpoint:true
      - train_input_reader
        - input_path 由train.csv生成的record格式训练数据
        - label_map_path 第5步创建的pbtxt文件路径
      - eval_input_reader
        - input_path 由test.csv生成的record格式训练数据
        - label_map_path 第5步创建的pbtxt文件路径

7. 训练模型
  - 进入tensorflow/models/research/目录,运行
  python object_detection/train.py --logtostderr --pipeline_config_path=${PATH_TO_YOUR_PIPELINE_CONFIG} //第六步中修改的pipline配置文件路径// --train_dir=${PATH_TO_TRAIN_DIR} //生成的模型保存路径//

8.导出模型
  - 在第7步中,--train_dir指向的路径中会生成一系列训练中自动保存的checkpoint,一个checkpoint由三个文件组成,后缀分别是.data-00000-of-00001 .index和.meta,任然在第7步的路径中,运行
    python object_detection/export_inference_graph.py --input_type image_tensor --pipeline_config_path ${PIPELINE_CONFIG_PATH} //第六步中修改的pipline配置文件路径// --trained_checkpoint_prefix ${TRAIN_PATH} //上述的一个checkpoint,例如model.ckpt-112254// --output_directory ${OUTPUT_PATH} //输出模型文件的路径//
  - 目前直接使用export_infernce_graph.py会报错,解决方法是将object_detection/目录下的export.py文件中第71行的
  rewrite_options = rewriter_config_pb2.RewriterConfig(layout_optimizer=rewriter_config_pb2.RewriterConfig.ON)
  改为
  rewrite_options = rewriter_config_pb2.RewriterConfig()

9.使用新模型识别图片
  - 在jupyter notebook中打开object_detection/路径下的object_detection_tutorial.ipynb文件
  - 修改第四步代码中的PATH_TO_CKPT,指向第8步导出模型路径中的frozen_inference_graph.pb文件
  - 修改第四步代码中的PATH_TO_LABELS,指向第5步创建的pbtxt文件路径
  - 修改第四步代码中的NUM_CLASSES为模型实际包含的类别数
  - 注释掉第五步所有代码
  - 修改第九步代码中的PATH_TO_TEST_IMAGES_DIR, 指向待识别图片文件夹路径
  - 修改第九步代码中TEST_IMAGE_PATHS, 将文件名和扩展名修改为实际图片格式,如图片为1.bmp、2.bmp... 则对应改为‘{}.bmp‘,同时修改i值范围以覆盖所有待检测图片

参考文档

https://gist.github.com/douglasrizzo/c70e186678f126f1b9005ca83d8bd2ce
https://towardsdatascience.com/how-to-train-your-own-object-detector-with-tensorflows-object-detector-api-bec72ecfe1d9

原文地址:https://www.cnblogs.com/evempire/p/8401352.html

时间: 2024-10-22 05:16:20

TensorFlow使用object detection训练并识别自己的模型的相关文章

TensorFlow models - object detection API 安装

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

ubuntu16.04 使用tensorflow object detection训练自己的模型

一.构建自己的数据集 1.格式必须为jpg.jpeg或png. 2.在models/research/object_detection文件夹下创建images文件夹,在images文件夹下创建train和val两个文件夹,分别存放训练集图片和测试集图片. 3.下载labelImg目标检测标注工具 (1)下载地址:https://github.com/tzutalin/labelImg (2)由于LabelImg是用Python编写的,并使用Qt作为其图形界面. 因此,python2安装qt4:

谷歌开源的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

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

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.robo

#tensorflow object detection api 源码分析

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

第三十一节,使用谷歌Object Detection API进行目标检测

Object Detection API是谷歌开放的一个内部使用的物体识别系统.2016年 10月,该系统在COCO识别挑战中名列第一.它支持当前最佳的实物检测模型,能够在单个图像中定位和识别多个对象.该系统不仅用于谷歌于自身的产品和服务,还被推广至整个研究社区. 一.代码位置与内置的模型 1.Object Detection Object Detection模块的位置与slim的位置相近,同在github.com 中TensorFlow 的models\research目录下.类似slim,