test(logger)

    # load raw predictions saved by predictor during testing, run aggregation algorithms and evaluation.
    elif args.mode == 'analysis':
        cf = utils.prep_exp(args.exp_source,
                            args.exp_dir,
                            args.server_env,
                            is_training=False,
                            use_stored_settings=True)
        logger = utils.get_logger(cf.exp_dir)

        if cf.hold_out_test_set:
            cf.folds = args.folds
            predictor = Predictor(cf, net=None, logger=logger, mode='analysis')
            results_list = predictor.load_saved_predictions(apply_wbc=True)
            utils.create_csv_output(cf, logger, results_list)

        else:
            if folds is None:
                folds = range(cf.n_cv_splits)
            for fold in folds:
                cf.fold_dir = os.path.join(cf.exp_dir, 'fold_{}'.format(fold))
                cf.fold = fold
                predictor = Predictor(cf,
                                      net=None,
                                      logger=logger,
                                      mode='analysis')
                results_list = predictor.load_saved_predictions(apply_wbc=True)
                logger.info('starting evaluation...')
                evaluator = Evaluator(cf, logger, mode='test')
                evaluator.evaluate_predictions(results_list)
            test(logger)

    # load raw predictions saved by predictor during testing, run aggregation algorithms and evaluation.
    elif args.mode == 'analysis':
        cf = utils.prep_exp(args.exp_source,
                            args.exp_dir,
                            args.server_env,
                            is_training=False,
                            use_stored_settings=True)
        logger = utils.get_logger(cf.exp_dir)

        if cf.hold_out_test_set:
            cf.folds = args.folds
            predictor = Predictor(cf, net=None, logger=logger, mode='analysis')
            results_list = predictor.load_saved_predictions(apply_wbc=True)
            utils.create_csv_output(results_list, cf, logger)

        else:
            if folds is None:
                folds = range(cf.n_cv_splits)
            for fold in folds:
                cf.fold_dir = os.path.join(cf.exp_dir, 'fold_{}'.format(fold))
                cf.fold = fold
                predictor = Predictor(cf,
                                      net=None,
                                      logger=logger,
                                      mode='analysis')
                results_list = predictor.load_saved_predictions(apply_wbc=True)
                logger.info('starting evaluation...')
                evaluator = Evaluator(cf, logger, mode='test')
                evaluator.evaluate_predictions(results_list)
Exemple #3
0
        cf = utils.prep_exp(args.exp_source,
                            args.exp_dir,
                            args.server_env,
                            is_training=False,
                            use_stored_settings=True)
        logger = utils.get_logger(cf.exp_dir, cf.server_env)

        if args.dev:
            cf.test_n_epochs = 2

        if cf.hold_out_test_set and cf.ensemble_folds:
            # create and save (unevaluated) predictions across all folds
            predictor = Predictor(cf, net=None, logger=logger, mode='analysis')
            results_list = predictor.load_saved_predictions(apply_wbc=True)
            utils.create_csv_output([(res_dict["boxes"], pid)
                                     for res_dict, pid in results_list], cf,
                                    logger)
            logger.info('starting evaluation...')
            cf.fold = 'overall_hold_out'
            evaluator = Evaluator(cf, logger, mode='test')
            evaluator.evaluate_predictions(results_list)
            evaluator.score_test_df()

        else:
            fold_dirs = sorted([
                os.path.join(cf.exp_dir, f) for f in os.listdir(cf.exp_dir)
                if os.path.isdir(os.path.join(cf.exp_dir, f))
                and f.startswith("fold")
            ])
            if folds is None:
                folds = range(cf.n_cv_splits)