哪种预训练模型最适合灾害分类

我刚开始学习深度学习,想构建一个模型,通过给定的图片预测灾害类型(洪水、火灾、基础设施损坏)。我想使用迁移学习,但不确定哪个模型能给我带来最佳结果。

我尝试从头开始构建一个CNN模型,但测试准确率只有70%,这个结果偏低。

模型代码如下:

num_classes=3model = 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])

附注:X是一个形状为(3000,512,512,3)的numpy数组,Y是一个形状为(3000,1)的numpy数组,每个类别的值为{0,1,2}


回答:

我使用了ResNet18模型进行迁移学习,每个类别使用了100张图片,结果准确率达到了99%。我认为这应该能解决你的问题。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注