深度学习之学习(1-1) VGG16网络结构详解

 参见

  1. ​​​​​​【深度学习】全面理解VGG16模型_florrie-CSDN博客_vgg16模型介绍
  2. 深度学习-VGG16原理详解_é£的博客-CSDN博客_vgg16

1、网络结构

根据卷积核大小和卷积层数,VGG共有6中配置,分别为A,A-LRN,B,C,D,E,其中D和E两种最为常用,即i我们所说的VGG16和VGG19。

具体为:

1. 卷积-卷积-池化-卷积-卷积-池化-卷积-卷积-卷积-池化-卷积-卷积-卷积-池化-卷积-卷积-卷积-池化-全连接-全连接-全连接 。

2. 通道数分别为64,128,512,512,512,4096,4096,1000。卷积层通道数翻倍,直到512时不再增加。通道数的增加,使更多的信息被提取出来。全连接的4096是经验值,当然也可以是别的数,但是不要小于最后的类别。1000表示要分类的类别数。

3. 所有的激活单元都是Relu 。

4. 用池化层作为分界,VGG16共有6个块结构,每个块结构中的通道数相同。因为卷积层和全连接层都有权重系数,也被称为权重层,其中卷积层13层,全连接3层,池化层不涉及权重。所以共有13+3=16权重层。

5. 对于VGG16卷积神经网络而言,其13层卷积层和5层池化层负责进行特征的提取,最后的3层全连接层负责完成分类任务。

在这里插入图片描述
在这里插入图片描述


vgg16总共有16层,13个卷积层和3个全连接层,第一次经过64个卷积核的两次卷积后,采用一次pooling,第二次经过两次128个卷积核卷积后,再采用pooling,再重复两次三个512个卷积核卷积后,再pooling,最后经过三次全连接。

2、VGG16的卷积核

  1. conv3-xxx:卷积层全部都是3*3的卷积核,用上图中conv3-xxx表示,xxx表示通道数。其步长为1,用padding=same填充。池化层的池化核为2*2
  2. input(224x224 RGB image) :指的是输入图片大小为224*244的彩色图像,通道为3,即224*224*3;
  3. maxpool :是指最大池化,在vgg16中,pooling采用的是2*2的最大池化方法;
  4. FC-4096 :指的是全连接层中有4096个节点,同样地,FC-1000为该层全连接层有1000个节点;
  5. padding:指的是对矩阵在外边填充n圈,padding=1即填充1圈,5X5大小的矩阵,填充一圈后变成7X7大小;
  6. 最后补充,vgg16每层卷积的滑动步长stride=1,padding=1,卷积核大小为333;

3. 卷积计算 

1)输入图像尺寸为224x224x3,经64个通道为3的3x3的卷积核,步长为1,padding=same填充,卷积两次,再经ReLU激活,输出的尺寸大小为224x224x64 
2)经max pooling(最大化池化),滤波器为2x2,步长为2,图像尺寸减半,池化后的尺寸变为112x112x64 
3)经128个3x3的卷积核,两次卷积,ReLU激活,尺寸变为112x112x128 
4)max pooling池化,尺寸变为56x56x128 
5)经256个3x3的卷积核,三次卷积,ReLU激活,尺寸变为56x56x256 
6)max pooling池化,尺寸变为28x28x256 
7)经512个3x3的卷积核,三次卷积,ReLU激活,尺寸变为28x28x512 
8)max pooling池化,尺寸变为14x14x512 
9)经512个3x3的卷积核,三次卷积,ReLU,尺寸变为14x14x512 
10)max pooling池化,尺寸变为7x7x512 
11)然后Flatten(),将数据拉平成向量,变成一维51277=25088。 
11)再经过两层1x1x4096,一层1x1x1000的全连接层(共三层),经ReLU激活 
12)最后通过softmax输出1000个预测结果
VGG16模型所需要的内存容量
VGG16模型所需要的内存容量

 


4、什么是卷积? 

卷积过程

image为需要进行卷积的图片,而convolved feature为卷积后得到的特征图;那么什么是卷积的过滤器也就是filter呢?图中黄色矩阵即为filter,image为5X5大小的一维图像,filter为3X3大小的一维矩阵;卷积过程是:filter与image对应位置相乘再相加之和,得到此时中心位置的值,填入第一行第一列,然后在移动一个格子(stride=1),继续与下一个位置卷积…最后得到是3X3X1的矩阵。
——这里需要注明:卷积后的结果矩阵维度=(image矩阵维数-filter矩阵维数+2xpad)/2+1,对应上图即宽width:3=(5-3+2x0)/1+1,高height:3=(5-3+2x0)/1+1;

卷积过程
在这里补充经过padding填充,那么卷积后图片大小不会发生改变,如5X5的图像大小,padding=1变成7X7,再用3X3的filter进行卷积,那么卷积后的宽高为(7-3+2x1)/1+1=7。

 

 

5、什么是maxpool?

最大池化就是取filter对应区域内最大像素值替代该像素点值,其作用是降维。在这里,池化使用的滤波器都是2*2大小,因此池化后得到的图像大小为原来的1/2。下图为最大池化过程:

 

6.1、从input到conv1


由于224不太好计算,那么这里使用input图片大小为300x300x3举例:
图片:
第一层
首先两个黄色的是卷积层,是VGG16网络结构十六层当中的第一层(Conv1_1)和第二层(Conv1_2),合称为Conv1。

那么,第一层怎么将300x300x3的矩阵变成一个300x300x64的呢??
在这里插入图片描述
假设RGB图像为蓝色框,橙色方块为3x3x3的卷积核(即filter),那么卷积后得到的图像应为298x298x1(此处没有进行padding,步长为1),但是经过填充一圈的矩阵,所以得到的结果为300x300x1,在这层中有64个卷积核,那么原来的300x300x1就变成了300x300x64。

 

6.2、从conv1到conv2之间的过渡


在上面的结构图可以看到,第一层卷积后要经过pooling,才到第二层,那么:

这层,pooling使用的filter是2x2x64,且步长为2,那么得到的矩阵维数刚好为原来的一半,第三个维度64不改变,因为那个指的是filter个数。

6.3、conv2到conv3


我们从上面的过程中知道了,input为300x300x3的图片,经过第一层之后变成150x150x64,那么第二层里面有128个卷积核,可以推出经过第二层后得到是75x75x128。

6.4、进入conv3


第三层
可知,第三层有256个卷积核,那么得到就是75x75x256

 

6.5、从conv3到conv4之间的过渡



这里75是奇数,经过pad之后变成偶数76,那么就得到结果为38x38x256
其余的过程与上述一样,最终得到10x10x512。

7、最后到三层全连接FC层


在全连接层中的每一个节点都与上一层每个节点连接,把前一层的输出特征都综合起来。在VGG16中,第一个全连接层FC1有4096个节点,上一层pool之后得到是10x10x512=51200个节点,同样第二个全连接层FC2也有4096个节点,最后一个FC3有1000个节点。

4. 权重参数(不考虑偏置) 
1)输入层有0个参数,所需存储容量为224x224x3=150k 2)对于第一层卷积,由于输入图的通道数是3,网络必须要有通道数为3的的卷积核,这样的卷积核有64个,因此总共有(3x3x3)x64 = 1728个参数。 所需存储容量为224x224x64=3.2M 计算量为:输入图像224×224×3,输出224×224×64,卷积核大小3×3。所以Times=224×224×3x3×3×64=8.7×107 
3)池化层有0个参数,所需存储容量为 图像尺寸x图像尺寸x通道数=xxx k 4)全连接层的权重参数数目的计算方法为:前一层节点数×本层的节点数。因此,全连接层的参数分别为: 7x7x512x4096 = 1027,645,444 4096x4096 = 16,781,321 4096x1000 = 4096000 按上述步骤计算的VGG16整个网络总共所占的存储容量为24M*4bytes=96MB/image 。所有参数为138M VGG16具有如此之大的参数数目,可以预期它具有很高的拟合能力;但同时缺点也很明显: 即训练时间过长,调参难度大。 需要的存储容量大,不利于部署。 
5. 时间复杂度 
1)卷积层的时间复杂度大致是同一数量级的 2)随着网络深度加深,卷积层的空间复杂度快速上升(每层的空间复杂度是上层的两倍) 3)全连接层的空间复杂度比卷积层的最后一层还大 
6. 特点 
1)小的卷积核 :3x3的卷积核 2)小的池化核 :2x2的池化核 3)层数更深特征图更宽 :基于前两点外,由于卷积核专注于扩大通道数、池化专注于缩小宽和高,使得模型架构上更深更宽的同时,计算量缓慢的增加; 4)全连接转卷积 :网络测试阶段将训练阶段的三个全连接替换为三个卷积,测试重用训练时的参数,使得测试得到的全卷积网络因为没有全连接的限制,因而可以接收任意宽或高为的输入。 
7. 感受野 
VGG主要使用较小的卷积核代替较大的卷积核。在VGG16中,作者认为两个3x3的卷积堆叠获得的感受野大小,相当一个5x5的卷积;而3个3x3卷积的堆叠获取到的感受野相当于一个7x7的卷积。这样做一方面可以减少参数,增加了网络深度,另一方面相当于进行了更多的非线性映射,可以增加网络的拟合/表达能力。
在这里插入图片描述

1)替代性
下图为2个3x3的卷积核代替1个5x5

 

在这里插入图片描述 

 

 

2)参数减少 对于2个3x3卷积核,所用的参数总量为2x(3x3)xchannels, 对于1个5x5卷积核为5x5xchannels 对于3个3x3卷积核,所用的参数总量为3x(3x3)xchannels, 对于1个7x7卷积核为7x7xchannels 因此可以显著地减少参数的数量
 

 

  • 80
    点赞
  • 371
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Se-VGG16是一种基于VGG16网络结构,它在VGG16的基础上进行了改进。VGG16是一个经典的卷积神经网络模型,由13个卷积层和3个全连接层组成,深度为16。Se-VGG16VGG16的基础上添加了SE模块,这是一种注意力机制,用于增强模型的表示能力和泛化能力。 SE模块通过学习特征通道之间的关系,自适应地调整每个通道的权重。它包含两个关键步骤:先进行全局平均池化,将特征图的每个通道压缩成一个标量;然后,使用两个全连接层,将这个标量压缩成一个介于0和1之间的权重。最后,将这个权重乘以原始的特征图,得到加权后的特征图。 Se-VGG16网络结构VGG16相似,都由多个卷积层和全连接层组成。不同之处在于Se-VGG16在每个卷积块的最后一个卷积层后添加了一个SE模块。这样,每个卷积块都会自适应地调整特征通道的权重,以提高模型的表达能力。 总结起来,Se-VGG16是在VGG16基础上添加了SE模块的改进版。这种改进能够提高模型的表达能力和泛化能力,进一步提升了模型的性能。 : VGGNet模型有A-E五种结构网络,深度分别为11,11,13,16,19。其中较为典型的网络结构主要有vgg16和vgg19,本篇文章主要讲VGG16,并分享VGG16的Pytorch实现。 : 首先介绍一下感受野的概念。在卷积神经网络中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野(receptive field)。通俗的解释是,输出feature map上的一个单元对应输入层上的区域大小。 VGG亮点。 : keras官方预训练模型vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值