首页 > 其他分享 >卷积神经网络CNN各种东西介绍的很好

卷积神经网络CNN各种东西介绍的很好

时间:2024-11-12 11:20:58浏览次数:1  
标签:采样 卷积 feature 神经网络 图像 CNN 输入

卷积神经网络(CNN)-CSDN博客
https://blog.csdn.net/fuhanghang/article/details/135544761

卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。本文旨在介绍CNN的基本概念和结构,以及CNN网络架构设计的基本思路。(深度指的是隐藏层的层数)

一、卷积神经网络介绍

1、什么是卷积神经网络?

卷积神经网络是多层感知机(MLP)的变种,由生物学家休博尔和维瑟尔在早期关于猫视觉皮层的研究发展而来,视觉皮层的细胞存在一个复杂的构造,这些细胞对视觉输入空间的子区域非常敏感,称之为感受野。

CNN由纽约大学的Yann Lecun于1998年提出(LeNet-5),其本质是一个多层感知机,成功的原因在于其所采用的局部连接和权值共享的方式:一方面减少了权值的数量使得网络易于优化;另一方面降低了模型的复杂度、减小了过拟合的风险。 当网络的输入为图像时,这些优点将表现地更加明显。

2006年,Hinton提出了深度学习,其主要的观点是:多隐层的人工神经网络具有优异的特征学习能力,学习到的数据更能反映数据的本质特征有利于可视化或分类。大数据和计算机硬件的发展使得深度学习得以推广和应用。(每一层都提取上一层的特征,从而层层递进,提取到本质特征)

2012年AlexNet取得ImageNet比赛的分类任务的冠军,使得卷积神经网络真正爆发。如今的卷积神经网络(CNN)是一种带有卷积结构的深度神经网络,卷积结构可以减少深层网络占用的内存量,其三个关键的操作——局部感受野、权值共享、pooling层,有效地减少了网络的参数个数,缓解了模型的过拟合问题。

2、卷积神经网络的特点

当使用全连接神经网络处理大尺寸图像时,有三个非常明显的缺点:

(1)将图像展开为向量会丢失空间信息;

(2)参数过多效率低下,训练困难;

(3)大量的参数也很快会导致网络过拟合。

卷积神经网络则可以很好地解决以上三个问题。

与常规神经网络不同,卷积神经网络的各层中的神经元是3维排列的:宽度、高度和深度。对于输入层来说,宽度和高度指的是输入图像的宽度和高度,深度代表输入图像的通道数,例如,对于RGB图像有R、G、B三个通道,深度为3;而对于灰度图像只有一个通道,深度为1。对于中间层来说,宽度和高度指的是特征图(feature map)的宽和高,通常由卷积运算和池化操作的相关参数决定;深度指的是特征图的通道数,通常由卷积核的个数决定。全连接神经网络中的主要运算为矩阵相乘,而卷积神经网络中主要为卷积计算,文章第三部分将对卷积运算及其变种进行介绍。

二、基本概念

0、卷积(Convolution)

要理解后续内容,首先要大致了解什么是卷积运算(这里指最常用的标准卷积运算),以及多核卷积和深度卷积是什么?这些比较入门,且要介绍清楚需要大量的篇幅,这里不具体赘述,可以参考下面这篇文章:知乎:原来卷积是这么计算的 。这里仅从文章里引借一个动画来帮助大家直观地理解卷积运算的大致形式。

卷积运算演示动画:

在卷积神经网络中,对于输入的图像,需要多个不同的卷积核对其进行卷积(每个卷积核从头到尾卷积一次,提取特征,形成一张特征图,多个卷积核就提取多种特征图,形成了卷积深度),来提取这张图像不同的特征(多核卷积);同时也需要多个卷积层进行卷积,来提取深层次的特征(深度卷积)。

1、感受野(Receptive Field)

感受野指的是卷积神经网络每一层输出的特征图(feature map)上每个像素点映射回输入图像上的区域大小。神经元感受野的范围越大表示其能接触到的原始图像范围就越大,也意味着它能学习更为全局,语义层次更高的特征信息;相反,范围越小则表示其所包含的特征越趋向局部和细节。因此感受野的范围可以用来大致判断每一层的抽象层次。并且我们可以很明显地知道网络越深,神经元的感受野越大。由此可知,深度卷积神经网络中靠前的层感受野较小,提取到的是图像的纹理、边缘等局部的、通用的特征;靠后的层由于感受野较大,提取到的是图像更深层次、更具象的特征。因此在迁移学习(模型微调)中常常会将靠前的层的参数冻结(不参与训练,因为他们在迁移到新的场景之前已经具备了提取通用特征的能力),来节省训练的时间和算力消耗。

2、权值共享

在卷积运算中采用权值共享可以有效减少需要求解的参数。权值共享是基于这样的一个合理的假设:如果一个特征在计算某个空间位置(x_1,y_1) 的时候有用,那么它在计算另一个不同位置(x_2,y_2)的时候也有用。通俗地来讲,在一个卷积核在和一个n通道的特征图(为方便理解,这里可以暂时理解为3通道的RGB输入图像)进行卷积运算时,可以看作是用这个卷积核作为一个滑块去“扫”这个特征图,卷积核里面的数就叫权重,这个特征图每个位置是被同样的卷积核“扫”的,所以权重是一样的,也就是共享。

3、分辨率(Resolution)

分辨率指的是输入模型的图像尺寸,即长宽大小。通常情况会根据模型下采样次数n和最后一次下采样后feature map的分辨率k\times k来决定输入分辨率的大小(注:下采样通常指在数据处理中减少样本数量的过程),即:

从输入r\times r到最后一个卷积特征feature map的k\times k,整个过程是一个信息逐渐抽象化的过程,即网络学习到的信息逐渐由低级的几何信息转变为高级的语义信息,这个feature map的大小k\times k可以是3×3,5×5,7×7,9×9等等,k太大会增加后续的计算量且信息抽象层次不够高,影响网络性能,k太小会造成非常严重的信息丢失,如原始分辨率映射到最后一层的feature map有效区域可能不到一个像素点,使得训练无法收敛。

在ImageNet分类任务中,通常设置5次下采样,并且考虑到其原始图像大多数在300分辨率左右,所以把最后一个卷积特征大小设定为7×7,将输入尺寸固定为224×224×3。在目标检测任务中,很多采用的是416×416×3的输入尺寸,当然由于很多目标检测模型是全卷积的结构,通常可以使用多尺寸训练的方式,即每次输入只需要保证是32×的图像尺寸大小就行,不固定具体数值。但这种多尺度训练的方式在图像分类当中是不通用的,因为分类模型最后一层是全连接结构,即矩阵乘法,需要固定输入数据的维度。

4、网络深度(Depth)

神经网络的深度决定了网络的表达能力,它有两种计算方法,早期的backbone设计都是直接使用卷积层堆叠的方式,它的深度即神经网络的层数,后来的backbone设计采用了更高效的module(或block)堆叠的方式,每个module是由多个卷积层组成,它的深度也可以指module的个数,这种说法在神经架构搜索(NAS)中出现的更为频繁。通常而言网络越深表达能力越强,但深度大于某个值可能会带来相反的效果,所以它的具体设定需要不断调参得到。

5、网络宽度(Width)

宽度决定了网络在某一层学到的信息量,但网络的宽度指的是卷积神经网络中最大的通道数,由卷积核数量最多的层决定。通常的结构设计中卷积核的数量随着层数越来越多的,直到最后一层feature map数量达到最大,这是因为越到深层,feature map的分辨率越小,所包含的信息越高级,所以需要更多的卷积核来进行学习。通道越多效果越好,但带来的计算量也会大大增加,所以具体设定也是一个调参的过程。通常各层通道数会按照8×的倍数来确定,这样有利于GPU的并行计算。

scaling:缩放

6、下采样(Down-Sample)

下采样层有两个作用,一是减少计算量,防止过拟合,二是增大感受野,使得后面的卷积核能够学到更加全局的信息。下采样的设计有两种:

(1) 采用步长(stride)为2的池化层,如Max-pooling或Average-pooling,目前通常使用Max-pooling,因为它计算简单且最大响应能更好保留纹理特征;

(2) 采用步长(stride)为2的卷积层,下采样的过程是一个信息损失的过程,而池化层是不可学习的,用stride为2的可学习卷积层来代替pooling可以得到更好的效果,当然同时也增加了一定的计算量。

7、上采样(Up-Sampling)

在卷积神经网络中,由于输入图像通过卷积神经网络(CNN)提取特征后,输出的尺寸往往会变小,而有时我们需要将图像恢复到原来的尺寸以便进行进一步的计算(如图像的语义分割),这个使图像由小分辨率映射到大分辨率的操作,叫做上采样,它的实现一般有三种方式:

1)插值,一般使用的是双线性插值,因为效果最好,虽然计算上比其他插值方式复杂,但是相对于卷积计算可以说不值一提;

2)转置卷积又或是说反卷积,通过对输入feature map间隔填充0,再进行标准的卷积计算,可以使得输出feature map的尺寸比输入更大;

3)Max Unpooling,在对称的max pooling位置记录最大值的索引位置,然后在unpooling阶段时将对应的值放置到原先最大值位置,其余位置补0。

scaling:缩放

6、下采样(Down-Sample)

下采样层有两个作用,一是减少计算量,防止过拟合,二是增大感受野,使得后面的卷积核能够学到更加全局的信息。下采样的设计有两种:

(1) 采用步长(stride)为2的池化层,如Max-pooling或Average-pooling,目前通常使用Max-pooling,因为它计算简单且最大响应能更好保留纹理特征;

(2) 采用步长(stride)为2的卷积层,下采样的过程是一个信息损失的过程,而池化层是不可学习的,用stride为2的可学习卷积层来代替pooling可以得到更好的效果,当然同时也增加了一定的计算量。

7、上采样(Up-Sampling)

在卷积神经网络中,由于输入图像通过卷积神经网络(CNN)提取特征后,输出的尺寸往往会变小,而有时我们需要将图像恢复到原来的尺寸以便进行进一步的计算(如图像的语义分割),这个使图像由小分辨率映射到大分辨率的操作,叫做上采样,它的实现一般有三种方式:

1)插值,一般使用的是双线性插值,因为效果最好,虽然计算上比其他插值方式复杂,但是相对于卷积计算可以说不值一提;

2)转置卷积又或是说反卷积,通过对输入feature map间隔填充0,再进行标准的卷积计算,可以使得输出feature map的尺寸比输入更大;

3)Max Unpooling,在对称的max pooling位置记录最大值的索引位置,然后在unpooling阶段时将对应的值放置到原先最大值位置,其余位置补0。

 

标签:采样,卷积,feature,神经网络,图像,CNN,输入
From: https://www.cnblogs.com/Li-JT/p/18541483

相关文章

  • 利用卷积神经网络(CNN)进行花朵分类任务
    一、卷积神经网络卷积神经网络(ConvolutionalNeuralNetword,CNN)是一种深度学习模型,它在图像识别、视频分析、自然语言处理等领域表现出色。CNN的核心思想是利用卷积运算来提取输入数据的特征,并且能够保持空间层次结构。卷积神经网络的架构如下:我们今天的重点是利用卷积神经网......
  • pytorch简单识别MNIST的全连接神经网络
    本文通过PyTorch框架来构建、训练以及评估一个简单的全连接神经网络,以便理解神经网络的基本结构,并通过实际操作获得第一手的经验。选择的任务是在经典的MNIST手写数字数据集上进行数字识别,这是学习深度学习不可或缺的一个实验。一、PyTorch概览PyTorch是一个开源的机器学习库,广......
  • 部署神经网络时计算图的优化方法
    部署神经网络时计算图的优化方法部署神经网络时,各路框架基本都会把神经网络的计算建模为一个(有向无环的)计算图,之后再对这个计算图进行优化,包括硬件相关的优化和硬件无关的优化。本文介绍几种部署神经网络时计算图的优化方法,帮助读者在部署神经网络时理解部署工具都干了些什......
  • 改进图卷积+informer时间序列预测代码
    本代码尝试将它转移用到时间序列中,创新思维的三维转二维,利用部分卷积进行特征提取,将提取的结果放入informer或者tranformer进行预测,预测还不错(适用的领域效果比二维差一点,但是这个思路用的人几乎没有人用!创新点很强)同时证实了引入图卷积的可行性。1.informerInformer是一种......
  • 一款 C# 编写的神经网络计算图框架
    前言深度学习技术的不断发展,神经网络在各个领域得到了广泛应用。为了满足.NET开发的需求,推荐一款使用C#编写的神经网络计算图框架。框架的使用方法接近PyTorch,提供了丰富的示例和详细的文档,帮助大家快速上手。框架介绍项目完全使用C#编写,提供了一个透明的神经网络计算......
  • 海力士 H9HCNNNBKUMLXR-NEE 在售中 ,Platinum P41 M.2 PCIE 4.0 2TB固态硬盘,Dram颗粒编
    主控:海力士ARIES主控(ACNS8075PMT762.00S-1)闪存:海力士SK4DV7176L(H25T3TCG8CX59),单颗容量为1TB,IO速率为1600MT/s缓存:海力士LPDDR4DDR4-426616Gb,容量为2048MB产品名称:海力士PlatinumP41SSD2TB闪存特写和缓存图片请参考相关资料。海力士PlatinumP41固态硬盘的性......
  • PyTorch实战深度学习——用CNN进行手写数字识别
    用CNN进行手写数字识别---计算机专业研究生的代码第一课,相当于”HelloWorld“,不管以后选择什么研究方向,都值得一看,欢迎大家留言交流学习!下面手把手教大家一步一步实现该任务:1.环境准备首先呢,您需要确保安装了PyTorch库。如果还没有安装,可以使用以下命令进行安装,这里默认......
  • 基于卷积神经网络的车辆损坏部位检测系统带gui
    项目源码获取方式见文章末尾!600多个深度学习项目资料,快来加入社群一起学习吧。《------往期经典推荐------》项目名称1.【基于CNN-RNN的影像报告生成】2.【卫星图像道路检测DeepLabV3Plus模型】3.【GAN模型实现二次元头像生成】4.【CNN模型实现mnist手写数字识别】......
  • 【神经网络组件】Transformer Encoder
    【神经网络组件】TransformerEncoder目录【神经网络组件】TransformerEncoder1.seq2seq模型2.为什么只需要TransformerEncoder3.TransformerEncoder的结构1.seq2seq模型什么是sequence:sequence指由多个向量组成的序列。例如,有三个向量:\(\mathbf{a}=[1,0,0]^T,\math......
  • 剪枝技术在图神经网络中的创新应用
    图神经网络,剪枝技术,模型压缩,效率优化,性能提升1.背景介绍图神经网络(GraphNeuralNetworks,GNNs)作为一种强大的机器学习模型,在处理图结构数据方面展现出非凡的潜力。近年来,GNNs在社交网络分析、推荐系统、药物发现等领域取得了显著的成果。然而,随着模型复杂度的增......