精华内容
下载资源
问答
  • 反卷积和上采样+卷积的区别? 很详细

    反卷积和上采样+卷积的区别?

    很详细

    展开全文
  • 要知道两者的区别,我觉得最直观的方式就是从他们的实现方式上去分析。首先来看下反卷积是如何实现的,首先看下面反卷积的运算流程图:https://zhuanlan.zhihu.com/p/65248401反向过程我们不需要关注只看前向过程,...

    要知道两者的区别,我觉得最直观的方式就是从他们的实现方式上去分析。首先来看下反卷积是如何实现的,首先看下面反卷积的运算流程图:https://zhuanlan.zhihu.com/p/65248401

    反向过程我们不需要关注只看前向过程,看流程图最下面的一行。反卷积的前向过程就是首先做了一个矩阵乘法(或者也可以用1x1的卷积来实现),把输入 feature map 的通道数从 Cin 变成 Cout * K * K,这时候 feature map 的大小还是保持 Hin * Win 的,那反卷积是如何实现把 feature map变大的呢,其实就是接下来的一步col2im操作,这个相当于是卷积里面的 im2col 的逆过程,把中间结果的每一列从一个 Cout * K * K的向量,reshape 成 (Cout, K, K) 的 tensor,然后根据 Cout 的索引把对应 (k, k) 的 patch 回填累加到输出 feature map 对应 channel 的位置上,至于应该把这个patch回填到某张 feature map 的哪个位置上,这个可以说主要是由步长这个参数决定的,就像带步长的卷积,在做卷积操作的时候,窗口会根据步长来滑动,反卷积回填的时候,也是根据步长来滑动回填窗口。但是具体实现的时候没那么简单了,还有其他参数,具体可以参考mxnet里面反卷积的实现。

    分析完反卷积的运算过程,再来看下上采样+卷积的运算过程,上采样比如双线性插值,就是把feature map根据上采样率插值出更大的feature map,feature map之间的上采样是各自独立的,所以channel数不会改变,然后再跟一个卷积提特征,这一步才可以改变channel数。

    那既然他们共同的作用都是可以增大 feature map 同时改变 channel 数,那么在实际任务中该如何选择呢。反卷积有个比较大的问题就是,如果参数配置不当,很容易出现输出feature map带有明显棋盘状的现象,为什么呢,就是在col2im,然后回填这一步。

    下面这个博客就分析的非常好,值得细读:Deconvolution and Checkerboard Artifacts​distill.pubc7e81650eb433de4d3350e75f9dc3734.png

    里面提供了可动态配置反卷积的kernel size和stride然后可视化输出结果,可以看到当stride为2的时候,kernel是奇数就会出现网格:https://distill.pub/2016/deconv-checkerboard/https://distill.pub/2016/deconv-checkerboard/

    而偶数kernel就不会:https://distill.pub/2016/deconv-checkerboard/https://distill.pub/2016/deconv-checkerboard/

    而如果是多层堆叠反卷积的话而参数配置又不当,那么棋盘状的现象就会层层传递:https://distill.pub/2016/deconv-checkerboard/

    所以当使用反卷积的时候参数配置需要特别的小心。

    Talk is cheap, show me the code!:)

    下面就用简单的几句代码来复现使用反卷积可能会带来的的网格问题:

    import mxnet as mx

    batch_size = 1

    in_channel = 1

    height = 5

    width = 5

    data_shape = (batch_size, in_channel, height, width)

    data = mx.nd.ones(data_shape)

    out_channel = 1

    kernel_size = 3

    deconv_weight_shape = (in_channel, out_channel, kernel_size, kernel_size)

    deconv_weight = mx.nd.ones(deconv_weight_shape)

    stride = 2

    up_scale = 2

    data_deconv = mx.nd.Deconvolution(data=data, weight=deconv_weight,

    target_shape=(height * up_scale, width * up_scale),

    kernel=(kernel_size, kernel_size),

    stride=(stride, stride),

    num_filter=out_channel)

    print(data_deconv)

    data_upsample = mx.nd.contrib.BilinearResize2D(data=data, scale_height=up_scale, scale_width=up_scale)

    conv_weight_shape = (out_channel, in_channel, kernel_size, kernel_size)

    conv_weight = mx.nd.ones(conv_weight_shape)

    pad = (kernel_size - 1) / 2

    data_conv = mx.nd.Convolution(data=data_upsample, weight=conv_weight,

    kernel=(kernel_size, kernel_size),

    pad=(pad, pad), num_filter=out_channel, no_bias=True)

    print(data_conv)

    这里为了简化,反卷积和卷积的权重都是设为1,而输入与输出 feature map 通道数都是1,输入 feature map 的值都是1,然后来看下反卷积和上采样+卷积的前向结果:deconvolution, kernel3, stride2bilinear upsample + convolution

    可以看到,kernel为3,步长为2的情况下,反卷积在不训练的情况下,输出就带有明显很规律的棋盘状。然后我们把kernel改为4,看看:deconvolution, kernel4, stride2

    所以可以看到,棋盘状消失了。所以在实际应用中对于一些像素级别的预测任务,比如分割,风格化,gan这类的任务,对于视觉效果有要求的,在使用反卷积的时候需要注意参数的配置,或者直接换成上采样+卷积。

    相关资料:梁德澎:怎样通俗易懂地解释反卷积?​www.zhihu.comzhihu-card-default.svg

    梁德澎:估算卷积层与反卷积层运算量​zhuanlan.zhihu.comce8cfb303469c03e06b614065663b15a.png

    展开全文
  • 反卷积上采样、上池化、子像素卷积联系与区别 https://blog.csdn.net/bbbeoy/article/details/81085652 Sub-pixel-convolutional 详解 https://blog.csdn.net/xys430381_...

    https://blog.csdn.net/xys430381_1/article/details/83628515

    反卷积、上采样、上池化、子像素卷积的联系与区别

    https://blog.csdn.net/bbbeoy/article/details/81085652

    Sub-pixel-convolutional 详解

    https://blog.csdn.net/xys430381_1/article/details/83628515

    反卷积、上采样、上池化、子像素卷积的联系与区别

    https://blog.csdn.net/Daycym/article/details/83826222

    基于im2col的展开Python实现卷积层

    展开全文
  • 上采样/反卷积/上池化的区别 上采样是指将图像上采样到更高分辨率的任何技术。 最简单的方法是使用重新采样插值。即取原始图像输入,将其重新缩放到所需的大小,然后使用插值方法(如双线性插值)计算每个点处的...

    上采样/反卷积/上池化的区别

    图(a)表示UnPooling的过程,特点是在Maxpooling的时候保留最大值的位置信息,之后在unPooling阶段使用该信息扩充Feature Map,除最大值位置以外,其余补0。与之相对的是图(b),两者的区别在于UnSampling阶段没有使用MaxPooling时的位置信息,而是直接将内容复制来扩充Feature Map。从图中即可看到两者结果的不同。图(c)为反卷积的过程,反卷积是卷积的逆过程,又称作转置卷积。最大的区别在于反卷积过程是有参数要进行学习的(类似卷积过程),理论是反卷积可以实现UnPooling和unSampling,只要卷积核的参数设置的合理

     

    展开全文
  • 1.上采样反卷积是不一样,大家要注意这一点。可以参考这篇博客:https://blog.csdn.net/qq_27871973/article/details/82973048 2.对于pad默认为0,自己如果有需要得进行设置。group默认为1. 3.对于卷积和反...
  • 上采样反卷积,上池化概念区别

    万次阅读 多人点赞 2018-10-08 20:49:37
    通过卷积和池化等技术可以将图像进行降维,因此,一些研究人员也想办法恢复原分辨率大小图像,特别是在语义分割领域应用很成熟。通过对一些资料学习,简单整理下三种恢复方法,并进行对比。 1、Upsampling...
  • 通过卷积和池化等技术可以将图像进行降维,因此,一些研究人员也想办法恢复原分辨率大小图像,特别是在语义分割领域应用很成熟。通过对一些资料学习,简单整理下三种恢复方法,并进行对比。 1、Upsampling...
  • python进阶教程机器学习深度学习长按二维码关注进入正文上采样反卷积、上池化概念区别通过卷积和池化等技术可以将图像进行降维,因此,一些研究人员也想办法恢复原分辨率大...
  • 上采样(Upsample)在应用在计算机视觉深度学习领域,由于输入图像通过卷积神经网络(CNN)提取特征后,输出尺寸往往会变小,而有时我们需要将图像恢复到原来尺寸以便进行进一步计算(e.g.:图像语义分割),这个...
  • 上采样(UnSampling):即输入特征图,将其缩放到所需大小(比如2*2宽高--->4*4宽高),其常用方法是插值方法(如最邻近插值、双线性插值和三次插值),其中,最邻近插值效果最差,放大后图像有很严重...
  • 反卷积与棋盘格子状伪影Deconvolution and Checkerboard Artifacts反卷积和上采样+卷积的区别?怎样通俗易懂地解释反卷积?子像素卷积(Sub-Pixel Convolution)反卷积(Deconvolution)缩放卷积(Resize-Convolution) ...
  • 线性差值-反卷积-空洞卷积-上采样 等等一大堆名称,梳理梳理: caffe中的deconvolutionupsample的区别? https://www.zhihu.com/question/63890195 Caffe实现上采样(upsample)方法总结 ...
  • 获取更多腾讯海量技术实践干货哦~导语:转置卷积层(Transpose Convolution Layer)又称卷积层或分数卷积层,在最近提出的卷积神经网络中越来越常见了,特别是在对抗生成神经网络(GAN)中,生成器网络中上采样部分就...
  • FCNRPN两种特征提取框架的区别

    千次阅读 2018-03-28 13:30:42
    一类基于FCN框架提取文本显著图,但此类方法引入大量噪声干扰结果准确性(因为最后要上采样匹配),需对显著图进行后处理(如:反卷积),无法实现端到端; 一类基于RPN框架提取proposal进行分类,但文本目标形状、...
  • 主要有以下几种方法: 上采样 反卷积 转置卷积 ...空洞卷积就是一般意义的卷积,包括了上采样和下采样;上采样又叫做反卷积反卷积包括转置卷积和...转置卷积和微步卷积的区别在于补充的方式不同。 子像素卷积...
  • 3D UNet学习笔记

    千次阅读 2020-06-06 09:24:35
    **除此以外的区别在于通道数翻倍的时机和反卷积操作。**在2D Unet中,通道数翻倍的时机在下采样后的第一次卷积时;而在3D Unet中,通道数翻倍发生在下采样或上采样前的卷积中。对于反卷积操作,区别在于通道数是否...
  • 导语:转置卷积层(Transpose Convolution Layer)又称卷积层或分数卷积层,在最近提出的卷积神经网络中越来越常见了,特别是在对抗生成神经网络(GAN)中,生成器网络中上采样部分就出现了转置卷积层,用于恢复...
  • 对此,我们提出来一种自引导的上采样模块,利用了一个插值flow一个插值map来改变上采样插值机制,从而实现了更加精细的上采样。另外,我们提出来将网络最终输出结果作为伪标签来监督多尺度flow学习。基于...
  • 如何理解上采样采样的区别是什么 上采样(UNSampling)与上池化(UnPooling)区别 全连接层理论上可以替代卷积层嘛 神经网络里面可以用什么方法替换掉pooling 神经网络提取特征的方式有哪些 介绍下你了解的...
  • 4.1.2 频率响应函数滤波器单位采样响应是如何联系? 217 4.1.3 为什么关心在实域中滤波器函数? 217 4.1.4 h(k, l)需要满足什么条件才能用作卷积滤波器? 217 B4.1 2-D 理想低通滤波器单位采样响应是...
  • 1.0.23 实际中如何描述一个线性操作符作用在一幅图像上的效果?...................15 1.0.24 对一幅图像可使用多于一个线性操作符吗?............................................18 1.0.25 线性操作符使用次序...

空空如也

空空如也

1 2
收藏数 24
精华内容 9
关键字:

反卷积和上采样的区别