五、VGG、AlexNet、ResNet网络(超详细哦)

1、 VGG 网络

1.1、 VGG网络结构

下面是VGG网络的结构(VGG16和VGG19都在):
在这里插入图片描述
• VGG16包含了16个隐藏层(13个卷积层和3个全连接层),如上图中的D列所示。

• VGG19包含了19个隐藏层(16个卷积层和3个全连接层),如上图中的E列所示。
• 表达式的简单讲解:Conv3-512 → 第三层卷积后维度变成512;

Conv3_2s = 2 → 第三层卷积层里面的第二子层,滑动步长等于2(每次移动两个格子,后面的讲解中会用到)。

VGG网络的结构非常一致,从头到尾全部使用的是3x3的卷积和2x2的max pooling。

1.2、理解VGG16(19)卷积网络

由于VGG16与VGG19网络的格式相同,主要区别在卷积层的个数,因此,下面我们只对VGG16进行讲解,对于VGG19读者可以参照VGG16的讲解进行类比理解。

 从input到Conv1:
在这里插入图片描述
首先两个黄色的是卷积层,是VGG16网络结构16层当中的第一层(Conv1_1)和第二层(Conv1_2),他们合称为Conv_1。下面主要讲述第一个,也就是第一层(Conv1_1),如何把一个300 * 300 * 3的矩阵变成一个300 * 300 * 64的矩阵。(注:上图中表达的意思是Conv1_1与Conv1_2的卷积结果都是一个300 * 300 * 64的矩阵。但是,对Conv1_1与Conv1_2的输出并没有完全的体现出来,下面我们对其的输入进行简单的讲解。Conv1_1的输入是一张图的300 * 300 * 3的矩阵,Conv1_2的输入是Conv1_1卷积后的输出300 * 300 * 64的矩阵。)
在这里插入图片描述
假设输入的图片(蓝色框)是一个RGB图像,橙色部分是一个3 * 3 * 3的卷积核,我们对一个三维的27个数求和(这里为什么是27,为什么要求和,其实很好理解,因为图片的RGB图像,也就是有3个通道,每个通道都需要进行卷积,然后将相同位置卷积后的结果进行加和),然后从左到右,从上到下进行扫描,最终得到的只是298 * 298的矩阵(因为卷积核也是三维所以结果是一维),在VGG16使用中加入Padding,VGG16设置64个卷积核,得到的是300 * 300 * 64
矩阵。

 从Conv1到Conv2中间的pooling层:
在这里插入图片描述
在Conv1到Conv2中间的pooling层,使用的卷积核大小为:2 * 2 * 64 s=2;即,步长(stride)为2,在卷积的过程中感受野没有重叠(或者说卷积核每次都没有重叠);因此,原本的图像进过卷积操作后,尺寸(长与宽)刚好减为原来的义半,而第三维度深度不变。

 从Conv2到 Conv3:
这一步骤,我们可以类比上述的“从input到Conv1”的讲解,原来INPUT是300 * 300 * 3过了第一层出来时150 * 150 * 64维度的矩阵,那么第二层(从Conv2到 Conv3)仍然有池化有128个卷积核,由类比推理得:第二层操作步骤出来的应该是75 * 75 * 128维度的矩阵。

 Conv3的推演:
在这里插入图片描述
可以知道第三层有256个卷积核,包含三层小的卷基层(Conv3_1,Conv3_2,Conv3_3)。

 从Conv3到Conv4之间的过度:

在这里插入图片描述
对于上面的池化没有问题,会发现75并不是偶数,那么下一步在75这里相加了一个一,使之成为76,变成一个偶数,还有一种方法是通过步长的设置,这里先不展开叙述。

 后续的步骤
后面的方法都是卷积与池化的过程,具体的实现步骤可以类比上面的步骤,下面就不一层层展开的叙述。可以根据上面给出的VGG网络的结构图查找每一层里面有什么卷积核?多少个?池化的大小?步长多少?是否需要Padding?等对应的问题。

 最后面的三层
最后面的三层是全连接层(FC),是将最后一个卷积层卷积产生的多维矩阵数据,展开成一个维度,然后输入到MLP网络中,多每一个类别进行预测。

2、AlexNet网络

2.1、AlexNet网络结构

AlexNet网络结构如下图所示,其中卷积层共有5层(C1—C5),全连接层共有3层(F1—F3)。
在这里插入图片描述

2.2、理解AlexNet网络

 conv1阶段DFD(data flow diagram):
在这里插入图片描述
第一层输入数据为原始的227 * 227 * 3的图像,这个图像被11 * 11 * 3的卷积核进行卷积运算,移动的步长(stride)是4个像素。因此,卷积核在移动的过程中会生成(227-11)/4+1=55个像素,行和列的55*55个像素形成对原始图像卷积之后的像素层。共有96个卷积核,会生成55 * 55 * 96个卷积后的像素层。96个卷积核分成2组,每组48个卷积核。对应生成2组55 * 55 * 48的卷积后的像素层数据。这些像素层经过relu1单元的处理,生成激活像素层,尺寸仍为2组55 * 55 * 48的像素层数据。
这些像素层经过pool运算(池化运算)的处理,池化运算的尺度为3 * 3,运算的步长为2,则池化后图像的尺寸为(55-3)/2+1=27。 即池化后像素的规模为27 * 27 * 96;然后经过归一化处理,归一化运算的尺度为5 * 5;第一卷积层运算结束后形成的像素层的规模为27 * 27 * 96,分别由对应96个卷积核所运算形成。这96层像素层分为2组,每组48个像素层,每组在一个独立的GPU上进行运算。
反向传播时,每个卷积核对应一个偏差值。即第一层的96个卷积核对应上层输入的96个偏差值。

 conv2阶段DFD(data flow diagram):
在这里插入图片描述
第二层输入数据为第一层输出的27 * 27 * 96的像素层,为便于后续处理,每幅像素层的左右两边和上下两边都要填充2个像素(padding);27 * 27 * 96的像素数据分成27 * 27 * 48的两组像素数据,两组数据分别再两个不同的GPU中进行运算。每组像素数据被5 * 5 * 48的卷积核进行卷积运算,卷积核对每组数据的每次卷积都生成一个新的像素,移动的步长是1个像素。因此,卷积核在移动的过程中会生成(27-5+2 * 2)/1+1=27个像素。行和列的27 * 27个像素形成对原始图像卷积之后的像素层。共有256个5 * 5 * 48卷积核;这256个卷积核分成两组,每组针对一个GPU中的27 * 27 * 48的像素进行卷积运算。会生成两组27 * 27 * 128个卷积后的像素层。这些像素层经过relu2单元的处理,生成激活像素层,尺寸仍为两组27 * 27 * 128的像素层。
这些像素层经过pool运算(池化运算)的处理,池化运算的尺度为3 * 3,运算的步长为2,则池化后图像的尺寸为(57-3)/2+1=13。 即池化后像素的规模为2组13 * 13 * 128的像素层;然后经过归一化处理,归一化运算的尺度为5 * 5;第二卷积层运算结束后形成的像素层的规模为2组13 * 13 * 128的像素层。分别对应2组128个卷积核所运算形成。每组在一个GPU上进行运算。即共256个卷积核,共2个GPU进行运算。反向传播时,每个卷积核对应一个偏差值。即第一层的96个卷积核对应上层输入的256个偏差值。

 conv3到conv5阶段DFD(data flow diagram):
由于conv3到conv5阶段DFD的过程与上述的conv1与conv2类似,主要的差别就是卷积层与池化层的不同,所以,可以类比conv1与conv2计算最终的结果,在这里不在进一步的讲解。在这里给出最后一层的卷积层最终卷积后的结果:在最后一层卷积中2组13 * 13 * 128像素层分别在2个不同GPU中进行池化(pool)运算处理。池化运算的尺度为3 * 3,运算的步长为2,则池化后图像的尺寸为(13-3)/2+1=6。 即池化后像素的规模为两组6 * 6 * 128的像素层数据,共6 * 6 * 256规模的像素层数据。

 最后面的三层
最后面的三层是全连接层(FC),是将最后一个卷积层卷积产生的多维矩阵数据,展开成一个维度,然后输入到MLP网络中,多每一个类别进行预测。

2.3、Alexnet网络中各层的作用

Alexnet网络中各层运算、维度和参数,如下图所示:
在这里插入图片描述在这里插入图片描述
Alexnet网络中各个层发挥的作用如下表所述:
在这里插入图片描述

3、ResNet网络

!!!写博客不容易,请君给个赞在离开!!!

现在好累,不想搞了,等回家睡上一觉,回来再搞。

  • 72
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值