def test_sub_dataset(self): with make_temp_directory("detectron2go_tmp_dataset") as tmp_dir: image_dir, json_file = create_test_images_and_dataset_json(tmp_dir) runner = Detectron2GoRunner() cfg = runner.get_default_cfg() cfg.merge_from_list( [ str(x) for x in [ "D2GO_DATA.DATASETS.COCO_INJECTION.NAMES", ["inj_ds"], "D2GO_DATA.DATASETS.COCO_INJECTION.IM_DIRS", [image_dir], "D2GO_DATA.DATASETS.COCO_INJECTION.JSON_FILES", [json_file], "DATASETS.TEST", ("inj_ds",), "D2GO_DATA.TEST.MAX_IMAGES", 1, ] ] ) runner.register(cfg) with maybe_subsample_n_images(cfg) as new_cfg: test_loader = runner.build_detection_test_loader( new_cfg, new_cfg.DATASETS.TEST[0] ) self.assertEqual(len(test_loader), 1)
def do_test(self, cfg, model, train_iter=None): """do_test does not load the weights of the model. If you want to use it outside the regular training routine, you will have to load the weights through a checkpointer. """ results = OrderedDict() with maybe_subsample_n_images(cfg) as new_cfg: # default model cur_results = self._do_test(new_cfg, model, train_iter=train_iter, model_tag="default") results.update(cur_results) # model with ema weights if cfg.MODEL_EMA.ENABLED and not isinstance( model, PredictorWrapper): logger.info("Run evaluation with EMA.") with model_ema.apply_model_ema_and_restore(model): cur_results = self._do_test(new_cfg, model, train_iter=train_iter, model_tag="ema") results.update(cur_results) return results
def do_test(self, cfg, model, train_iter=None): results = OrderedDict() with maybe_subsample_n_images(cfg) as new_cfg: # default model cur_results = self._do_test( new_cfg, model, train_iter=train_iter, model_tag="default" ) results.update(cur_results) # model with ema weights if cfg.MODEL_EMA.ENABLED: logger.info("Run evaluation with EMA.") with model_ema.apply_model_ema_and_restore(model): cur_results = self._do_test( new_cfg, model, train_iter=train_iter, model_tag="ema" ) results.update(cur_results) return results