В соответствующих конфигурационных файлах , по умолчанию быстрее-RCNN имеют только random horizontal flips
с поддержкой и SSD с иметь random horizontal flips
с последующим SSD random crop
включенным . Я хочу добавить больше вариантов дополнения. Для этого я написал следующий фрагмент:
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
в качестве следующего шага дополнения в ssd_inception_v2_coco.config , но я хочу добавить его между random horizontal flip
и SSD random crops
. Потому что, я думаю, что функции увеличения применяются в этом порядке во время тренировки (поправьте меня, если я ошибаюсь).
ОБНОВЛЕНИЕ :
Обходной путь, который я нашел, состоит в том, чтобы удалить произвольную обрезку 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