在各自的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协议缓冲区