在TensorFlow对象检测中更新配置协议缓冲区

时间:2019-03-11 07:32:42

标签: python python-3.x tensorflow protocol-buffers object-detection-api

在各自的config files中,默认情况下, faster-RCNN 仅具有random horizontal flips enabled,而 SSD 具有random horizontal flips后跟SSD random crop enabled。我想添加更多的增强选项。我编写了以下代码片段。

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

def get_configs_from_pipeline_file(pipeline_config_path):

  pipeline_config = pipeline_pb2.TrainEvalPipelineConfig()
  with tf.gfile.GFile(pipeline_config_path, 'r') as f:
    proto_str = f.read()
    text_format.Merge(proto_str, pipeline_config)
  return pipeline_config


config = get_configs_from_pipeline_file(
    'ssd_inception_v2_coco.config')

VERTICALFLIP = preprocessor_pb2.PreprocessingStep()
VERTICALFLIP.random_vertical_flip.SetInParent()

config.train_config.data_augmentation_options.extend([VERTICALFLIP])
print(config.train_config.data_augmentation_options)

上面的代码段在random vertical flip之后的SSD random crops后面附加了random horizontal flip,作为ssd_inception_v2_coco.config中的下一个增强步骤,但是我希望SSD random crops和{{1 }} 。因为,我认为增强功能在训练时按此顺序应用(如果我错了,请纠正我)。

更新: 我发现一种解决方法是删除SSD随机裁剪并在最后重新插入。

config = get_configs_from_pipeline_file(
    'ssd_inception_v2_coco.config')

del config.train_config.data_augmentation_options[-1]

VERTICALFLIP = preprocessor_pb2.PreprocessingStep()
VERTICALFLIP.random_vertical_flip.SetInParent()

SSD_RANDOM_CROP = preprocessor_pb2.PreprocessingStep()
SSD_RANDOM_CROP.ssd_random_crop.SetInParent()

config.train_config.data_augmentation_options.extend([VERTICALFLIP])
config.train_config.data_augmentation_options.extend([SSD_RANDOM_CROP])

我有一种直接的方法,就像我们能够在特定索引处插入python列表一样,

a=[10,20,30]
a.insert(-1,100)

我刚开始使用 google协议缓冲区

0 个答案:

没有答案