首页 > 解决方案 > 如何在 Tensorflow 对象检测管道的配置文件中动态更改数据增强参数?

问题描述

我正在尝试创建一个对象检测框架,该框架从用户那里获取输入并根据用户选择创建自定义对象检测模型。为此,我必须根据模型、超参数和用户选择的增强选项对配置文件进行动态更改。到目前为止,我能够从 pipeline.config 文件中更改一些参数,但是在数据扩充方面,我无法在这些字段中进行任何更改。有谁知道我们如何在给定用户输入的情况下使用 python 脚本动态更改数据增强参数。我们如何为其添加更多选项。


import tensorflow as tf
from google.protobuf import text_format
from object_detection.protos import pipeline_pb2


def main():
    pipeline_config = pipeline_pb2.TrainEvalPipelineConfig()

    with tf.gfile.GFile("ssd_mobilenet_v2_coco.config", "r") as f:
        proto_str = f.read()
        text_format.Merge(proto_str, pipeline_config)

    pipeline_config.model.ssd.image_resizer.fixed_shape_resizer.height = 300
    pipeline_config.model.ssd.image_resizer.fixed_shape_resizer.width = 300
    pipeline_config.model.ssd.num_classes = 2


    pipeline_config.train_config.batch_size = 1
    pipeline_config.train_config.data_augmentation_options[0]['keypoint_flip_permutation'] = 1

    config_text = text_format.MessageToString(pipeline_config)
    with tf.gfile.Open('pipeline.config', "wb") as f:
        f.write(config_text)


if __name__ == '__main__':
    main()

对于上面的代码,我收到此错误:

WARNING:tensorflow:From /home/test.py:11: The name tf.gfile.GFile is deprecated. Please use tf.io.gfile.GFile instead.

Traceback (most recent call last):
  File "/home/test.py", line 29, in <module>
    main()
  File "/home/test.py", line 21, in main
    pipeline_config.train_config.data_augmentation_options[0]['keypoint_flip_permutation'] = 1
TypeError: 'PreprocessingStep' object does not support item assignment

标签: pythontensorflowprotocol-buffersconfigobject-detection-api

解决方案


推荐阅读