Exemple #1
0
    def on_epoch_end(self, epoch, logs={}):
        BatchSize = 64
        INPUT_SHAPE = (224, 224, 3)
        annotation = r'H:\Qiulin\ODIR\ODIR_dataset\ODIR-5K_training-Chinese_modified_v1.xlsx'
        ODIR_valDir = r'H:\Qiulin\ODIR\ODIR_dataset\ODIR-5K_training_cvt\v3_val_aug_equ_c'
        val_gen = data_generator(annotation,
                                 ODIR_valDir,
                                 BatchSize,
                                 INPUT_SHAPE,
                                 mode='valid')

        x_val, y_val = next(val_gen.get_mini_batch())
        predict = self.model.predict_on_batch(x_val)
        steps = val_gen.num_of_images // val_gen.batch_size  #有多少个steps
        for i in range(steps):
            if i == 0:
                continue
            datas, labels = next(val_gen.get_mini_batch())
            pre = self.model.predict_on_batch(datas)
            predict = np.vstack((predict, pre))
            y_val = np.vstack((y_val, labels))

        th = 0.5
        gt = y_val.flatten()
        pr = predict.flatten()
        kappa = metrics.cohen_kappa_score(gt, pr > th)
        f1 = metrics.f1_score(gt, pr > th, average='micro')
        auc = metrics.roc_auc_score(gt, pr)
        final_score = (kappa + f1 + auc) / 3.0
        print('val_kappa:      %.3f' % kappa)
        print('val_f1   :      %.3f' % f1)
        print('val_auc  :      %.3f' % auc)
        print('val_final_score:%.3f' % final_score)
        logs['final_score'] = final_score
Exemple #2
0
from keras.callbacks import ModelCheckpoint, ReduceLROnPlateau

os.environ["CUDA_VISIBLE_DEVICES"] = "0"
os.environ["TF_CPP_MIN_LOG_LEVEL"] = '2'  #只显示warning 和 error

if __name__ == '__main__':
    BatchSize = 32
    epochs = 20
    INPUT_SHAPE = (224, 224, 3)
    model_savePath = r'H:\Qiulin\ODIR\model\v6\vgg16_bv_v1.h5'
    annotation = r'H:\Qiulin\ODIR\ODIR_dataset\ODIR-5K_training-Chinese_modified_v1.xlsx'
    ODIR_trainDir = r'H:\Qiulin\ODIR\ODIR_dataset\ODIR-5K_training_cvt\v3_train_aug_bv'
    '''generator'''
    train_gen = data_generator(annotation,
                               ODIR_trainDir,
                               BatchSize,
                               INPUT_SHAPE,
                               mode='train')
    '''training'''
    model = get_VGG16(INPUT_SHAPE)

    #定义callback需要做的事情
    cb = [
        Roc_Callback(),  # include it before EarlyStopping!
        # EarlyStopping(monitor='final_score', patience=10, verbose=2, mode='max')
        ModelCheckpoint(model_savePath,
                        monitor='final_score',
                        verbose=1,
                        save_best_only=True,
                        mode='max'),
        ReduceLROnPlateau(monitor='final_score',