上采样方法汇总(updating...)

近期在看一些Segmentation的文章,很多用到了encoder-decoder的结构,encoder基本都是各类的CNN很熟悉了,decoder涉及到上采样或者反卷积的各种方法,这里直接做一个总结。
网上很多的总结都是按照方法总结,但总感觉缺点儿上下文,因此本文以论文为梳理对象,总结一下不同论文里用到的上采样方法。
当然,论文的梳理不只包括Segmentation的文章,后面遇到涉及到上采样的文章也会总结到这里。

1. Semantic Segmentation

1.1 Fully Convolutional Networks for Semantic Segmentation(CVPR2015)

FCN文中上采样用的是反卷积(Transpose conv),然后用二次插值做初始化。
在这里插入图片描述
在这里插入图片描述

1.2 Learning Deconvolution Network for Semantic Segmentation (ICCV2015)

这篇文章decoder用到了deconvolution network,其中包括deconvolution以及unpooling层,来预测每个像素的label以及segmentation mask。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 SegNet(TPAMI 2017)

实现: en_output,indices = torch.nn.functional.max_pool2d(*args,return_indices=True)// de_output = torch.nn.functional.max_unpool2d(input,indices,*args,target_size=None)
SegNet的主要创新点在于decoder中上采样的方法。
SegNet使用与decoder相关联的encoder中的max-pooling的indices来实现对输入feature map的非线性的上采样(这里和deconvnet是一样的,区别是encoder没有全连接且是端到端训练)。这样的操作有以下几个好处:

  • 可以提升边缘的划分
  • 可以减少参数量,实现端到端训练
  • 适用于所有encoder-decoder结构的模型
    文中也分析了SegNet的decoder和FCN、DeconvNet、UNet的不同
  • 与DeconvNet的不同:DeconvNet有更多的参数(由于fc层的存在),难以端到端训练;
  • 与U-Net的不同:U-Net没有使用pooling indices,是将整个encoder的feature map给到decoder(skip connection)来通过反卷积上采样,耗费更多的内存;U-Net没有使用VGG的最后一层con5和max-pool
  • 与FCN比较:FCN的decoder需要在inference的时候存encoder的feature map,消耗内存。Table1可以看出,SegNet与FCN相比胜在了内存占用,但是输在了inference的时间。
    在这里插入图片描述
    在这里插入图片描述

1.4 DeepLab Family(v1~v3+)

DeepLab v1和v2(TPAMI2018)中上采样的方法使用的就是二次线性插值,后面跟CRF来优化边缘。
在这里插入图片描述
DeepLab v3没有用到DanseCRF进行后处理。用ASPP进行下采样,然后直接一次性用二次线性插值(16x)上采样到原图的分辨率。
DeepLab v3+在v3的基础之上加了一个decoder,融合了encoder的某一层,进行两次二次线性插值的上采样,具体操作看下图。
在这里插入图片描述
在这里插入图片描述

1.5 RefineNet (CVPR2017)

这篇工作提出:
对于使用反卷积进行上采样的方法难以恢复因为下采样而导致的low-level的视觉特征,从而导致边缘和细节的预测精度下降;
对于DeepLab等使用空洞卷积的工作,需要对于高维特征进行多次的空洞卷积,导致computation expansive。此外,大量的高维高解析的feature map需要耗费大量的GPU内存,尤其是在训练的时候(最大1/8,in practice)。另外,空洞卷积是一种粗糙的下采样方式,导致失去了重要的细节信息;
对于FCN等使用中间层来生成高解析的预测方法,该工作认为,不同level的特征对于语义分割都是有帮助的。其中,high-level用来进行分类,low-level用来进行生成细节和边缘。对于中间层的特征如何进行利用需要进一步的讨论。
因此,本篇工作提出了新的模型结构来高效的利用多level的特征来生成高解析的预测。具体而言,其利用low-level的视觉特征来细化high-level的语义特征。
1/4的原因是因为ResNet18在输入4个Block之前已经下采样了4倍

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本课程适合具有一定深度学习基础,希望发展为深度学习之计算机视觉方向的算法工程师和研发人员的同学们。基于深度学习的计算机视觉是目前人工智能最活跃的领域,应用非常广泛,如人脸识别和无人驾驶中的机器视觉等。该领域的发展日新月异,网络模型和算法层出不穷。如何快速入门并达到可以从事研发的高度对新手和中级水平的学生而言面临不少的挑战。精心准备的本课程希望帮助大家尽快掌握基于深度学习的计算机视觉的基本原理、核心算法和当前的领先技术,从而有望成为深度学习之计算机视觉方向的算法工程师和研发人员。本课程系统全面地讲述基于深度学习的计算机视觉技术的原理并进行项目实践。课程涵盖计算机视觉的七大任务,包括图像分类、目标检测、图像分割(语义分割、实例分割、全景分割)、人脸识别、图像描述、图像检索、图像生成(利用生成对抗网络)。本课程注重原理和实践相结合,逐篇深入解读经典和前沿论文70余篇,图文并茂破译算法难点, 使用思维导图梳理技术要点。项目实践使用Keras框架(后端为Tensorflow),学员可快速上手。通过本课程的学习,学员可把握基于深度学习的计算机视觉的技术发展脉络,掌握相关技术原理和算法,有助于开展该领域的研究与开发实战工作。另外,深度学习之计算机视觉方向的知识结构及学习建议请参见本人CSDN博客。本课程提供课程资料的课件PPT(pdf格式)和项目实践代码,方便学员学习和复习。本课程分为上下两部分,其中上部包含课程的前五章(课程介绍、深度学习基础、图像分类、目标检测、图像分割),下部包含课程的后四章(人脸识别、图像描述、图像检索、图像生成)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值