vgg卷积网络过程细节详解

由于是从Word文档直接复制过来,其中格式如果乱码或者不通顺,请评论区告知我

参考链接:https://www.jianshu.com/p/2728610a6130

vgg卷积网络过程细节详解
解释一下上图的内容:表中A,A-LRN,B,C,D,E分别代表各种网络名称,对应为vgg11,包含LRN(Local Response Normalisation)的vgg11,vgg13,vgg16,
vgg16(全conv3版本)以及vgg19。其中网络名称的数字代表网络的深度,如vgg11就是有11层的vgg网络。需要说明的是,这里的层数不包含maxpool和softmax这些层,因为这些层没有新增任何需要训练的参数,可以理解为“常数层”。

以vgg11为例,解释一下图表中网络的结构和组成。vgg11的网络结构即表中的第一列,以以下方式构成:
conv3-64→maxpool→conv3-128→maxpool→conv3-256→conv3-256→maxpool→conv3-512→conv3-512→maxpool→conv3-512→conv3-512→maxpool→FC-4096→FC-4096→FC-1000→softmax。那么这些字母组合是什么意思呢?

  • conv3-64的全称就是convolution kernel_size=3, the number of kernel=64,也就是说,这一层是卷积层,卷积核尺寸是3x3xn(n代表channels,是输入该层图像数据的通道数,稍后会举例解释(该n是根据输入来决定的,等于图片数目)),该卷积层有64个卷积核实施卷积操作。每一个卷积层都对输入图像进行了padding操作(该操作是补输入图像边界的操作),padding的尺寸需要正好保证输出图像的尺寸与输入图像相同。
  • FC4096全称是Fully Connected 4096,是输出层连接4096个神经元的全连接层。FC1000同理;
  • maxpool就是最大池化操作。最大值池化的窗口尺寸是2×2,步长stride=2;
  • soft-max就是softmax操作。逻辑回归操作,对最终结果进行分类;
    需要说明的是,表格中每一大行对应是一个隐藏层,每个隐藏层计算完后的结果都需要经过ReLU**函数进行**。
    vgg卷积网络过程细节详解
    接下来模拟一下原图像(224×224×3)经过vgg11网络的过程中,数据尺寸的变化
  • 1).conv3-64: 输入图像尺寸是224×224×3,即有3个通道RGB,因此该层的卷积核尺寸是3×3×3(n=3);因为要保证输出图像分辨率不变(输出224×224),所以需要padding = 1;最后,因为该层有64个卷积核,所以每个卷积核都会生成一个224×224×1的图像,最终该层输出的数据即224×224×64,即拥有64个通道数。注意,该隐藏层结束后,需要经过ReLU函数**。
  • 2).maxpool:该池化层的输入为224×224×64,又因为最大值池化的窗口尺寸是2×2,步长stride=2,最大池化是对每一个通道都进行操作,所以最终该层输出112×112×64;
  • 3).conv3-128:由于该层的输入数据是112×112×64,通道数是64,所以该层的卷积核尺寸是3×3×64;又因为该层有128个卷积核,再加上padding=1,所以该层最终输出112×112×128;注意,该隐藏层结束后,需要经过ReLU函数**。
  • 4).maxpool:最大池化同上,最终输出56×56×128的图像
  • 5).以此类推,直到最后经过softmax得到最终结果。

补充:
最早的卷积神经网络都是通过比较大的卷积核进行卷积来提取特征的(例如AlexNet,LeNet),虽然卷积核的尺寸越大,越能够总结空间信息。但是同样也增加了参数的数量,提高了计算量。而VGG网络通过每个block中多个3x3 的卷积核来代替之前的大尺寸卷积核,可以说是非常的nice!举个例子,用3个3x3的卷积核来卷积得到像素对应的感受野大小与一个7x7卷积核得到的感受野大小是一样的。但是,参数量却是差了近一倍(3x3x3=27,7x7=49)。