CNN卷积神经网络基础知识

这篇具有很好参考价值的文章主要介绍了CNN卷积神经网络基础知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 卷积

1.1 卷积核大小的选择

1. 选择奇数卷积核
①. 保护位置信息,奇数卷积核的中心点位置在中心,有利于定位任务。
②. padding时左右对称。
2. 在感受野相同的情况下优先选择较小的卷积核以减少计算量
①. 两个3x3卷积核的感受野与一个5x5卷积核的感受野相同
②. 两个3x3卷积核的参数量为3x3x2=18,而一个5x5卷积核的参数量为5x5=25。
③. 两个3x3卷积核比一个5x5卷积核多进行了一次非线性(卷积层后面通常接激活层)。
如下图,5x5的图像通过3x3的卷积,可以得到一个3x3的图像,将3x3的图像再进行一次3x3的卷积就变成了一个1x1的图像,这个1x1的图像包含了5x5图像的感受野。
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉

1.2 1x1 卷积核的作用

1 * 1 卷积实际上是对每个像素点在通道方向的组合,在保留了图片原有分辨率的同时调节了通道数。
①. 升维降维,改变通道数。
②. 增加非线性。(卷积层后面通常接激活层)

1.3 常规卷积、Depthwise卷积与Pointwise卷积

1.3.1 常规卷积

常规卷积可以改变输入图像的通道数,具体设置如下:
卷积核的通道数 = 输入图像的通道数
卷积核的个数 = 输出图像所需要的通道数

参数量计算:
假设输入图像为3通道,需要输出的fp为4通道,那么我们需要4个3通道的卷积核,若卷积核大小为3 * 3,此时卷积层的flops = 3 * 3 * 3 * 4 = 108
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉

1.3.2 Depthwise卷积

Depthwise卷积只可以改变输入图像的大小,不可以改变输入图像的通道数,
其利用单通道的卷积核对输入图像的每个通道单独进行卷积
,具体设置如下:
卷积核的通道数 = 1
卷积核的个数 = 输入图像的通道数 = 输出图像的通道数

缺点:没有有效利用输入图像在不同通道上的位置信息。

参数量计算:
假设输入图像为3通道,那么我们需要3个1通道的卷积核,若卷积核大小为3 * 3,此时卷积层的flops = 3 * 3 * 1 * 3 = 27
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉

1.3.3 Pointwise卷积

Pointwise卷积只可以改变输入图像的通道数,不可以改变输入图像的大小,
其利用1 * 1的卷积核对输入图像在chanel方向上进行加权
,具体设置如下:
卷积核的通道数 = 输入图像的通道数
卷积核的个数 = 输出图像所需要的通道数

卷积核的尺寸 = 1 * 1

参数量计算:
假设输入图像为3通道,需要输出的fp为4通道,那么我们需要4个3通道的 1 * 1的卷积核,此时卷积层的flops = 1 * 1 * 3 * 4 = 12
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉

1.4 反卷积

1.4.1 反卷积的作用

常用于图像的上采样,可将低分辨率图像恢复成高分辨率图像。不同于人工定义的插值方法,反卷积的参数可以网络自动学习。

1.4.2 反卷积的原理

假设输入图像为4 * 4,利用一个3 * 3的卷积核通过卷积运算可以得到一个2 * 2的输出。
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉
可以将上面的卷积操作转变成矩阵乘法,即输入图像变为16 * 1的矩阵A,卷积核变为4 * 16的矩阵B,这时输出图像C = BA,维度为4 * 1,将其reshape即可得到2 * 2的输出图像。

反过来,我们可以用BT * C = A,获得输入图像A,此时BT 维度为16 * 4,C的维度为4 * 1,那么A的维度为16 * 1,经过reshape 即可得到一个4 * 4的输入图像。

卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉

1.4.3 棋盘格效应

当卷积核的大小不能被步长整除时,反卷积会出现不均匀的重叠,从而形成棋盘格现象。
如下图,卷积核大小为3. 步长为2,浅灰处没有重叠,深灰处出现了两次重叠,而黑色部分则出现了四次重叠。

解决方法:
① . 确保卷积核大小被步长整除
②. 先利用(最近邻插值或双线性插值)提升分辨率,再进行卷积操作
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉

1.5 卷积计算

1.5.1 计算输出特征图尺寸

输出w = (输入w - k + 2p)/ s +1
输出h = (输入h - k + 2p)/ s +1
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉

1.5.2 计算卷积层参数量与计算量

所谓参数量实际计算的是卷积核的参数量,其与卷积核的大小、卷积核的通道数、卷积核的个数有关。
c ---- 卷积核通道数,常规卷积核的通道数 = 上一层输出通道数
n ---- 卷积核个数, 常规卷积的卷积核个数 = 该层需要输出的通道数
1 ---- bias参数
参数量:parms = (k_size * k_size * c + 1) * n
计算量:flops = 参数量 * 输入w * 输入h

2 池化

2.1 CNN中池化的作用

图像中相邻的像素往往值相近,卷积后的输出图像包含了很多冗余信息,通过池化可以完成对图像的下采样,获得有效信息,减少参数量。

2.2 池化如何进行反向传播

2.2.1 平均池化

对于平均池化,其前向传播是取某特征区域的平均值进行输出,这个区域的每一个神经元都参与了前向传播,因此,在反向传播时,需要将梯度平均分配给每一个神经元再进行反向传播:
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉

2.2.2 最大池化

对于最大池化,其前向传播是取某特征区域的最大值进行输出,这个区域只有最大值的神经元参与了前向传播,因此,在反向传播时,将梯度分配给最大值神经元位置即可,其余为0:
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉

3 激活函数

3.1 激活函数的作用

1. 引入非线性因素,方便学习复杂数据。
2. 激活函数可以把当前特征空间通过一定的线性映射转换到另一个空间,让数据能够更好的被分类。

3.2 常见的激活函数

1. sigmoid 激活函数
f ( x ) = 1 1 + e − x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+ex1, 其值域为 ( 0 , 1 ) (0,1) (0,1)
函数图像:
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉
导函数图像
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉
2. tanh 激活函数
f ( x ) = t a n h ( x ) = e x − e − x e x + e − x f(x) = tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} f(x)=tanh(x)=ex+exexex,值域为 ( − 1 , 1 ) (-1,1) (1,1)

卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉

3. Relu 激活函数
f ( x ) = m a x ( 0 , x ) f(x) = max(0, x) f(x)=max(0,x) ,值域为 [ 0 , + ∞ ) [0,+∞) [0,+)

Relu 的优点
①. 导数为1,解决了梯度消失、梯度爆炸问题。
②. 计算方便,加速了网格的训练。
③. 正饱和区的梯度大于0,不会造成梯度弥散。
Relu 的缺点
①. 由于负数部分恒为0,会导致一些神经元无法激活(可通过设置小学习率部分解决)
②. 输出不是以0为中心的
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉

4. Leak Relu 激活函数
f ( x ) = m a x ( k ∗ x , x ) f(x) = max(k∗x , x) f(x)=max(kx,x),值域为 ( − ∞ , + ∞ ) (-∞,+∞) (,+)
解决了Relu中0区间的影响,k为leak系数,一般选择0.01或0.02。

卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉
5. Softmax 激活函数

S i = e i ∑ j e j S_i = \frac{e^i}{\sum_j e^j} Si=jejei

Softmax 将多个神经元的输出映射到[0,1]区间内,并且他们的和为1,用于多分类神经网络输出。因而我们可以将每个Softmax值理解为概率。选取概率最大的值作为分类的类别。

Softmax的计算
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉

3.3 激活函数的性质

  1. 非线性
  2. 可导性:梯度计算
  3. 单调性:当激活函数是单调的时候,单层网络能够保证是凸函数
  4. f ( x ) ≈ x f(x)≈x f(x)x:训练更高效

3.4 激活函数的选择

  1. 如果在隐藏层上不确定使用哪个激活函数,那么通常会使用 Relu 激活函数。有时,也会使用 tanh 激活函数。
  2. 如果遇到了一些死的神经元,我们可以使用 Leaky Relu 函数。
  3. 输出层损失函数计算需要one-hot格式时可以使用sigmoid
  4. sigmoid不存在类间竞争,用于多标签,softmax存在类间竞争,用于多分类。

4 Dropout

4.1 dropout 原理

输入层与输出层保持不变,隐藏层的神经元按比例随机失活。

4.2 dropout解决过拟合的方式

①. dropout使神经元随机失活,由于此次失活的神经元不更新参数只保留先前的结果,因而能保证每一神经元的参数不会过大,起到了L2正则化压缩权重平方和开方的效果。
②.在单次训练中随机关掉部分神经元,简化了模型结构,减少了神经元之间的相互依赖。
③. 类似于训练了多个简单的网络,结果采用取平均的方式。

4.3 dropout 的参数keep_prob

  1. 在不同层可以选择不同的keep_prob,结构复杂的层,取小keep_prob,结构简单的层选择大keep_prob。
  2. keep_prob等于1表示不使用dropout,即该层的所有节点都保留。
  3. 一般情况keep_prob=0.5效果最佳(随机生成的网络结构最多。)

4.4 训练时的缩放参数

由于测试中不会随机丢失神经元,因此在训练时对没有被失活的神经元做一个rescale加权。
rescale rate = 1 / (1 - keep_prob)

4.5 dropout的缺点

代价函数J不再被明确定义,无法保证每次训练梯度都会下降,不便于调试。

5 BN(Batch Normalization)

5.1 归一化的必要性(产生背景)

① 神经网络本质是学习数据分布,一旦训练数据与测试数据的分布不同,网络的泛化能力将大大降低;
② 若每个batch训练数据的分布各不相同,那么网络每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度。
③ 由于本层的输入由上一层的参数和输入得到,而上一层的参数在训练过程中会一直跟新,因此必然导致其后面每一层的数据分布。我们把网络中间层在训练过程中,数据分布的改变称之为:“Internal Covariate Shift(ICS)”。因此理所当然的想到在上一层网络输出之后,本层网络输入之前做一个数据预处理来改变ICS现象,这就引出了BN。

5.2 BN的实现过程

①. 对某一层的网络输入进行归一化,其中E(x (k))指每一批数据,x (k)的平均值,分母为每批数据x (k)的标准差。
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉

②. 引入可学习的重构参数γ、β,以恢复原始网络学到的特征分布-----------γ、β的作用
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉
每一个神经元x (k)都会有一对这样的参数γ、β。这样其实当:
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉
可以恢复原始网络学到的特征x (k)

5.3 BN的训练与推理过程

训练过程:
其中m = batch_size
x i: 本层的网络输入(上一层网络激活层后输出)
y i:网络学习的特征分布
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉
推理过程:
由于推理阶段,网络输入不存在batch的概念,因此直接用训练时获得的全局统计量来当作推理阶段的均值和方差
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉

5.3 BN的优点

  1. 减少了人为选择的参数,可以取消dropout和L2正则项参数。
  2. 减少了对学习率的要求。可以使用初始很大的学习率,或者选择较小的学习率也能快速收敛。
  3. 打散了原来数据的分布,一定程度上能缓解过拟合。
  4. 减少梯度消失,加快收敛速度,提高训练精度。

6 感受野

6.1 感受野定义

在卷积神经网络中,feature map上某个元素受输入图像上某个区域的影响,这个区域即该元素的感受野。

6.2 感受野计算

r l : 第l层的感受野
r l-1 : 第l-1层的感受野
k l : 第l层的kernel_size
s i : 第i层的步长

start l: 第l层的感受野中心点
p l:第l层的padding
卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉卷积核的通道数,# 深度学习-01 基本概念,cnn,深度学习,计算机视觉文章来源地址https://www.toymoban.com/news/detail-756250.html

到了这里,关于CNN卷积神经网络基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 卷积神经网络CNN各层基本知识

    卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层以及全连接层构成。 INPUT(输入层)-CONV(卷积层)-RELU(激活函数)-POOL(池化层)-FC(全连接层) 简单来说:卷积用来提取特征,池化压缩特征,全连接层用来加权重 卷积层的作用是用来提取特征,卷积层主要涉及的

    2024年02月04日
    浏览(43)
  • 人工智能:CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的知识梳理

    卷积神经网络(CNN),也被称为ConvNets或Convolutional Neural Networks,是一种深度学习神经网络架构,主要用于处理和分析具有网格状结构的数据,特别是图像和视频数据。CNN 在计算机视觉任务中表现出色,因为它们能够有效地捕获和识别图像中的特征,具有平移不变性(transla

    2024年02月05日
    浏览(61)
  • AIGC必备知识点:你不可不知的CNN(卷积神经网络)-知识全解析!

    Look!👀我们的大模型商业化落地产品 📖更多AI资讯请👉🏾关注 Free三天集训营助教在线为您火热答疑👩🏼‍🏫 大家在谈论的卷积神经网络究竟是什么?(Convolutional Neural Network,CNN)是一类主要用于计算机视觉领域的深度学习算法,它被广泛地运用于包括图像和视频识别、

    2024年01月17日
    浏览(39)
  • 深度学习基础入门篇[8]::计算机视觉与卷积神经网络、卷积模型CNN综述、池化讲解、CNN参数计算

    计算机视觉作为一门让机器学会如何去“看”的学科,具体的说,就是让机器去识别摄像机拍摄的图片或视频中的物体,检测出物体所在的位置,并对目标物体进行跟踪,从而理解并描述出图片或视频里的场景和故事,以此来模拟人脑视觉系统。因此,计算机视觉也通常被叫

    2024年02月05日
    浏览(73)
  • 深度学习实战基础案例——卷积神经网络(CNN)基于SqueezeNet的眼疾识别|第1例

    SqueezeNet是一种轻量且高效的CNN模型,它参数比AlexNet少50倍,但模型性能(accuracy)与AlexNet接近。顾名思义,Squeeze的中文意思是压缩和挤压的意思,所以我们通过算法的名字就可以猜想到,该算法一定是通过压缩模型来降低模型参数量的。当然任何算法的改进都是在原先的基

    2024年02月12日
    浏览(45)
  • 深度学习基础知识神经网络

    1. 感知机 感知机(Perceptron)是 Frank Rosenblatt 在1957年提出的概念,其结构与MP模型类似,一般被视为最简单的人工神经网络,也作为二元线性分类器被广泛使用。通常情况下指单层的人工神经网络,以区别于多层感知机(Multilayer Perceptron)。尽管感知机结构简单,但能够学习

    2024年02月03日
    浏览(49)
  • 深度学习基础知识-感知机+神经网络的学习

    参考书籍:(找不到资源可以后台私信我) 《深度学习入门:基于Python的理论与实现 (斋藤康毅)》 《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition (Aurelien Geron [Géron, Aurélien])》 机器学习和深度学习的区别: Perceptron(感知机) 感知机就是一种接收多种输入信

    2023年04月26日
    浏览(56)
  • 计算机视觉基础知识(十二)--神经网络与深度学习

    一种机器学习的算法 一般有输入层--隐藏层--输出层 隐藏层数量多于两个的称为深度神经网络; 输入的是特征向量; 特征向量代表的是变化的方向; 或者说是最能代表这个事物的特征方向; 权重是特征值,有正有负,加强或抑制; 权重的绝对值大小,代表输入信号对神经元的影响大小

    2024年02月21日
    浏览(53)
  • CNN卷积神经网络

    一、 什么是CNN卷积神经网络 卷积神经网络由三部分组成:输入层、由n个卷积层和池化层的组合组成、全连结的多层感知机分类器。 深度学习的迅速发展,我们会在不同的应用场景会使用不同的神经网络,没有一个神经网络他能在任何场景下,效果都好,也没有说某一个算法

    2024年02月06日
    浏览(51)
  • 关于CNN卷积神经网络

    CNN代表卷积神经网络(Convolutional Neural Network) 它是一种深度学习算法,特别适用于处理图像和视频数据。CNN由多个 卷积层、池化层和全连接层 组成,通过学习图像或视频数据的特征来进行 分类、识别或检测任务 。与传统的全连接神经网络相比,CNN的 参数数量较少 ,能够

    2023年04月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包