这是过度拟合的情况吗? CNN图像分类器

时间:2019-11-23 12:12:52

标签: python tensorflow machine-learning image-processing computer-vision

请问我,如果这个问题被认为是题外之意,或者通常只是一个不好的问题,我通常对Computer Vision和CNN都是陌生的。

我总共有3440张图像,共10个课。

每行每列

85张图像:

85 images per column of each row

因为我的数据集中只有3440张图像,所以我使用数据增强将数据集增加到34400张图像。 (每张图片放大10次)

aug = ImageDataGenerator( 
       rescale = 1./255,
       rotation_range = 20, 
       width_shift_range = 0.10,
       height_shift_range = 0.10,
       zoom_range= 0.05
       )

这是我用于两个实例的模型。 (一旦增加,一次就没有)

model = Sequential() 

model.add(Conv2D(32, (3,3), input_shape = (50, 50, 3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(64, (3, 3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(64, (3, 3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))

# 2 hidden layers
model.add(Flatten())
model.add(Dense(128))
model.add(Activation("relu"))

model.add(Dense(128))
model.add(Activation("relu"))

# The output layer with 10 neurons, for 10 classes
model.add(Dense(10))
model.add(Activation("softmax"))

# Compiling the model using some basic parameters
model.compile(loss="sparse_categorical_crossentropy"
              ,optimizer="adam"
              ,metrics=["accuracy"])

我能够将我的准确度从〜90%(不增加)提高到〜97%(不增加),但是训练准确度和验证准确度之间的差异仍然相似。

具有数据增强功能的图形:

Graph with data augmentation

我读到,非融合的训练和验证准确性/损失相差很大,这是过度拟合的迹象。

我的CNN模型是否属于这种情况?我还能做些什么来改善我的模型?

完整代码可以在我的github上找到

https://github.com/jwngo/SimpleImageClassifier

谢谢大家,感谢您的宝贵时间。

编辑: 对于扩充数据集,训练集为29355张图像,验证集为7331张图像。准确性之间的差异为0.9972(培训)与0.9750(验证),损失的差异为0.0102(培训)与0.1245(验证)

验证图像也得到了增强,我将更改为仅使用非增强图像。

1 个答案:

答案 0 :(得分:0)

您可以使用一些正则化(https://www.analyticsvidhya.com/blog/2018/04/fundamentals-deep-learning-regularization-techniques/),例如退出。培训和验证准确性之间有什么区别?验证集有多大?