DeepLearning-L6-VGG16

1. 简介

2014年,Karen Simonyan, Andrew Zisserman在《Very Deep Convolutional Networks For Large-Scale Image Recognition》提出VGG-16,夺得ILSVRC 2014的亚军。VGG代表了牛津大学的Oxford Visual Geometry Group,该小组隶属于1985年成立的Robotics Research Group,该Group研究范围包括了机器学习到移动机器人。

VGGNet的两个特点:层数更深更宽、卷积核更小

各个级别VGG的模型结构如下表所示,其下方为不同模型的参数数量。可以看到,虽然从A到E每一级网络逐渐变深,但是网络的参数量并没有增长很多,这是因为参数量主要都消耗在最后3个全连接层了。不过训练耗时的依然是卷积层,因为这部分计算量比较大。其中D,E分别为VGG16和VGG19。

VGGNet使用的全部都是 3 × 3 3 \times 3 3×3的小卷积核和 2 × 2 2 \times 2 2×2的池化核,通过不断加深网络来提升性能。其中经常出现多个完全一样的 3 × 3 3 \times 3 3×3卷积层堆叠在一起的情况。两层 3 × 3 3 \times 3 3×3的串联卷积结果相当于一个 5 × 5 5 \times 5 5×5的卷积,即最后一个像素会与周围 5 × 5 5 \times 5 5×5个像素产生关联,可以说感受野大小为 5 × 5 5 \times 5 5×5。而3层 3 × 3 3 \times 3 3×3的卷积核的串联结果则相当于1个 7 × 7 7 \times 7 7×7的卷积层。
除此之外,3个串联的 3 × 3 3 \times 3 3×3卷积层的参数数量要比一个7x7卷积层的参数数量小得多,更少的参数意味着减少过拟合,而且更重要的是3个 3 × 3 3 \times 3 3×3卷积层拥有比1个 7 × 7 7 \times 7 7×7的卷积层更多的非线性变换,使得CNN对特征的学习能力更强。

2. 网络结构

VGG拥有5个卷积段,每一个卷积段有2-3个卷积层,同时每段的结尾都会连接一个最大池化层,来缩小图片尺寸。每段内的卷积核数量都一样,越靠后的段的卷积核数量越多: 64 − 128 − 256 − 512 − 512 64-128-256-512-512 64128256512512
在这里插入图片描述
Layer Conv1-1

  • 输入: 224 × 224 × 3 224 \times 224 \times 3 224×224×3
  • 卷积核: 3 × 3 3 \times 3 3×3,步长 1 1 1,padding 1 1 1,深度 64 64 64
  • 输出: 224 × 224 × 64 224 \times 224 \times 64 224×224×64

Layer Conv1-2

  • 输入: 224 × 224 × 64 224 \times 224 \times 64 224×224×64
  • 卷积核: 3 × 3 3 \times 3 3×3,步长 1 1 1,padding 1 1 1,深度 64 64 64
  • 输出: 224 × 224 × 64 224 \times 224 \times 64 224×224×64

Layer POOL-1

  • 输入: 224 × 224 × 64 224 \times 224 \times 64 224×224×64
  • 卷积核: 2 × 2 2 \times 2 2×2,步长 2 2 2,padding 0 0 0,深度 64 64 64
  • 输出: 112 × 112 × 64 112 \times 112 \times 64 112×112×64

Layer Conv2-1

  • 输入: 112 × 112 × 64 112 \times 112 \times 64 112×112×64
  • 卷积核: 3 × 3 3 \times 3 3×3,步长 1 1 1,padding 1 1 1,深度 64 64 64
  • 输出: 112 × 112 × 128 112 \times 112 \times 128 112×112×128

Layer Conv2-2

  • 输入: 112 × 112 × 128 112 \times 112 \times 128 112×112×128
  • 卷积核: 3 × 3 3 \times 3 3×3,步长 1 1 1,padding 1 1 1,深度 128 128 128
  • 输出: 112 × 112 × 128 112 \times 112 \times 128 112×112×128

Layer POOL-2

  • 输入: 112 × 112 × 128 112 \times 112 \times 128 112×112×128
  • 卷积核: 2 × 2 2 \times 2 2×2,步长 2 2 2,padding 0 0 0,深度 128 128 128
  • 输出: 56 × 56 × 128 56 \times 56 \times 128 56×56×128

Layer Conv3-1

  • 输入: 56 × 56 × 128 56 \times 56 \times 128 56×56×128
  • 卷积核: 3 × 3 3 \times 3 3×3,步长 1 1 1,padding 1 1 1,深度 256 256 256
  • 输出: 56 × 56 × 256 56 \times 56 \times 256 56×56×256

Layer Conv3-2

  • 输入: 56 × 56 × 256 56 \times 56 \times 256 56×56×256
  • 卷积核: 3 × 3 3 \times 3 3×3,步长 1 1 1,padding 1 1 1,深度 256 256 256
  • 输出: 56 × 56 × 256 56 \times 56 \times 256 56×56×256

Layer Conv3-3

  • 输入: 56 × 56 × 256 56 \times 56 \times 256 56×56×256
  • 卷积核: 3 × 3 3 \times 3 3×3,步长 1 1 1,padding 1 1 1,深度 256 256 256
  • 输出: 56 × 56 × 256 56 \times 56 \times 256 56×56×256

Layer POOL-3

  • 输入: 56 × 56 × 256 56 \times 56 \times 256 56×56×256
  • 卷积核: 2 × 2 2 \times 2 2×2,步长 2 2 2,padding 0 0 0,深度 256 256 256
  • 输出: 28 × 28 × 256 28 \times 28 \times 256 28×28×256

Layer Conv4-1

  • 输入: 28 × 28 × 256 28 \times 28 \times 256 28×28×256
  • 卷积核: 3 × 3 3 \times 3 3×3,步长 1 1 1,padding 1 1 1,深度 512 512 512
  • 输出: 28 × 28 × 512 28 \times 28 \times 512 28×28×512

Layer Conv4-2

  • 输入: 28 × 28 × 512 28 \times 28 \times 512 28×28×512
  • 卷积核: 3 × 3 3 \times 3 3×3,步长 1 1 1,padding 1 1 1,深度 512 512 512
  • 输出: 28 × 28 × 512 28 \times 28 \times 512 28×28×512

Layer Conv4-3

  • 输入: 28 × 28 × 512 28 \times 28 \times 512 28×28×512
  • 卷积核: 3 × 3 3 \times 3 3×3,步长 1 1 1,padding 1 1 1,深度 512 512 512
  • 输出: 28 × 28 × 512 28 \times 28 \times 512 28×28×512

Layer POOL-4

  • 输入: 28 × 28 × 512 28 \times 28 \times 512 28×28×512
  • 卷积核: 2 × 2 2 \times 2 2×2,步长 2 2 2,padding 0 0 0,深度 512 512 512
  • 输出: 14 × 14 × 512 14 \times 14 \times 512 14×14×512

Layer Conv5-1

  • 输入: 14 × 14 × 512 14 \times 14 \times 512 14×14×512
  • 卷积核: 3 × 3 3 \times 3 3×3,步长 1 1 1,padding 1 1 1,深度 512 512 512
  • 输出: 14 × 14 × 512 14 \times 14 \times 512 14×14×512

Layer Conv5-2

  • 输入: 14 × 14 × 512 14 \times 14 \times 512 14×14×512
  • 卷积核: 3 × 3 3 \times 3 3×3,步长 1 1 1,padding 1 1 1,深度 512 512 512
  • 输出: 14 × 14 × 512 14 \times 14 \times 512 14×14×512

Layer Conv5-3

  • 输入: 14 × 14 × 512 14 \times 14 \times 512 14×14×512
  • 卷积核: 3 × 3 3 \times 3 3×3,步长 1 1 1,padding 1 1 1,深度 512 512 512
  • 输出: 14 × 14 × 512 14 \times 14 \times 512 14×14×512

Layer POOL-5

  • 输入: 14 × 14 × 512 14 \times 14 \times 512 14×14×512
  • 卷积核: 2 × 2 2 \times 2 2×2,步长 2 2 2,padding 0 0 0,深度 512 512 512
  • 输出: 7 × 7 × 512 7 \times 7 \times 512 7×7×512


参考
代码实现

### 回答1: VGG16是一个非常流行的深度卷积神经网络,用于图像识别和分类任务。它由Simonyan等人在2014年首次提出,这个模型具有16个卷积层和3个完全连接层,这些层被认为是非常深的网络结构。在Matlab中,要使用VGG16模型,就需要使用深度学习工具箱的模型库,在这个库中可以找到vgg-16网络的支持。这意味着,如果想要在Matlab中实现VGG16模型,需要在深度学习工具箱中安装vgg-16网络的支持包。这个支持包提供了VGG16网络的预训练模型,可以用于图像分类任务和其他深度学习应用。因此,这个支持包非常重要,是使用VGG16网络的必要条件。总的来说,VGG16是一个非常强大的深度卷积神经网络,在Matlab中使用需要深度学习工具箱的模型库的支持。 ### 回答2: VGG16是一种经典的卷积神经网络模型,它适用于图像分类、目标检测等深度学习任务。在MATLAB中使用VGG16网络时,需要首先安装“深度学习工具箱”模型以便提供VGG16网络的支持。 深度学习工具箱是MATLAB中的一个重要工具,它包含了许多深度学习算法和网络模型的实现,用户可以通过这个工具箱灵活地搭建、训练和测试自己的深度学习模型。而VGG16模型正是深度学习工具箱提供的其中一种预定义网络模型。 在安装了深度学习工具箱后,用户可以通过简单的命令来加载预训练好的VGG16模型,该模型可以在不同的图像数据集上进行微调,以更好地适应用户自己的任务。此外,深度学习工具箱还提供了大量的图像处理函数,例如数据增强、卷积层可视化、特征可视化等,可以帮助用户更好地了解和优化自己的深度学习模型。 总之,VGG16需要深度学习工具箱模型的支持,在MATLAB中使用VGG16网络时需要先安装并加载该模型,并结合其他图像处理函数进行模型训练和优化。 ### 回答3: vgg16深度学习中常用的卷积神经网络模型,在使用时需要使用深度学习工具箱配合使用,以支持vgg16网络。深度学习工具箱是基于MATLAB编写的一款深度学习工具,该工具箱提供了许多深度学习模型的支持,包括vgg16等经典模型。使用深度学习工具箱可以简化模型实现的步骤,使得深度学习的实现更加便捷和高效。 在使用vgg16模型时,需要先在深度学习工具箱中将模型加载进入MATLAB环境中,然后再进行训练和测试操作。深度学习工具箱提供的vgg16模型支持包括了许多经典的网络层,如卷积层、池化层、全连接层等,同时还提供了一些预训练好的模型参数,使得模型的训练和调整更加方便。 除了vgg16深度学习工具箱还支持其他许多深度学习模型,如AlexNet、ResNet等,使用起来也十分方便。如果想要进行深度学习的开发和研究,深度学习工具箱是一个十分不错的选择。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隐私无忧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值