Pytorch CNN的输出应该是图像
我对深度学习非常陌生,所以我有一个问题: 假设输入的灰度图像形状为(128128,1)。目标(输出)也是(128128,1)大小的图像,例如用于分割、深度预测等。。通常使用有效的填充,图像的大小会在几个卷积层后缩小 什么是合适的(可能不是最难的)变体来保持大小或预测相同大小的图像?是通过相同的填充物吗?是通过变换卷积还是上采样?我是否应该在末尾使用FCN并将其重塑为图像大小?我在用火把。我很乐意得到任何提示,因为我在网上没有找到太多Pytorch CNN的输出应该是图像,pytorch,Pytorch,我对深度学习非常陌生,所以我有一个问题: 假设输入的灰度图像形状为(128128,1)。目标(输出)也是(128128,1)大小的图像,例如用于分割、深度预测等。。通常使用有效的填充,图像的大小会在几个卷积层后缩小 什么是合适的(可能不是最难的)变体来保持大小或预测相同大小的图像?是通过相同的填充物吗?是通过变换卷积还是上采样?我是否应该在末尾使用FCN并将其重塑为图像大小?我在用火把。我很乐意得到任何提示,因为我在网上没有找到太多 最佳TLDR您希望查看(卷积转置),它有助于使用卷积运算重新生
最佳TLDR您希望查看(卷积转置),它有助于使用卷积运算重新生成图像。您希望构建一个编码器-解码器卷积体系结构,该体系结构使用卷积将图像压缩为潜在表示,然后从该压缩表示中解码图像。对于图像分割,一种流行的体系结构是
U-net
注意:我无法回答pytorch的问题,因此我将与他共享Tensorflow等价物。请忽略代码,但由于您正在寻找概念,我可以帮助您解决此问题 您正试图生成一个图像作为网络的输出 一系列卷积运算有助于对图像进行
下采样。由于您需要一个输出2D矩阵(灰度图像),因此还需要Upsample
。这种网络称为Deconv网络
第一系列的层卷积在输入上,将它们“展平”为通道向量。下一组层使用2D Conv Transpose
或Deconv
操作将通道更改回2D矩阵(灰度图像)
请参阅此图以供参考-
下面是一个示例代码,演示如何使用deconv网络将(10,3,1)图像转换为(12,10,1)图像
您可以在pytorch中找到conv2dtranspose
层实现
此外,如果您正在该领域寻找经过测试的体系结构,请查看U-net
。这是一种编码器-解码器(conv2d,conv2d转置)
体系结构,它使用一种称为跳过连接的概念来避免信息丢失并生成更好的图像分割掩码
TLDR您希望查看(卷积转置),它有助于使用卷积运算重新生成图像。您希望构建一个编码器-解码器卷积体系结构,该体系结构使用卷积将图像压缩为潜在表示,然后从该压缩表示中解码图像。对于图像分割,一种流行的体系结构是U-net
注意:我无法回答pytorch的问题,因此我将与他共享Tensorflow等价物。请忽略代码,但由于您正在寻找概念,我可以帮助您解决此问题
您正试图生成一个图像作为网络的输出
一系列卷积运算有助于对图像进行下采样。由于您需要一个输出2D矩阵(灰度图像),因此还需要Upsample
。这种网络称为Deconv网络
第一系列的层卷积在输入上,将它们“展平”为通道向量。下一组层使用2D Conv Transpose
或Deconv
操作将通道更改回2D矩阵(灰度图像)
请参阅此图以供参考-
下面是一个示例代码,演示如何使用deconv网络将(10,3,1)图像转换为(12,10,1)图像
您可以在pytorch中找到conv2dtranspose
层实现
此外,如果您正在该领域寻找经过测试的体系结构,请查看U-net
。这是一种编码器-解码器(conv2d,conv2d转置)
体系结构,它使用一种称为跳过连接的概念来避免信息丢失并生成更好的图像分割掩码
from tensorflow.keras import layers, Model, utils
inp = layers.Input((128,128,1)) ##
x = layers.Conv2D(2, (3,3))(inp) ## Convolution part
x = layers.Conv2D(4, (3,3))(x) ##
x = layers.Conv2D(6, (3,3))(x) ##
##########
x = layers.Conv2DTranspose(6, (3,3))(x)
x = layers.Conv2DTranspose(4, (3,3))(x) ## ## Deconvolution part
out = layers.Conv2DTranspose(1, (3,3))(x) ##
model = Model(inp, out)
utils.plot_model(model, show_shapes=True, show_layer_names=False)