Какая предварительно обученная модель лучше всего подходит для классификации бедствий - PullRequest
0 голосов
/ 18 февраля 2019

Я новичок в области глубокого обучения, я хочу построить модель, которая предсказывает тип бедствия (наводнение, пожар, ущерб инфраструктуре) на основе данной картины.Я хочу продолжить трансферное обучение, и я не уверен, какая модель дала бы мне лучший результат.

Я пытался использовать построение модели 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), а Y - массив пустышек с формой (3000,1)со значениями {0,1,2} для каждого класса

1 Ответ

0 голосов
/ 18 февраля 2019

Я использовал трансферное обучение с моделью resnet18 только с 100 изображениями в каждом из трех классов, что привело к точности 99%. Я думаю, что это должно решить вашу проблему.

...