如何将年龄和性别数据添加到卷积神经网络的图像中?

我目前正在通过 Keras CNN 对黑色素瘤图像进行分类。图像带有元数据——年龄、性别和病变位置。


现在我只是使用图像,结果还可以,但我想看看如果我将元数据添加到模型会发生什么。


如何将年龄、性别等数据添加到图像中?


这是导出的数据框的屏幕截图 - 红色是我用于 CNN 的内容,我想添加绿色部分:

http://img1.mukewang.com/61c7d62400014db409940567.jpg

如果有这样做的标准方法,如果您能分享它,我将非常感激。谢谢


我试过谷歌“向 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()])



杨魅力
浏览 311回答 1
1回答

繁星点点滴滴

您所描述的实际上是一个多输入模型。在这种情况下,您可以考虑让图像输入 CNN,元数据输入全连接网络,然后合并这两个子网络的输出以获得您的预测。查看关于它的 Keras 文档:https : //keras.io/guides/functional_api/#models-with-multiple-inputs-and-outputs
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python