标签: deconvolution

tf.nn.conv2d_transpose的padding有什么作用?

我们知道,我们可以tensor通过 的填充模式来计算输出的形状conv2d算法很清晰,但是我很困惑conv2d_transpose,它是否填充输入张量然后调用conv2d?它在哪里转置过滤器或输入?如何根据填充模式SAMEVALIDfor计算输出张量的形状conv2d_transpose

convolution tensorflow deconvolution

5
推荐指数
1
解决办法
835
查看次数

我的图像分割结果图在白色补丁中包含黑色格子

在此处输入图片说明我正在使用 Pytorch 0.4.0 使用类似 UNet 的 CNN 架构进行图像分割。它在最终分割结果中将前景标记为 1,将背景标记为 0。我使用预训练的 VGG 的特征提取器作为我的编码器,所以我需要对编码器输出进行多次上采样。但结果显示了一个奇怪的格子部分,如下所示:

我怀疑这些不同形状的黑色部分是由反卷积层引起的。官方文档中说反卷积层在输入像素之间添加了(s-1)个零。反卷积层的超参数如下:

kernel_size=3,stride=2,padding=1,output_padding=1

(output_padding 用于拟合跳过连接特征的大小,例如,输入大小为 40*30,我希望它在一个反卷积层中放大两倍,根据我的计算公式:out=s(in-1) +k-2p,我必须使用 padding 1 和 output-padding 1 来保持大小,否则可能有其他更好的选择我不知道。)

我想知道产生黑色格子的原因。它们看起来像一个网格或方形部分。如何解决它。此外,我需要将所有deconv层超参数调整为一个统一的或分别修改它们?

环境:Ubuntu 16.04、Pytorch 0.4.0、GTX 1080Ti,上采样的架构是三层deconv层,层层递进。

更新

在我修改了 deconv 超参数之后,(受图像分割结果中的噪声启发使用

kernel_size=4,stride=2,padding=1

从而避免输出填充并满足大小。但是在 100 epoch 之后我遇到了类似的问题。

又经过30个epoch的训练,看起来是这样的,在此处输入图片说明

黑点刚刚散落,看起来这些黑点只是改变了它们的部分并跳入了另一个部分,我不知道为什么会出现。我不知道如何修改我的网络超参数。
self.conv1=Basic(1024,512,kernel_size=3,stride=1,padding=1)
        self.conv2=Basic(512,512,kernel_size=3,stride=1,padding=1)
        self.deconv1=Basic(512,256,kernel_size=4,stride=2,conv=False,padding=1)
        self.deconv2=Basic(256,128,kernel_size=4,stride=2,conv=False,padding=1)
        self.deconv3=Basic(128,64,kernel_size=4,stride=2,conv=False,padding=1)
        #output  480*640 segmap
        self.conv4=Basic(64,2,kernel_size=1,stride=1)
        # self.avgpool=nn.AvgPool2d(kernel_size=2,stride=2)

    def forward(self, input):
        input=self.conv1(input)
        input=self.conv2(input)
        input=self.deconv1(input)
        input=self.deconv2(input)
        input=self.deconv3(input)
        input=self.conv4(input)
        # print(input.shape)
        #a channel-wise probability map
        raw=input
        return raw`
Run Code Online (Sandbox Code Playgroud)

python image-segmentation deconvolution pytorch semantic-segmentation

5
推荐指数
0
解决办法
375
查看次数

Use Python lmfit with a variable number of parameters in function

I am trying to deconvolve complex gas chromatogram signals into individual gaussian signals. Here is an example, where the dotted line represents the signal I am trying to deconvolve.

在此输入图像描述 I was able to write the code to do this using scipy.optimize.curve_fit; however, once applied to real data the results were unreliable. I believe being able to set bounds to my parameters will improve my results, so I am attempting to use lmfit, which allows this. I am having a problem …

python modeling signal-processing lmfit deconvolution

5
推荐指数
2
解决办法
1808
查看次数

CNN:输入步幅与输出步幅

在论文《用于语义分割的全卷积网络》中,作者在反卷积的背景下区分了输入步幅和输出步幅。这些术语有何不同?

convolution conv-neural-network deconvolution

4
推荐指数
1
解决办法
2927
查看次数

如果 FFT 中有很多 0,则寻找卷积核?

我知道original_image * filter = blur_image*卷积在哪里。因此,filter = ifft(fft(blur)/fft(original))

我有一个原始图像、已知的滤镜和已知的模糊图像。我尝试了以下代码。我只想比较使用 fft 和 ifft 计算的滤波器,并将其与已知的滤波器进行比较。我在Matlab中尝试过:

orig = imread("orig.png")
blur = imread("blur.png")
fftorig = fft(orig)
fftblur = fft(blur)
div = fftblur/fftorig
conv = ifft(div)
Run Code Online (Sandbox Code Playgroud)

结果没有意义。我看到div包含很多NaN值,并且fftblurfftorig都包含很多 0 值。我需要对此做些什么吗?比如使用fftshift

编辑:为了使这一点更容易理解,我现在使用以下图像: http: //matlabgeeks.com/tips-tutorials/how-to-blur-an-image-with-a-fourier-transform-in- matlab-第一部分/

我决定使用以下链接计算origimage和的内核:blurimageunpad

kernelc = real(ifft2(fft2(origimage)./fft2(blurimageunpad));
imagesc(kernelc)
colormap gray
Run Code Online (Sandbox Code Playgroud)

结果如下:

https://i.stack.imgur.com/kJavg.jpg

这显然与该链接顶部提到的高斯模糊不匹配

matlab fft image-processing convolution deconvolution

3
推荐指数
1
解决办法
880
查看次数

在最小化AdamOptimizer时,在op输入和计算输入渐变之间获得不兼容的形状

运行tensorflow代码时出现以下错误:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/tensor_shape.py", line 579, in merge_with
    new_dims.append(dim.merge_with(other[i]))
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/tensor_shape.py", line 138, in merge_with
    self.assert_is_compatible_with(other)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/tensor_shape.py", line 111, in assert_is_compatible_with
    other))
ValueError: Dimensions 5 and 4 are not compatible

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/gradients_impl.py", line 602, in gradients
    in_grad.set_shape(t_in.get_shape())
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 407, in set_shape
    self._shape = self._shape.merge_with(shape)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/tensor_shape.py", line 582, in merge_with
    raise ValueError("Shapes %s and %s are not compatible" % …
Run Code Online (Sandbox Code Playgroud)

python-3.x tensorflow deconvolution

3
推荐指数
1
解决办法
2141
查看次数

如何在张量流中的deconv2d的output_shape参数中给出变量batch_dim?

我试图tf.nn.deconv2d()在可变大小的数据批处理上使用op.但是,似乎我需要将output_shape参数设置如下:

tf.nn.deconv2d(x, filter, output_shape=[12, 24, 24, 5], strides=[1, 2, 2, 1],
               padding="SAME")
Run Code Online (Sandbox Code Playgroud)

为什么tf.nn.deconv2d()要修一个output_shape?有没有办法指定变量批量维度?如果输入批量大小变化会发生什么?

tensorflow deconvolution

2
推荐指数
1
解决办法
1346
查看次数