【Deep Learning】CNN卷积神经网络—卷积

news2025/3/1 13:48:10

卷积

文章目录

  • 卷积
  • Quickstart
  • 一,计算机视觉(Computer vision)
  • 二,边缘检测(Edge detection example)
    • -2.1 卷积操作过程:
  • 三,边缘检测的更多知识(More edge detection)
  • 四,填充(Padding)
    • -4.1 卷积操作
    • -4.2 填充
    • -4.3 填充方式
  • 五、卷积步长(Strided convolution)
    • -5.1 步长
    • -5.2 步长公式
    • -5.3 卷积与交叉相关
  • 六、三维卷积(Convolution over volumes)
    • -6.1 单卷积核
    • -6.2 多卷积核
    • -6.3 Summary
  • 七,单层卷积网络(One layer of a convolution network)
  • 八、简单卷积网络示例(A simple convolution network example)
  • 九、池化层(Polling)
  • 十、卷积神经网络示例(Convolution neural network example)
  • 十一、为什么要使用卷积(Why convolutions)

Quickstart

在本文中的"卷积"并非实际意义上的卷积,技术层面来说,应该是交叉相关(cross-correlation),而不是卷积

在信号处理或者其他数学分支领域,对卷积核进行翻转,会使卷积核保持结合律:
(A * B) * C = A * (B * C)
这一性质在信号处理领域很有用,但在深度神经网络中它并不重要
所以元素间相乘简化了代码,而且这一改变之后,不影响使用
为了方便,大多数人叫这个卷积,即使有时数学家更喜欢叫它互相关
叫法在练习中写的代码没有影响,并且对阅读文献的能力没有影响

但是在深度学习文献中,由于约定,会把交叉相关的操作称之为"卷积"

总之,在机器学习的约定中,通常忽略掉’‘翻转’'操作
技术上,我们进行的操作最好称之为交叉相关
但是,大多数深度学习的文献都叫它卷积操作
在此处也延续此称呼为卷积

一,计算机视觉(Computer vision)

例1:图像分类,目标检测,神经风格转换
请添加图片描述

要处理的图片往往比较大,如果使用全连接神经网络,那么参数太多,计算量太大,且容易过拟合。
如果图片是1000*1000像素,3通道RGB,那么输入是300million,假设隐藏层有1000个神
经元,那么参数就是300millionx1000=300billion,300亿个参数,过于庞大。
因此,需要进行卷积计算。

例2:两个不同大小图片的对比
请添加图片描述

在神经网络中,如果输入的图像是1000x1000x3
他的神经网络模型将是:
请添加图片描述

二,边缘检测(Edge detection example)

例1:前几层检测边缘->后几层检测对象某些部分->更后几层检测某些整个的对象
请添加图片描述

例2:检测垂直边缘和水平边缘
请添加图片描述

-2.1 卷积操作过程:

例3:检测垂直边缘

请添加图片描述

例4:检测垂直边缘
请添加图片描述

注:有些中文科研文章中会把fielter称作kernel

三,边缘检测的更多知识(More edge detection)

例1:垂直边缘检测
请添加图片描述

例2:反转例1数字后的垂直边缘检测
请添加图片描述

例3:水平边缘检测
请添加图片描述

总而言之,不仅可以做垂直边缘检测,也可以做水平边缘检测
而对于一个边缘检测器矩阵中,用那些数字组合是最好的仍存在争议

四,填充(Padding)

-4.1 卷积操作

例1:卷积操作:
请添加图片描述
缺点:
1:每次检测边界或者其他特征时,图片都会缩小
2:相对而言,角落或者边界上的像素被使用次数少很多,丢失了许多图片上靠近边界的信息

-4.2 填充

为了弥补上述两个缺点,进行padding操作。padding的字面意思是“填充”

例2:填充卷积过程:
请添加图片描述

-4.3 填充方式

两种卷积方式:
1:valid方式:不做padding
2:same方式:做padding,使得卷积操作后的图片大小与原图片大小一致。
n:原始大小
f:卷积核大小
p:padding
那么n-f+1+2p=n
p=(f-1)/2

卷积核一般用奇数,33或55或7*7的,很少有人用偶数。可能有以下两个原因:
1:奇数的话,因为padding的计算公式是需要除以2。如果是偶数,则原图片的上边缘和下边缘处理不相同。
2:奇数的话,会让卷积核有一个中心点,正中央的位置,这在图像处理过程中比较方便。

五、卷积步长(Strided convolution)

-5.1 步长

卷积步长是指卷积核每次移动的跨度。
如下图,步长为2,则卷积核每次移动2个格子。
请添加图片描述

-5.2 步长公式

计算公式
请添加图片描述

-5.3 卷积与交叉相关

在本文中的"卷积"并非实际意义上的卷积,技术层面来说,应该是交叉相关(cross-correlation),而不是卷积

在信号处理或者其他数学分支领域,对卷积核进行翻转,会使卷积核保持结合律:
(A * B) * C = A * (B * C)
这一性质在信号处理领域很有用,但在深度神经网络中它并不重要
所以元素间相乘简化了代码,而且这一改变之后,不影响使用
为了方便,大多数人叫这个卷积,即使有时数学家更喜欢叫它互相关
叫法在练习中写的代码没有影响,并且对阅读文献的能力没有影响

但是在深度学习文献中,由于约定,会把交叉相关的操作称之为"卷积"

总之,在机器学习的约定中,通常忽略掉’‘翻转’'操作
技术上,我们进行的操作最好称之为交叉相关
但是,大多数深度学习的文献都叫它卷积操作
在此处也延续此称呼为卷积

六、三维卷积(Convolution over volumes)

-6.1 单卷积核

6x6x3 * 3x3x3=4x4
计算时,27个数分别对应相乘,然后将27个数相加。最终得到4x4矩阵的每个元素
请添加图片描述

-6.2 多卷积核

如果想同时探测竖直方向的线和水平方向的线,那么可以
设计两个卷积核
请添加图片描述

-6.3 Summary

n x n x n c n_c nc image   *   f x f x n c n_c nc filter   =   n-f+1 x n-f+1 x n c ′ n_c^\prime nc
n c n_c nc:通道数量,文献中被称为3D立方体的深度
n c ′ n_c^\prime nc:使用过滤器数量

七,单层卷积网络(One layer of a convolution network)

计算过程
请添加图片描述

不管输入的图片是多大的像素,这里卷积网络的参数永远都只有333+1=28个。这里加的1是指偏置项b。这就很好地避免了过拟合的问题。
请添加图片描述

公式说明
请添加图片描述

八、简单卷积网络示例(A simple convolution network example)

随着网络深度的逐渐加深,前几层会保持原图片的大小,后面会变得越来越小,但通道数
会逐渐增加。
大部分的卷积网络都会有这样的特点。
请添加图片描述

卷积网络中,不仅要有卷积层,也要有池化层(pool)和全连接层(fully connected)
请添加图片描述

九、池化层(Polling)

为了缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性,使用池化层。
最大池化比较常用,平均池化较为少用。

例1:Max pooling
请添加图片描述

例2:Max pooling
请添加图片描述

例3:Average pooling

请添加图片描述

计算模型
请添加图片描述

这是对最大池化功能的直观理解,你可以把这个4×4输入看作是某些特征的集合,也许不是。你可以把这个4×4区域看作是某些特征的集合,也就是神经网络中某一层的非激活值集合。数字大意味着可能探测到了某些特定的特征,左上象限具有的特征可能是一个垂直边缘,一只眼睛,或是大家害怕遇到的CAP特征。显然左上象限中存在这个特征,这个特征可能是一只猫眼探测器。然而,右上象限并不存在这个特征。最大化操作的功能就是只要在任何一个象限内提取到某个特征,它都会保留在最大化的池化输出里。所以最大化运算的实际作用就是,如果在过滤器中提取到某个特征,那么保留其最大值。如果没有提取到这个特征,可能在右上象限中不存在这个特征,那么其中的最大值也还是很小,这就是最大池化的直观理解。
必须承认,人们使用最大池化的主要原因是此方法在很多实验中效果都很好。尽管刚刚描述的直观理解经常被引用,不知大家是否完全理解它的真正原因,不知大家是否理解最大池化效率很高的真正原因。
其中一个有意思的特点就是,它有一组超参数,但并没有参数需要学习。实际上,梯度下降没有什么可学的,一旦确定了和,它就是一个固定运算,梯度下降无需改变任何值。

目前来说,最大池化比平均池化更常用。但也有例外,就是深度很深的神经网络,你可以用平均池化来分解规模为7×7×1000的网络的表示层,在整个空间内求平均值,得到1×1×1000,一会我们看个例子。但在神经网络中,最大池化要比平均池化用得更多

执行反向传播时,反向传播没有参数适用于最大池化。只有这些设置过的超参数,可能是手动设置的,也可能是通过交叉验证设置的。

十、卷积神经网络示例(Convolution neural network example)

例1:LeNet-5类似但是不完全相同的网络
一个卷积层,跟着一个池化层。然后再卷积,再池化,这样输出的宽度和高度都逐渐减小,通道数逐渐增加。然后再到全连接层,全连接就是之前讲过的普通神经网络,参数数量是400*120,然后再跟着一个神经元数量更少的全连接层,最后通过softmax输出。
请添加图片描述

在卷积神经网络中,有很多的超参数。不建议自己尝试新的,建议查阅论文里学者们的经验。
激活值大小和参数数量
请添加图片描述
有几点要注意,第一,池化层和最大池化层没有参数;第二卷积层的参数相对较少,前面课上我们提到过,其实许多参数都存在于神经网络的全连接层。观察可发现,随着神经网络的加深,激活值尺寸会逐渐变小,如果激活值尺寸下降太快,也会影响神经网络性能。示例中,激活值尺寸在第一层为6000,然后减少到1600,慢慢减少到84,最后输出softmax结果。我们发现,许多卷积网络都具有这些属性,模式上也相似。
神经网络的基本构造模块我们已经讲完了,一个卷积神经网络包括卷积层、池化层和全连接层。许多计算机视觉研究正在探索如何把这些基本模块整合起来,构建高效的神经网络,整合这些基本模块确实需要深入的理解。根据我的经验,找到整合基本构造模块最好方法就是大量阅读别人的案例。

十一、为什么要使用卷积(Why convolutions)

例1:32x32x3 * (f:5 n c : 6 n_c:6 nc:6) = 28x28x6
第一层含有3072个单元,下一层含有4074个单元,两层中的每个神经元彼此相连,然后计算权重矩阵,它等于4074×3072≈1400万,所以要训练的参数很多。
虽然以现在的技术,我们可以用1400多万个参数来训练网络,因为这张32×32×3的图片非常小,训练这么多参数没有问题。如果这是一张1000×1000的图片,权重矩阵会变得非常大。
我们看看这个卷积层的参数数量,每个过滤器都是5×5,一个过滤器有25个参数,再加上偏差参数,那么每个过滤器就有26个参数,一共有6个过滤器,所以参数共计156个,参数数量还是很少。
请添加图片描述

卷积的参数少的原因:
1、权值共享:检测竖直线的卷积核,在图片的左上角、右下角等所有位置都适用,因此可以共享同样的权值。
2、稀疏连接:每个卷积核计算都是九个数分别对应计算,即只考虑与九个像素点的关系,而不考虑其他点。
请添加图片描述

最后,我们把这些层整合起来,看看如何训练这些网络。比如我们要构建一个猫咪检测器,我们有下面这个标记训练集,表示一张图片,是二进制标记或某个重要标记。我们选定了一个卷积神经网络,输入图片,增加卷积层和池化层,然后添加全连接层,最后输出一个softmax,即。卷积层和全连接层有不同的参数和偏差,我们可以用任何参数集合来定义代价函数。一个类似于我们之前讲过的那种代价函数,并随机初始化其参数和,代价函数等于神经网络对整个训练集的预测的损失总和再除以(即)。所以训练神经网络,你要做的就是使用梯度下降法,或其它算法,例如Momentum梯度下降法,含RMSProp或其它因子的梯度下降来优化神经网络中所有参数,以减少代价函数的值。通过上述操作你可以构建一个高效的猫咪检测器或其它检测器
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412447.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4月想跳槽的同学,没有更好的选择,可以去美团

在美团干了半年,说一下自己的感受,美团是一家福利中等,工资待遇中上,高层管理团队强大,加班强度一般,技术不错,办公环境一般,工作氛围中上,部门差距之间工作体验差距巨大…

SpringBoot-数据访问-整合MyBatis-配置版

引入依赖 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version> </dependency> ConditionalOnSingleCandidate(DataSource.class) 单一数…

视图的使用

为什么引入视图&#xff08;Views&#xff09; 如果您读过其他类似的书&#xff0c;可能会看到这些书在介绍视图时列举了许多引入视图的原因。其中认为最重要的原因是维护数据的独立性。那么什么是数据的独立性呢&#xff1f; 早期信息系统的设计与开发多采用模块驱动方式&am…

NumPy 秘籍中文第二版:七、性能分析和调试

原文&#xff1a;NumPy Cookbook - Second Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 在本章中&#xff0c;我们将介绍以下秘籍&#xff1a; 使用timeit进行性能分析使用 IPython 进行分析安装line_profiler使用line_profiler分析代码具有cProfile扩展名…

【分布式事务AT模式 本地部署Seata服务】分布式事务框架Seata详细讲解

前言 这篇文章我会从0到1详细搭建分布式事务框架seata的使用&#xff0c;那么我们首先要先了解一下什么是分布式事务&#xff1f; 本篇文章是本地启动seata服务并且注册到nacos中&#xff0c;在SpringCloud中整合seata框架请转移下方连接 点我跳转SpringCloud整合seata教程&…

【网络原理】TCP/IP协议(续)

目录 &#x1f525;网络层重点协议&#xff08;IP 协议&#xff09; 一、地址管理 1.如何解决上述地址不够用问题&#xff1f; 2.NAT 机制 2.1 NAPT 2.2 在 NAT 背景下如何通信&#xff1f; 3.IPv6 4.IP地址 4.1 ABCDE类 4.2 子网掩码 4.3 特殊的 IP 地址 二、路由…

传统汽车保险丝盒与智能保险丝盒Efuse的应用

一、传统汽车保险丝盒 1、概述 电气盒是用于提供车辆电源分配和回路保护的电气枢纽。电气盒能简化线束的安装和整车的装配过程&#xff0c;改善系统的整体质量水平&#xff0c;降低成本和减少散乱。 一般传统电气盒分为PFB&#xff08;预保险丝盒&#xff09;&#xff0c;UE…

公网使用SSH远程登录macOS服务器【内网穿透】

文章目录前言1. macOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接macOS3.1 macOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接macOS4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址5. 使用固定TCP端口地址ssh远程前言…

Nacos共享配置

本文介绍一下Nacos作为配置中心时&#xff0c;如何读取共享配置 我的环境 Windows10JDK8SpringCloud&#xff1a;Finchley.RELEASESpringBoot&#xff1a;2.0.4.RELEASEspring-cloud-alibaba-dependencies&#xff1a;0.2.2.RELEASENacos-server&#xff1a;1.0.1 本文的项目…

去互联网大厂卷还是去上升期创业型公司offer二选一?你怎么抉择?

上升期的创业型公司 vs 大厂 如何抉择&#xff1f; 最近总有一些粉丝特别“凡尔赛”的发几个 offer 问我选择哪个&#xff1f;其中比较典型的一个问题就是&#xff1a; “一个是处于上升期的创业型公司 &#xff0c;一个行业大厂&#xff0c;薪资待遇差不多&#xff0c;到底该…

elastissearch——排序结果处理

排序 elasticsearch支持对搜索结果排序&#xff0c;默认是根据相关度算分&#xff08;_score&#xff09;来排序。可以排序字段类型有&#xff1a;keyword类型、数值类型、地理坐标类型、日期类型等。 GET /hotel/_search { "query": { "match_all"…

DC插装式流量阀压力阀

Cartridge Valves 电磁阀 止回阀 运动控制阀 流量控制阀 溢流阀 压力控制阀 顺序阀 梭阀 方向阀 配件 Zero Profile Valves 止回阀 运动控制阀 流量控制阀 溢流阀 梭阀 In-Line Valves 止回阀和梭阀 方向阀 配件 微型系列 AB20S APIDC-30S C10B C10S C10S…

opengl 坐标系

概述 为了将坐标从一个坐标系统转换成另一个坐标&#xff0c;我们需要经历几个变换&#xff08;1&#xff1a;模型 2&#xff1a;观察 3&#xff1a;投影&#xff09;我们的顶点坐标起始于局部坐标&#xff0c;然后变成世界坐标&#xff0c;观察坐标&#xff0c;剪裁坐标 最后以…

BUUCTF-MD5强弱比较-MD5()的万能密码-tornado框架注入-中文电码

第六周 第三次 目录 学习到的知识 1.MD5强弱比较可以都可以使用数组绕过 2.基于MD5()的万能密码 ffifdyop WEB [BJDCTF2020]Easy MD5 ​编辑[护网杯 2018]easy_tornado Crypto 信息化时代的步伐 凯撒&#xff1f;替换&#xff1f;呵呵! Misc 神秘龙卷风 学习到的…

c/c++:数据类型,常量变量,标识符,有符号整型,无符号unsigned,字符类型,字符串类型,实数类型,浮点型,科学计数法

c/c&#xff1a;数据类型&#xff0c;常量变量&#xff0c;标识符&#xff0c;有符号整型&#xff0c;无符号unsigned&#xff0c;字符类型&#xff0c;字符串类型&#xff0c;实数类型&#xff0c;浮点型&#xff0c;科学计数法 2022找工作是学历、能力和运气的超强结合体&am…

C++ Primer 第7章 类 - 上(零基础学习C++,精简学习笔记)

&#x1f916; 作者简介&#xff1a;努力的clz &#xff0c;一个努力编程的菜鸟 &#x1f423;&#x1f424;&#x1f425; &#x1f440; 文章专栏&#xff1a;C Primer 学习笔记 &#x1f4d4;专栏简介&#xff1a; 本专栏是博主学习 C Primer 的学习笔记&#xff0c;因为…

【NX2023/1847】UG软件安装详细指南教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录安装包一、安装包内容检查二、安装步骤1.安装JAVA_WIN64.exe2.运行Launch.exe3.安装许可3.直接重启电脑&#xff08;小白直接重启稳妥&#xff09;4.重启后继续运行L…

网络威胁情报项目:为什么仍然很疯狂

大约五年前&#xff0c;向首席信息安全官&#xff08; CISO&#xff09;询问他们的网络威胁情报 (CTI) 计划时&#xff0c;得到了两种截然不同的回答。 资源丰富的大型企业正在投资他们的威胁情报计划&#xff0c;目的是为了战术、运营和战略目的更好地实施它。 规模较小、资…

Day942.独立编译调试 -系统重构实战

独立编译调试 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于独立编译调试的内容。 当组件做 独立的版本演进时&#xff0c;如果开发在本地每次修改代码时&#xff0c;都需要进行集成打包验证&#xff0c;反而会影响日常的开发效率。所以如果能够让组件独立进行编译…

Object方法

私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版&#xff0c;配图更多&#xff0c;CSDN博文图片需要手动上传&#xff0c;因此文章配图较少&#xff0c;看不懂的可以去菜鸡博客参考一下配图&#xff01; 系列文章目录 前端系列文章——传送门 JavaScript系列文章—…