VGGNet学习笔记

本专栏将从论文的角度解读一下CV方向的一些经典神经网络模型及其贡献与意义,以期加深自己的印象,后续可以随时翻看并且学习其中好的tricks。本期介绍VGGNet.

论文相关信息

论文全称为《Very Deep Convolutional Networks For Large-scale Image Recongnition》(论文链接),首先于2015年上传到arXiv上(一个为了防止自己论文在收录前被别人剽窃,收录预稿的文档收录网站),最后发表在2015年的ICLR(International Conference on Learning Representations,国际学习表征会议,由位列深度学习三大巨头之二的 Yoshua Bengio 和 Yann LeCun 牵头创办,2013 年才刚刚成立了第一届,但已经被广泛认可,是深度学习领域的顶级会议)上,作者及相关信息如下:
在这里插入图片描述
上一期谈到的AlexNet取得惊人结果之后,大家纷纷尝试在AlexNet原有的架构上进行改进,而本期论文作者们主要着眼于网络的深度。论文主要研究了在大型图片识别任务中,卷积神经网络的深度对准确率的影响。而VGG这个名字的由来即作者单位——牛津大学的Visual Geometry Group。

作者用于验证模型是否有效的数据集是ILSVRC-2014,这个数据集上一期也做过介绍了,不再赘述。并且作者们在2014年的ImageNet比赛中获得了定位任务的第一名和分类任务的第二名,这是一个非常了不起的成绩。

网络简介

下图中展示了论文中主要研究的几个网络的架构图,其中D、E就是著名的VGG16、VGG19,可以看到其架构与AlexNet几乎是一样的,都是五个卷积块加三个全连接层,不同的是,AlexNet每一个卷积块只有一个卷积层,而VGG尝试在每个卷积块中使用多个卷积层来增加网络深度。
在这里插入图片描述

论文的比较实验(tricks)

这篇论文主要就是通过大量的对比实验,来验证某一个trick是否有效,所以让我们跟着作者的思路看看有哪些tricks:

1、作者在论文的第二节提出,他们在整个网络中只使用了3×3的卷积核(步长为1),两个3×3的卷积核(两层中间没有池化层但都有激活函数)和一个5×5的卷积核的感受野是一样的,三个3×3的卷积核和一个7×7卷积核的感受野是一样的,画张图可能更好理解:

在这里插入图片描述
所以作者们使用三个3×3的卷积核来代替7×7的卷积核,这么做的好处是什么呢?第一,三个卷积层有三个非线性激活函数而不是一个,增加非线性以提高网络的表达能力;第二,减少了参数量,假设输入与输出通道数都为C,一个7×7的卷积核权重参数量为 72 × C2 ,三个3×3的卷积核权重参数量为3×(32 × C2),减少了几乎一半的参数量。

2、下图为一整组对比实验(测试集使用固定的单一尺度图片)
在这里插入图片描述
我们结合表1一起看
在这里插入图片描述
从这一组实验上,可以得出很多结论:

第一,A与A-LRN(使用了局部响应归一化)对比,准确率几乎没有变化,因此LRN并没有起到什么作用,于是在后面的网络中就不考虑LRN这一trick了。

第二,A、B、D、E的对比可以看出,增加网络深度即增加卷积层可以有效提高准确率。

第三,B与C对比可以知道,增加1×1的卷积层即增加非线性层是有效的;但是C与D对比又可以得知,增加一层1×1的卷积层还不如增加一层3×3的卷积层来获取空间信息,因此后面的网络全部增加的是3×3的卷积层。

第四,C、D、E组中每组都有三个实验,分别是什么意思呢?这里就涉及到一个尺度抖动(scale jittering)策略,也是一个数据增强的trick,重点讲一下。首先将输入图片进行同比例的缩小或放大(不会让图片产生畸变),将较短边缩放成固定值 S(即图中的256,384,[256:512],[256:512]就是S在256-512之间随机取),然后在缩放后的图片上随机截取一个224×224的区域作为模型的输入。

作者的对比实验也证明,训练集中使用不同的单一S(256或384)并没有很大区别,但是多尺度输入([256:512])是有效的,这证明训练集进行尺度抖动有助于模型获取更多图片信息。这一说法也是有一定理论支撑的,同一张图片的不同尺度输入,可以让模型学习到物体整体形状、颜色等全局信息,也可以让模型学习到物体具体细节的局部信息。这也是一个常用的数据增强trick。

第五,作者提到当深度增加到19层时,错误率基本达到饱和,不会再下降了,因此一味增加网络深度也是没用的。并且作者还进行了一个这里没有展示出来的实验,作者设计了一个与B架构相同但用5×5的卷积层替换掉B中两个3×3卷积核的网络,将这个网络与B进行比较,再次证明了小滤波器比大滤波器的浅层网络性能更好。

3、在测试集上也使用尺度抖动策略的对比实验(但是在测试时与训练时截取策略不一样,测试时是以图片中心为中点截取的224×224区域):
在这里插入图片描述
与表3对比着看:
在这里插入图片描述
作者们考虑到训练尺寸与测试尺寸的差异太大可能会导致性能下降,模型使用固定的S训练时,使用3个接近训练集尺寸的测试集尺寸评估:Q={S-32, S, S+32}。而训练时的尺度抖动能使测试时能使用更大范围尺寸的图像,所以使用[256:512]训练的模型用更大范围的Q来评估,Q={Smin, 0.5*(Smin+Smax), Smax}。结果表明,在测试时图片尺度抖动也会使准确率更好

4、测试集图片dense方式与尺度抖动方式进行比较的实验:
在这里插入图片描述
dense方式就是在测试时仅仅只对图片进行缩放,将图片最短边缩放成三种Q,即{Smin, 0.5*(Smin+Smax), Smax},而不进行截取(由于输入不再是224×224,需要对网络的全连接层做一些改动才能正确输出)。从结果可以看出,尺度抖动比dense的效果略微好一点点,但两种方法是完全可以互补的,因为两者组合的效果比任何单独一种都要好。作者认为这是由于对卷积边界条件的不同处理方法造成的。

总结

1、我个人认为这篇论文主要就两个贡献,一个是论证了适度增加网络深度是有效的,另一个就是验证了尺度抖动这一数据增强策略的有效性(其实尺度抖动并不是VGG发明的,是来自2014年Howard等人的工作)。

2、使用更小的卷积核这一想法,也不起源于VGG,而是来自2013年ImageNet大赛中对于AlexNet最好的改进方案,但是他们只是在第一层使用了更小的卷积核,而VGG则是全部使用3×3的卷积核,自此之后,小卷积核+网络深 这两个特点变成了通用的trick。

3、在VGG的对比实验里我们其实看到了1×1卷积核的出现,但作者们其实只把1×1卷积层当成一个非线性层,有点可惜。1×1的卷积核第一次被使用应该是在发表在ICLR 2014的《Network In Network》,1×1卷积核其实有非常多且强大的用途,在其他文章里碰到的时候我们再详细分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值