# Path: trainer/trainer.py
# class Trainer:
#     def __init__(self, ssd_model, data_preparer, data_postprocessor, params):
#     def start_training(self):
#     def _train_step(self, sess, train_op, global_step, train_step_kwargs):
#     def _get_variables_to_train(self):
#     def _configure_learning_rate(self, num_samples_per_epoch, global_step):
#     def _configure_optimizer(self, learning_rate):
#     def _add_summaries(self, end_points, total_loss):
#     def _setup_debugging(self, predictions, localizations, glabels, gbboxes, gdifficults):
#     def _get_init_fn(self):
# 
# Path: evaluator/evaluator.py
# class Evaluator:
#     def __init__(self, ssd_model, data_preparer, data_postprocessor, params):
#     def start_evaluation(self):
#     def eval_all_checkpoints(self, min_step, step):
#     def _setup_evaluation(self):
#     def _get_all_checkpoints(self, min_step, step):


from trainer.trainer import TrainerParams
from evaluator.evaluator import EvaluatorParams
    save_summaries_secs=30,
    labels_offset=0,
    matched_thresholds=0.5
    )
# At 25406 steps, total_loss=~4.9, mAP has deteriorated too
# Change back to original batch size of 20 for training. And restart from 18719.
step1_3 = TrainerParams(
    feature_extractor='vgg_16',
    model_name='ssd512',
    fine_tune_fe=False,
    train_dir='../experiments/ssd512_voc0712_29-11-2017/logs',
    checkpoint_path='../checkpoints/vgg_16.ckpt',
    ignore_missing_vars=False,
    learning_rate=0.1,
    learning_rate_decay_type='fixed',
    learning_rate_decay_factor=1,
    num_epochs_per_decay=1,
    end_learning_rate=0.1,
    max_number_of_steps=48000,
    optimizer='adam',
    weight_decay=0.0005,
    batch_size=20,
    log_every_n_steps=100,
    save_interval_secs=60*60,
    save_summaries_secs=60,
    labels_offset=0,
    matched_thresholds=0.5
    )
# At 48k steps, total_loss=~4.2
# Fine tune from 44702 steps.

# Path: trainer/trainer.py
# class Trainer:
#     def __init__(self, ssd_model, data_preparer, data_postprocessor, params):
#     def start_training(self):
#     def _train_step(self, sess, train_op, global_step, train_step_kwargs):
#     def _get_variables_to_train(self):
#     def _configure_learning_rate(self, num_samples_per_epoch, global_step):
#     def _configure_optimizer(self, learning_rate):
#     def _add_summaries(self, end_points, total_loss):
#     def _setup_debugging(self, predictions, localizations, glabels, gbboxes, gdifficults):
#     def _get_init_fn(self):
# 
# Path: evaluator/evaluator.py
# class Evaluator:
#     def __init__(self, ssd_model, data_preparer, data_postprocessor, params):
#     def start_evaluation(self):
#     def eval_all_checkpoints(self, min_step, step):
#     def _setup_evaluation(self):
#     def _get_all_checkpoints(self, min_step, step):


# Path: experiments/ssd512_voc0712.py
from trainer.trainer import TrainerParams
from evaluator.evaluator import EvaluatorParams

    save_summaries_secs=30,
    labels_offset=0,
    matched_thresholds=0.5
    )
# At 25406 steps, total_loss=~4.9, mAP has deteriorated too
# Change back to original batch size of 20 for training. And restart from 18719.
step1_3 = TrainerParams(
    feature_extractor='vgg_16',
    model_name='ssd512',
    fine_tune_fe=False,
    train_dir='../experiments/ssd512_voc0712_29-11-2017/logs',
    checkpoint_path='../checkpoints/vgg_16.ckpt',
    ignore_missing_vars=False,
    learning_rate=0.1,
    learning_rate_decay_type='fixed',
    learning_rate_decay_factor=1,
    num_epochs_per_decay=1,
    end_learning_rate=0.1,
    max_number_of_steps=48000,
    optimizer='adam',
    weight_decay=0.0005,
    batch_size=20,
    log_every_n_steps=100,
    save_interval_secs=60*60,
    save_summaries_secs=60,
    labels_offset=0,
    matched_thresholds=0.5
    )
# At 48k steps, total_loss=~4.2
# Fine tune from 44702 steps.

step2_1 = TrainerParams(