Feature Extractor[VGG]
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]的更多相关文章
- Feature Extractor[inception v2 v3]
0 - 背景 在经过了inception v1的基础上,google的人员还是觉得有维度约间的空间,在<Rethinking the Inception Architecture for Com ...
- Feature Extractor[ResNet]
0. 背景 众所周知,深度学习,要的就是深度,VGG主要的工作贡献就是基于小卷积核的基础上,去探寻网络深度对结果的影响.而何恺明大神等人发现,不是随着网络深度增加,效果就好的,他们发现了一个违背直觉的 ...
- Feature Extractor[SENet]
0.背景 这个模型是<Deep Learning高质量>群里的牛津大神Weidi Xie在介绍他们的VGG face2时候,看到对应的论文<VGGFace2: A dataset f ...
- Feature Extractor[content]
0. AlexNet 1. VGG VGG网络相对来说,结构简单,通俗易懂,作者通过分析2013年imagenet的比赛的最好模型,并发现感受野还是小的好,然后再加上<network in ne ...
- Feature Extractor[Inception v4]
0. 背景 随着何凯明等人提出的ResNet v1,google这边坐不住了,他们基于inception v3的基础上,引入了残差结构,提出了inception-resnet-v1和inception ...
- Feature Extractor[DenseNet]
0.背景 随着CNN变得越来越深,人们发现会有梯度消失的现象.这个问题主要是单路径的信息和梯度的传播,其中的激活函数都是非线性的,从而特别是乘法就可以使得随着层数越深,假设将传统的神经网络的每一层看成 ...
- 图像金字塔(pyramid)与 SIFT 图像特征提取(feature extractor)
David Lowe(SIFT 的提出者) 0. 图像金字塔变换(matlab) matlab 对图像金字塔变换接口的支持(impyramid),十分简单好用. 其支持在reduce和expand两种 ...
- Feature Extractor[googlenet v1]
1 - V1 google团队在模型上,更多考虑的是实用性,也就是如何能让强大的深度学习模型能够用在嵌入式或者移动设备上.传统的想增强模型的方法无非就是深度和宽度,而如果简单的增加深度和宽度,那么带来 ...
- Feature Extractor[batch normalization]
1 - 背景 摘要:因为随着前面层的参数的改变会导致后面层得到的输入数据的分布也会不断地改变,从而训练dnn变得麻烦.那么通过降低学习率和小心地参数初始化又会减慢训练过程,而且会使得具有饱和非线性模型 ...
随机推荐
- 简单选择排序算法的C++实现
简单选择排序采用最简单的选择方法,即在剩余序列中选出最小(或最大)的关键字,和剩余序列的第一个关键字交换位置,依次选择下去,直至使整个序列有序. 算法中两层循环的执行次数和初始序列没有关系,第二层循环 ...
- JPTabBar 详细介绍
一个强大的TabBar,实现市面上APP基本上所拥有的功能,代码简单构造容易!只需不足5行代码就把基本的界面搭建出来了 附上效果图: 主要功能特色: 多种Tab切换的动画效果 实现底部导航中间按钮凸出 ...
- python--线程同步原语
Threading模块是python3里面的多线程模块,模块内集成了许多的类,其中包括Thread,Condition,Event,Lock,Rlock,Semaphore,Timer等等.下面这篇文 ...
- CSS回顾(基础知识,元素,选择器,盒子,颜色)
元素分类: 1.行级元素:内联元素 inline 特征:内容决定元素所占位置,不可以通过CSS改变宽高 span strong em a del 2.块级元素:block特征:独占一行,可 ...
- Python 套接字socketserver网络编程
为什么使用socketserver 虽然Python内置的socket和threading模块能实现简单的多线程服务器,在非正式环境,随便用用还是可以的,但是如果要在生产环境中使用,那是万万不够的. ...
- Apache Linux下Apache安装步骤
Apache简介 Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广 ...
- shell中的set、seq、eval、exec、&&和||
一.set 查看set 帮助: bash -c "help set" 选项: -e:任何命令执行失败(非0 status)直接退出 -x: 打印执行过程的命令行.参数 +e:命令执 ...
- Spark MLlib线性回归代码实现及结果展示
线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析. 这种函数是一个或多个称为回归系数的模型参数的线性组合.只有 ...
- ALTER添加列后,立即UPDATE该列会报错
SQL 2008 R2 请看语句: ALTER TABLE #t ADD col2 INT UPDATE #t SET col2 = 0 报错:列名'col2'无效. 但如果紧接的是SELECT,一切 ...
- 自动化测试基础篇--Selenium弹出框alert
摘自https://www.cnblogs.com/sanzangTst/p/7685304.html 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认 ...