Exemplo n.º 1
0
    def early_stop(self, patience):

        logger = logging.getLogger(__name__)

        #logger.info(dir(self.storage))

        # if 'history' not in dir(self.storage) or 'historys' not in dir(self.storage):
        #     return False

        val_data_name = self.cfg.DATASETS.TEST[0]

        if len(self.cfg.DATASETS.TEST) == 1:
            val_name = 'bbox/AP50'
        else:
            val_name = f'{val_data_name}/bbox/AP50'
        #logger.info(f'==========={val_name}')
        his_dict = self.storage.histories()
        tmp = his_dict.get(val_name).values()
        logger.info(f'Score List@{self.iter}===:{tmp}')

        # Keep only score remove inter sn
        tmp = [item[0] for item in tmp]

        self.best_score = np.max(tmp)
        if tmp[-1] >= np.max(tmp):
            self.checkpointer.save(self.cfg.best_model)

        if np.max(tmp[-patience:]) < np.max(tmp):
            #最大值在不在最后几次评估
            logger.info(f'Early stop with===:{patience}, {tmp}')
            return True
        else:
            return False
Exemplo n.º 2
0
    def train(self, patience=3):
        """
        Args:
            start_iter, max_iter (int): See docs above
        """
        logger = logging.getLogger(__name__)
        logger.info("Starting training from iteration {}".format(
            self.start_iter))

        self.iter = start_iter = self.start_iter
        max_iter = self.max_iter = self.cfg.SOLVER.MAX_ITER

        from detectron2.utils.events import EventStorage
        with EventStorage(start_iter) as self.storage:
            try:
                self.before_train()
                print('start_iter, max_iter', start_iter, max_iter)
                for self.iter in range(start_iter, max_iter):
                    self.before_step()
                    self.run_step()
                    self.after_step()
                    if (self.iter + 1
                        ) % self.cfg.TEST.EVAL_PERIOD == 0 and self.early_stop(
                            patience):
                        break
            finally:
                self.after_train()
Exemplo n.º 3
0
def save_stack_feature(train: pd.DataFrame, test: pd.DataFrame, file_path):
    train.to_hdf(file_path, 'train', mode='a')
    test.to_hdf(file_path, 'test', mode='a')
    logger.info(f'OOF file save to :{file_path}')
    return train, test