哪种预训练模型最适合灾难分类
Which pre-trained model works best for disaster classification
我是深度学习的新手,我想建立一个模型,根据给定的图片预测灾难类型(洪水、火灾、基础设施损坏)。
我想继续进行迁移学习,但我不确定哪种模型会给我最好的结果。
我尝试使用从头开始构建 cnn 模型,但我得到的测试准确度 = 70%,这很低。
型号代码如下:
num_classes=3
model = Sequential()
model.add(Conv2D(64, kernel_size=(3, 3),
activation='relu',
input_shape=(512,512,3)))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])
kf=KFold(n_splits=10 ,shuffle=True)
for train_index, test_index in kf.split(X):
print("Folding")
x_train, x_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
y_train = to_categorical(y_train, num_classes)
y_test = to_categorical(y_test, num_classes)
model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
validation_data=(x_test, y_test))
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
loss.append(score[0])
print('Test accuracy:', score[1])
acc.append(score[1])
PS :X 是一个形状为 (3000,512,512,3) 的 numpy 数组,Y 是一个形状为 (3000,1) 的 numpy 数组,每个 class
我使用了 resnet18 模型的迁移学习,三个模型中的每个模型只有 100 张图像 class,结果准确率为 99%。我认为它应该可以解决你的问题。
我是深度学习的新手,我想建立一个模型,根据给定的图片预测灾难类型(洪水、火灾、基础设施损坏)。 我想继续进行迁移学习,但我不确定哪种模型会给我最好的结果。
我尝试使用从头开始构建 cnn 模型,但我得到的测试准确度 = 70%,这很低。
型号代码如下:
num_classes=3
model = Sequential()
model.add(Conv2D(64, kernel_size=(3, 3),
activation='relu',
input_shape=(512,512,3)))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])
kf=KFold(n_splits=10 ,shuffle=True)
for train_index, test_index in kf.split(X):
print("Folding")
x_train, x_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
y_train = to_categorical(y_train, num_classes)
y_test = to_categorical(y_test, num_classes)
model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
validation_data=(x_test, y_test))
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
loss.append(score[0])
print('Test accuracy:', score[1])
acc.append(score[1])
PS :X 是一个形状为 (3000,512,512,3) 的 numpy 数组,Y 是一个形状为 (3000,1) 的 numpy 数组,每个 class
我使用了 resnet18 模型的迁移学习,三个模型中的每个模型只有 100 张图像 class,结果准确率为 99%。我认为它应该可以解决你的问题。