• 常见的三种上采样方式


    引自:https://blog.csdn.net/u014451076/article/details/79156967

    bilinear
    双线性插值是目前在语义分割中用的比较多的一种方式,比如FCN中就是用的这种方法。
    这种方法特点是不需要进行学习,运行速度快,操作简单。只需要设置好固定的参数值即可,设置的参数就是中心值需要乘以的系数。
    一个简单的例子可以参考如下(来自互联网):

    接着,同样的道理,使用f(R1), f(R2)进行插值,推导出来f( P )就可以了.

    Deconvolution
    Deconvolution是目前争议比较多的方法,主要是名字上的争议,由于实现上采用转置卷积核的方法,所以有人说应该叫(transposed convolution),但是思想上是为了还原原有特征图,类似消除原有卷积的某种效果,所以叫反卷积(deconvolution). Caffe中叫deconvolution,这里就继续沿用这个名字.
    要理解deconv,要先了解conv的具体是实现方式,在实现过程中,为了使卷积运算更快的执行,通常转化为矩阵乘法进行处理(因为矩阵乘法有一些加速计算库)。卷积计算通常的两种实现方式是:在caffe中使用im2col的方法,在其他的地方使用toeplitz matrix(托普利兹矩阵)进行实现。这里指的反卷积,也叫转置卷积,它并不是正向卷积的完全逆过程,用一句话来解释:反卷积是一种特殊的正向卷积,先按照一定的比例通过补 [公式] 来扩大输入图像的尺寸,接着旋转卷积核,再进行正向卷积。

    unpooling

    也就是反池化,不需要学习,用的不是太多,参考论文Visualizing and Understanding Convolutional Networks,还有SegNet和DeconvNet
    简单原理:在池化过程中,记录下max-pooling在对应kernel中的坐标,在反池化过程中,将一个元素根据kernel进行放大,根据之前的坐标将元素填写进去,其他位置补0
    实现代码可以看SegNet的实现

  • 相关阅读:
    新概念英语(第一册)Lesson 1
    第七篇、Python之模块/包
    解压序列
    eval函数
    python--magic module 文件类型识别
    MIME_type
    彻底删除git中的文件(包括历史提交记录)
    for循环与range()函数
    Linux 内核的 Makefile
    Python module ---- abc
  • 原文地址:https://www.cnblogs.com/lyp1010/p/13324169.html
Copyright © 2020-2023  润新知