def main(unused_argv): assert FLAGS.checkpoint_dir, '`checkpoint_dir` is missing.' assert FLAGS.eval_dir, '`eval_dir` is missing.' if FLAGS.pipeline_config_path: configs = config_util.get_configs_from_pipeline_file( FLAGS.pipeline_config_path) else: configs = config_util.get_configs_from_multiple_files( model_config_path=FLAGS.model_config_path, eval_config_path=FLAGS.eval_config_path, eval_input_config_path=FLAGS.input_config_path) pipeline_proto = config_util.create_pipeline_proto_from_configs(configs) config_text = text_format.MessageToString(pipeline_proto) tf.gfile.MakeDirs(FLAGS.eval_dir) with tf.gfile.Open(os.path.join(FLAGS.eval_dir, 'pipeline.config'), 'wb') as f: f.write(config_text) model_config = configs['model'] lstm_config = configs['lstm_model'] eval_config = configs['eval_config'] input_config = configs['eval_input_config'] if FLAGS.eval_training_data: input_config.external_input_reader.CopyFrom( configs['train_input_config'].external_input_reader) lstm_config.eval_unroll_length = lstm_config.train_unroll_length model_fn = functools.partial( model_builder.build, model_config=model_config, lstm_config=lstm_config, is_training=False) def get_next(config, model_config, lstm_config, unroll_length): return seq_dataset_builder.build(config, model_config, lstm_config, unroll_length) create_input_dict_fn = functools.partial(get_next, input_config, model_config, lstm_config, lstm_config.eval_unroll_length) label_map = label_map_util.load_labelmap(input_config.label_map_path) max_num_classes = max([item.id for item in label_map.item]) categories = label_map_util.convert_label_map_to_categories( label_map, max_num_classes) if FLAGS.run_once: eval_config.max_evals = 1 evaluator.evaluate(create_input_dict_fn, model_fn, eval_config, categories, FLAGS.checkpoint_dir, FLAGS.eval_dir)
def main(unused_argv): assert FLAGS.checkpoint_dir, '`checkpoint_dir` is missing.' assert FLAGS.eval_dir, '`eval_dir` is missing.' if FLAGS.pipeline_config_path: configs = config_util.get_configs_from_pipeline_file( FLAGS.pipeline_config_path) else: configs = config_util.get_configs_from_multiple_files( model_config_path=FLAGS.model_config_path, eval_config_path=FLAGS.eval_config_path, eval_input_config_path=FLAGS.input_config_path) pipeline_proto = config_util.create_pipeline_proto_from_configs(configs) config_text = text_format.MessageToString(pipeline_proto) tf.gfile.MakeDirs(FLAGS.eval_dir) with tf.gfile.Open(os.path.join(FLAGS.eval_dir, 'pipeline.config'), 'wb') as f: f.write(config_text) model_config = configs['model'] lstm_config = configs['lstm_model'] eval_config = configs['eval_config'] input_config = configs['eval_input_config'] if FLAGS.eval_training_data: input_config.external_input_reader.CopyFrom( configs['train_input_config'].external_input_reader) lstm_config.eval_unroll_length = lstm_config.train_unroll_length model_fn = functools.partial( model_builder.build, model_config=model_config, lstm_config=lstm_config, is_training=False) def get_next(config, model_config, lstm_config, unroll_length): return seq_dataset_builder.build(config, model_config, lstm_config, unroll_length) create_input_dict_fn = functools.partial(get_next, input_config, model_config, lstm_config, lstm_config.eval_unroll_length) label_map = label_map_util.load_labelmap(input_config.label_map_path) max_num_classes = max([item.id for item in label_map.item]) categories = label_map_util.convert_label_map_to_categories( label_map, max_num_classes) if FLAGS.run_once: eval_config.max_evals = 1 evaluator.evaluate(create_input_dict_fn, model_fn, eval_config, categories, FLAGS.checkpoint_dir, FLAGS.eval_dir)
def test_create_pipeline_proto_from_configs(self): """Tests that proto can be reconstructed from configs dictionary.""" pipeline_config_path = os.path.join(self.get_temp_dir(), "pipeline.config") pipeline_config = pipeline_pb2.TrainEvalPipelineConfig() pipeline_config.model.ssd.num_classes = 10 pipeline_config.train_config.batch_size = 32 pipeline_config.train_input_reader.label_map_path = "path/to/label_map" pipeline_config.eval_config.num_examples = 20 pipeline_config.eval_input_reader.add().queue_capacity = 100 pipeline_config.Extensions[ internal_pipeline_pb2.lstm_model].train_unroll_length = 5 pipeline_config.Extensions[ internal_pipeline_pb2.lstm_model].eval_unroll_length = 10 _write_config(pipeline_config, pipeline_config_path) configs = config_util.get_configs_from_pipeline_file(pipeline_config_path) pipeline_config_reconstructed = ( config_util.create_pipeline_proto_from_configs(configs)) self.assertEqual(pipeline_config, pipeline_config_reconstructed)