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

Python 使用自动编码器的图像彩色化-最大压缩点,python,tensorflow,keras,autoencoder,Python,Tensorflow,Keras,Autoencoder,我正在为自动编码器建立一个模型。我在实验室颜色空间中有一个图像数据集(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))

我正在为自动编码器建立一个模型。我在实验室颜色空间中有一个图像数据集(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()

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

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

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

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

  • 将激活更改为
    elu
    LeakyReLU
    等,不会消除负值,尤其是因为输出也需要负值

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

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

  • 最好使用
    Conv2D
    层作为最后一层,以补偿上采样时的伪影

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