赞
踩
对于单通道图像,若利用10个卷积核进行卷积计算,可以得到10个特征图;若输入为多通道图像,则输出特征图的个数依然是卷积核的个数(10个)。
1.单通道多个卷积核卷积计算
一个卷积核得到的特征提取是不充分的,我们可以添加多个卷积核,比如32个卷积核,从而可以学习32种特征。
2.多通道多个卷积核卷积计算
图片:假设图片的宽度为width:W,高度为height:H,图片的通道数为D,一般目前都用RGB三通道D=3,为了通用性,通道数用D表示;
卷积核:卷积核大小为K*K,由于处理的图片是D通道的,因此卷积核其实也就是K*K*D大小的,因此,对于RGB三通道图像,在指定kernel_size的前提下,真正的卷积核大小是kernel_size*kernel_size*3。
对于D通道图像的各通道而言,是在每个通道上分别执行二维卷积,然后将D个通道加起来,得到该位置的二维卷积输出,对于RGB三通道图像而言,就是在R,G,B三个通道上分别使用对应的每个通道上的kernel_size*kernel_size大小的核去卷积每个通道上的W*H的图像,然后将三个通道卷积得到的输出相加,得到二维卷积输出结果。因此,若有M个卷积核,可得到M个二维卷积输出结果,在有padding的情况下,能保持输出图片大小和原来的一样,因此是output(W,H,M)。
下面的图动态形象地展示了三通道图像卷积层的计算过程:
分享一些公式计算张量(图像)的尺寸,以及卷积神经网络(CNN)中层参数的计算。
以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.如何计算网络的总参数;
定义如下:
O=输出图像的尺寸。
I=输入图像的尺寸。
K=卷积层的核尺寸
N=核数量
S=移动步长
P =填充数
输出图像尺寸的计算公式如下:
输出图像的通道数等于核数量N。
示例:AlexNet中输入图像的尺寸为227*227*3.第一个卷积层有96个尺寸为11*11*3的核。步长为4,填充为0.
输出的图像为55*55*96(每个核对应1个通道)。
定义如下:
O=输出图像的尺寸。
I=输入图像的尺寸。
S=移动步长
PS=池化层尺寸
输出图像尺寸的计算公式如下:
不同于卷积层,池化层的输出通道数不改变。
示例:每1层卷积层后的池化层的池化层尺寸为3*3,步长为2。根据前面卷积层的输出为55*55*96。池化层的输出图像尺寸如下:
输出尺寸为27*27*96。
全连接层输出向量长度等于神经元的数量。
在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的尺寸张量.
接下来,计算每层的参数数量.
在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相关的参数量.尺寸,步长和填充数都是超参数.
在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网络中总共有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 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。