反卷积

CNN中的卷积和反卷积

做~自己de王妃 提交于 2020-03-11 13:14:46
原文链接:https://blog.csdn.net/sinat_29957455/article/details/85558870 前言 卷积 和 反卷积 在CNN中经常被用到,想要彻底搞懂并不是那么容易。本文主要分三个部分来讲解卷积和反卷积,分别包括 概念 、 工作过程 、 代码示例 ,其中代码实践部分主结合TensorFlow框架来进行实践。给大家介绍一个 卷积过程的可视化工具 ,这个项目是github上面的一个开源项目。 卷积和反卷积 卷积(Convolutional) :卷积在图像处理领域被广泛的应用,像 滤波 、 边缘检测 、 图片锐化 等,都是通过不同的卷积核来实现的。在卷积神经网络中通过卷积操作可以提取图片中的特征,低层的卷积层可以提取到图片的一些 边缘 、 线条 、 角 等特征,高层的卷积能够从低层的卷积层中学到更复杂的特征,从而实现到图片的分类和识别。 反卷积 :反卷积也被称为 转置卷积 ,反卷积其实就是卷积的逆过程。大家可能对于反卷积的认识有一个误区,以为通过反卷积就可以获取到经过卷积之前的图片, 实际上通过反卷积操作并不能还原出卷积之前的图片,只能还原出卷积之前图片的尺寸 。那么到底反卷积有什么作用呢? 通过反卷积可以用来可视化卷积的过程,反卷积在GAN等领域中有着大量的应用。 工作过程 卷积 上图展示了一个卷积的过程, 其中蓝色的图片(4*4

反卷积与棋盘效应(Checkerboard Artifacts)

蹲街弑〆低调 提交于 2020-03-01 10:58:31
当我们仔细观察由神经网络生成的图像时,我们经常会看到一种奇怪的棋盘图案。在某些情况下,它比其他情况更明显,但最近的大部分模型都表现出这种行为。 当我们要用到深度学习来生成图像的时候,往往是基于一个低分辨率且具有高维的特征图。我们通常使用 反卷积 操作来完成此操作,但不幸的是,当卷积核大小不能被步长整除的时候,会出现棋盘现象 并且在二维图片上,情况会更加严重: 方法尝试1:现在,神经网络在创建图像时通常使用多层反卷积,从一系列较低分辨率的描述中迭代地构建较大的图像。虽然这些堆叠的去卷积可能会消除伪影,但它们通常会复合,从而在各种尺度上产生伪影。 方法尝试2:在反卷积后面,再接一个步长为1的卷积,效果有限 方法尝试3:调整卷积核的权重,适当加大重叠部分少的权重,虽然理论有效,但在实际操作中,不仅有困难也会减弱模型的表达力 方法尝试4:使得卷积核大小不能被步长整除,但卷积核权重的学习不均匀也会导致伪影现象(下图为步长为2,核大小为4所产生的现象) 正确的方法尝试5:调整图像大小(使用 最近邻插值 或 双线性插值 ),然后执行卷积操作。这似乎是一种自然的方法,大致相似的方法在图像超分辨率方面表现良好 方法对比实验,效果最好的是方法5 参考资料: https://distill.pub/2016/deconv-checkerboard/ 当我们仔细观察由神经网络生成的图像时

反卷积后图像大小

孤街浪徒 提交于 2020-02-02 07:23:42
我们知道: 卷积后图片大小的计算: out=(in-k+2×p)/s+1 其中,out是输出图像的大小,in是输入图像的大小,k是卷积核的大小,p是padding,填充大小,s是stride,步长。 反卷积是卷积的逆运算,所以: 反卷积后图片大小的计算: out=(in-1)×s+k-2×p 其中,out是输出图像的大小,in是输入图像的大小,s是步长,k是卷积核大小,p是padding,填充大小。 来源: CSDN 作者: Ibelievesunshine 链接: https://blog.csdn.net/Ibelievesunshine/article/details/104131252

『cs231n』卷积神经网络的可视化与进一步理解

拈花ヽ惹草 提交于 2020-01-29 15:45:58
cs231n的第18课理解起来很吃力,听后又查了一些资料才算是勉强弄懂,所以这里贴一篇博文(根据自己理解有所修改)和原论文的翻译加深加深理解,其中原论文翻译比博文更容易理解,但是太长,而博文是业者而非学者所著,看着也更舒服一点。 另,本文涉及了反向传播的backpropagation算法,知乎上有个回答很不错,备份到文章里了,为支持原作者,这里给出知乎 原文连接 可视化理解卷积神经网络 这张PPT是本节课的核心,下面我来说说这张图。 可视化神经网络的思想就是构建一个逆向的卷积神经网络,但是不包括训练过程,使用原网络各个层的feature map当作输入,逆向生成像素级图片(各个层对应的具体逆操作实现方法下面的文献中有介绍),目的是研究每一层中每一个神经元对应的(或者说学习到的)特征到底是什么样的。 我们首先获取某一层的feature map,然后将除了想要研究的那个神经元之外所有神经元置零,作为返卷积网络的输入(a图所示),经过逆向重构后,得到的图片就反映了这个神经元学习到的特征。 Relu层的逆处理得到了特殊关注,向前传播中,小于零的神经元直接置零(b1),如果按照计算梯度的反向传播算法( backpropagation )的话那么应该在向前传播时置零的位置仍然置零(b2),而原论文按照deconvent的方法,相当于把Relu对称化,直接对反向的特征图进行了标准的Relu

FCN理解

半城伤御伤魂 提交于 2020-01-23 03:23:48
原文链接: https://blog.csdn.net/qq_37274615/article/details/73251503 【原文图】 “Fully convolutional networks for semantic segmentation.” 上图中,32x即为扩大32倍。 Pool5扩大32倍就可以得到原来图像大小了。 Pool5扩大2倍与Pool4融合得到,再扩大16倍也可以得到原来图像大小了。 扩大2倍与Pool3融合再扩大8倍也可以得到原来图像大小了。 以下内容来自 http://blog.csdn.net/shenxiaolu1984/article/details/51348149 核心思想 本文包含了当下CNN的三个思潮 - 不含全连接层(fc)的 全卷积(fully conv)网络 。可适应任意尺寸输入。 - 增 大数据 尺寸的 反卷积(deconv)层 。能够输出精细的结果。 - 结合不同深度层结果的 跳级(skip)结构 。同时确保鲁棒性和精确性。 网络结构 网络结构如下。输入可为任意尺寸图像彩色图像;输出与输入尺寸相同,深度为:20类目标+背景=21。 全卷积-提取特征 虚线上半部分为全卷积网络。(蓝:卷积,绿:max pooling)。对于不同尺寸的输入图像,各层数据的尺寸(height,width)相应变化,深度(channel)不变。

[PyTorch]PyTorch中反卷积的用法

ぃ、小莉子 提交于 2019-12-26 01:30:11
文章来源: https://www.jianshu.com/p/01577e86e506 pytorch中的 2D 卷积层 和 2D 反卷积层 函数分别如下: class torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, groups=1, bias=True) class torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, bias=True) 我不禁有疑问: 问题1: 两个函数的参数为什么几乎一致呢? 问题2: 反卷积层中的 output_padding是什么意思呢? 问题3: 反卷积层如何计算input和output的形状关系呢? 看了中文文档后,我得不出答案,看了英文文档,才弄明白了。花费了一个下午的时间去研究这个问题,值得用此文纪录一下。 我们知道,在卷积层中,输入输出的形状关系为: o = [ (i + 2p - k)/s ] +1 (1) 其中: O : 为 output size i: 为 input size p: 为 padding size k: 为kernel size s: 为 stride size

上采样方法、反卷积、空洞卷积

我的未来我决定 提交于 2019-12-14 11:31:34
上采样方法总结 卷积、反卷积、空洞卷积动画理解 unpooling 插值:线性插值、双线性插值、临近插值 反卷积(转置卷积):对 原始特征图 周边padding或者元素之间padding然后在进行卷积。目的是为了上采样。 空洞卷积:对 卷积核 padding在进行卷积。目的是为了不使用pooling的同时增大感受野。 来源: CSDN 作者: sunlanchang 链接: https://blog.csdn.net/sunlanchang/article/details/103473939

反卷积(Deconvolution)、上采样(UnSampling)与上池化(UnPooling)

无人久伴 提交于 2019-12-12 08:28:06
文章目录 前言 1. 图示理解 2. 概念详解 2.1 Upsampling(上采样) 2.2 Unpooling(上池化) 2.3 Deconvolution(反卷积) 2.4 FCN(U-net)中的low-level和high-level特征的融合 2.5 上采样/下采样 3.参考文献 前言 在看图像语义分割方面的论文时,发现在网络解码器结构中有的时候使用反卷积、而有的时候使用 unpooling 或或者 unsampling ,查了下资料,发现三者还是有不同的。这里记录一下。 1. 图示理解 使用三张图进行说明: 图(a)表示 UnPooling 的过程,特点是在 Maxpooling 的时候保留最大值的位置信息,之后在 unPooling 阶段使用该信息扩充 Feature Map ,除最大值位置以外,其余补0。与之相对的是图(b),两者的区别在于 UnSampling 阶段没有使用 MaxPooling 时的位置信息,而是直接将内容复制来扩充 Feature Map 。从图中即可看到两者结果的不同。图©为反卷积的过程,反卷积是卷积的逆过程,又称作转置卷积。最大的区别在于反卷积过程是有参数要进行学习的(类似卷积过程),理论是反卷积可以实现 UnPooling 和 unSampling ,只要卷积核的参数设置的合理。 反卷积与UnPooling的可视化

Visualizing and Understanding Convolutional Networks 论文学习

坚强是说给别人听的谎言 提交于 2019-12-11 18:50:42
这几天看了这篇论文,学习记录一下。有问题的地方请指正~ 论文作者:Matthew D. Zeiler, Rob Fergus (美国纽约大学) 论文会议:ECCV2014 论文链接: https://arxiv.org/pdf/1311.2901v3.pdf 摘要: 论文的背景是在2012年AlexNet (Krizhevsky) 在ImageNet竞赛上展现了突出的图像分类能力后,对于该网络为什么能够表现得如此突出、以及如何对网络做进一步提升的认识却很少。论文提出了一种全新的可视化技术,能够看到卷积神经网络中间层的特征。可以利用该可视化技术,寻找更优的网络模型。同时论文还研究了模型在其他数据集上的泛化性。 1.引入 从2012年AlexNet出世到现在,有很多科学家研发了许多在图像处理问题上表现杰出的网络模型,但是对模型的内部操作和表现的探究却很少,例如,为什么网络模型能表现得这么好?从科学的角度说,这是令人不满意的,科学的研究需要能对技术的内部工作原理做出解释。 因此,文章提出了一种可视化技术——多层反卷积神经网络(deconvnet),该反卷积技术能够展示模型每一层中的由输入激发的特征图,同时能够观测在训练过程中特征的变迁(evolution,这个词用的很有灵魂),并诊断模型的潜在问题。此外,文章还通过遮盖部分输入图像,然后对分类器的输出进行敏感性分析

深度学习暑期学校(加拿大、蒙特利尔,2016.8.1-7)

半世苍凉 提交于 2019-12-08 00:21:00
learning to see.pdf @lutingting 2016-11-04 16:15 字数 10899 阅读 4087 SIFT特征提取及匹配 数字图像处理 图像特征提取 SIFT特征提取及匹配 1.SIFT(Scale-invariant feature transform)算子的核心思想 2.什么是尺度空间呢? 2.1 一篇百度文库的文章关于尺度空间的分析 例子1 例子2 现实生活中的例子 2.2 SIFT中的尺度空间的概念 3.SIFT特征提取 3.1 尺度空间极值检测 3.1.1 尺度空间的建立(高斯金字塔的建立) 3.1.2 图像差分高斯金字塔(DoG)的建立 3.1.3 尺度空间中特征点的检测(DoG中极值点的检测) 3.2 关键点位置及尺度确定 3.3 关键点方向确定 3.4 特征向量生成 4.SIFT特征的匹配 5.下面是一些参考程序 5.1 5.2 1.SIFT(Scale-invariant feature transform)算子的核心思想 利用不同尺度的高斯核函数对图像进行平滑,即构造图像的尺度空间 比较不同尺度平滑后的图像差别,在某局部范围内,差别最大或者差别最小的像素点就是特征明显的点 由于SIFT特征的检测方式,使得它具有: 尺度不变性:在尺度空间内进行的特征点检测 2.什么是尺度空间呢? 2.1 一篇百度文库的文章关于尺度空间的分析