使用自动编码器最大压缩点的图像彩色化

2024-05-21 08:48:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为自动编码器建立一个模型。我在实验室颜色空间中有一个图像数据集(256x256)

但我不知道,什么是正确的最大压缩点。我发现了一个例子,当我有176 x 176 x 1(~30976),那么点是22 x 22 x 512(~247808)

但这是如何计算的呢

我的模型:

model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', padding='same', input_shape=(256, 256, 1)))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(64, (3, 3), activation='relu', padding='same'))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(128, (3,3), activation='relu', padding='same'))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(256, (3,3), activation='relu', padding='same'))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(512, (3,3), activation='relu', padding='same'))

#Decoder
model.add(Conv2D(256, (3,3), activation='relu', padding='same'))
model.add(UpSampling2D((2, 2)))
model.add(Conv2D(128, (3,3), activation='relu', padding='same'))
model.add(UpSampling2D((2, 2)))
model.add(Conv2D(64, (3,3), activation='relu', padding='same'))
model.add(UpSampling2D((2, 2)))
model.add(Conv2D(2, (3, 3), activation='tanh', padding='same'))
model.add(UpSampling2D((2, 2)))
model.compile(optimizer='adam', loss='mse' , metrics=['accuracy'])
model.summary()

Tags: 模型图像addmodel颜色空间编码器activation
1条回答
网友
1楼 · 发布于 2024-05-21 08:48:19

计算出网络的这些方面比数学更具艺术性。因此,如果不正确地分析数据,我们就无法定义一个恒定的压缩点,这就是为什么首先使用神经网络的原因

然而,我们可以直观地思考每一层发生了什么。例如,在图像着色问题中,最好不要使用太多的池层,因为这样会丢弃大量信息。大小为2x2、跨步为2的最大池层丢弃75%的输入数据。这在分类中非常有用,可以消除不可能的类。类似地,ReLU丢弃所有负面数据,可能不是解决当前问题的最佳函数选择

以下是一些可能有助于解决您具体问题的提示:

  1. 减少池层的数量。在合并之前,尝试增加可训练层的数量,以便模型(直观地)学会聚合重要信息以避免合并

  2. 将激活更改为eluLeakyReLU或诸如此类,这不会消除负值,特别是因为输出也需要负值

  3. 也许可以尝试双线性或双三次上采样来保持结构?我还建议看一下所谓的“神奇”内核here。就我个人而言,我用它取得了很好的效果,尽管高效地实施它需要时间

  4. 如果您有足够的GPU空间,请增加通道数。这个特殊的点没有太多的考虑,除非在某些情况下过度拟合。

  5. 优选地,使用Conv2D层作为最终层来补偿上采样时的伪影

请记住,这些要点适用于一般用例。研究论文中的模型是另一种情况,并不像您的体系结构那么简单。所有这些要点可能适用于也可能不适用于特定的纸张

相关问题 更多 >