图像大小调整和最后密集层的配置对用于分类的迁移学习(VGG,ResNet)的性能有什么影响



我正在尝试为一个项目使用tf2.0Keras来构建垃圾邮件分类模型。它必须是非常好的模型,我想提高模型的准确性。垃圾邮件图片可以是世界上的任何图片,除了手写的问题或类似这样或这样的问题的图片。我有每个类别的近300000张图像,所以我想从随机权重中重新训练模型,因为问题图像没有包括在图像网数据中,我有足够的数据请建议我是否应该使用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)

数量

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

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

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

如果您正在创建一个自定义体系结构,您可以随心所欲地拥有任何维度。但对于已经建成的建筑来说,图像维度是固定的。在Keras中,您可以从Keras应用程序链接访问每个模型,以检查所需的尺寸。

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

如果使用来自imagenet的预训练权重,则应选择3个通道,否则,可以使用一个通道。但我想说的是,选择三个,充分利用迁移学习。尽管你有很多数据,但仍然使用图像网权重是很好的。进行迁移学习,再次对他们进行再培训,而不是微调。

最新更新