0. 背景

Karen Simonyan等人在2014年参加Imagenet挑战赛的时候提出的深度卷积神经网络。作者通过对2013年的ILSVRC中最好的深度神经网络模型(他们最初的对应模型都是alexnet)进行研究,发现他们使用了更小的感受野,并且在第一层卷积层中使用了更小的stride,也就是这两点都有助于准确度的提升。所以本文就不去做无用功,从网络的深度去挖掘CNN模型的提升空间,并且发现当网络深度在超过16层时,有明显的提升效果,故而如果截取当前16层的网络,就被称之为VGG16。

从感受野角度来说,两个\(3*3\)的卷积核叠加,就等于一个\(5*5\)的卷积核的结果。可是从参数量上,前者明显会小于后者。而且从分层角度上看,因为之间会通过非线性激活函数的转换,所以\(3*3\)的卷积核叠加还能得到更非线性的特征提取结果

为了遵循单一变量的原则,除了深度外,其他涉及到的参数基本保持一致。

1. 模型


图1.1 VGG不同深度时的网络结构
如图1.1所示,图片的输入都是\(224*224\),卷积核大小都是\(3*3\),滑动的步长stride=1,在某些卷积层后面跟上最大池化,其中池化的大小为\(2*2\),且每一层卷积都是保留尺寸的卷积(即卷积之后,feature map的大小不变),且为了降维、对通道的线性变换、增加决策函数的非线性等目的,采用了《network in network》中的\(1*1\)的卷积操作。其中FC层表示该层为全连接层。
作者通过试验发现alexnet中的LRN(Local Response Normalisation,LRN)不但不利于准确度提升,反而还会占用内存,所以都省略了该层。


图1.2 不同深度VGG下参数量,单位为百万

2. 训练结果

作者在训练的时候,开始先训练模型A,然后在训练模型B的时候,将前面几层CNN和最后的全连接层的参数用模型A的权重来初始化,以此达到用小模型去预训练大模型的目的;
而且,作者用S表示对训练集图片做的一个缩放,用Q表示对测试集图片做的一个缩放,当然其中S和Q都不得小于224。

简单的训练过程如下:

  • 1 - 给定S和Q值,将图片进行各方向同性缩放到S和Q;
  • 2 - 然后用crop的方法对缩放后的图片进行采样到\(224*224\);
  • 3 - 将crop采样得到的图片放入VGG模型中训练。


图2.1基于单尺度测试情况下的结果

图2.2基于多尺度测试情况下的结果
从图2.1和图2.2中可以看出:从C模型与D模型对比,可以肯定深度的好处的确有助于准确度的提升;而从E模型与D模型的对比,发现还是E模型更好,作者认为深度有助于提升准确度,可是模型还是需要通过卷积核去抓取空间上下文信息。

因为大家通常都是直接将基于imagenet训练好的VGG拿来用,所以基本没多少人会从0开始训练VGG网络。而且论文中也显示4块卡,也需要小心的训练2-3个礼拜。本文只着重于VGG的网络结构,如有必要,后续再补全该博文。

参考文献:
[] - Zeiler M D, Fergus R. Visualizing and understanding convolutional networks[C]//European conference on computer vision. Springer, Cham, 2014: 818-833.
[] - Sermanet, P., Eigen, D., Zhang, X., Mathieu, M., Fergus, R., and LeCun, Y. OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks. In Proc. ICLR, 2014[]

Feature Extractor[VGG]的更多相关文章

  1. Feature Extractor[inception v2 v3]

    0 - 背景 在经过了inception v1的基础上,google的人员还是觉得有维度约间的空间,在<Rethinking the Inception Architecture for Com ...

  2. Feature Extractor[ResNet]

    0. 背景 众所周知,深度学习,要的就是深度,VGG主要的工作贡献就是基于小卷积核的基础上,去探寻网络深度对结果的影响.而何恺明大神等人发现,不是随着网络深度增加,效果就好的,他们发现了一个违背直觉的 ...

  3. Feature Extractor[SENet]

    0.背景 这个模型是<Deep Learning高质量>群里的牛津大神Weidi Xie在介绍他们的VGG face2时候,看到对应的论文<VGGFace2: A dataset f ...

  4. Feature Extractor[content]

    0. AlexNet 1. VGG VGG网络相对来说,结构简单,通俗易懂,作者通过分析2013年imagenet的比赛的最好模型,并发现感受野还是小的好,然后再加上<network in ne ...

  5. Feature Extractor[Inception v4]

    0. 背景 随着何凯明等人提出的ResNet v1,google这边坐不住了,他们基于inception v3的基础上,引入了残差结构,提出了inception-resnet-v1和inception ...

  6. Feature Extractor[DenseNet]

    0.背景 随着CNN变得越来越深,人们发现会有梯度消失的现象.这个问题主要是单路径的信息和梯度的传播,其中的激活函数都是非线性的,从而特别是乘法就可以使得随着层数越深,假设将传统的神经网络的每一层看成 ...

  7. 图像金字塔(pyramid)与 SIFT 图像特征提取(feature extractor)

    David Lowe(SIFT 的提出者) 0. 图像金字塔变换(matlab) matlab 对图像金字塔变换接口的支持(impyramid),十分简单好用. 其支持在reduce和expand两种 ...

  8. Feature Extractor[googlenet v1]

    1 - V1 google团队在模型上,更多考虑的是实用性,也就是如何能让强大的深度学习模型能够用在嵌入式或者移动设备上.传统的想增强模型的方法无非就是深度和宽度,而如果简单的增加深度和宽度,那么带来 ...

  9. Feature Extractor[batch normalization]

    1 - 背景 摘要:因为随着前面层的参数的改变会导致后面层得到的输入数据的分布也会不断地改变,从而训练dnn变得麻烦.那么通过降低学习率和小心地参数初始化又会减慢训练过程,而且会使得具有饱和非线性模型 ...

随机推荐

  1. 通过源码分析View的测量

    要理解View的测量,首先要了解MeasureSpec,系统在测量view的宽高时,要先确定MeasureSpec. MeasureSpec(32为int值)由两部分组成: SpecMode(高2位) ...

  2. ThreadLocal 类 的源码解析以及使用原理

    1.原理图说明 首先看这一张图,我们可以看出,每一个Thread类中都存在一个属性 ThreadLocalMap 成员,该成员是一个map数据结构,map中是一个Entry的数组,存在entry实体, ...

  3. Future FutrueTask Callable类源码说明以及原理使用

    1.Future Callable FutureTask 源码说明 JDK内置的Future主要使用到了Callable接口和FutureTask类. Callable是类似于Runnable的接口, ...

  4. Spring从认识到细化了解

    目录 Spring的介绍 基本运行环境搭建 IoC 介绍: 示例使用: 使用说明: 使用注意: Bean的实例化方式 Bean的作用范围的配置: 补充: DI: 属性注入: 补充: IoC的注解方式: ...

  5. Team Services的打包管理

    Team Services的打包管理 概述 Package Management (打包管理)是一种扩展,可以更容易地发现.安装和发布包. 它与Team Services中心如构建功能深度集成,这样打 ...

  6. Django 配置MySQL数据库

    在settings.py中配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'my ...

  7. redis搭建主从(1主2从)

    一,先附上配置文件 1,master(6379.conf)上面的配置文件 daemonize yes pidfile /usr/local/redis/logs/redis_6379.pid port ...

  8. springmvc复习笔记----springmvc最简单的第一个例子:RequestMapping试水

    结构 用到的包 web.xml <url-pattern>/</url-pattern>中可以换成其他的后缀*.do ,*. sb  …… <?xml version=& ...

  9. c/c++ 图相关的函数(二维数组法)

    c/c++ 图相关的函数(二维数组法) 遍历图 插入顶点 添加顶点间的线 删除顶点 删除顶点间的线 摧毁图 取得与v顶点有连线的第一个顶点 取得与v1顶点,v1顶点之后的v2顶点的之后的有连线的第一个 ...

  10. python3+xlwt 读取txt信息并写入到excel中

    # coding = utf-8 import os import xlwt import re def readTxt_toExcel(valueList, Pathlist): workbook ...