2

I'm aware that they are already provided in model.config by using something like:

  data_augmentation_options {
    random_adjust_contrast {
    }
  }

However, I need to perform my own data augmentation methods. Below is the current code I used to train a detector:

config = tf.estimator.RunConfig(model_dir=modelpath, keep_checkpoint_max=2, save_summary_steps=100/5)
train_and_eval_dict = model_lib.create_estimator_and_inputs(
    run_config=config,
    hparams=model_hparams.create_hparams(None),
    pipeline_config_path=pipelinepath,
    train_steps=trainsteps,
    eval_steps=evalsteps)
estimator = train_and_eval_dict['estimator']
train_input_fn = train_and_eval_dict['train_input_fn']
eval_input_fns = train_and_eval_dict['eval_input_fns']
eval_on_train_input_fn = train_and_eval_dict['eval_on_train_input_fn']
predict_input_fn = train_and_eval_dict['predict_input_fn']
train_steps = train_and_eval_dict['train_steps']

train_spec, eval_specs = model_lib.create_train_and_eval_specs(
        train_input_fn,
        eval_input_fns,
        eval_on_train_input_fn,
        predict_input_fn,
        train_steps,
        eval_on_train_data=False)

trainer_estimator = tf.estimator.train_and_evaluate(
    estimator, train_spec, eval_specs[0])

I try to read the train_input_fn with something like this:

iterator = train_input_fn().__iter__()
next_element = iterator.get_next()
x_next = next_element[0]
y_next = next_element[1]
x_true_image_shape = x_next.get('true_image_shape', 0)

I can only obtain the tensor but I do not know how to read the value or even to replace them.

My thought is:

  • Read the train_input_fn.
  • Add my own augmentation methods in each batch.

Is it the right to do so or is there any other way to achieve this goal?

RayCo5514
  • 21
  • 2

0 Answers0