卷积原来这么简单

简单说说卷积的作用 卷积是一个耳熟能详的的词,自从我开始学习信号与系统以后,就一直没有离开过它,不过只是把它当成一个运算符号来看待。 不过闲着的时候,也会去想,卷积到底有什么作用。 提供一种方便的频域处理方式 时域卷积频域相乘 这条法则想必大家都知道,作用非常大,可以轻松的对信号的频域做处理 简单的应用就是频域滤波 F(x)代表输入信号,H(x)代表滤波函数,g(x)代表滤波(输出)信号。 转换... 阅读详情

识别一幅图片是包含有字母"X"还是字母"O"?

为了帮助指导你理解卷积神经网络,我们讲采用一个非常简化的例子:确定一幅图像是包含有"X"还是"O"?

在这里插入图片描述

这个例子足够说明CNN背后的原理,同时它足够简单,能够避免陷入不必要的细节。在CNN中有这样一个问题,就是每次给你一张图,你需要判断它是否含有"X"或者"O"。并且假设必须两者选其一,不是"X"就是"O"。理想的情况就像下面这个样子:

在这里插入图片描述

对于计算机来说,只要图像稍稍有一点变化,不是标准的,那么要解决这个问题还是不是那么容易的:

在这里插入图片描述

计算机要解决上面这个问题,一个比较天真的做法就是先保存一张"X"和"O"的标准图像(就像前面给出的例子),然后将其他的新给出的图像来和这两张标准图像进行对比,看看到底和哪一张图更匹配,就判断为哪个字母。但是这么做的话,其实是非常不可靠的,因为计算机还是比较死板的。在计算机的“视觉”中,一幅图看起来就像是一个二维的像素数组(可以想象成一个棋盘),每一个位置对应一个数字。在我们这个例子当中,像素值"1"代表白色,像素值"-1"代表黑色。

在这里插入图片描述

当比较两幅图的时候,如果有任何一个像素值不匹配,那么这两幅图就不匹配,至少对于计算机来说是这样的。
对于这个例子,计算机认为上述两幅图中的白色像素除了中间的3*3的小方格里面是相同的,其他四个角上都不同:
在这里插入图片描述
因此,从表面上看,计算机判别右边那幅图不是"X",两幅图不同,得出结论:

在这里插入图片描述

但是这么做,显得太不合理了。理想的情况下,我们希望,对于那些仅仅只是做了一些像平移,缩放,旋转,微变形等简单变换的图像,计算机仍然能够识别出图中的"X"和"O"。就像下面这些情况,我们希望计算机依然能够很快并且很准的识别出来:

、在这里插入图片描述
这也就是CNN出现所要解决的问题。

Features

在这里插入图片描述

对于CNN来说,它是一块一块地来进行比对。它拿来比对的这个“小块”我们称之为Features(特征)。在两幅图中大致相同的位置找到一些粗糙的特征进行匹配,CNN能够更好的看到两幅图的相似性,相比起传统的整幅图逐一比对的方法

每一个feature就像是一个小图(就是一个比较小的有值的二维数组)。不同的Feature匹配图像中不同的特征。在字母"X"的例子中,那些由对角线和交叉线组成的features基本上能够识别出大多数"X"所具有的重要特征。

在这里插入图片描述

这些features很有可能就是匹配任何含有字母"X"的图中字母X的四个角和它的中心。那么具体到底是怎么匹配的呢?如下
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

到这里是不是有了一点头目呢。但其实这只是第一步,你知道了这些Features是怎么在原图上面进行匹配的。但是你还不知道在这里面究竟进行的是怎样的数学计算,比如这个下面3*3的小块到底干了什么?

在这里插入图片描述

接下来就跟进介绍里面的数学操作,也就是我们常说的“卷积”操作。

卷积(Convolution)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
每个像素 相乘 然后相加。

在这里插入图片描述

当给你一张新的图时,CNN并不能准确地知道这些features到底要匹配原图的哪些部分,所以它会在原图中每一个可能的位置进行尝试。这样在原始整幅图上每一个位置进行匹配计算,我们相当于把这个feature变成了一个过滤器。这个我们用来匹配的过程就被称为卷积操作,这也就是卷积神经网络名字的由来。

这个卷积操作背后的数学知识其实非常的简单。要计算一个feature和其在原图上对应的某一小块的结果,只需要简单地将两个小块内对应位置的像素值进行乘法运算,然后将整个小块内乘法运算的结果累加起来,最后再除以小块内像素点总个数即可。如果两个像素点都是白色(也就是值均为1),那么11 = 1,如果均为黑色,那么(-1)(-1) = 1。不管哪种情况,每一对能够匹配上的像素,其相乘结果为1。类似地,任何不匹配的像素相乘结果为-1。如果一个feature(比如nn)内部所有的像素都和原图中对应一小块(nn)匹配上了,那么它们对应像素值相乘再累加就等于n2,然后除以像素点总个数n2,结果就是1。同理,如果每一个像素都不匹配,那么结果就是-1。具体过程如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

对于中间部分,也是一样的操作:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

最后整张图算完,大概就像下面这个样子:

在这里插入图片描述
然后换用其他feature进行同样的操作,最后得到的结果就是这样了:

在这里插入图片描述

为了完成我们的卷积,我们不断地重复着上述过程,将feature和图中每一块进行卷积操作。最后通过每一个feature的卷积操作,我们会得到一个新的二维数组。这也可以理解为对原始图像进行过滤的结果,我们称之为feature map,它是每一个feature从原始图像中提取出来的“特征”。其中的值,越接近为1表示对应位置和feature的匹配越完整,越是接近-1,表示对应位置和feature的反面匹配越完整,而值接近0的表示对应位置没有任何匹配或者说没有什么关联。

在这里插入图片描述
这样我们的原始图,经过不同feature的卷积操作就变成了一系列的feature map。我们可以很方便,直观地将这整个操作视为一个单独的处理过程。在CNN中,我们称之为卷积层(convolution layer),这样你可能很快就会想到后面肯定还有其他的layer。没错,后面会提到。我们可以将卷积层看成下面这个样子在这里插入图片描述

因此可想而知,CNN其实做的操作也没什么复杂的。但是尽管我们能够以这一点篇幅就描述了CNN的工作,其内部的加法,乘法和除法操作的次数其实会增加地很快。从数学的角度来说,它们会随着图像的大小,每一个filter的大小和filter的数目呈线性增长。由于有这么多因素的影响,很容易使得这个问题的计算量变得相当的庞大,这也难怪很多微处理器制造商现在都在生产制造专业的芯片来跟上CNN计算的需求。

卷积神经网络~简单的卷积网络 简单卷积网络示例 一个卷积网络的例子,假设我们有一张图,我们要识别它是否是一张猫图。 〇假设这张图是39×39×3的图。 则,nH^[0] = nW^[0] = 39,即图片的高度和宽度都是39。nC^[0] = 3。 ①假设第一层我们使用3×3的过滤器来提取特征,则f^[1] = 3,s^[1] = 1 , p^[1] = 0,并且有10个过滤器。则第二层的卷积输入是37×37×10的矩阵。37为[(n+2p-f)/s+1]的值,而10为第一层到第二层之间过滤器的个数。 则,第一层的标记为,nH^[1 阅读详情

相关推荐

深度学习之简单卷积神经网络示例

*单层卷积网络 *简单卷积网络示例 *池化层(Pooling layers) *卷积神经网络示例 *为什么使用卷积? *卷积神经网络与计算机视觉 一、单层卷积网络 卷积神经网络参数计算: 二、简单卷积网络示例 简单卷积网络示例(第一卷积层): 简单卷积网络示例(第二卷积层): 简单卷积网络示例(第三卷积层): 简单卷积网络示例(输出层): 简单卷积网络完整结构: 三、池化层(Poo...

lml77的博客 3113

卷积神经网络(CNN)入门常见问题解答

目录 什么是神经元? 激活函数的作用? 什么是神经网络? CNN怎么进行识别? 计算机如何识别图像? CNN如何更准确人性化的对比图像? 什么是卷积操作? 感谢作者: CNN笔记:通俗理解卷积神经网络_v_JULY_v的博客-优快云博客_卷积神经网络通俗理解 什么是神经元? 神经网络由大量的神经元相互连接而成。每个神经元接受线性组合的输入后,最开始只是简单的线性加权,后来给每个神经元加上了非线性的激活函数,从而进行非线性变换后输出。每两个神经元之间的连接代表加权值,称...

CV在读 2955

Java实现卷积神经网络(CNN)

用java实现卷积神经网络,平台是eclipse,如何用eclipse导入可以参考http://blog.youkuaiyun.com/baidu_37107022/article/details/70209949,作者是http://www.cnblogs.com/fengfenggirl

如何通俗易懂地解释卷积?

这里感谢知乎的马同学 、张俊博等各位解释,获益很多,详细大家可以搜索知乎,这里只截取三种解释,并对三种解释的共同处做了一下自己的标注, 马同学 看图学数学,公众号:matongxue314 1264 人赞同了该回答 从数学上讲,卷积就是一种运算。 某种运算,能被定义出来,至少有以下

GoodShot的专栏 3715

别再为下载速度发愁了!手把手教你给qBittorrent/Transmission添加最新可用Tracker(附2024年实测地址清单)

本文提供2024年BT下载加速实战指南,详细解析Tracker工作原理与速度瓶颈,手把手教你为qBittorrent/Transmission添加最新可用Tracker,并附实测地址清单。通过优化配置和精选Tracker列表,显著提升下载速度和稳定性,解决连接延迟和peer数量限制问题。

weixin_28481133的博客 1259

数学文化赏析MOOC笔记【2023】

深圳大学UOOC课程《数学文化赏析》课程笔记

simplenthpower的博客 1750

别怕,“卷积“其实很简单

首先给大家讲一个关于卷积的小故事:小明是杭州某互联网大厂的员工,每天996十分辛苦,但小明最近爱上了打台球,经常不在工位。这天,小明的主管让小明改一个需求,小明却到楼下找产品部小丽打台球去了,被主管发现,他非常气愤,扇了小明一巴掌(注意,这就是输入信号,脉冲)。于是小明脸上会渐渐地(贱贱地)鼓起来一个包,小明的脸就是一个系统,而鼓起来的包就是小明的脸对巴掌的响应。好,这样就和信号系统建立起来意义对应的联系。

Machine Learning with Tutors 21万+

全网最详细 解决戴维南定理的详细推导

替代定理,戴维南定理详细证明

m0_52555753的博客 3万+

卷积例子

所谓两个函数的卷积,本质上就是先将一个函数翻转,然后进行滑动叠加。 在连续情况下,叠加指的是对两个函数的乘积求积分,在离散情况下就是加权求和,为简单起见就统一称为叠加。 整体看来是这么个过程: 翻转——>滑动——>叠加——>滑动——>叠加——>滑动——>叠加..... 多次滑动得到的一系列叠加值,构成了卷积函数。 卷积的...

casanava18的博客 4149

VS2015+Qt+OpenCV+open62541开发过程(05_VS2015中使用OPCUA open62541通过Kepware读写PLC数据)

此外还需要所需lib包:WS2_32.Lib(opcua通讯用到的库,opcua使用socket通讯,需使用此库),添加#pragma comment(lib,"ws2_32.lib") 语句,有的文章说需要添加ws2_32.lib文件或ws2_32.dll到项目资源中,貌似影响不大。2.在VS中选择x64平台会报错,选择x86平台可以用,应该是ws2_32.lib相关的库不支持64位,目前没有解决,继续后面的实验,看看用Qt后是否可以解决。6.VS中建立的变量,与读取的OPC点数据类型注意对应。

zzh17的博客 1862

Unity中基于SkinMeshRenderer的骨骼动画换装系统优化实践

本文深入探讨了Unity中基于SkinnedMeshRenderer的骨骼动画换装系统优化实践。针对换装卡顿、显示错误等常见问题,文章剖析了SkinnedMeshRenderer的核心数据原理,对比了“数据替换”与“实体替换”两种主流方案的性能差异,并详细阐述了通过骨骼字典缓存、对象池管理、材质合并与Draw Call优化等实战技巧,构建高性能、高稳定性的生产级换装系统。

weixin_29008055的博客 314

简单的几个基础卷积操作

【代码】简单的几个基础卷积操作。

weixin_57111012的博客 685

GIS分析-利用K-Means方法进行地震分析

通过“聚类”可以获得有关我们所拥有的数据的各种线索,这是数据挖掘技术之一。分析创建的组有助于决策过程。在这项研究中,我们将使用数据挖掘工具之一的K-Means方法研究安纳托利亚东部地区近100年发生的地震的空间分布,并试图获得有用的信息,以供未来的研究使用。我从局地震目录页面获得了研究所需的地震数据,并从获得了区域边界数据。

gis收藏家的博客 1569

简单卷积网络例子

nyist_yangguang的博客 336

简单VASP计算INCAR设置(结构优化OPT、静态自洽SCF、能带BAND、态密度DOS)

改变 K 点、NBANDS、晶胞、ENCUT、POTCAR、自旋或 SOC 后要检查兼容性。该参数不参与物理计算,因此不会改变总能量、受力、应力或最终结构。如果研究的是金属、磁性材料、表面、二维材料、分子、缺陷、DFT+U、杂化泛函或强自旋轨道耦合体系,部分参数必须调整。适合已经用 IBRION = 2 预优化、力较小、自由度较多的结构。在 IBRION = 1、2、3 中,它只是内部缩放因子。“不能修改”不是程序禁止修改,而是修改后会改变理论模型、数值精度或能量参考,使结果不能直接比较。

weixin_51420530的博客 124

银行统一监管报送系统

依据《银行业金融机构数据治理指引》,银行业金融机构应当建立适应监管数据报送工作需要的信息系统,实现流程控制的程序化,提高监管数据加工的自动化程度。银行业金融机构应当将监管数据纳入数据治理,建立工作机制和流程,确保监管数据报送工作有效组织开展,监管数据质量持续提升。银行通常要对接报送EAST5.0、1104、CRSS等近40个监管应用,涉及近1000张报表。表13-01是主要的监管报送应用、报送依据、报送规范、监管机构名称。

银行信息系统应用架构详解 4348

Verilog实现简单的卷积计算!分模块说明,简单易懂

Verilog实现简单的3*3卷积

Kirelley_的博客 2790

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

单层卷积网络/简单卷积网络示例

对于单个过滤器,两者进行卷积获得z=wa0,在利用广播机制加上偏置b1,再利用激活函数进行激活,将经过不同过滤器的输出组合到一起就得到了这层的输出,下层的输入,实际上整个流程还是和全连接相似。不管输入数据多大,使用几个过滤器就提取几个特征,需要的参数不变,避免了大数据需要多的参数,避免了过拟合。卷积网络实质上还是想通过输入得到想要的输出,离不开输入特征,权重,偏置,激活函数。nH,nw,nc分别是高,宽和通道数,f是卷积核长宽,s是步幅,p是填充。在卷积网络最后一层,所有数据展平,作为全连接层的特征输入。

m0_58285219的博客 252

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

用python创作一个简单卷积

在深度学习中,卷积神经网络(Convolutional Neural Network,CNN)则是利用卷积操作来构建模型,实现图像分类、目标检测等任务。函数,该函数接受一个输入图像和一个卷积核作为参数,然后执行卷积操作,返回卷积结果。在卷积操作中,我们使用两个嵌套的循环遍历图像的每个位置,并计算卷积核与图像对应位置的元素的乘积之和。在示例代码中,我们定义了一个3x3的卷积核,并对一个5x5的图像进行卷积操作。这只是一个简单的卷积实现示例,实际的深度学习框架中通常会提供更高效和灵活的卷积操作函数。

WRL_____的博客 379

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

如何简单理解CNN卷积神经网络

如何快速简单理解卷积神经网络(CNN) CNN卷积神经网络常用于图像识别分类的训练,对图像分类具有很好的适应性。 一张图片,通常是由成千上万个像素点组成的,如下: 卷积神经网络,需要理解以下三点: 什么是卷积运算 什么是reLU运算 什么是pooling 下面一一介绍。 卷积运算 怎么运算的 卷积运算就是将原始图片的与特定的Feature Detector(filter)做卷积运算(符号⊗)...

UESTC Like 7649

使用torch库进行简单的卷积操作

它已经成为深度学习领域中最受欢迎的框架之一。今天我们要利用torch这个库进行简单的深度学习中常见的二维卷积运算讲解以及代码的实现,开始慢慢接触深度学习的代码以及计算原理。:PyTorch拥有一个活跃的社区和丰富的生态系统,包括许多预训练的模型、工具和数据集,这有助于加速研究和开发过程。这次讲解的是深度学习卷积操作中最简单的对5 * 5的矩阵使用3 * 3的矩阵进行卷积操作,最后得到一个3矩阵。通俗的讲就是一个5 * 5的格子为背景,3 * 3的格子为移动窗口在背景中不断移动计算,不能超出背景范围。

2301_76846375的博客 594

基于pytorch简单实现稀疏3d卷积(SECOND)

卷积计算是深度学习模型的常见算子,在3D项目中,比如点云分割,由于点云数据是稀疏的,使用常规的卷积计算,将会加大卷积计算时间,不利于模型推理加速。由此SECOND网络提出了稀疏卷积的概念。 稀疏卷积的主要理念就是由正常的全部数据进行卷积运算,优化了为只计算有效的输入点的卷积结果。稀疏卷积的思路网上已经有很多简明扼要的文章,比如知乎的这一篇就很清晰,本文就是根据这一篇的思路实现的一个简单的稀疏卷积流程。建议先看一下先了解。 稀疏卷积的输入是有效输入点的索引坐标(哈希表)和对应的features值,大概流程

Briwisdom的博客 5192

tensorflow实现简单的卷积网络

实现原理 卷积神经网络 图一 图二 图一是卷积网络cnn的核心过程, 图二是上篇多层感知机的过程 其实二者本质是类似的,都是对图像的像素乘以一个参数加偏置来提取特征。 而卷积网络只是每次提取的特征是一小块,例如图一的33小块,当然这9个像素每个都需要一个w来进行提取特征,这时候右边的33卷积核就是了,它就是对应每个像素的参数,然后卷积操作(实际上就是对应相乘在相加)...

for happy の road 443

简单的卷积神经网络实现

卷积神经网络 参考教程:CNN(莫烦Python19) 卷积神经网络流程图 实现代码 import torch import torch.nn as nn #神经网络的层 import torch.utils.data as Data #批处理数据 import torchvision #包括数据库 import matplotlib.pyplot as plt from torch.autograd import Variable #hyper parameters EPOCH = 1 BATCH

qq_39676333的博客 1491

一个简单的卷积码编码程序

以下是一个简单的卷积码编码程序的MATLAB实现。 % ***************************************** % * * % * This function implements the * % *

u014510919的专栏 3794

『简单积性函数和dirichlet卷积』

简单积性函数 在学习欧拉函数的时候,相信读者对积性函数的概念已经有了一定的了解。接下来,我们将相信介绍几种简单的积性函数,以备\(dirichlet\)卷积的运用。 定义 数论函数:在数论上,对于定义域为正整数,值域为复数的函数,我们称之为数论函数。 积性函数:对于数论函数\(f\),若满足\(gcd(a,b)=1\)时,有\(f(ab)=f(a)f(b)\),则称函数\(f\...

weixin_33804582的博客 211
上一篇: word2vec 训练细节
下一篇: CNN原理真是小儿科?
ithinking110
博客等级 码龄14年 54粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值