您的位置:首页 > 移动开发 > Objective-C

Tenesorflow Object Detection API使用指南

2018-06-20 09:55 225 查看

README.md

创建能够在单幅图像中精确定位和识别多种对象的机器学习模型,仍是计算机视觉的核心挑战。Tensorflow Object Detection API是一个构建在Tensorflow之上的开源框架,可以轻松搭建、训练和部署目标检测模型。在谷歌,我们已经发现这个代码库对我们的计算机视觉需求是有用的,并希望对你们也有用。

 

Quick Start: Jupyternotebook for off-the-shelf inference

https://github.com/tensorflow/models/blob/master/research/object_detection/object_detection_tutorial.ipynb。欢迎来到目标检测推理指南。这本笔记如何使用预训练的模型来检测图像中的物体。在开始之前确定按照installation instructions安装了the TensorflowObject Detection API。

 

Setup: Installation

1)    Dependencies:

Protobuf3+, python-tk, Pillow 1.0, lxml, tf Slim, Jupyter notebook, Matplotlib, Tensorflow,Cython, cocoapi.

通过以下语句安装Tensorflow:

其余的库可以通过apt-get安装到Ubuntu 16.04 :

或者通过pip安装依赖项:

2)COCO API installation

如果你有兴趣使用COCO评价指标,请下载cocoapi并将pycocotools子文件夹复制到tensorflow/models/research/目录中。默认的评价指标是基于PascalVOC评估中使用的指标。要使用COCO目标检测评价指标,请将metrics_set:"coco_detection_metrics" 添加到config file的eval_config消息中。要使用COCO实力分割评价标准,请将metrics_set: "coco_mask_metrics" 添加到config file的 eval_config消息中。

       

3)Protobuf Compilation

TheTensorflow Object Detection API 使用Protobufs去配置模型以及训练参数。在使用框架之前,Protobuf libraries必须编译完毕。在tensorflow/models/research/目录下运行:

4)Add Libraries to PYTHONPATH

当在本地运行时,tensorflow/models/research/与slim文件夹应该添加到PYTHONPATH中。在tensorflow/models/research/目录下运行:

       

你可以将其添加到~/.bashrc文件的尾部,并使用在你的系统上tensorflow/models/research的绝对路径替换`pwd`。

5)Testing the Installation

你可以通过运行一下指令来检测是否已经安装正确安装the Tensorflow Object Detection API:

      

 

Setup: Configuring an objectdetection pipeline

1)Overview

The Tensorflow Object Detection API 使用protobuf文件配置训练和评估过程。The training pipeline的模式可以在object_detection/protos/pipeline.proto中找到。配置文件分为5个部分:

1.    模型配置(the model)。它定义了训练哪种类型的模型。(ie. meta-architecture, feature extractor)

2.    训练配置(the train_config)。它决定了应该使用哪些参数来训练模型参数。(ie. SGD parameters, input preprocessing and feature extractorinitialization values)

3.    评估配置(the eval_config)。它决定了哪些评价标准用于评估模型。(currently we only support the PASCAL VOC metrics)

4.    训练输入配置(the train_input_config)。它定义了模型应该训练的数据集。

5.    评估输入配置(the eval_input_config)。它定义了将对模型进行评估的数据集。

配置文件框架如下所示:

2)Picking Model Parameters

有大量的模型参数需要配置。最佳设置将取决于你的应用。Faster R-CNN模型更适合那些对于精度要求高,时间要求低的情况。相反,如果处理时间是最重要的因素,则建议SSD模型。

为了帮助新用户开始使用,在object_detection/samples/configs文件夹中提供了示例模型配置。这些示例模型配置的内容可以黏贴到配置文件框架的model字段中。用户应该注意将num_classes字段更改为用户正在训练的数据集的类别数量。

3)Defining Inputs

The Tensorflow Object Detection API 接收TFRecord文件格式的输入。用户必须指定训练文件和评估文件的位置。另外,用户还需要指定一个label map,它定义了类ID和类名之间的映射。训练与测试数据集之间的label map应该是相同的。

一个input_config示例如下:

用户应该替换input_path和label_map_path参数,并将输入配置放入配置文件框架的train_input_reader和eval_input_reader字段中。

4)Configuring the Trainer

Train_config定义训练过程中的部分内容。

1.    模型参数初始化。

2.    输入预处理。

3.    随机梯度下降参数。

一个train_config示例如下:

Model Parameter Initialization

虽然是可选的,但是强烈建议用户使用其他目标检测的检查点。从头开始训练目标检测器可能需要几天时间。为了加速训练过程,建议用户重新使用预训练的目标分类或目标检测的检查点中的特征提取器参数。train_config提供两个字段指定预训练的检查点:fine_tune_checkpoint和from_detection_checkpoint。fine_tune_checkpoint应该提供一个预训练的检查点的路径。from_detection_checkpoint是一个布尔值。如果为false,则假定检查点是目标分类的检查点。注意从目标检测的检查点开始训练通常比从目标分类的检查点更快。

Input Preprocessing

    在train_config中的data_augmentation_options可用用来指定如何修改训练数据。

SGD Parameters

在train_config中其余参数是梯度下降的超参数。注意,在配置文件中提供的最佳学习率取决于训练设置的细节。

5)Configuring the Evaluator

    目前的评估使用的是PASCAl VOC challenge的评价标准。eval_config的参数设置为合理的默认值,通常不需要配置。

Setup: Preparing Inputs

       TensorflowObject Detection API需要TFRecord格式的数据。两个示例脚本(

create_pascal_tf_record.py
and 
create_pet_tf_record.py
) 将the PASCAL VOC dataset和the Oxford-IIIT Pet dataset转化为TFRecords。

1) Generating the PASCAL VOC TFRecord files

通过以下指令将the PASCAL VOC dataset转化为TFRecords:

两个TFRecord文件应该出现在tensorflow/models/research/中,并命名为pascal_train.record和pascal_val.record。the PASCAL VOC dataset的label map为object_detection/data/pascal_label_map.pbtxt。

2)Generating the Oxford-IIIT Pet TFRecord files

通过以下指令将the Oxford-IIIT Pet dataset转化为TFRecords:

两个TFRecord文件应该出现在中,并命名为pet_train.record和pet_val.record。the Oxford-IIIT Pet dataset的label map为object_detection/data/pet_label_map.pbtxt。

 

Running: Running locally

这个页面介绍了在本地机器上训练目标检测模型所需的步骤。假设读者已经完成以下步骤:

1.    已按照installation instructions安装The TensorflowObject Detection API。这包括安装库依赖,编译protobufs和设置Python环境。

2.    已创建有效数据集。

3.    已编写Object Detection pipelineconfiguration。

1)Running the Training Job

本地的训练可以通过下面指令运行:

${PATH_TO_YOUR_PIPELINE_CONFIG}指向pipeline config。

${PATH_TO_TRAIN_DIR}指向训练检查点和事件写入路径。

           训练任务会无限运行直到被杀死。

2)   Running the Evaluation Job

评估是一项单独运行的任务。评估任务周期性地轮训训练检查点,并在测试数据集上对其进行评估。本地的评估可以通过下面指令运行:

${PATH_TO_YOUR_PIPELINE_CONFIG}指向pipeline config。

${PATH_TO_TRAIN_DIR}指向训练检查点的存储路径。

${PATH_TO_EVAL_DIR}指向测试事件的写入路径。

评估任务同样会无限运行直到被杀死。

3)   Running Tensorboard

训练和评估任务的进展可以通过Tensorboard进行检查。如果使用建议的目录结构,Tensorboard使用下面指令运行:

${PATH_TO_MODEL_DIRECTORY}指向包含训练与验证结果的目录


阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: