喀拉拉邦人脸识别

时间:2018-11-27 13:21:59

标签: python machine-learning keras

下面是我的面部识别模型。在训练我的训练数据时,我遇到了几个问题。我的数据集包含我的图像。当我训练它时,验证准确性是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')

1 个答案:

答案 0 :(得分:0)

正在使用的数据集有多大?如果模型不能很好地概括,则可能是一个小的数据集,或者是您的模型体系结构。另外,您可能会使用ImageDataGenerator查看图像增强功能,请参阅我稍后将链接到的博客文章。

如果该项目的目的是在不明确了解CNN及其不同层如何工作的情况下获得尽可能高的准确性,那么我建议以下几点。在处理图像时,您可能不想重新发明轮子。继续并使用预训练的卷积神经网络,然后在图像上对其进行训练。与未经训练的网络相比,这将使您以更少的时间段获得更高的准确性。您可以在Keras Cats vs dogs上找到很棒的博客文章。 现在,本教程是猫与狗。但是您可以(几乎取决于输入的图像)使用完全相同的代码来解决问题。