CNN卷积神经网络详解

article/2025/9/16 10:47:27

1、cnn卷积神经网络的概念

卷积神经网络(CNN),这是深度学习算法应用最成功的领域之一,卷积神经网络包括一维卷积神经网络,二维卷积神经网络以及三维卷积神经网络。一维卷积神经网络主要用于序列类的数据处理,二维卷积神经网络常应用于图像类文本的识别,三维卷积神经网络主要应用于医学图像以及视频类数据识别。

2、卷积神经网络结构

卷积神经网络通常包含以下几层:

  • 卷积层:卷积神经网路中每层卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法优化得到的。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。比如我们看一张猫的图片,可能看到猫的眼镜或者嘴巴就知道这是张猫片,而不需要说每个部分都看完了才知道,啊,原来这个是猫啊。所以如果我们可以用某种方式对一张图片的某个典型特征识别,那么这张图片的类别也就知道了。这个时候就产生了卷积的概念。举个例子,现在有一个4*4的图像,我们设计两个卷积核(卷积核也称为特征提取器,或者过滤器),看看运用卷积核后图片会变成什么样。
    在这里插入图片描述

    由上图可以看到,原始图片是一张灰度图片,每个位置表示的是像素值,0表示白色,1表示黑色,(0,1)区间的数值表示灰色。对于这个4 * 4的图像,我们采用两个2*2的卷积核来计算。设定步长为1,即每次以2 * 2的固定窗口往右滑动一个单位。以第一个卷积核filter1为例,计算过程如下:

    1 feature_map1(1,1) = 1*1 + 0*(-1) + 1*1 + 1*(-1) = 1 
    2 feature_map1(1,2) = 0*1 + 1*(-1) + 1*1 + 1*(-1) = -1 
    3 ```
    4 feature_map1(3,3) = 1*1 + 0*(-1) + 1*1 + 0*(-1) = 2
    

    可以看到这就是最简单的内积公式。feature_map1(1,1)表示在通过第一个卷积核计算完后得到的feature_map的第一行第一列的值,随着卷积核的窗口不断的滑动,我们可以计算出一个3*3的feature_map1;同理可以计算通过第二个卷积核进行卷积运算后的feature_map2,那么这一层卷积操作就完成了。feature_map尺寸计算公式:[ (原图片尺寸 -卷积核尺寸)/ 步长 ] + 1。

  • 激励层:对卷积层的输出结果进行一次非线性映射
    常用的激励函数:Sigmoid函数、Tanh函数、ReLU函数.
    CNN激励函数一般为ReLU,其特点为:收敛快、求梯度简单、较脆弱。

  • 池化层: 池化层夹在连续的卷积层中间,有两个作用:1、为了减少训练参数的数量,降低卷积层输出的特征向量的维度;2、只保留最有用的图片信息,减少噪声的传递。
    通常来说,池化方法一般有以下两种:

    • MaxPooling(最大池化):取滑动窗口里最大的值
    • AveragePooling(平均池化):取滑动窗口内所有值的平均值

    通过上一层2 * 2的卷积核操作后,我们将原始图像由4 * 4的尺寸变为了3 * 3的一个新的图片。池化层的主要目的是通过降采样的方式,在不影响图像质量的情况下,压缩图片,减少参数。简单来说,假设现在设定池化层采用MaxPooling,大小为2 * 2,步长为1,取每个窗口最大的数值重新,那么图片的尺寸就会由3 * 3变为2 * 2(计算公式:输出边长=(输入边长–卷积核边长)/步幅+ 1;(3-2)+1=2)。从上例来看,会有如下变换:
    在这里插入图片描述
    接下来说一下Zero Padding:到现在为止,我们的图片由4 * 4,通过卷积层变为3 * 3,再通过池化层变化2 * 2,这只是一层卷积,如果我们再添加几层,那么图片岂不是会越变越小?这个时候我们就会引出“Zero Padding”(补零),它可以帮助我们保证每次经过卷积或池化输出后图片的大小不变,如,上述例子我们如果加入Zero Padding,再采用3*3的卷积核,那么变换后的图片尺寸与原图片尺寸相同,如下图所示:
    在这里插入图片描述
    通常情况下,我们希望图片做完卷积操作后保持图片大小不变,所以我们一般会选择尺寸为3 * 3的卷积核和1的zero padding,或者5 * 5的卷积核与2的zero padding,这样通过计算后,可以保留图片的原始尺寸。那么加入zero padding后的feature_map尺寸 =( width + 2 * padding_size - filter_size )/stride + 1。

:这里的width也可换成height,此处是默认正方形的卷积核,weight = height,如果两者不相等,可以分开计算,分别补零。

- 全连接层: 两层之间所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。也就是跟传统的神经网络神经元的连接方式是一样的。
作用:全连接层在整个卷积神经网络起到“分类器”的作用。提取特征、进行分类。

这就是一个完整的卷积神经网络,如果想要叠加层数,一般也是叠加“Conv-Pooing",通过不断的设计卷积核的尺寸,数量,提取更多的特征,最后识别不同类别的物体。做完Max Pooling后,我们就会把这些数据“拍平”,丢到Flatten层,然后把Flatten层的output放到full connected Layer里,采用softmax对其进行分类。

cnn的一个基本流程图:
在这里插入图片描述

3、 层的排列规律

卷积神经网络最常见的形式就是将一些卷积层和ReLU层放在一起,其后紧跟池化层(汇聚层),然后重复如此直到图像在空间上被缩小到一个足够小的尺寸,在某个地方过渡成成全连接层也较为常见。最后的全连接层得到输出,比如分类评分等。换句话说,最常见的卷积神经网络结构如下:
在这里插入图片描述
其中*指的是重复次数,POOL?指的是一个可选的汇聚层。其中N >=0,通常N<=3,M>=0,K>=0,通常K<3。例如,下面是一些常见的网络结构规律:

  • INPUT -> FC ,实现一个线性分类器,此处N = M = K = 0。
  • INPUT -> CONV -> RELU -> FC,单层的卷积神经网络
  • *INPUT -> [CONV -> RELU -> POOL]2 -> FC -> RELU -> FC,此处在每个汇聚层之间有一个卷积层,这种网络就是简单的多层的卷积神经网络。
  • **INPUT -> [CONV -> RELU -> CONV -> RELU -> POOL]3 -> [FC -> RELU]2 -> FC ,此处每个汇聚层前有两个卷积层,这个思路适用于更大更深的网络(比如说这个思路就和VGG比较像),因为在执行具有破坏性的汇聚操作前,多重的卷积层可以从输入数据中学习到更多的复杂特征。
    最新进展:传统的将层按照线性进行排列的方法已经受到了挑战,挑战来自谷歌的Inception结构和微软亚洲研究院的残差网络(Residual Net)结构。这两个网络的特征更加复杂,连接结构也不同。

4、卷积层的大小选择

几个小滤波器卷积层的组合比一个大滤波器卷积层好。假设你一层一层地重叠了3个3x3的卷积层(层与层之间有非线性激活函数)。在这个排列下,第一个卷积层中的每个神经元都对输入数据体有一个3x3的视野。第二个卷积层上的神经元对第一个卷积层有一个3x3的视野,也就是对输入数据体有5x5的视野。同样,在第三个卷积层上的神经元对第二个卷积层有3x3的视野,也就是对输入数据体有7x7的视野。假设不采用这3个3x3的卷积层,二是使用一个单独的有7x7的感受野的卷积层,那么所有神经元的感受野也是7x7,但是就有一些缺点。首先,多个卷积层与非线性的激活层交替的结构,比单一卷积层的结构更能提取出深层的更好的特征。其次,假设所有的数据有C个通道,那么单独的7x7卷积层将会包含 [公式] 个参数,而3个3x3的卷积层的组合仅有 [公式] 个参数。直观说来,最好选择带有小滤波器的卷积层组合,而不是用一个带有大的滤波器的卷积层。前者可以表达出输入数据中更多个强力特征,使用的参数也更少。唯一的不足是,在进行反向传播时,中间的卷积层可能会导致占用更多的内存。

5、层的尺寸设置规律

  • 输入层:应该能被2整除很多次。常用数字包括32(比如CIFAR-10),64,96(比如STL-10)或224(比如ImageNet卷积神经网络),384和512。
  • 卷积层:应该使用小尺寸滤波器(比如3x3或最多5x5),使用步长S=1。还有一点非常重要,就是对输入数据进行零填充,这样卷积层就不会改变输入数据在空间维度上的尺寸。比如,当F=3,那就使用P=1来保持输入尺寸。当F=5,P=2,一般对于任意F,当P=(F-1)/2的时候能保持输入尺寸。如果必须使用更大的滤波器尺寸(比如7x7之类),通常只用在第一个面对原始图像的卷积层上。
  • 池化层(汇聚层):负责对输入数据的空间维度进行降采样。最常用的设置是用用2x2感受野(即F=2)的最大值汇聚,步长为2(S=2)。注意这一操作将会把输入数据中75%的激活数据丢弃(因为对宽度和高度都进行了2的降采样)。另一个不那么常用的设置是使用3x3的感受野,步长为2。最大值汇聚的感受野尺寸很少有超过3的,因为汇聚操作过于激烈,易造成数据信息丢失,这通常会导致算法性能变差。
    为何使用零填充?使用零填充除了前面提到的可以让卷积层的输出数据保持和输入数据在空间维度的不变,还可以提高算法性能。如果卷积层值进行卷积而不进行零填充,那么数据体的尺寸就会略微减小,那么图像边缘的信息就会过快地损失掉。

6、几种常见的卷积神经网络的论文地址

  • LeNet
  • AlexNet
  • VGGNet
  • ResNet

参考:
https://www.cnblogs.com/charlotte77/p/7759802.html
https://zhuanlan.zhihu.com/p/47184529


http://chatgpt.dhexx.cn/article/EstcVSeT.shtml

相关文章

4、计算机中的进制数转换(十进制、二进制、八进制、十六进制)

目录 课前先导 一、计算机中的进制数 十进制&#xff08;简写&#xff1a;D&#xff09; 二进制&#xff08;简写&#xff1a;B&#xff09; 八进制&#xff08;简写&#xff1a;Q&#xff09; 十六进制&#xff08;简写&#xff1a;H&#xff09; 二、计算机进制数之间…

计算机二进制怎么转化成十六进制数是,6、计算机进制之二进制、十进制、十六进制之间的转换...

1、计算机的数制介绍 数制&#xff1a;计数的方法&#xff0c;指用一组固定的符号和统一的规则来表示数值的方法 数位&#xff1a;指数字符号在一个数中所处的位置 基数&#xff1a;指在某种进位计数制中&#xff0c;数位上所能使用的数字符号的个数 位权&#xff1a;指在某种进…

计算机网络十六进制h,计算机进制中,6BH中的H是什么意思?

满意答案 dmcyo 推荐于 2018.11.06 采纳率&#xff1a;49% 等级&#xff1a;9 已帮助&#xff1a;917人 H是十六进制英文hexadecimal的第一个字母,表示是十六进制的数。 十六进制(英文名称&#xff1a;Hexadecimal)&#xff0c;是计算机中数据的一种表示方法。它由0-9&#…

如何利用计算机换算16进制,16进制怎么转换10进制?计算机进制转换方法汇总

从小我们就开始学数学,数学就有涉及到进制知识,相信大家对于进制都不陌生吧!进制也就是进位制,是一种进位方法。现在大家都有电脑,利用电脑自带的计算机进行进制转换是最简便的方法,下面是小编给大家总结的计算机进制转换方法。 进制介绍: 计算机中常用的进制主要有:二…

计算机进制、位运算

一、进制转换 1、什么是进制 进制是数学中的一个概念&#xff0c;就是数据“逢几进位”。进制就是进位制&#xff0c;是人们规定的一种进位方法。对于任何一种进制X&#xff0c;就表示某一位置上的数运算时逢X进一位。二进制就是逢二进一&#xff0c;八进制就是逢八进一&#…

计算机一级二进制转十六进制,计算机进制之二进制、十进制、十六进制之间的转换...

释放双眼,带上耳机,听听看~! 1、计算机的数制介绍 数制:计数的方法,指用一组固定的符号和统一的规则来表示数值的方法 数位:指数字符号在一个数中所处的位置 基数:指在某种进位计数制中,数位上所能使用的数字符号的个数 位权:指在某种进位计数制中,数位所代表的大小,…

计算机的进制和运算

计算机的进制和运算 1. 基本概念2. 运算3. 逻辑右移和算术右移4. 浮点数6. 数据类型7. 指针8. ByteBuffer 1. 基本概念 计算机处理信息的最小单位是位&#xff0c;就相当于二进制中的一位。位的英文bit是二进制数位&#xff08;binary digit&#xff09;的缩写。 8位二进制数…

计算机系统中常用的进制,计算机常用进制详解

内容 进制的由来 生活中的常用进制 二进制的介绍 四种进制说明 八进制和十六进制 常用进制间的转换 1、进制的由来 进制&#xff1a;进位计数制 原始的计数方式 结绳计数 书契计数 算盘 正字计数法 2、生活中的常用进制 十进制 七进制(0~6&#xff0c;星期) 十二进制(0~11&…

计算机进制转换

文章目录 一.基本概念二.计算机的数值1.KIB、MIB与KB、MB的区别2.数值的表示 三.进制转换1.十进制的转换1.1十进制二进制的转换1.2十进制八进制的转换1.3十进制十六进制的转换 2.二进制八进制十六进制的转换2.1二进制八进制的转换2.2二进制与十六进制的转换2.3八进制十六进制的…

计算机进制转换(看完这一篇你就全懂了)—基础篇

我相信很多人都学过进制的转换&#xff0c;但是总是转不过来&#xff0c;你只需要看完这一篇&#xff0c;你对进制的理解与转换一定会很熟练。 众所周知计算机只能识别0和1&#xff0c;其他的文字、数字、字符只能通过转换成进制&#xff0c;然后让计算机识别&#xff0c;并显示…

一文带你读懂计算机进制

hi&#xff0c;大家好&#xff0c;我是开发者FTD。在我们的学习和工作中少不了与进制打交道&#xff0c;从出生开始上学&#xff0c;最早接触的就是十进制&#xff0c;当大家学习和使用计算机时候&#xff0c;我们又接触到了二进制、八进制以及十六进制。那么大家对进制的认识和…

计算机进制转换a是什么,[计算机基础] 计算机进制转换:二进制、八进制、十进制、十六进制...

计算机进制转换&#xff1a;二进制、八进制、十进制、十六进制 一、什么是进制 在生活中&#xff0c;我们通常都是使用阿拉伯数字计数的&#xff0c;也就是10进制&#xff0c;以10为单位&#xff0c;遇10进一&#xff0c;所以是由0&#xff0c;1&#xff0c;2、3、4、5、6、7、…

用计算机进行进制换算方法,计算机进制怎么转换?计算机进制换算方法

如果你正在学习计算机知识,必然需要掌握计算机进制的换算方法。很多同学对于进制换算已经炉火纯青,即便我们可以使用科学计算器程序进行换算,但多数时候使用计算器还没有我们心算更快呢,你说是吧。如果是复杂式我们还需要打草稿,使用计算器反而添乱。阅读下文了解计算机进…

计算机中的进制

进制概念 今天我们来复习一下进制之间的转换&#xff0c;首先我们先来了解一下什么是进制&#xff1f;进制也就是人们规定的一种进位的方法&#xff0c;比如二进制就是逢二进一&#xff0c;也就是说0&#xff0c;1之后就该进位&#xff0c;然后就是10&#xff0c;11&#xff0c…

计算机中的进制(二进制,八进制,十进制,十六进制)

编写背景 最近做了个项目&#xff0c;对接蓝牙设备通信&#xff0c;对接的时候第三方的设备需要协议加密&#xff0c;就用到了位运算(&,>>,<<),只是这个加密算法不是我写的&#xff0c;是公司的架构师写的&#xff0c;他是写java的。呵呵呵…我看了他的javasc…

计算机进制转换:二进制、八进制、十进制、十六进制

一、什么是进制 在生活中&#xff0c;我们通常都是使用阿拉伯数字计数的&#xff0c;也就是10进制&#xff0c;以10为单位&#xff0c;遇10进一&#xff0c;所以是由0&#xff0c;1&#xff0c;2、3、4、5、6、7、8、9组成的&#xff1b;而在计算机中&#xff0c;计算机是无法…

计算机的进制转换

目录 一、计算机的数制1.1数制1.2数位1.3基数1.4位权 二、数制的表示三、数制分类3.1十进制3.2二进制3.3十六进制 四、数制转换4.1二进制、十六进制转换为十进制4.2二进制转换为十六进制4.3十进制转换为二进制、十六进制4.4常见的八位二进制数 五、存储量总结 一、计算机的数制…

计算机基础--进制转换

计算机基础之进制转换 一、什么叫进制&#xff08;system&#xff09; 学习进制转换之前&#xff0c;我们要先知道什么是进制&#xff0c;进制也就是进位计数制&#xff0c;对于任何一种进制——n进制&#xff0c;就表示每一位置上的数运算时都是逢n进一位&#xff0c; 十进制…

计算机中的数制

文章目录 一、计算机中的各种数制1. 十进制2. 二进制3. 十六进制 二、不同数制间数的转换1. 二进制和十进制数间的转换&#xff08;1&#xff09;十进制整数转换成二进制整数&#xff08;2&#xff09;十进制小数转换成二进制小数 2. 十六进制和十进制数间的转换&#xff08;1&…

worklist 设备对接,pe 为例

1.部署worklist 服务&#xff0c;确保网路通畅。 2.在ct 机器配置服务器信息,包括ip port.aetitle,不同厂家配置方法不同。 3.更新患者列表&#xff0c;拉取服务器list 注意&#xff1a;返回列表中不能有中文 4.患者选择&#xff0c;查看患者详细信息 5.CT 机设置 注意&#…