#python #image-processing #keras #conv-neural-network
#python #обработка изображений #keras #conv-neural-network
Вопрос:
В настоящее время я работаю над классификацией изображений меланомы через Keras CNN. Изображения поставляются с метаданными — возраст, пол и местоположение поражения.
Сейчас я просто использую изображения, и результаты в порядке, но я хотел бы посмотреть, что произойдет, если я добавлю метаданные в модель.
Как именно я могу добавить данные о возрасте, поле и т.д. к изображениям?
Вот скриншот экспортированного фрейма данных — красным цветом то, что я использую для CNN, и я хотел бы добавить зеленый раздел:
Если есть стандартный метод для этого, я был бы очень признателен, если бы вы могли поделиться им. Спасибо
Я пытался в Google «добавить демографические данные в CNN» или «добавить пол в CNN» и т.д. И не могу найти никакой информации.
Моя текущая структура модели:
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(BatchNormalization())
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(BatchNormalization())
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape))
model.add(BatchNormalization())
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape))
model.add(BatchNormalization())
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu'))
model.add(BatchNormalization())
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(BatchNormalization())
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(BatchNormalization())
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(num_classes, activation='sigmoid'))
adam = Adam(lr=0.001)
model.compile(loss='binary_crossentropy',
optimizer=adam,
metrics=[km.binary_precision(), km.binary_recall(),km.binary_f1_score()])
Ответ №1:
То, что вы описываете, на самом деле является моделью с несколькими входами. В этом случае вы могли бы рассмотреть возможность подачи изображения в CNN и метаданных в полностью подключенные сети, а затем объединить выходные данные этих двух подсетей, чтобы получить свой прогноз.
Ознакомьтесь с документом Keras об этом:https://keras.io/guides/functional_api/#models-with-multiple-inputs-and-outputs