增强验证准确性下降后?

数据挖掘 喀拉斯 图像分类 数据增强 图像预处理
2022-03-13 22:47:31

我的主要问题是关于增强。
如果我处理增强,我相信它总是比更少的数据更好,
但在我的情况下,验证准确性会下降

训练:7000 张图片,验证:3000 张图片:验证准确度:0.89

训练:40000 张图片,验证:17990 张图片:验证准确度:0.85

我的扩充代码

def data_augmentation_folder(trainImagesPath,saveDir):
    #X_train=load_training_data(trainImagesPath,"train")
    print("=====================================================")

    X_train = cleanData(trainImagesPath)
    X_train = np.array(X_train)
    print(X_train[0].shape)



    for i in range(5):

        #print(i)

        datagen = ImageDataGenerator(rotation_range=15,
                       width_shift_range=0.1,
                       height_shift_range=0.1,
                       shear_range=0.01,
                       zoom_range=[0.9, 1.25],
                       horizontal_flip=True,
                       vertical_flip=False,
                       fill_mode='reflect',
                       data_format='channels_last',
                       brightness_range=[0.5, 1.5])


        if i==1:
            datagen = ImageDataGenerator(
                       featurewise_center=True,
                                     featurewise_std_normalization=True,
                                     rotation_range=90,
                                     width_shift_range=0.1,
                                     height_shift_range=0.1,
                                     #zoom_range=0.2
            )
        if i==2:
            datagen = ImageDataGenerator(
                   featurewise_center=True,
                                 featurewise_std_normalization=True,
                                 rotation_range=100,
                                 width_shift_range=0.1,
                                 height_shift_range=0.1,
                                 #zoom_range=0.2
            )
        elif i==3:
            datagen = ImageDataGenerator(
                    rescale=1./255,
                    shear_range=0.2,
                    zoom_range=0.2,
                    horizontal_flip=True)
        elif i==4:
             datagen = ImageDataGenerator(
                    rescale=1./255,
                    shear_range=0.1,
                    rotation_range=80,
                    zoom_range=0.1,
                    horizontal_flip=True,
                    brightness_range=[0.5,1.5])




        datagen.fit(X_train)


        for x, y in datagen.flow(X_train, np.arange(X_train.shape[0]),shuffle=True, save_to_dir=saveDir,save_format='jpg',save_prefix='aug'):
            #print(y)
            assert x.shape[1:] == X_train.shape[1:]
            break

问题

  1. 在这种情况下,即使我进行了扩充,验证也会下降?

  2. 当您进行增强时,您需要担心什么?

2个回答

如果验证数据集根本不同,则无法比较验证准确度

您最初所做的是在一组有限的图像上验证您的模型。应用增强以使您的数据集更能代表您的部署环境。

如果在您的部署环境中,您希望从与增强数据集相同的子空间中提取图像,则第一种情况的验证准确性将不能真正代表您的模型的真实世界性能。

...在我的情况下,验证准确性下降

这很正常,因为您没有进行“苹果对苹果”的比较。该模型的实际性能可能会上升或保持不变,但您无法直接看到它,因为您为每个模型使用了不同的验证集。在增强数据集上训练的模型可以更好地对原始图像进行分类,并且在增强图像上做得更好,并且由于增强图像的数量以几乎 6 比 1 的比率超过原始图像,因此整体准确性会受到影响。

通常,您的验证集不应进行任何扩充,以使其忠实地反映“真实世界”数据的样子,并使验证指标有意义。当您弄乱您的验证集时,也很难在模型和基准之间进行比较。