卷积神经网络入门教程
文章目录
【深度学习】卷积神经网络速成
1 概述
2 组成
2.1 卷积层
2.2 池化层
2.3 全连接层
3 一个案例
4 详细分析
1 概述
前馈神经网络(feedforward neural network,FNN),简称前馈网络,是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元。在此种神经网络中,各神经元可以接收前一层神经元的信号,并产生输出到下一层。第0层叫输入层,最后一层叫输出层,其他中间层叫做隐含层(或隐藏层、隐层)。隐层可以是一层。也可以是多层 。
整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示 。
一个典型的多层前馈神经网络如图所示。
2 组成
2.1 卷积层
在图像处理中,往往把图像表示为像素的向量,比如一一个1000x 1000的图像,可以表示为一个000000的向量。假如神经网络中的隐藏层数目与输入层一样,即也是1000000时,那么输入层到隐藏层的参数数据为1000000 X 1000000=1012,数据量非常巨大,基本无法训练。所以使用神经网络处理图像,必须先减少参数,加快训练速度。卷积层就用来局部感知提取特征,降低输入参数的层。
滤波器( Filter)本质上是该层的神经元,具有加权输入并产生输出值,输入是固定大小的图像样本(如5x5)。如果卷积层是输入层,则输入将是像素值。如果它们在网络架构中较深,则卷积层将从前一-层的特征图获取输入。
简单的局部感知,参数仍然过多,需要进-步降低参数的数量,其中的一个方法就是权值共享。在上面的例子中,每个神经元都对应100个参数,-共有000000个神经元,如果这1000000个神经元的100个参数都是相等的,那么参数数目就变为100了。怎么理解权值共享呢?在这里可以把100个参数(也就是卷积操作)看成提取特征的方
式,该方式与位置无关。其中隐含的原理则是:图像的一部分统计特性与其他部分是一样的。这也意味着,在这一部分学习的特征也能用在另一部分上,所以可以在图像,上的所有位置,使用同样的学习特征。更直观地说,当从一个大尺寸图像中随机选取一小块,比如以8x8作为样本,并且从这个小块样本中学习到了一些特征,我们就可以把从这个样本中学习到的特征作为探测器,并应用到这个图像的任意地方。而且,可以用从8x8样本中学习到的特征和原本的大尺寸图像作卷积,从而对这个大尺寸图像上的任- -位置获得一个不同特征的激活值。每个卷积都是-种特征提取方式,就像一-个筛子, 将图像中符合条件(激活值越大越符合条件)的部分筛选出来。
在卷积神经网络的设定里,特征图( Feature Map )是卷积核卷出来的,而不同的特征提取(核)会提取出不同的特征,模型想要达成的目的是,找到一组最佳的能解释现象的卷积核。
特征图对应各层神经云的输出,可以这样理解。
2.2 池化层
在卷积神经网络中,池化层对输入的特征图进行压缩,-方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征。采用池化层可以忽略目标的倾斜、旋转之类的相对位置的变化,以提高精度,同时降低了特征图的维度,并且在- -定程度上可以避免过拟合。池化层通常非常简单,取平均值或最大值来创建自己的特征图。
2.3 全连接层
全连接层在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层等操作是将原始数据映射到隐藏层的特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。全连接层通常具有非线性激活函数或softmax激活函数,预测输出类的概率。在卷积层和池化层执行特征抽取和合并之后,在网络末端使用全连接层用于创建特征的最终非线性组合,并用于预测。
3 一个案例
●输入: 224x224大小的图片,3通道。
●第一层卷积: 5X5大小的卷积核96个,每个GPU上48个。
●第一层Max Pooling: 2x2大小的核。
●第二层卷积: 3X3大小的卷积核256个,每个GPU上128个。
●第二层Max Pooling: 2X2大小的核。
●第三层卷积:与上一层全连接, 3x3的卷积核384个,分到两个GPU上192个。
第四层卷积: 3x3大小的卷积核384个,每个GPU上192个。该层与上一层连
接,没有经过池化层。
●
第五层卷积: 3x3大小的卷积核256个,每个GPU.上128个。
●第五层Max Pooling: 2x2大小的核。
●第一层全连接: 4096维,将第五层Max Pooling的输出连接成-一个- -维向量,作
为该层的输入。
第二层全连接: 4096 维,Softmax 激活函数输出为1000,输出的每一-维都是图片
属于该类别的概率。
4 详细分析
卷积神经网络(Convolutional Neural Networks / CNNs / ConvNets)与普通神经网络非常相似,它们都由具有可学习的权重和偏置常量(biases)的神经元组成。每个神经元都接收一些输入,并做一些点积计算,输出是每个分类的分数,普通神经网络里的一些计算技巧到这里依旧适用。
具有三维体积的神经元(3D volumes of neurons)
卷积神经网络利用输入是图片的特点,把神经元设计成三个维度 : width, height, depth(注意这个depth不是神经网络的深度,而是用来描述神经元的) 。比如输入的图片大小是 32 × 32 × 3 (rgb),那么输入神经元就也具有 32×32×3 的维度。
总的来说就是卷积层增大图片高度同时改变图片大小,但是在卷积的过程中会丢失一些信息,所以我们引入池化层。
也就是说,在卷积层不改变图片大小,在池化层改变图片大小。
卷积层由一组滤波器组成,滤波器可以视为二维数字矩阵。这是一个示例3x3滤波器:
在图像的某个位置上覆盖滤波器;将滤波器中的值与图像中的对应像素的值相乘;把上面的乘积加起来,得到的和是输出图像中目标像素的值;对图像的所有位置重复此操作。这个4步描述有点抽象,所以让我们举个例子吧。看下面的4x4灰度图像和3x3滤波器:
图像中的数字表示像素亮度,0是黑色,255是白色。我们将对输入图像和滤波器进行卷积,生成2x2输出图像。
首先,让我们将滤镜覆盖在图片的左上角:
接下来,我们在重叠的图像和滤波器元素之间逐个进行乘法运算,按照从左向右、从上到下的顺序。
把最右列的乘积结果全部相加,得到:
由于滤波器覆盖在输入图像的左上角,因此目标像素是输出图像的左上角像素:
用同样的方式处理图像剩下的区域:
2 填充
在上面的处理过程中,我们用3x3滤波器对4x4输入图像执行卷积,输出了一个2x2图像。
通常,我们希望输出图像与输入图像的大小相同。因此需要在图像周围添加零,让我们可以在更多位置叠加过滤器。3x3滤波器需要在边缘多填充1个像素。
池化
在CNN网络中卷积池之后会跟上一个池化层,池化层的作用是提取局部均值与最大值,根据计算出来的值不一样就分为均值池化层与最大值池化层,一般常见的多为最大值池化层。池化的时候同样需要提供filter的大小、步长、下面就是3x3步长为1的filter在5x5的输入图像上均值池化计算过程与输出结果
改用最大值做池化的过程与结果如下:
注意
conv、padding、pooling都有好多种不同的方式哦。!
总结一下,CNN就是将一幅图像经过一层又一层的编码过后,可以得到一个结论值,该值是对该图像的分类或描述。
- 分享
- 举报
-
浏览量:3932次2018-02-14 10:30:11
-
浏览量:487次2023-07-18 13:41:23
-
浏览量:500次2023-07-05 10:11:51
-
浏览量:765次2023-07-05 10:11:45
-
浏览量:532次2023-08-03 17:18:52
-
浏览量:664次2023-09-06 11:12:55
-
浏览量:445次2023-09-06 10:09:13
-
浏览量:723次2023-07-05 10:11:54
-
浏览量:5220次2021-05-21 17:03:03
-
浏览量:1208次2024-02-20 17:08:32
-
浏览量:440次2024-02-01 14:20:47
-
浏览量:1274次2024-02-20 17:35:09
-
浏览量:634次2024-02-01 14:28:23
-
浏览量:784次2023-03-21 10:37:02
-
浏览量:4249次2021-04-19 14:54:23
-
浏览量:670次2024-02-06 11:56:53
-
浏览量:905次2024-02-06 11:41:16
-
浏览量:1144次2024-03-04 14:48:01
-
浏览量:3378次2020-08-18 20:09:59
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
这把我C
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明