我有一个关于在Keras中使用数据增强进行特征提取的问题 . 我正在 Build 一个狗品种分类器 .

通过特征提取,我指的是通过在顶部添加密集层来扩展模型(conv_base,VGG16),并在输入数据上端到端地运行整个事物 . 这将允许我使用数据增强,因为每次输入图像都会在模型看到时通过卷积基础 .

训练集:6680张图片属于133个 class

验证集:属于133个类的835个图像

测试集:属于133个类的836个图像

我能够成功地相互独立地实现数据增强和特征提取,但是当我尝试组合2时,由于某种原因,我的准确性非常小 . 为什么是这样?我做了一些与我的方法有关的重大错误吗?

from keras.applications import VGG16

from keras.preprocessing.image import ImageDataGenerator

conv_base = VGG16(weights='imagenet',
                  include_top=False,
                  input_shape=(224, 224, 3))

model = Sequential()

model.add(conv_base)

conv_base.trainable = False

model.add(GlobalAveragePooling2D())

model.add(Dense(133, activation='softmax'))

model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])

train_datagen_aug = ImageDataGenerator(
    rescale=1./255,
    rotation_range=40,
    width_shift_range=0.2,
    height_shift_range=0.2,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,)

test_datagen_aug = ImageDataGenerator(rescale=1./255)

train_generator_aug = train_datagen_aug.flow_from_directory(
    'myImages/train',
    target_size=(224, 224),
    batch_size=50,
    class_mode='categorical')

validation_generator_aug = test_datagen_aug.flow_from_directory(
        'myImages/valid',
        target_size=(224, 224),
        batch_size=32,
        class_mode='categorical')

checkpointer_aug = ModelCheckpoint(filepath='saved_models/dogs_transfer_aug_model.h5', 
                            save_best_only=True)

history = model.fit_generator(
      train_generator_aug,
      steps_per_epoch=130,
      epochs=20,
      validation_data=validation_generator_aug,
      verbose=1,
      callbacks=[checkpointer_aug],
      validation_steps=26)

输出如下:

Epoch 1/20
130/130 [==============================] - 293s - loss: 15.9044 - acc: 0.0083 - val_loss: 16.0019 - val_acc: 0.0072
Epoch 2/20
130/130 [==============================] - 281s - loss: 15.9972 - acc: 0.0075 - val_loss: 15.9977 - val_acc: 0.0075
Epoch 3/20
130/130 [==============================] - 280s - loss: 16.0220 - acc: 0.0060 - val_loss: 15.9977 - val_acc: 0.0075
Epoch 4/20
130/130 [==============================] - 280s - loss: 15.9941 - acc: 0.0077 - val_loss: 16.0019 - val_acc: 0.0072