精华内容
下载资源
问答
  • 卷积核输出维度计算

    万次阅读 2018-06-12 15:07:19
    1)卷积层: ...卷积后输出:W或H=[(输入大小-卷积核大小+2*P)/步长] +1. 不能整除时,一般去掉小数部分取整,如4.5,则取4 上图中的 output =[(7-3)+2*1]/1 +1 =7 不能整除时,...

    1)卷积层:

     参数:W:宽;   H:高; D:深度;

    K:卷积核的个数; F:卷积核的大小; S:步长; P:用0填充

     

    卷积后输出:W或H=[(输入大小-卷积核大小+2*P)/步长]  +1. 

           不能整除时,一般去掉小数部分取整,如4.5,则取4  

     

    上图中的 output =[(7-3)+2*1]/1 +1 =7

            不能整除时,向下取整,如4.5,则取4  

    图中也提到了padding 的选择,

    如卷积核为3时 padding 选择1

    如卷积核为5时 padding 选择2

    如卷积核为7时 padding 选择3

     

    2)池化层

    池化层的计算与卷积层一样

     

     

    3)卷积后深度变化

        卷积后深度与卷积核的个数一致。用7个3*3的卷积核与RGB图像大小为(256,256,3)卷积,卷积后深度为7,卷积步长stride为1,填充padding为0,则卷积后图像大小及深度:254*254*7。其中每个卷积核与RGB图像同时与R、G、B三个通道做卷积

    展开全文
  • 深度学习卷积后图像尺度的计算

    千次阅读 2019-08-03 09:27:25
    那么经过一层这样的卷积后出来的图像为: 最后得到的输出即为N*N大小图像。这里mark一下,有时候会一时想不起来手推浪费时间。 以AlexNet网络为例,以下是该网络的参数结构图。 AlexNet网络的层结构如下: ...

    假设图像大小为N*N矩阵

    卷积核的尺寸为K*K矩阵

    卷积的方式(边缘像素填充方式):P

    卷积的步伐为S*S

    那么经过一层这样的卷积后出来的图像为:

    (N-K+2P)/S + 1

    最后得到的输出即为N*N大小图像。这里mark一下,有时候会一时想不起来手推浪费时间。

    以AlexNet网络为例,以下是该网络的参数结构图。

     

    AlexNet网络的层结构如下:

    1.Input:       图像的尺寸是227*227*3.

    2.Conv-1:    第1层卷积层的核大小11*11,96个核。步长(stride)为4,边缘填充(padding)为0。

    3.MaxPool-1:     池化层-1对Conv-1进行池化,尺寸为3*3,步长为2.

    4.Conv-2:    核尺寸:5*5,数量:256,步长:1,填充:2

    5.MaxPool-2:     尺寸:3*3,步长:2

    6.Conv-3: 核尺寸:3*3,数量:384,步长:1,填充:1

    7: Conv-4:   结构同Conv-3.

    8. Conv-5:   核尺寸:3*3,数量:256,步长:1,填充:1

    9. MaxPool-3: 尺寸:3*3,步长:2

    10.FC-1:       全连接层1共有4096个神经元。

    11.FC-1:       全连接层2共有4096个神经元。

    12.FC-3:       全连接层3共有1000个神经元。

     

    接下来,我们对以上的网络结构进行描述:

    1.如何计算张量(图像)的尺寸;

    2.如何计算网络的总参数;

     

    卷积层(Conv Layer)的输出张量(图像)的大小

    定义如下:

    O=输出图像的尺寸。

    I=输入图像的尺寸。

    K=卷积层的核尺寸

    N=核数量

    S=移动步长

    P =填充数

    输出图像尺寸的计算公式如下:

     

    输出图像的通道数等于核数量N。

    示例:AlexNet中输入图像的尺寸为227*227*3.第一个卷积层有96个尺寸为11*11*3的核。步长为4,填充为0.

    输出的图像为55*55*96(每个核对应1个通道)。

     

    池化层(MaxPool Layer)的输出张量(图像)的大小

    定义如下:

    O=输出图像的尺寸。
    I=输入图像的尺寸。
    S=移动步长
    PS=池化层尺寸

    输出图像尺寸的计算公式如下:

    不同于卷积层,池化层的输出通道数不改变。

    示例:每1层卷积层后的池化层的池化层尺寸为3*3,步长为2。根据前面卷积层的输出为55*55*96。池化层的输出图像尺寸如下:

     

    输出尺寸为27*27*96。

     

    全连接层(Fully Connected Layer)的输出张量(图像)的大小

    全连接层输出向量长度等于神经元的数量。

     

    通过AlexNet改变张量(图像)的尺寸的结构如下:

    在AlexNet网络中,输出的图像尺寸为227*227*3.

    Conv-1,尺寸变为55*55*96,池化层后变为27*27*96。

    Conv-2,尺寸变为27*27*256,池化层后变为13*13*256.

    Conv-3,尺寸变为13*13*384,经过Conv-4和Conv-5变回13*13*256.

    最后,MaxPool-3尺寸缩小至6*6*256.

    图像通过FC-1转换为向量4096*1.通过FC-2尺寸未改变.最终,通过FC-3输出1000*1的尺寸张量.

     

    接下来,计算每层的参数数量.

    Conv Layer参数数量

    在CNN中,每层有两种类型的参数:weights 和biases.总参数数量为所有weights和biases的总和.

    定义如下:

    WC=卷积层的weights数量

    BC=卷积层的biases数量

    PC=所有参数的数量

    K=核尺寸

    N=核数量

    C =输入图像通道数

     

    卷积层中,核的深度等于输入图像的通道数.于是每个核有K*K个参数.并且有N个核.由此得出以下的公式.

    示例:AlexNet网络中,第1个卷积层,输入图像的通道数(C)是3,核尺寸(K)是11*11,核数量是96. 该层的参数计算如下:

      计算出Conv-2, Conv-3, Conv-4, Conv-5 的参数分别为 614656 , 885120, 1327488 和884992.卷积层的总参数就达到3,747,200.

     

    MaxPool Layer参数数量

    没有与MaxPool layer相关的参数量.尺寸,步长和填充数都是超参数.

     

    Fully Connected (FC) Layer参数数量

    在CNN中有两种类型的全连接层.第1种是连接到最后1个卷积层,另外1种的FC层是连接到其他的FC层.两种情况我们分开讨论.

    类型1:连接到Conv Layer

    定义如下:

    Wcf= weights的数量

    Bcf= biases的数量
    O= 前卷积层的输出图像的尺寸

    N = 前卷积层的核数量

    F = 全连接层的神经元数量

    示例: AlexNet网络中第1个FC层连接至Conv Layer.该层的O为6,N为256,F为4096.

    参数数目远大于所有Conv Layer的参数和.

     

    类型2:连接到FC Layer

    定义如下:

    Wff= weights的数量

    Bff= biases的数量

    Pff= 总参数的数量

    F= 当前FC层的神经元数量

    F-1 = 前FC层的神经元数量

      

    示例:AlexNet的最后1个全连接层,   F-1=4096,F=1000 .

     


    AlexNet网络中张量(图像)尺寸和参数数量

    AlexNet网络中总共有5个卷积层和3个全连接层.总共有62,378,344个参数.以下是汇总表.

    Layer Name

    Tensor Size

    Weights

    Biases

    Parameters

    Input Image

    227x227x3

    0

    0

    0

    Conv-1

    55x55x96

    34,848

    96

    34,944

    MaxPool-1

    27x27x96

    0

    0

    0

    Conv-2

    27x27x256

    614,400

    256

    614,656

    MaxPool-2

    13x13x256

    0

    0

    0

    Conv-3

    13x13x384

    884,736

    384

    885,120

    Conv-4

    13x13x384

    1,327,104

    384

    1,327,488

    Conv-5

    13x13x256

    884,736

    256

    884,992

    MaxPool-3

    6x6x256

    0

    0

    0

    FC-1

    4096×1

    37,748,736

    4,096

    37,752,832

    FC-2

    4096×1

    16,777,216

    4,096

    16,781,312

    FC-3

    1000×1

    4,096,000

    1,000

    4,097,000

    Output

    1000×1

    0

    0

    0

    Total

       

    62,378,344

     

    https://blog.csdn.net/gaishi_hero/article/details/81512404

     https://www.cnblogs.com/jeshy/p/10581181.html

     

    展开全文
  • 假设图像大小为N*N矩阵 卷积核的尺寸为K*K矩阵 卷积的方式(边缘像素填充方式)...那么经过一层这样的卷积后出来的图像为: 最后得到的输出即为N*N大小图像。这里mark一下,有时候会一时想不起来手推浪费时间。...

    假设图像大小为N*N矩阵

    卷积核的尺寸为K*K矩阵

    卷积的方式(边缘像素填充方式):P

    卷积的步伐为S*S

    那么经过一层这样的卷积后出来的图像为:

    (N-K+2P)/S + 1

    最后得到的输出即为N*N大小图像。这里mark一下,有时候会一时想不起来手推浪费时间。

    展开全文
  • 这样每种滤波器去卷积图像就得到对图像的不同特征的放映,我们称之为Feature Map。所以100种卷积核就有100个Feature Map。这100个Feature Map就组成了一层神经元。我们这一层有多少个参数?100种卷积核x每种卷积核...

    feather map的理解

    在cnn的每个卷积层,数据都是以三维形式存在的。你可以把它看成许多个二维图片叠在一起,其中每一个称为一个feature map。

    feather map 是怎么生成的?

    输入层:在输入层,如果是灰度图片,那就只有一个feature map;如果是彩色图片,一般就是3个feature map(红绿蓝)。

    其它层:层与层之间会有若干个卷积核(kernel)(也称为过滤器),上一层每个feature map跟每个卷积核做卷积,都会产生下一层的一个feature map,有N个卷积核,下层就会产生N个feather map。
     

    多个feather map的作用是什么?

    在卷积神经网络中,我们希望用一个网络模拟视觉通路的特性,分层的概念是自底向上构造简单到复杂的神经元。
    希望构造一组基,这组基能够形成对于一个事物完备的描述,例如描述一个人时我们通过描述身高/体重/相貌等,在卷积网中也是如此。在同一层,我们希望得到对于一张图片多种角度的描述,具体来讲就是用多种不同的卷积核对图像进行卷,得到不同核上的响应,作为图像的特征。他们的联系在于形成图像在同一层次不同基上的描述。

    下层的核主要是一些简单的边缘检测器,可以理解为生理学上的simple cell。

    上层的核主要是一些简单核的叠加,可以理解为complex cell。

     

    多少个Feature Map?简单问题少,复杂问题多,但是自底向上一般是核的数量在逐渐变多(例外,如Alexnet),主要靠经验。
     

    卷积核的理解

    卷积核也称为过滤器(filter)  

    • 每个卷积核具有长、宽、深三个维度
    • 在某个卷积层中,可以有多个卷积核:下一层需要多少个feather map,本层就需要多少个卷积核。

    卷积核的形状:

    在CNN的一个卷积层中:

    • 卷积核的长、宽都是人为指定的,长X宽也被称为卷积核的尺寸,常用的尺寸为3X3,5X5等;
    • 卷积核的深度与当前图像的深度(feather map的张数)相同,所以指定卷积核时,只需指定其长和宽 两个参数。例如,在原始图像层 (输入层),如果图像是灰度图像,其feather map数量为1,则卷积核的深度也就是1;如果图像是grb图像,其feather map数量为3,则卷积核的深度也就是3.

    卷积核个数的理解

    如下图红线所示:该层卷积核的个数,有多少个卷积核,经过卷积就会产生多少个feature map,也就是下图中 `豆腐皮儿`的层数、同时也是下图`豆腐块`的深度(宽度)!!这个宽度可以手动指定,一般网络越深的地方这个值越大,因为随着网络的加深,feature map的长宽尺寸缩小,本卷积层的每个map提取的特征越具有代表性(精华部分),所以后一层卷积层需要增加feature map的数量,才能更充分的提取出前一层的特征,一般是成倍增加(不过具体论文会根据实验情况具体设置)!
     

     

    卷积核的运算过程


    例如: 输入224x224x3(rgb三通道),输出是32位深度,卷积核尺寸为5x5。

    那么我们需要32个卷积核,每一个的尺寸为5x5x3(最后的3就是原图的rgb位深3),每一个卷积核的每一层是5x5(共3层)分别与原图的每层224x224卷积,然后将得到的三张新图叠加(算术求和),变成一张新的feature map。 每一个卷积核都这样操作,就可以得到32张新的feature map了。  

    也就是说:不管输入图像的深度为多少,经过一个卷积核(filter),最后都通过下面的公式变成一个深度为1的特征图。不同的filter可以卷积得到不同的特征,也就是得到不同的feature map。

    卷积核输出维度计算

    卷积层:

    参数:W:宽;   H:高; D:深度;K:卷积核的个数; F:卷积核的大小; S:步长; P:用0填充

    卷积后输出:W或H=[(输入大小-卷积核大小+2*P)/步长]  +1。不能整除时,一般去掉小数部分取整,如4.5,则取4  

     

    filter的理解

    filter有两种理解: 

    在有的文档中,一个filter等同于一个卷积核:只是指定了卷积核的长宽深;

    而有的情况(例如tensorflow等框架中,filter参数通常指定了卷积核的长、宽、深、个数四个参数),filter包含了卷积核形状和卷积核数量的概念:即filter既指定了卷积核的长宽深,也指定了卷积核的数量。
     

    理解tensorflow等框架中的参数 channel(feather map、卷积核数量)


    在深度学习的算法学习中,都会提到 channels 这个概念。在一般的深度学习框架的 conv2d 中,如 tensorflow 、mxnet,channels 都是必填的一个参数。

    channels 该如何理解?先看一看不同框架中的解释文档。

    1. 首先,是 tensorflow 中给出的,对于输入样本中 channels 的含义。一般的RGB图片,channels 数量是 3 (红、绿、蓝);而monochrome图片,channels 数量是 1 。

    channels : Number of color channels in the example images. For color images, the number of channels is 3 (red, green, blue). For monochrome images, there is just 1 channel (black). ——tensorflow

    2. 其次,mxnet 中提到的,一般 channels 的含义是,每个卷积层中卷积核的数量。

    channels (int) : The dimensionality of the output space, i.e. the number of output channels (filters) in the convolution. ——mxnet

    举个例子:图片使用自 吴恩达老师的深度学习课程 。

    如下图,假设现有一个为 6×6×3的图片样本,使用 3×3×3 的卷积核(filter)进行卷积操作。此时输入图片的 channels 为 3 ,而卷积核中的 in_channels 与 需要进行卷积操作的数据的 channels 一致(这里就是图片样本,为3)。然后,进行卷积操作,卷积核中的27个数字分别与样本对应相乘后,再进行求和,得到第一个结果。依次进行,最终得到 4×4 的结果。上面步骤完成后,由于只有一个卷积核,所以最终得到的结果为 4×4×1 , out_channels 为 1 。

     

    在实际应用中,都会使用多个卷积核。这里如果再加一个卷积核,就会得到 4×4×2 的结果。

    总结一下,我偏好把上面提到的 channels 分为三种:

    1. 最初输入的图片样本的 channels ,取决于图片类型,比如RGB;
    2. 卷积核中的 in_channels ,就是要操作的图像数据的feather  map张数,也就是卷积核的深度。(刚刚2中已经说了,就是上一次卷积的 out_channels ,如果是第一次做卷积,就是1中样本图片的 channels) ;
    3. 卷积操作完成后输出的 out_channels 取决于卷积核的数量(下层将产生的feather map数量)。此时的 out_channels 也会作为下一次卷积时的卷积核的 in_channels。

    在CNN中,想搞清楚每一层的传递关系,主要就是 height,width 的变化情况,和 channels 的变化情况。

    最后再看看 tensorflow 中 tf.nn.conv2d 的 input 和 filter 这两个参数。 

    input : [batch, in_height, in_width, in_channels] , 
    filter : [filter_height, filter_width, in_channels, out_channels(卷积核的数量/下层将产生的feather map数量)] 。

     

    CNN的学习过程:更新卷积核的值(更新提取的图像特征)

    因为卷积核实际上就是如3x3,5x5这样子的权值(weights)矩阵。我们的网络要学习的,或者说要确定下来的,就是这些权值(weights)的数值。网络不断前后向的计算学习,一直在更新出合适的weights,也就是一直在更新卷积核们。卷积核在更新了,学习到的特征(feature map)也就被更新了(因为卷积核的值(weights)变了,与上一层的map卷积计算的结果也就变了,得到的新map就也变了)。对分类问题而言,目的就是:对图像提取特征,再以合适的特征来判断它所属的类别。类似这种概念:你有哪些个子的特征,我就根据这些特征,把你划分到某个类别去。

    这样就很说的通了,卷积神经网络的一整套流程就是:更新卷积核参数(weights),就相当于是一直在更新所提取到的图像特征,以得到可以把图像正确分类的最合适的特征们。(一句话:更新weights以得到可以把图像正确分类的特征。) 
     

    事例分析:Convolutional Neural Networks卷积神经网络

           卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。

           CNNs是受早期的延时神经网络(TDNN)的影响。延时神经网络通过在时间维度上共享权值降低学习复杂度,适用于语音和时间序列信号的处理。

           CNNs是第一个真正成功训练多层网络结构的学习算法。它利用空间关系减少需要学习的参数数目以提高一般前向BP算法的训练性能。CNNs作为一个深度学习架构提出是为了最小化数据的预处理要求。在CNN中,图像的一小部分(局部感受区域)作为层级结构的最低层的输入,信息再依次传输到不同的层,每层通过一个数字滤波器去获得观测数据的最显著的特征。这个方法能够获取对平移、缩放和旋转不变的观测数据的显著特征,因为图像的局部感受区域允许神经元或者处理单元可以访问到最基础的特征,例如定向边缘或者角点。

     

    1)卷积神经网络的网络结构

     

          卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。

           图:卷积神经网络的概念示范:输入图像通过和三个可训练的滤波器和可加偏置进行卷积,滤波过程如图一,卷积后在C1层产生三个特征映射图,然后特征映射图中每组的四个像素再进行求和,加权值,加偏置,通过一个Sigmoid函数得到三个S2层的特征映射图。这些映射图再进过滤波得到C3层。这个层级结构再和S2一样产生S4。最终,这些像素值被光栅化,并连接成一个向量输入到传统的神经网络,得到输出。

           一般地,C层为特征提取层,每个神经元的输入与前一层的局部感受野相连,并提取该局部的特征,一旦该局部特征被提取后,它与其他特征间的位置关系也随之确定下来;S层是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射为一个平面,平面上所有神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。

           此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数,降低了网络参数选择的复杂度。卷积神经网络中的每一个特征提取层(C-层)都紧跟着一个用来求局部平均与二次提取的计算层(S-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。

    2)关于参数减少与权值共享

          上面聊到,好像CNN一个牛逼的地方就在于通过感受野和权值共享减少了神经网络需要训练的参数的个数。那究竟是啥的呢?

           下图左:如果我们有1000x1000像素的图像有1百万个隐层神经元,那么他们全连接的话(每个隐层神经元都连接图像的每一个像素点),就有1000x1000x1000000=10^12个连接,也就是10^12个权值参数。然而图像的空间联系是局部的,就像人是通过一个局部的感受野去感受外界图像一样,每一个神经元都不需要对全局图像做感受,每个神经元只感受局部的图像区域,然后在更高层,将这些感受不同局部的神经元综合起来就可以得到全局的信息了。这样,我们就可以减少连接的数目,也就是减少神经网络需要训练的权值参数的个数了。如下图右:假如每个神经元的局部感受野是10x10,每个隐层神经元分别只需和10x10的局部图像相连接,所以1百万个隐层神经元就只有一亿个连接,即10^8个参数。比原来减少了四个0(数量级),这样训练起来就没那么费力了,但还是感觉很多的啊,那还有啥办法没?

     

           我们知道,隐含层的每一个神经元都连接10x10个图像区域,也就是说每一个神经元存在10x10=100个连接权值参数。那如果我们每个神经元这100个参数是相同的呢也就是说每个神经元用的是同一个卷积核去卷积图像。这样我们就只有多少个参数??只有100个参数啊!不管你隐层的神经元个数有多少,两层间的连接我只有100个参数啊!这就是权值共享啊!这就是卷积神经网络的主打卖点啊!这样做靠谱吗?为什么可行呢?

          这样提取特征也忒不靠谱吧,这样你只提取了一种特征啊?我们需要提取多种特征对不?假如一种滤波器,也就是一种卷积核就是提出图像的一种特征,例如某个方向的边缘。那么我们需要提取不同的特征,怎么办,加多几种滤波器不就行了吗?对了。所以假设我们加到100种滤波器,每种滤波器的参数不一样,表示它提出输入图像的不同特征,例如不同的边缘。这样每种滤波器去卷积图像就得到对图像的不同特征的放映,我们称之为Feature Map所以100种卷积核就有100个Feature Map。这100个Feature Map就组成了一层神经元。我们这一层有多少个参数?100种卷积核x每种卷积核共享100个参数=100x100=10K,也就是1万个参数。见下图右:不同的颜色表达不同的滤波器

     

          如上所述,隐层的参数个数和隐层的神经元个数无关,只和滤波器的大小和滤波器种类的多少有关。那么隐层的神经元个数怎么确定呢?它和原图像,也就是输入的大小(神经元个数)、滤波器的大小和滤波器在图像中的滑动步长都有关!例如,我的图像是1000x1000像素,而滤波器大小是10x10,假设滤波器没有重叠,也就是步长为10,这样隐层的神经元个数就是(1000x1000 )/ (10x10)=100x100个神经元了,假设步长是8,也就是卷积核会重叠两个像素,那么……。注意了,这只是一种滤波器,也就是一个Feature Map的神经元个数,如果100个Feature Map就是100倍了。由此可见,图像越大,神经元个数和需要训练的权值参数个数的贫富差距就越大。

     

          需要注意的一点是,上面的讨论都没有考虑每个神经元的偏置部分。所以权值个数需要加1 。权值也是同一种滤波器共享的。

          总之,卷积网络的核心思想是将:局部感受野、权值共享(或者权值复制)以及时间或空间亚采样这三种结构思想结合起来获得了某种程度的位移、尺度、形变不变性。

    4)一个典型的例子说明

           一种典型的用来识别数字的卷积网络是LeNet-5(效果和paper等见这)。当年美国大多数银行就是用它来识别支票上面的手写数字的。能够达到这种商用的地步,它的准确性可想而知。毕竟目前学术界和工业界的结合是最受争议的。

          那下面咱们也用这个例子来说明下。

            LeNet-5共有7层,不包含输入,每层都包含可训练参数(连接权重)。输入图像为32*32大小。这要比Mnist数据库(一个公认的手写数据库)中最大的字母还大。这样做的原因是希望潜在的明显特征如笔画断电或角点能够出现在最高层特征监测子感受野的中心。

            我们先要明确一点:每个层有多个Feature Map,每个Feature Map通过一种卷积滤波器提取输入的一种特征,每个Feature Map有多个神经元。

            C1层是一个卷积层(卷积运算一个重要的特点就是,通过卷积运算,可以使原信号特征增强,并且降低噪音),由6个特征图(Feature Map)构成。特征图中每个神经元与输入中5*5的邻域相连。特征图的大小为28*28,这样能防止输入的连接掉到边界之外(是为了BP反馈时的计算,不致梯度损失,个人见解)。C1有156个可训练参数(每个滤波器5*5=25个unit参数和一个bias参数,一共6个滤波器,共(5*5+1)*6=156个参数),共156*(28*28)=122,304个连接。

           S2层是一个下采样层(利用图像局部相关性的原理,对图像进行子抽样,可以减少数据处理量同时保留有用信息),有6个14*14的特征图。每个特征图中的每个单元与C1中相对应特征图的2*2邻域相连接。S2层每个单元的4个输入相加,乘以一个可训练参数再加上一个可训练偏置。结果通过sigmoid函数计算。可训练系数和偏置控制着sigmoid函数的非线性程度。如果系数比较小,那么运算近似于线性运算,亚采样相当于模糊图像。如果系数比较大,根据偏置的大小,亚采样可以被看成是有噪声的“或”运算或者有噪声的“与”运算。每个单元的2*2感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4。S2层有((1+1)*6=12)12个可训练参数和5880个连接(why)

    图:卷积和子采样过程:卷积过程包括:用一个可训练的滤波器fx去卷积一个输入的图像(第一阶段是输入的图像,后面的阶段就是卷积特征map了),然后加一个偏置bx,得到卷积层Cx子采样过程包括:每邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1,然后通过一个sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1

           所以从一个平面到下一个平面的映射可以看作是作卷积运算,S-层可看作是模糊滤波器,起到二次特征提取的作用。隐层与隐层之间空间分辨率递减,而每层所含的平面数递增,这样可用于检测更多的特征信息。

           C3层也是一个卷积层,它同样通过5x5的卷积核去卷积S2,每个特征图只有10x10个神经元,但是它有16种不同的卷积核,即存在16个特征图。这里需要注意的一点是:C3中的每个特征图是连接到S2中的所有6个或者几个特征图,表示本层的特征图是上一层提取到的特征图的不同组合(这个做法也并不是唯一的)。(看到没有,这里是组合,就像之前聊到的人的视觉系统一样,底层的结构构成上层更抽象的结构,例如边缘构成形状或者目标的部分)。

           C3中每个特征图由S2中所有6个或者几个特征map组合而成。为什么不把S2中的每个特征图连接到每个C3的特征图呢?原因有2点。第一,不完全的连接机制将连接的数量保持在合理的范围内。第二,也是最重要的,其破坏了网络的对称性。由于不同的特征图有不同的输入,所以迫使他们抽取不同的特征(希望是互补的)。

          例如,存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。这样C3层有1516个可训练参数和151600个连接。

           S4层是一个下采样层,由16个5*5大小的特征图构成。特征图中的每个单元与C3中相应特征图的2*2邻域相连接,跟C1和S2之间的连接一样。S4层有32个可训练参数(每个特征图1个因子和一个偏置)和2000个连接。

           C5层是一个卷积层,有120个特征图。每个单元与S4层的全部16个单元的5*5邻域相连。由于S4层特征图的大小也为5*5(同滤波器一样),故C5特征图的大小为1*1:这构成了S4和C5之间的全连接。之所以仍将C5标示为卷积层而非全相联层,是因为如果LeNet-5的输入变大,而其他的保持不变,那么此时特征图的维数就会比1*1大。C5层有48120个可训练连接。

            F6层有84个单元(之所以选这个数字的原因来自于输出层的设计),与C5层全相连。有10164个可训练参数。如同经典神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置。然后将其传递给sigmoid函数产生单元i的一个状态。

          最后,输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有84个输入。换句话说,每个输出RBF单元计算输入向量和参数向量之间的欧式距离。输入离参数向量越远,RBF输出的越大。一个RBF输出可以被理解为衡量输入模式和与RBF相关联类的一个模型的匹配程度的惩罚项。用概率术语来说,RBF输出可以被理解为F6层配置空间的高斯分布的负log-likelihood。给定一个输入模式,损失函数应能使得F6的配置与RBF参数向量(即模式的期望分类)足够接近。这些单元的参数是人工选取并保持固定的(至少初始时候如此)。这些参数向量的成分被设为-1或1。虽然这些参数可以以-1和1等概率的方式任选,或者构成一个纠错码,但是被设计成一个相应字符类的7*12大小(即84)的格式化图片。这种表示对识别单独的数字不是很有用,但是对识别可打印ASCII集中的字符串很有用。

          使用这种分布编码而非更常用的“1 of N”编码用于产生输出的另一个原因是,当类别比较大的时候,非分布编码的效果比较差。原因是大多数时间非分布编码的输出必须为0。这使得用sigmoid单元很难实现。另一个原因是分类器不仅用于识别字母,也用于拒绝非字母。使用分布编码的RBF更适合该目标。因为与sigmoid不同,他们在输入空间的较好限制的区域内兴奋,而非典型模式更容易落到外边。

            RBF参数向量起着F6层目标向量的角色。需要指出这些向量的成分是+1或-1,这正好在F6 sigmoid的范围内,因此可以防止sigmoid函数饱和。实际上,+1和-1是sigmoid函数的最大弯曲的点处。这使得F6单元运行在最大非线性范围内。必须避免sigmoid函数的饱和,因为这将会导致损失函数较慢的收敛和病态问题

    5)训练过程

            神经网络用于模式识别的主流是有指导学习网络无指导学习网络更多的是用于聚类分析。对于有指导的模式识别,由于任一样本的类别是已知的,样本在空间的分布不再是依据其自然分布倾向来划分,而是要根据同类样本在空间的分布及不同类样本之间的分离程度,找一种适当的空间划分方法,或者找到一个分类边界,使得不同类样本分别位于不同的区域内。这就需要一个长时间且复杂的学习过程,不断调整用以划分样本空间的分类边界的位置,使尽可能少的样本被划分到非同类区域中。

           卷积网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。卷积网络执行的是有监督训练,所以其样本集是由形如:(输入向量,理想输出向量)向量对构成的。所有这些向量对,都应该是来源于网络即将模拟的系统的实际“运行”结果。它们可以是从实际运行系统中采集来的。在开始训练前,所有的权都应该用一些不同的小随机数进行初始化。“小随机数”用来保证网络不会因权值过大而进入饱和状态,从而导致训练失败“不同”用来保证网络可以正常地学习。实际上,如果用相同的数去初始化权矩阵,则网络无能力学习。

           训练算法与传统的BP算法差不多。主要包括4步,这4步被分为两个阶段:

    第一阶段,向前传播阶段:

    a)从样本集中取一个样本(X,Yp),将X输入网络;

    b)计算相应的实际输出Op。

          在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常运行时执行的过程。在此过程中,网络执行的是计算(实际上就是输入与每层的权值矩阵相点乘,得到最后的输出结果):

              Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n))

    第二阶段,向后传播阶段

    a)算实际输出Op与相应的理想输出Yp的差;

    b)按极小化误差的方法反向传播调整权矩阵。

    6)卷积神经网络的优点

            卷积神经网络CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显式的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络,这一特点避免了特征提取和分类过程中数据重建的复杂度

            流的分类方式几乎都是基于统计特征,这就意味着在进行分辨前必须提取某些特征。然而,显式的特征提取并不容易,在一些应用问题中也并非总是可靠的。卷积神经网络,它避免了显式的特征取样,隐式地从训练数据中进行学习。这使得卷积神经网络明显有别于其他基于神经网络的分类器,通过结构重组和减少权值将特征提取功能融合进多层感知器。它可以直接处理灰度图片,能够直接用于处理基于图像的分类

           卷积网络较一般神经网络在图像处理方面有如下优点: a)输入图像和网络的拓扑结构能很好的吻合;b)特征提取和模式分类同时进行,并同时在训练中产生;c)权重共享可以减少网络的训练参数,使神经网络结构变得更简单,适应性更强。

     

     

    展开全文
  • 卷积和池化都有如下几个参数:原始数据维度input_shape,卷积核大小kernel_size / 池化尺寸大小 pool_size,步长strides,填充padding=[‘same’, ‘valid’]。 padding为valid 如果padding为valid,那么不进行填充...
  • 就是卷积层,是卷积神经网络(CNN)的核心层。 层类型:Convolution  lr_mult: 学习率的系数,最终的学习率是这个数乘以solver.prototxt配置文件中的base_lr。如果有两个lr_mult, 则第一个表示权值的学习率,第二个...
  • 结论:卷积的深度(通道数)和卷积核的个数一致 一个卷积核得到的特征提取是不充分的...卷积核:卷积核大小为k*k,由于处理的图片是D通道的,因此卷积核其实也就是k*k*D大小的,因此对于RGB三通道图像,在指定kerne...
  • 卷积计算过程(单/RGB多通道) 特征图大小计算公式 转置卷积(反卷积计算过程 空洞卷积计算过程 卷积计算过程(单/RGB多通道) 假设输入层的大小为 5 x 5,局部感受野(或称卷积核)的大小为 3 x 3,那么...
  • 深度学习笔记(23) 卷积维度

    万次阅读 2019-06-20 08:37:27
    卷积步长、卷积输出维度、三维卷积
  • 定义:w-图片宽度 h-图片高度 s-卷积步长 p-补零的个数 f-卷积核的大小 d-空洞卷积参数 普通卷积之后特征图计算公式: ...进行空洞卷积后计算公式: w(out) = (w(in) + 2p -1 -(f - 1)*d)/2 + ...
  • I . 人类的视觉原理 II . 卷积神经网络 模仿 视觉原理 III . 卷积神经网络简介 IV . 卷积神经网络 组成 V . 卷积神经网络 工作流程 VI ....VII . 卷积计算 图示分析 VIII . 卷积计算 简介 ... 卷积 计算 参数
  • 本文通过实践方式,介绍卷积基本原理,以及卷积核和滤波图像处理情况。
  • 对于刚接触神经网络的人,理解了网络层级之后就是要自己搭建网络,设置参数,这个时候就需要计算参数,特征图尺寸,输出维度等,这个其实看一遍流程,动手测试一下就懂了,所以我也在这里记录一下。 不同的框架,...
  • 深度学习在计算机图像识别上的应用非常成功。利用深度学习,我们能够对图片进行高精度识别,实现这一功能的,主要依靠神经网络中的一种分支,名为卷积网络。卷积网络与我们前面实现的网络不通之处在于,它可以直接...
  • 输入输出图像大小的计算 此段内容引自我翻译的一篇文章上面的内容可能会使你混淆每一层的输出尺寸。 所以我决定使用下面的内容让你能够识别输出尺寸。 在卷积层中,有三个关键控制着输出尺寸的大小 过滤器的数量 ...
  • CNN卷积后输出size的计算

    万次阅读 多人点赞 2018-05-15 15:48:41
    来个详细版的如下: source 来个简版的如下: ...这里插一句帮助理解:自动补全的话,考虑步长为1,每一卷积从第一个维度开始...比如7*7的图像采用3*3大小的卷积核进行卷积操作,padding = “SAME”的情况下就是...
  • 像素宽度:W(Width) 填充大小:P(Padding) 卷积核大小:K(Kernel-size) 步长大小:S(stride) ...2.计算卷积后map尺寸时若不为整数则向下取整,而计算pooling尺寸时则向上取整。 ...
  • 1.计算公式 设: 图像宽为W,高为H,通道数为C; 卷积核尺寸为K,通道数为D,个数为N; 卷积运算步长为S,0填充大小为P; 输入和输出量分别以1和2表示。 卷积: W2 = (W1 - K + 2×P) / S + 1 H2 = (H1 - K + 2×P) ...
  • 一、卷积操作 输入图像为正方形 输入图像尺寸为W∗WW*WW∗W,卷积核尺寸为F∗FF*FF∗F,步长为S,padding为P,卷积核个数为C,经过卷积层之后...输入图像尺寸为W∗HW*HW∗H,卷积核尺寸为F∗FF*FF∗F,步长为S,pa...
  • 灰度图像卷积参数计算

    千次阅读 2018-11-05 17:35:38
    查了好久,终于明白了关于灰度图像计算。    举个论文中的例子,输入图像为65*153,第一个隐含层使用的卷积为(5*5*1)*153,其中5*5是卷积滤波器的大小,1是前一层也就是输入层的输出(65*153...
  • 图像处理】图像卷积

    千次阅读 2018-06-27 16:30:41
     卷积图像处理中很常见的操作,它通过计算图像和一个卷积核的加权和来对图像进行滤波。根据卷积核的不同,可以完成对图像的模糊、锐化、降噪、边缘检测等其他功能。  离散二维卷积公式可以表示为,    ...
  • 针对单通道,输入图像的channel为1,即输入大小为(1, height, weight),卷积核尺寸为 (1, k_h, k_w),卷积核在输入图像上的的空间维度(即(height, width)两维)上进行进行滑窗操作,每次滑窗和 (k_h, k_w) 窗口内的...
  • 卷积核参数的计算及1*1卷积

    千次阅读 2019-03-29 17:11:29
    卷积过程 首先,明确一个概念:卷积并不只是一个二维的过程,实际上对于输入的图片一般而言是三个通道的(R、G...其实滤波器的维度应该是和输入图片相同的,输出的维度则是由滤波器的个数决定,卷积过程为: 如果把...
  • 卷积计算

    千次阅读 2017-04-15 18:03:00
    今天研究了一下卷积计算卷积涉及到的两个输入为: 图像和filter 图像: 维度为 C*H*W C是channel, 也叫做 depth, H和W就是图像的宽和高了。 filter, 维度为 K*K, 假设 filter的个数为 M个 直接进行卷积的伪代码...
  • 版本python3.6 保存图片需要PIL,在 cmd 输入pip install pillow 以下是代码` import numpy as np import matplotlib.image ...对一幅3通道图像的一个尺度的卷积运算 def compute_conv(fm, kernel): [h, w] = fm.sha...
  • 假设输入大小为(H, W),滤波器大小为(FH, FW),输出大小为 (OH, OW),填充为P,步幅为S。
  • 图像卷积和池化操作

    千次阅读 2018-12-27 10:04:44
    对于图像而言,它属于二维数据,那么它对应的就是2D函数,我们可以通过一个过滤器来过滤图像,这个过滤器即是卷积核。一般来说过滤器的每个维度可以包含2到5个元素,不同的过滤器有不同的处理效果。 对于图像来...
  • 计算复杂度和可分性 相关与卷积 我们遇到过这样的问题,当我们进行相关时,我们得到了这个翻转的东西。 我们看以下公式: 还有,如果你记得,这是相关方程,我们有这个核H,我们对它求和,从-k到+k,乘以我们...
  • ConvNet假定输入的是图片,我们根据图片的特性对网络进行设定以达到提高效率,减少计算参数量的目的。 1. 结构总览 首先我们分析下传统神经网络对于图片的处理,如果还是用CIFAR-10上的图片,共3072个特征,如果...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,192
精华内容 14,876
关键字:

卷积后的图像维度计算