Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >卷积神经网络CNN(1)——图像卷积与反卷积(后卷积,转置卷积)

卷积神经网络CNN(1)——图像卷积与反卷积(后卷积,转置卷积)

作者头像
全栈程序员站长
发布于 2022-06-24 07:16:22
发布于 2022-06-24 07:16:22
2.7K0
举报

大家好,又见面了,我是你们的朋友全栈君。

1.前言

传统的CNN网络只能给出图像的LABLE,但是在很多情况下需要对识别的物体进行分割实现end to end,然后FCN出现了,给物体分割提供了一个非常重要的解决思路,其核心就是卷积与反卷积,所以这里就详细解释卷积与反卷积。

对于1维的卷积,公式(离散)与计算过程(连续)如下,要记住的是其中一个函数(原函数或者卷积函数)在卷积前要翻转180度

图1

对于离散卷积,f的大小是n1,g的大小是n2,卷积后的大小是n1+n2-1

2.图像卷积

图2

同样地,卷积的时候需要对卷积核进行180的旋转,同时卷积核中心与需计算的图像像素对齐,输出结构为中心对齐像素的一个新的像素值,计算例子如下

图3

这样计算出左上角(即第一行第一列)像素的卷积后像素值。

给出一个更直观的例子,从左到右看,原像素经过卷积由1变成-8。

图4

在信号处理上,反转180度称作卷积,直接滑动计算称作自相关,在大部分深度学习框架上都没有反转180度的操作。

通过滑动卷积核,就可以得到整张图片的卷积结果,

图5

到了这里,大致可以明白图像卷积。但是我们可以看出,通过图像卷积后,新图像的大小跟原来一样,或者变小。图2计算后图像大小不变,如图5卷积后图像变小是因为没有对所用像素进行卷积计算。但是1维的卷积结果不是变大了吗? 下面对其解释。

在matlb中对2维卷积的计算分为了3类,1.full 2.same 3. valid 参考:https://cn.mathworks.com/help/matlab/ref/conv2.html?requestedDomain=www.mathworks.com

图2对应的卷积就是就是所谓的same,图5对应的就是valid。那么full又是什么呢?如下图

图6

图6中蓝色为原图像,白色为对应卷积所增加的padding,通常全部为0,绿色是卷积后图片。图6的卷积的滑动是从卷积核右下角与图片左上角重叠开始进行卷积,滑动步长为1,卷积核的中心元素对应卷积后图像的像素点。可以看到卷积后的图像是4X4,比原图2X2大了,我们还记1维卷积大小是n1+n2-1,这里原图是2X2,卷积核3X3,卷积后结果是4X4,与一维完全对应起来了。其实这才是完整的卷积计算,其他比它小的卷积结果都是省去了部分像素的卷积。下面是WIKI对应图像卷积后多出部分的解释:

Kernel convolution usually requires values from pixels outside of the image boundaries. There are a variety of methods for handling image edges.意思就是多出来的部分根据实际情况可以有不同的处理方法。(其实这里的full卷积就是后面要说的反卷积)

这里,我们可以总结出full,same,valid三种卷积后图像大小的计算公式:

1.full: 滑动步长为1,图片大小为N1xN1,卷积核大小为N2xN2,卷积后图像大小:N1+N2-1 x N1+N2-1

如图6, 滑动步长为1,图片大小为2×2,卷积核大小为3×3,卷积后图像大小:4×4

2.same: 滑动步长为1,图片大小为N1xN1,卷积核大小为N2xN2,卷积后图像大小:N1xN1

3.valid:滑动步长为S,图片大小为N1xN1,卷积核大小为N2xN2,卷积后图像大小:(N1-N2)/S+1 x (N1-N2)/S+1

如图5,滑动步长为1,图片大小为5×5,卷积核大小为3×3,卷积后图像大小:3×3

3.反卷积(后卷积,转置卷积)

这里提到的反卷积跟1维信号处理的反卷积计算是很不一样的,FCN作者称为backwards convolution,有人称Deconvolution layer is a very unfortunate name and should rather be called a transposed convolutional layer. 我们可以知道,在CNN中有con layer与pool layer,con layer进行对图像卷积提取特征,pool layer对图像缩小一半筛选重要特征,对于经典的图像识别CNN网络,如IMAGENET,最后输出结果是1X1X1000,1000是类别种类,1×1得到的是。FCN作者,或者后来对end to end研究的人员,就是对最终1×1的结果使用反卷积(事实上FCN作者最后的输出不是1X1,是图片大小的32分之一,但不影响反卷积的使用)。

这里图像的反卷积与图6的full卷积原理是一样的,使用了这一种反卷积手段使得图像可以变大,FCN作者使用的方法是这里所说反卷积的一种变体,这样就可以获得相应的像素值,图像可以实现end to end。

图7

这里说另外一种反卷积做法,假设原图是3X3,首先使用上采样让图像变成7X7,可以看到图像多了很多空白的像素点。使用一个3X3的卷积核对图像进行滑动步长为1的valid卷积,得到一个5X5的图像,我们知道的是使用上采样扩大图片,使用反卷积填充图像内容,使得图像内容变得丰富,这也是CNN输出end to end结果的一种方法。韩国作者Hyeonwoo Noh使用VGG16层CNN网络后面加上对称的16层反卷积与上采样网络实现end to end 输出,其不同层上采样与反卷积变化效果如下,

图8

到这里就把图像卷积与反卷积解释完成,如有不妥,请学者们指证。 补充一个资料: 图6与图7出处,https://github.com/vdumoulin/conv_arithmetic

————新增反卷积过程解释—————- 经过上面的解释与推导,对卷积有基本的了解,但是在图像上的deconvolution究竟是怎么一回事,可能还是不能够很好的理解,因此这里再对这个过程解释一下。 目前使用得最多的deconvolution有2种,上文都已经介绍。 方法1:full卷积, 完整的卷积可以使得原来的定义域变大 方法2:记录pooling index,然后扩大空间,再用卷积填充

图像的deconvolution过程如下,

输入:2×2, 卷积核:4×4, 滑动步长:3, 输出:7×7 即输入为2×2的图片经过4×4的卷积核进行步长为3的反卷积的过程 1.输入图片每个像素进行一次full卷积,根据full卷积大小计算可以知道每个像素的卷积后大小为 1+4-1=4, 即4×4大小的特征图,输入有4个像素所以4个4×4的特征图 2.将4个特征图进行步长为3的fusion(即相加); 例如红色的特征图仍然是在原来输入位置(左上角),绿色还是在原来的位置(右上角),步长为3是指每隔3个像素进行fusion,重叠部分进行相加,即输出的第1行第4列是由红色特阵图的第一行第四列与绿色特征图的第一行第一列相加得到,其他如此类推。

可以看出翻卷积的大小是由卷积核大小与滑动步长决定, in是输入大小, k是卷积核大小, s是滑动步长, out是输出大小 得到 out = (in – 1) * s + k 上图过程就是, (2 – 1) * 3 + 4 = 7

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151952.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
全卷积网络fcn详解_全卷积神经网络原理
FCN是深度学习应用在图像分割的代表作, 是一种端到端(end to end)的图像分割方法, 让网络做像素级别的预测直接得出label map, 下面我们来看看FCN是如何做到像素级别的分类的
全栈程序员站长
2022/11/02
2.4K0
全卷积网络fcn详解_全卷积神经网络原理
FCN语义分割_卷积神经网络可用于分割吗
CNN做图像分类甚至做目标检测的效果已经被证明并广泛应用,图像语义分割本质上也可以认为是稠密的目标识别(需要预测每个像素点的类别)。
全栈程序员站长
2022/09/25
3370
FCN语义分割_卷积神经网络可用于分割吗
fcn全卷积神经网络搭建_区域卷积神经网络
全卷积网络(Fully Convolutional Networks,FCN)是Jonathan Long等人于2015年在Fully Convolutional Networks for Semantic Segmentation一文中提出的用于图像语义分割的一种框架,是深度学习用于语义分割领域的开山之作。FCN将传统CNN后面的全连接层换成了卷积层,这样网络的输出将是热力图而非类别;同时,为解决卷积和池化导致图像尺寸的变小,使用上采样方式对图像尺寸进行恢复。
全栈程序员站长
2022/11/09
9510
fcn全卷积神经网络搭建_区域卷积神经网络
深度学习500问——Chapter09:图像分割(1)
图像分割是预测图像中每一个像素所属的类别或者物体。基于深度学习的图像分割算法主要分为两类:
JOYCE_Leo16
2024/05/24
3170
深度学习500问——Chapter09:图像分割(1)
全卷积神经网络 fcn 学习笔记
本文介绍了FCN全卷积网络在语义分割中的重要性,并对其进行了详细的技术分析。FCN以全卷积网络为基础,通过切片和转置卷积操作实现像素级别的语义分割。在实践中,FCN表现出良好的性能,比其他语义分割方法具有更高的准确性和鲁棒性。同时,FCN也可以广泛应用于其他领域,如医学图像处理、自然场景图像处理等。
MelonTeam
2018/01/04
2.8K0
全卷积神经网络 fcn 学习笔记
计算机视觉:7.1 卷积神经网络
7.1 卷积操作 图片卷积 图像卷积就是卷积核在图像上按行滑动遍历像素时不断地相乘求和的过程。 原图 Image:
DioxideCN
2022/08/05
9350
计算机视觉:7.1 卷积神经网络
CNN卷积神经网络及图像识别
神经网络(neual networks)是人工智能研究领域的一部分,当前最流行的神经网络是深度卷积神经网络(deep convolutional neural networks, CNNs),虽然卷积网络也存在浅层结构,但是因为准确度和表现力等原因很少使用。目前提到CNNs和卷积神经网络,学术界和工业界不再进行特意区分,一般都指深层结构的卷积神经网络,层数从”几层“到”几十上百“不定。
全栈程序员站长
2022/09/06
6390
CNN卷积神经网络及图像识别
[CNN] 卷积、反卷积、池化、反池化「建议收藏」
之前一直太忙,没时间整理,这两天抽出点时间整理一下卷积、反卷积、池化、反池化的内容,也希望自己对一些比较模糊的地方可以理解的更加清晰。
全栈程序员站长
2022/08/31
3.8K0
[CNN] 卷积、反卷积、池化、反池化「建议收藏」
卷积神经网络(CNN)
        CNN,即卷积神经网络,主要用于图像识别,分类。这篇卷积神经网络是前面介绍的多层神经网络的进一步深入,它将深度学习的思想引入到了神经网络当中,通过卷积运算来由浅入深的提取图像的不同层次的特征,而利用神经网络的训练过程让整个网络自动调节卷积核的参数,从而无监督的产生了最适合的分类特征。
Flaneur
2020/03/25
10.1K0
深入理解神经网络中的反(转置)卷积
本文主要是把之前在知乎上的回答[1,2]重新整理了一下并且加了一些新的内容。对于像素级的任务,在decoder部分都会用一些常规操作去逐步恢复feature map的空间大小,而常用的模块有反卷积[3,5]、上采样+卷积和subpixel[4]操作等等。
BBuf
2020/04/15
1.8K0
深入理解神经网络中的反(转置)卷积
认识卷积神经网络
卷积神经网络(Convolutional Neural Networks,简称CNN)是一种特殊类型的神经网络,特别适合于处理具有网格结构的数据,如图像和视频。CNN的设计灵感来源于生物视觉系统,特别是大脑视觉皮层对视觉信息的处理方式。
@小森
2024/05/13
2760
认识卷积神经网络
深度学习500问——Chapter05: 卷积神经网络(CNN)(3)
卷积的时候需要对卷积核进行180的旋转,同时卷积核中心与需计算的图像像素对齐,输出结构为中心对齐像素的一个新的像素值,计算例子如下:
JOYCE_Leo16
2024/04/02
2810
深度学习500问——Chapter05: 卷积神经网络(CNN)(3)
大话卷积神经网络CNN(干货满满)
本文创作的主要目的,是对时下最火最流行的深度学习算法的基础知识做一个简介,本人看过许多教程,感觉对小白不是特别友好,尤其是在踩过好多坑之后,于是便有了写这篇文章的想法。
我是管小亮
2020/04/20
9190
CNN卷积神经网络模型搭建
前段时间尝试使用深度学习来识别评测过程中的图片,以减少人力成本。目前是在深度学习框架Keras(后端使用TensorFlow)下搭建了一个CNN卷积神经网络模型,下面就如何搭建一个最简单的数字图像识别模型做下介绍。
用户5521279
2019/07/10
1.6K0
CNN卷积神经网络模型搭建
【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理
本文介绍了CNN的基本原理、卷积神经网络、池化层、激活函数、正则化、损失函数、优化算法、训练技巧、网络结构选择、调参方法、以及总结了一些关于手写数字识别的常见问题和解决方案。
Charlotte77
2018/01/09
2.6K0
【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理
详细介绍卷积神经网络(CNN)的原理 !!
卷积神经网络(Convolutional Neural Network,CNN)是一种在计算机视觉领域取得了巨大成功的深度学习模型。它们的设计灵感来自于生物学中的视觉系统,旨在模拟人类视觉处理的方式。在过去几年中,CNN已经在图像识别、目标检测、图像生成和许多其他领域取得了显著的进展,成为了计算机视觉和深度学习研究的重要组成部分。
JOYCE_Leo16
2024/03/19
4890
详细介绍卷积神经网络(CNN)的原理 !!
转置卷积的应用
矩阵的转置在信息处理中起到了重要的作用。在计算机科学领域,矩阵常用于表示图像、音频和视频等多媒体数据。当我们需要对这些数据进行处理时,常常需要进行矩阵转置操作。例如,在图像处理中,我们往往需要将图像矩阵进行转置来实现旋转、镜像等效果。在音频处理中,矩阵转置可以用于音频信号的变换和滤波等操作。因此,矩阵的转置在信息处理中具有重要的现实意义 知阵的转置在数据分析中也非常常见。在统计学和机器学习领域,短阵常用于表示样本数据和特征向量。通过对短阵进行转置,我们可以改变数据的排列方式,使得不同的变量或属性可以更好地进行比较和分析。例如,在多元统计分析中,矩阵的转置可以用于求解特征值和特征向量,进而得到数据的主成分和相关性。此外,在数据挖掘和预测分析中,短阵的转置也可以用于特征选择和模型建立等关键步骤。因此,短阵的转置在数据分析中具有重要的现实意义。 矩阵的转置在计算机图形学中也有看广泛的应用。在三维图形的表示和变换中,短阵常用于描述物体的位置、旋转和缩放等变换。通过对矩阵进行转置,我们可以方便地实现不同坐标系之间的转换和变换。例如,在计算机动画中,矩阵的转置可以用于实现物体的运动和变形效果。
zhangjiqun
2024/12/14
2780
转置卷积的应用
卷积神经网络
神经网络(neual networks)是人工智能研究领域的一部分,当前最流行的神经网络是深度卷积神经网络(deep convolutional neural networks, CNNs),虽然卷积网络也存在浅层结构,但是因为准确度和表现力等原因很少使用。目前提到CNNs和卷积神经网络,学术界和工业界不再进行特意区分,一般都指深层结构的卷积神经网络,层数从”几层“到”几十上百“不定。
大龄老码农-昊然
2021/05/13
8860
卷积神经网络
【阿星的学习笔记(2)】使用Tensorflow实作卷积神经网络(CNN)
Lady之前已经向各位介绍一个朋友阿星(Ashing)以及他的机器学习读书笔记! 阿星也是我们手撕深度学习算法微信群的热心群友!接下来,Lady我也会陆续分享这个微信群里大家讨论的话题。 卷积神经网络(Convolutional neural network,CNN),是一多层的神经网络架构,是以类神经网络实现的深度学习,在许多实际应用上取得优异的成绩,尤其在影像对象识别的领域上表现优异。 传统的多层感知器(Multilayer Perceptron,MLP)可以成功的用来做影像识别,如之前所介绍,可以
GPUS Lady
2018/04/02
6930
【阿星的学习笔记(2)】使用Tensorflow实作卷积神经网络(CNN)
【深度学习】5:CNN卷积神经网络原理
前言:先坦白的说,深度神经网络的学习在一开始对我造成的困扰还是很大的,我也是通过不断地看相关的视频资料、文献讲解尝试去理解记忆。毕竟这些内容大多都是不可查的,我们看到的都只是输入输出的东西,里面的内部运作以及工作原理,都需要沉心静思。
全栈程序员站长
2022/09/13
8350
【深度学习】5:CNN卷积神经网络原理
推荐阅读
相关推荐
全卷积网络fcn详解_全卷积神经网络原理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档