如何提高相似物体图像分类的准确率和降低过拟合
How to improve accuracy and lowering overfitting on image classification about similar object
我正在对世界各地的 211 类 个相似对象、硬币进行图像分类。我的模型经常出现精度低但过度拟合的问题。有没有什么方法可以改进我的模型,从而在降低过度拟合的同时提高准确性?
Image size : 350x350
normalization_layer = layers.experimental.preprocessing.Rescaling(1./255)
data augmentation : RandomFlip("horizontal") ,
RandomRotation(0.1),RandomZoom(0.1),
layers :
experimental.preprocessing.Rescaling(1./255),
Conv2D(16, 3, padding='same', activation='relu'),
MaxPooling2D(),
Conv2D(32, 3, padding='same', activation='relu'),
MaxPooling2D(),
Conv2D(64, 3, padding='same', activation='relu'),
MaxPooling2D(),
Dropout(0.8),
Flatten(),
Dense(128, activation='relu'),
Dense(num_classes)
model.compile(optimizer='adam',
loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
epochs = 50
至于结果,它在第 10 轮开始过拟合:
loss: 2.8354 - accuracy: 0.3566 - val_loss: 2.8626 - val_accuracy: 0.4017
第 50 个时期:
loss: 1.0284 - accuracy: 0.7201 - val_loss: 2.2794 - val_accuracy: 0.6493
我建议在预训练的 Resnet-50 上使用迁移学习。可调学习防止过度拟合。Refer this.
您可以使用中间 SVM 分类器以获得更好的 performance.See 下图:输入被发送到预训练的 model.We 从网络中较早的某个地方的激活训练 SVM 分类器(我们必须对此进行调整)。
我正在对世界各地的 211 类 个相似对象、硬币进行图像分类。我的模型经常出现精度低但过度拟合的问题。有没有什么方法可以改进我的模型,从而在降低过度拟合的同时提高准确性?
Image size : 350x350
normalization_layer = layers.experimental.preprocessing.Rescaling(1./255)
data augmentation : RandomFlip("horizontal") ,
RandomRotation(0.1),RandomZoom(0.1),
layers :
experimental.preprocessing.Rescaling(1./255),
Conv2D(16, 3, padding='same', activation='relu'),
MaxPooling2D(),
Conv2D(32, 3, padding='same', activation='relu'),
MaxPooling2D(),
Conv2D(64, 3, padding='same', activation='relu'),
MaxPooling2D(),
Dropout(0.8),
Flatten(),
Dense(128, activation='relu'),
Dense(num_classes)
model.compile(optimizer='adam',
loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
epochs = 50
至于结果,它在第 10 轮开始过拟合:
loss: 2.8354 - accuracy: 0.3566 - val_loss: 2.8626 - val_accuracy: 0.4017
第 50 个时期:
loss: 1.0284 - accuracy: 0.7201 - val_loss: 2.2794 - val_accuracy: 0.6493
我建议在预训练的 Resnet-50 上使用迁移学习。可调学习防止过度拟合。Refer this.
您可以使用中间 SVM 分类器以获得更好的 performance.See 下图:输入被发送到预训练的 model.We 从网络中较早的某个地方的激活训练 SVM 分类器(我们必须对此进行调整)。