机器学习笔记: Upsampling, FCN, DeconvNet,U-Net, U-net variant

前言

        在CNN-based 的 模型中,我们可能会用到downsampling 操作来减少模型参数,以及扩大感受野的效果。

        下图是一个graph segmentation的例子,就先使用 downsampling来减少每个image的size,再使用upsampling来将size还原回最初大小 

1 Upsampling

downsampling 即 池化操作,在机器学习笔记:CNN卷积神经网络_UQI-LIUWJ的博客-CSDN博客里面已经提到过了,这里就不说了,我们这里说一下怎么将image的size 提升上去

 

1.1  最原始的方法

这种方式显然不是理想的方式,因为它添加的信息仅仅是冗余的信息, 同时使得整个image不连续

1.2 Nearest neighbor

 1.3 双线性插值

注意左侧图的阴影小点

 1.4 Max unpooling

        模型中存储 max pooling 操作中,都是哪些位置的值成为了池化结果。然后在max unpooling的时候在这些位置填充值

1.4.1  DeconvNet

Learning Deconvolution Network for Semantic Segmentation (ICCV 2015)

使用 unpooling来进行上采样

2 up convolution

那么既然池化操作有“逆运算”,那么卷积操作有吗?

答案是有的。

我们同样设置filter,让相应位置的值乘以这个filter,将结果拼接成一个大size 的image

         对于重叠的部分,我们可以取mean,取max等各种操作。而比如我们需要4*4的矩阵,在矩阵之外的部分可以去掉。        

2.1 举例:1维“逆卷积”

2.2 举例: 2维”上卷积“

计算方式:我们按照之前说的方式,进行计算即可

  •  

 2.2.1 卷积的等价形式

给定一个特征图a,给定相应的卷积核,逆卷积等价于:

  • 对输入的特征图a进行一些变换,得到新的特征图a’
    • 比如原来特征图是H*W,卷积核的kernel size是Size,步长是Stride,padding大小为Padding
    • 那么新特征图H=H+(Stride-1)*(Height-1)【W同理】
      • 原先高度方向上两个相邻的值,中间插上Stride-1个0
  • 求新的卷积核配置,得到新的卷积核配置
    • 卷积核的kernel size不变,Stride’=1,padding'=Size-Padding-1
  • 用新的卷积核在新的特征图上做常规的卷积,得到的结果就是逆卷积的结果

3 FCN

Fully Convolutional Networks for Semantic Segmentation 2015 CVPR

        传统CNN会在网络层的最后接上一些全连接层,最终的输出经过softmax后可以获得一些类别概率信息

        为了进行端到端的图像分割,FCN把CNN最后的那几层全连接层替换成卷积层。这样输出的是一个二维的feature map。

        之后再接softmax,就是每个像素点的分类信息,也即图像分割问题。

 

 

 upsampling也就是前面说的上池化&上卷积

 误差:每一个样本的熵 之和

3.1 FCN的三种结构

上卷积就是一步完成的(放大多少倍和kernel size,stride等参数有关)

以FCN-32S为例,32倍就是一步上卷积

 不同的上采样方式效果和精度是不同的

 FCN-8s 上采样的时候同时可以考虑不同粒度的feature信息,所以图像分割的结果也更好一点 

4 U-net

        但是上述的这种down&up sampling问题有一个很明显,就是经过downsampling之后,一些细节方面的信息会丢失

        于是U-net便采用了这样的一种思路,把高分辨率的image直接传给之后的神经网络,和经过down&up sampling后相同size的image经过某种方式融合在一起      

5  Pyramid Scene Parsing Net

CVPR 2017

这个和upsampling没有关系,只是另一种解决detail 信息丢失的办法。

我们可以设立不同size的池化层,然后将不同size池化层的池化结果 用某种方式concatenate起来

参考文章

FCN 论文笔记 - 知乎 (zhihu.com)

ConvTranspose2d原理,深度网络如何进行上采样?_月下花弄影的博客-CSDN博客_convtranspose2d

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值