【问题标题】:What is the effect of image resize and configuration last dense layers on performance of transfer learning (VGG, ResNet) for classification图像调整大小和配置最后一个密集层对迁移学习(VGG,ResNet)分类性能的影响是什么
【发布时间】:2020-07-13 08:57:18
【问题描述】:

我正在尝试使用tf2.0Keras 为项目构建垃圾邮件分类模型。它必须是非常好的模型,我想提高模型的准确性。垃圾邮件图像可以是世界上的任何图像,除了手写问题或thisthis 等问题的图片。我有每个类别的近 300000 张图像,因此我想从随机权重重新训练模型,因为问题图像未包含在 imagenet 数据中并且我有足够的数据。 请建议我是否应该改用imagenet 权重。我想提高我的模型的性能。我有一个类似这样的模型:

res_net = ResNet50(include_top=False,weights=None,input_shape=(224,224,3)) # will try VGG and other models too if needed

av1 = GlobalAveragePooling2D()(res_net.output)

fc1 = Dense(1024,activation='relu')(av1)
fc2 = Dense(512,activation='relu')(fc1)
fc3 = Dense(256,activation='relu')(fc2)
d1 = Dropout(0.5)(fc3)

fc4 = Dense(1,activation='sigmoid')(d1)

model = Model(inputs=res_net.input, outputs= fc4)

问题

我的图像是问题图像,并且在大多数情况下宽度大于高度,所以我是否将所有图像的大小调整为 (224,224) 或整个数据集中的 min(width or height) (但这会抑制较大图像的细节) ?

我知道密集层的使用取决于我,但由于明显的时间、内存和功率限制,我不能使用 unitsnumber of layers 的所有可能组合。所以如果我使用很多密集层/单元,我会不会过度拟合我的模型,因为这些巨大的架构中已经有很多层了?

我应该使用 3 个频道还是 1 个频道?问题图像大多是黑色的,背景是白色的,这样可以加快训练速度,但 3 通道可以有更好的结果 IMO??

【问题讨论】:

    标签: tensorflow keras deep-learning neural-network conv-neural-network


    【解决方案1】:

    如果您正在创建自定义架构,您可以根据需要拥有任何维度。但是对于已经建成的架构,图像尺寸是固定的。在 Keras 中,您可以通过Keras application link 访问每个模型以检查所需的尺寸。

    密集层由您决定。如果您选择更大的神经元数量,则该模型可能不适合您的 GPU。或者如果你选择的神经元数量太少,学习就不会很准确。但是,如果您使用的是已构建的模型,则可以使用两三个全连接层。

    如果您使用来自 imagenet 的预训练权重,您应该选择 3 个通道,否则,可以使用一个。但我会说去三个并利用迁移学习。虽然你有很多数据,但仍然使用 imagenet 权重是好的。进行迁移学习,重新训练它们,而不是微调。

    【讨论】:

      猜你喜欢
      • 2019-03-31
      • 2018-08-04
      • 2021-07-31
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      • 2020-03-23
      相关资源
      最近更新 更多