object_detectionAPI源码阅读笔记(2-翻译de

2018-10-05  本文已影响127人  yanghedada

So you want to create a new model!!

在本节中,我们将讨论用于定义检测模型的一些抽象。如果您想定义一个新的模型体系结构以进行检测并在Tensorflow Detection API中使用它,那么本节还应该作为需要编辑以使新模型正常工作的文件的高级指南。

DetectionModels(object_detection/core/model.py

为了使用我们提供的二进制文件进行训练,评估和导出,Tensorflow Object Detection API下的所有模型(Faser RCNN,Mask RCNN,SSD等)都使用DetectionModel接口(请参阅完整定义object_detection/core/model.py)。DetectionModel实现5个功能:

给定DetectionModel训练时间,我们通过以下函数序列传递每个图像批次,以计算可通过SGD优化的损失:

inputs (images tensor) -> preprocess -> predict -> loss -> outputs (loss tensor)

在eval时间,我们通过以下函数序列传递每个图像批次以生成一组检测:

inputs (images tensor) -> preprocess -> predict -> postprocess -> outputs (boxes tensor, scores tensor, classes tensor, num_detections tensor)

一些规定:

定义新的Faster R-CNN or SSD Feature Extractor

在大多数情况下,不会从头写DetectionModel- 一般是创建一个新的功能提取器,供其中一个SSD或Faster R-CNN 的meta-architectures.模型使用。(meta-architectures是DetectionModel子的类)。

注意:为了使下面的讨论有意义,建议首先熟悉Faster R-CNN 论文。

如果使用一种全新的网络架构(比如说,“InceptionV100”)进行分类,并希望了解InceptionV100如何作为检测的特征提取器(例如,使用Faster R-CNN)。

要使用InceptionV100,我们必须定义一个新的 FasterRCNNFeatureExtractor并将其FasterRCNNMetaArch 作为输入传递给我们的构造函数。
object_detection/meta_architectures/faster_rcnn_meta_arch.py。分别定义了FasterRCNNFeatureExtractorFasterRCNNMetaArch

FasterRCNNFeatureExtractor必须定义的几个功能:

使用object_detection/models/faster_rcnn_resnet_v1_feature_extractor.py 举一个例子。:

配置自己的模型参数

假设feature extractor不需要标准配置,理想情况下,希望能够简单地更改配置中的“feature_extractor.type”字段以指向新的功能提取器。为了让我们的API知道如何理解这种新类型,您首先必须使用模型构建器(object_detection/builders/model_builder.py)编写新的feature extractor,其作用是从配置原型创建模型。

创建很简单---只需添加一个指针,该指针指向您在object_detection/builders/model_builder.py文件顶部的一个SSD或FasterRCNN特征提取器类映射中定义的新的Feature Extractor类 。建议添加一个测试,object_detection/builders/model_builder_test.py 以确保解析新的proto将按预期工作。(在model_builder.py有个字典把自己的CNN模型添加进去就可以了)

把新模型做的更加性感一点

创建好模型之后,就可以使用新的模型!最终提示:

上一篇下一篇

猜你喜欢

热点阅读