繁体   English   中英

具有动态输入形状的 CNN

[英]CNN with a dynamic input shape

大家好!

由于我正在尝试制作一个将灰度图像转换为 rgb 图像的完全卷积神经网络,我想知道我是否可以在不同大小的图像(不同像素和比率)上训练和测试模型。 通常你只会下采样或上采样,这是我不想做的。 我听说如果我使用完全卷积神经网络可能是可能的,但我仍然不知道代码会是什么样子。 你能帮我一些代码吗?

为什么这是个问题?

就像我说的,输入图像不应该被下采样,因为我没有对任何东西进行分类。 我想生成一个与输入图像大小相同的新图像。 所以应该不会有任何损失。

固定输入形状的代码:

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
...

图片大小为 28*28px

我认为它可能如何工作:

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(None, None, 1)))
model.add(layers.MaxPooling2D((2, 2)))
...

具有不同尺寸的图像

  • 图片 1 = 256*300
  • 图片2 = 1024*800
  • 图片 3 = 500*400

是一个将灰度图像转换为 rgb 图像的自动编码器示例,但是这个具有固定的输入形状。

在此处输入图像描述

*我使用的是 TF 2.0 Alpha

我发现,卷积神经网络根本不关心输入形状。 它关心的是内核大小、步幅和填充。 例如设置 kernel size = 3, stride = 1, padding = 1 不会改变张量的形状。 说到pooling,一定要保证,加了padding = 1,这叫half/same paddinghttp://deeplearning.net/software/theano/tutorial/conv_arithmetic.html )。 因此,可以制作一个能够处理不同尺寸图像的全卷积自编码器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM