下面是我的面部识别模型。在训练我的训练数据时,我遇到了几个问题。我的数据集包含我的图像。当我训练它时,验证准确性是100%。而且它的预测是错误的。我该怎么办才能解决这个问题?
from keras import layers
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32,(3,3),activation='relu',
input_shape = (150,150,3)))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Dropout(0.5))
model.add(layers.Conv2D(64,(3,3),activation='relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(128,(3,3),activation='relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Dropout(0.5))
model.add(layers.Conv2D(128,(3,3),activation='relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Flatten())
model.add(layers.Dense(512,activation='relu'))
model.add(layers.Dense(1,activation='sigmoid'))
print(model.summary())
from keras import optimizers
model.compile(loss='binary_crossentropy',
optimizer=optimizers.RMSprop(lr=1e-4),
metrics=['acc'])
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale=1./255)
val_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size = (150,150),
batch_size=20)
validation_generator = val_datagen.flow_from_directory(
validation_dir,
target_size = (150,150),
batch_size=20)
history = model.fit_generator(
train_generator,
steps_per_epoch = 100,
epochs = 3,
validation_data = validation_generator,
validation_steps = 50)
model.save('/home/monojit/Desktop/me3.h5')
答案 0 :(得分:0)
正在使用的数据集有多大?如果模型不能很好地概括,则可能是一个小的数据集,或者是您的模型体系结构。另外,您可能会使用ImageDataGenerator
查看图像增强功能,请参阅我稍后将链接到的博客文章。
如果该项目的目的是在不明确了解CNN及其不同层如何工作的情况下获得尽可能高的准确性,那么我建议以下几点。在处理图像时,您可能不想重新发明轮子。继续并使用预训练的卷积神经网络,然后在图像上对其进行训练。与未经训练的网络相比,这将使您以更少的时间段获得更高的准确性。您可以在Keras Cats vs dogs上找到很棒的博客文章。 现在,本教程是猫与狗。但是您可以(几乎取决于输入的图像)使用完全相同的代码来解决问题。