我是深度学习的初学者,正在使用迁移学习进行道路裂缝检测。我正在研究具有两个类的二进制分类,裂纹和无裂纹。
我的两个类的分布如下:
裂缝 - 600 张图片
无裂缝 - 480 张图片
我也使用了数据增强:
train_generator = train_datagen.flow(trainX, trainY, batch_size=16)
val_generator = test_datagen.flow(testX, testY, batch_size= 16)
我正在使用 VGG16,我已经像这样冻结了较低的 4 层:
vgg = vgg16.VGG16(include_top=False, weights='imagenet',
input_shape=input_shape)
output = vgg.layers[-1].output
output = keras.layers.Flatten()(output)
vgg_model = Model(vgg.input, output)
for layer in vgg_model.layers[:4]:
layer.trainable = False
之后,我添加了两个隐藏层:
model = Sequential()
model.add(vgg_model)
model.add(Dense(256, activation='relu', input_dim=input_shape))
model.add(Dense(256, activation='relu'))
model.add(Dense(2, activation='softmax'))
model.compile(loss='binary_crossentropy',
optimizer=Adam(lr = 1e-6),
metrics=['accuracy'])
但是在 1-2 个 epoch 之后,似乎什么都没有改变,验证准确性和损失都没有。我也尝试使用 SGD 优化器,但这也无济于事。我还添加了更多层,但对准确率和损失没有任何影响。达到的最大验证准确率为 62%。
我尝试从我的数据集中测试图像,因为该模型也给出了错误的预测。对于它预测为裂纹的每个测试图像,即标签 1。
有人可以建议我如何改善这一点吗?谢谢!