用于 keras 中可变大小图像的全卷积自动编码器

Posted

技术标签:

【中文标题】用于 keras 中可变大小图像的全卷积自动编码器【英文标题】:Fully convolutional autoencoder for variable-sized images in keras 【发布时间】:2016-12-22 16:45:37 【问题描述】:

我想构建一个卷积自动编码器,其中输入的大小不是恒定的。我这样做是通过堆叠 conv-pool 层直到到达编码层,然后使用 upsample-conv 层进行相反的操作。问题是,无论我使用什么设置,我都无法在输出层中获得与输入层完全相同的大小。原因是 UpSampling 层(假设为 (2,2) 大小)使输入大小加倍,因此我无法获得奇数维度。有没有办法将给定层的输出维度与单个样本的前一层的输入维度联系起来(正如我所说,变量中最大池层的输入大小)?

【问题讨论】:

【参考方案1】:

是的,有。

你可以使用三种方法

Padding Resizing Crop or Pad

填充只会增加尺寸。不利于减小尺寸。

调整大小的成本应该更高,但对于每种情况(上采样或下采样)都是最佳解决方案。它将保留该范围内的所有值,并简单地对它们进行重新采样以在给定维度中调整大小。

Crop 或 Pad 将与 resize 一样工作,并且计算效率更高,因为此方法中没有插值。但是,如果要将其调整为较小的尺寸,它将从边缘裁剪。

通过使用这 3 个,您可以安排图层的尺寸。

【讨论】:

以上是关于用于 keras 中可变大小图像的全卷积自动编码器的主要内容,如果未能解决你的问题,请参考以下文章

用于语义分割的全卷积神经网络

Tensorflow 可变图像输入大小(自动编码器,放大...)

如何在 keras 中提供可变大小的图像作为输入

在密集的 Keras 层中绑定自动编码器权重

是否可以在 Keras 中将 image_dataset_from_directory() 与卷积自动编码器一起使用?

keras中卷积的两种padding方式