ps之前写过反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)加入自己的思考(一),不过那是东拼西凑出来的别人的东西就是稍微加入点自己的理解。今天在看代码时候又出现上池化和反卷积这两个选项。最终作者的代码里是用了反卷积但是我还是想更细理解什么时候用反卷积什么时候用上池化啊。刚刚写完保存不了,被我误关了。想哭啊啊!后面部分要再来一遍额。写简单一些了。

之前博文里可以看到三者是这样的:https://blog.csdn.net/A_a_ron/article/details/79181108参考的博文

但是上面只是别人画了图,实际真没形成代码呢。(目前在用pytorch框架,故将之前的tensorflow换成pytorch)

上池化,贴一下我的代码和结果:

import torch
from torch import nn
from torch.autograd import Variable
a = torch.Tensor([[[[2, 3, 4, 4],[3, 4, 8, 4],[7, 3, 5, 8],[2, 3, 4, 4]]]])
print(a)
a= Variable(a.cuda(async = True))
pool= nn.MaxPool2d(2,stride=2,return_indices =True)
p,i=pool(a)
print('p',p)
unpool = nn.MaxUnpool2d(2,stride=2)
up=unpool(p,i)
print('up',up)
(0 ,0 ,.,.) = 2  3  4  43  4  8  47  3  5  82  3  4  4
[torch.FloatTensor of size 1x1x4x4]('p', Variable containing:
(0 ,0 ,.,.) = 4  87  8
[torch.cuda.FloatTensor of size 1x1x2x2 (GPU 0)]
)
('up', Variable containing:
(0 ,0 ,.,.) = 0  0  0  00  4  8  07  0  0  80  0  0  0
[torch.cuda.FloatTensor of size 1x1x4x4 (GPU 0)]
)
print('i',i)
('i', Variable containing:
(0 ,0 ,.,.) = 5   68  11
[torch.cuda.LongTensor of size 1x1x2x2 (GPU 0)]
)

还真和图中一样,其中原来pool时候产生的是两个参数,一个记录结果一个结果p,一个记录位置i。然后在上池化时候输入结果p和位置i便能还原到原来的位置。

unspamle= nn.UpsamplingNearest2d(scale_factor=2)
us=unspamle(p)
print('us',us))
('us', Variable containing:
(0 ,0 ,.,.) = 4  4  8  84  4  8  87  7  8  87  7  8  8
[torch.cuda.FloatTensor of size 1x1x4x4 (GPU 0)]
)

也是跟上图里的一样,那么也就理解了上采样和上池化的差异(实际代码中),而反卷积其实就是转置卷积,具体可以看我之前的博客。(这里开始没保存可恶!!!)。

这里理解上池化和转置卷积差异:上论文《Learning Deconvolution Network for Semantic Segmentation》的理解图

图(a)是输入层;图(b)是14*14反卷积的结果;图(c)是28*28的UnPooling结果;图(d)是28*28的反卷积结果;图(e)是56*56的Unpooling结果;图(f)是56*56反卷积的结果;图(g)是112*112 UnPooling的结果;图(h)是112*112的反卷积的结果;图(i)和图(j)分别是224*224的UnPooling和反卷积的结果。

上图就是转置卷积和上池化的差异,我们可以发现:

1.当特征图中的目标像素点较少的时候,转置卷积更适合我们,上池化得到的结果分辨率太差了对比转置卷积得到的结果。

2.而当当特征图中的目标像素点较多的时候,上池化化更时候我们,上池化得到的结果轮廓细节清晰,分辨率也能接受。

而肺结节所用的模型中,一个较大的结节如20*20*20,在我们要用的特征图中已经变成了5*5*5,更不用说8*8*8已经变成2*2*2了。所以grt团队的代码选用了转置卷积啊。我也解开了其中的困惑。

PS2019年4月22日添加:

https://blog.csdn.net/tsyccnh/article/details/87357447 很好的图解了直接卷积和转置卷积的区别和实际运算中的卷积是怎么操作的。其中一句话特别形象解释了直接卷积和转置卷积(反卷积)的差异:

直接卷积我们是用一个“小窗户”去看一个“大世界”,而转置卷积是用一个“大窗户”的一部分去看“小世界”。这里有一点需要注意,我们定义的卷积核是左上角为a,右下角为i,但在可视化转置卷积中,需要将卷积核旋转180°后再进行卷积

反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)加入自己的思考(pytorch函数)(二)相关推荐

  1. 反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)加入自己的思考(tensorflow函数)(一)

    ps 之前是做分类的根本就是没有很深的接触反卷积(Deconvolution).上采样(UNSampling)与上池化(UnPooling)等,要写这个主要是我在找unet代码时候发现反卷积这一步正常 ...

  2. 反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)加入自己的思考(pytorch函数)(三)

    ps:最近在做分割在github上找代码看模型时老发现尺度从小到大那部分,有的是采用上采样(双线性插值)+卷积,有的用反卷积.为什么不相同能,我查阅相关资料发现这位知乎大神根据外网大佬文章总结原因.知 ...

  3. 反卷积(Deconvolution)上采样(Upsampling)上池化(Unpooling)的区别——附翻译

    http://blog.csdn.net/u012949263/article/details/54379996 提供了英文版 Question: Deconvolution networks use ...

  4. 反卷积 算法 c语言,多次曝光图像的PSF反卷积以及欠采样图像的反混叠技术I:PSFdeLRSA的制作方法...

    1技术领域 在图像的点扩散函数(PSF)反卷积领域,人们发展了很多方法:比如基于最大似然估计的Lucy-Richardson图像PSF反卷积技术和在该技术基础上加入的正则化手段,比如基于最小均方差或最 ...

  5. group convolution (分组卷积)的计算量详解、卷积计算量特征图大小,池化特征图大小、深度通道deep-wise 卷积

    group convolution (分组卷积)的计算量详解.卷积计算量特征图大小,池化特征图大小.深度通道deep-wise 卷积 提示:最近忙着各种提前批的笔试面试,所以没太多空刷题了都,先复盘一 ...

  6. 上采样之双线性插值法

    上采样之双线性插值法 One:上采样的定义 上采样的类型: 一.双线性插值: 二.转置卷积 : 三.上采样(unsampling) 四.上池化(unpooling) 总结: tow:具体的讲解双线性插 ...

  7. 深度学习之卷积、全连接、反卷积等

    全连接参考1:https://zhuanlan.zhihu.com/p/32819991 全连接参考2:代码实现 神经网络前后传输 CNN中卷积.池化的前向与反向传播: CNN卷积神经网络和反向传播( ...

  8. 深度可分离卷积、空洞卷积、反卷积、感受野计算、上采样

    文章目录 输出特征图尺寸的计算 Depthwise卷积和Pointwise运算成本比较低 空洞卷积 反卷积 上采样 输出特征图尺寸的计算 Depthwise卷积和Pointwise运算成本比较低 如何 ...

  9. FCN全卷积网络—upsampling(上采样)——OpenCV图像金字塔

    一.上采样理论 1.1 bilinear 1.2 Deconvolution(反卷积) 1.3 unpooling 二.OpenCV金字塔:高斯金字塔.拉普拉斯金字塔与图片缩放 一.上采样理论 FCN ...

最新文章

  1. 2020身高体重标准表儿童_2020年儿童标准身高体重表发布,对比看看,你家孩子达标了吗?...
  2. 详解进程的虚拟内存,物理内存,共享内存
  3. w8系统搭建php网站,360W8系统下如何配置PHP网站运行环境
  4. Ubuntu学习笔记2-网络部分
  5. (转载)Android studio 导入或依赖第三方库失败
  6. 浅谈:云桌面在我国高校的应用前景
  7. Activity的LaunchMode情景思考
  8. atitit.短信 验证码  破解  v3 p34  识别 绕过 系统方案规划----业务相关方案 手机验证码  .doc
  9. 使用CAFFE训练自己的数据集并单张图片测试的方法
  10. 用html布局象棋棋盘,5分钟掌握22种常见象棋布局,实例演示象棋布局大全、开局大全...
  11. Python游戏开发平台、脚本系统架构设计
  12. 蝶形算法(H.264)
  13. SpringSocial整合QQ授权登录
  14. wpa_supplicant 框架
  15. Word2010邮件合并(附带照片)
  16. 家用计算机常见故障及解决方式,计算机常见的五大故障及解决办法
  17. 网站变更服务器要重新备案吗,网站更换服务器要重新备案吗
  18. Caesar解密-number theroy
  19. 看《墨攻》理解IoC
  20. 科技爱好者周刊:第 90 期

热门文章

  1. BIM工程信息管理新系统- 系统管理模块
  2. 跟着例子一步步学习redux+react-redux[转载]
  3. hive中的日期转换函数
  4. 使用webpack开发ES6程序的正确姿势
  5. Java学习作业(14.4.21)
  6. UVA 558 SPFA 判断负环
  7. 搜索引擎广告计费系统如何防恶意点击
  8. windows下,linux下elasticsearch安装插件bigdesk插件的步骤
  9. IDEA的postfix自定义,自定义postfix
  10. 软件测试中一个BUG的生命周期