[论文解读]VGGNet:Very Deep Convolution Networks for Large-Scale Image Recognition

/* 版权声明:可以任意转载,转载时请务必标明文章原始出处和作者信息 .*/

faiculty: 机器学习、计算机视觉、语音识别算法学习笔记  

微信公众号、知乎专栏、简书,请搜索: faiculty

1. 前言

VGG是牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司研究员一起研发的深度卷积神经网络

VGGNet 探索了卷积神经网络的深度与其性能之间的关系,通过反复堆叠3x3的小型卷积核和2x2的最大池化层,VGGNet 成功地构筑了16~19层深的卷积神经网络。VGGNet 相比之前 state-of-the-art 的网络结构,错误率大幅下降,并取得了 ILSVRC 2014 比赛分类项目的第2名和定位项目的第1名。

同时 VGGNet 的拓展性很强,迁移到其他图片数据上的泛化性非常好。VGGNet 的结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3x3)和最大池化尺寸(2x2)。到目前为止,VGGNet 依然经常被用来提取图像特征(!!!)。VGGNet 训练后的模型参数在其官方网站上开源了,可用来在 domain specific 的图像分类任务上进行再训练(相当于提供了非常好的初始化权重),因此被用在了很多地方。

2. 网络结构

下图就是VGG-net家族的网络结构图。

VGG-Net家族结构图

2.1 结构解读

==基本参数==:

  • 一共有A、A-LRN、B、C、D、E,6个网络。其中的D、E也就是我们常说的VGGNet-16、VGGNet-19
  • conv(receptive field size) - (number of channels)
  • 论文中全部使用了3x3的卷积核 和 2x2的池化核,卷积步长为1
  • 都采用Relu作为激活函数

==卷积核采用3x3 ?==

VGGNet 拥有5段卷积,每一段内有2~3个卷积层,同时每段尾部会连接一个最大池化层用来缩小图片尺寸。每段内的卷积核数量一样,越靠后的段的卷积核数量越多:64 – 128 – 256 – 512 – 512。其中经常出现多个完全一样的3x3的卷积层堆叠在一起的情况,这其实是非常有用的设计。如下图所示,两个3x3的卷积层串联相当于1个5x5的卷积层,即一个像素会跟周围5x5的像素产生关联,可以说感受野大小为5x5。而3个3x3的卷积层串联的效果则相当于1个7x7的卷积层。除此之外,3个串联的3x3的卷积层,拥有比1个7x7的卷积层更少的参数量,只有后者的一半。最重要的是,3个3x3的卷积层拥有比1个7x7的卷积层更多的非线性变换(前者可以使用三次 ReLU 激活函数,而后者只有一次),使得 CNN 对特征的学习能力更强。

[图片上传失败...(image-904a64-1515727838537)]

==C中采用了1x1的卷积核?==

我想是用来做对比试验,1x1的卷积核可以在没有改变、影响卷积感受野的情况下增加线性变换次数,而保持输入通道数和输出通道数不变,没有发生降维。

2.2 训练

文章中将224x224作为网络的training scale

1. 小批梯度下降方法

论文中的原话为: the training is carried out by optimising the multinormial logistic regression objective using mini-batch gradient descent(based on bp) with momentum.

翻译: 使用加动量的随机梯度下降方法来优化Logistic回归(SGD+momentum)

  • 动量: 0.9
  • 批数: 256
  • 权值衰减:5x10^-4,(weight decay)
  • 前两个全连接层使用dropout为: keep_prob = 0.5
  • 学习速率为: 0.01,当验证集准确度停止提升的时候以10倍速度衰减

2. 权重初始化

训练A网络:

  • W: 服从(0, 0,01)的高斯分布
  • Bias: 0

后续:

把A的前4个卷积层和最后的全连接层的权值当做其它网络的初始值,未赋值的中间层随机初始化。

3. Multi-Scale

在训练中,VGG使用了Multi-Scale的方法做数据增强,将原始的图像缩放到不同尺寸S,然后在随机裁切224x224的图片,这样可以增加很多数据量,对于防止过拟合有很不错的效果。
初始对原始图片进行裁剪时,原始图片的最小边不宜过小,这样的话,裁剪到224x224的时候,就相当于几乎覆盖了整个图片,这样对原始图片进行不同的随机裁剪得到的图片就基本上没差别,就失去了增加数据集的意义,但同时也不宜过大,这样的话,裁剪到的图片只含有目标的一小部分,也不是很好。

针对上述问题,文章提出了两种方法:

  • 固定尺寸为S=256 和 S=384, 训练后取均值
  • multi-scale training,训练数据随机从[256, 512]的确定范围进行抽样,这样原始图片尺寸不同,有利于训练。

==训练数据尺寸不同,如何训练?最简单的是直接Resize==

2.3 测试

给出一个训练后的网络模型 和 一张图像,进行预测。测试的时候,图片的尺寸不一定要与训练图片的尺寸相同,而且不需要裁剪。
首先将全连接层转换到卷积层,==第一个全连接层转换到一个7x7的卷积层,后面两个转换到1x1的卷积层==,这不仅仅让全连接层应用到整个未裁剪的原始图像上,而且能得到一个类别的得分图(class score map),它的通道数等于类别数,还有一个取决于图片尺寸的可变空间分辨率(variable spatial resolution)。具体的操作如下所示:

文章中训练输入图像尺寸均为224x224,这样网络的参数就已经固定了。图像尺寸只会与pool层相关,经过5层pool层后,最后输出为7x7x512的尺寸。现在我们假设有一张测试图像的尺寸为256x256,这样经过卷积、池化后,最后输出的为8x8x512,这个时候最后三个全连接层是怎样工作的呢?

# ImgIn shape:  (?, 8, 8, 512)
# FC1 参数个数: 7x7x512x4096, 训练结果,参数已经固定
# 将FC1 转换为 卷积层, 卷积核大小7x7x512,通道数4096,步长为1
conv:      ->    (?, 8, 8, 4096), kernel_size=(7,7,512,4096), stride=1

# ImgIn shape:   (?, 8, 8, 4096)
# FC2 参数个数:4096x4096,也是训练结果,已经固定的
# 将FC2 转换为 卷积层, 卷积核大小1x1x4096, 通道数4096, 步长1
conv:      ->    (?, 8, 8, 4096), kernel_size(1,1,4096,4096), stride=1

# ImgIn shape:   (?, 8, 8, 4096)
# FC3 参数个数:4096x1000,也是训练结果,已经固定的
# 将FC2 转换为 卷积层, 卷积核大小1x1x4096, 通道数1000, 步长1
conv:      ->    (?, 8, 8, 1000), kernel_size(1,1,4096,1000), stride=1

由此就得到了一个class score map, 然后取均值即可。

测试数据尺寸不同,如何测试?

3. 分类实验

3.1 单尺度评估

[图片上传失败...(image-80f29d-1515727838537)]

得到如下结论:

  • LRN并不能改善A网络性能
  • 分类误差随着深度增加而降低
  • 在训练的时候采用图像尺度抖动(Scale Jittering)可以改善图像分类效果

3.2 多尺度评估

[图片上传失败...(image-d87b7c-1515727838537)]

  • 相对于单一尺度评估,多尺度评估提高了分类精度
  • 在训练的时候采用图像尺度抖动(Scale Jittering)可以改善图像分类效果

3.3 多裁剪评估

[图片上传失败...(image-dfcf87-1515727838537)]
多裁剪(multi-crop)评估比起密集(dense)评估,效果更好。而且两者具有互补作用,结合两种方式,效果更好。

3.4 卷积网络融合

[图片上传失败...(image-4b2cc6-1515727838537)]

如果结合多个卷积网络的softmax输出,分类结果会更好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342