# 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: 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):


from evaluator.evaluator import EvaluatorParams
from trainer.trainer import TrainerParams
    learning_rate_decay_type='fixed',
    learning_rate_decay_factor=0.75,
    num_epochs_per_decay=2,
    end_learning_rate=0.0005,
    max_number_of_steps=150000,
    optimizer='sgd',
    weight_decay=0.0005,
    batch_size=8,
    log_every_n_steps=20,
    save_interval_secs=60*60,
    save_summaries_secs=60,
    labels_offset=0,
    matched_thresholds=0.5
    )
# Last setting still breaks up. Use this one instead.
# At 125k steps, test mAP = 0.440
# At this point I am positively sure that this model cannot be trained to a better performance.

# -------------------------------------------------------- #
# Parameters for evaluating model
eval_train = EvaluatorParams(
    checkpoint_path='../experiments/mobilenet_11-12-2017/logs/',
    eval_dir='../experiments/mobilenet_11-12-2017/eval_train',
    use_finetune=False,
    is_training=False,
    eval_train_dataset=True,
    loop=False,
    which_checkpoint='last'
)


# 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: 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: experiments/mobilenet_sdd.py
from evaluator.evaluator import EvaluatorParams
from trainer.trainer import TrainerParams

    learning_rate_decay_type='fixed',
    learning_rate_decay_factor=0.75,
    num_epochs_per_decay=2,
    end_learning_rate=0.0005,
    max_number_of_steps=150000,
    optimizer='sgd',
    weight_decay=0.0005,
    batch_size=8,
    log_every_n_steps=20,
    save_interval_secs=60*60,
    save_summaries_secs=60,
    labels_offset=0,
    matched_thresholds=0.5
    )
# Last setting still breaks up. Use this one instead.
# At 125k steps, test mAP = 0.440
# At this point I am positively sure that this model cannot be trained to a better performance.

# -------------------------------------------------------- #
# Parameters for evaluating model
eval_train = EvaluatorParams(
    checkpoint_path='../experiments/mobilenet_11-12-2017/logs/',
    eval_dir='../experiments/mobilenet_11-12-2017/eval_train',
    use_finetune=False,
    is_training=False,
    eval_train_dataset=True,
    loop=False,
    which_checkpoint='last'
)


eval_test = EvaluatorParams(