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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

隐私无忧

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

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

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

打赏作者

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

抵扣说明:

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

余额充值