VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION 这篇论文

由Andrew Zisserman 教授主导的 VGG 的 ILSVRC 的大赛中的卷积神经网络取得了很好的成绩,这篇文章详细说明了网络相关事宜。

文章主要干了点什么事呢?它就是在在用卷积神经网络下,在采用小的卷积核与小的移动步长的情况下,探索一下网络的深度对目标识别率的影响。

网络的大体结构

网络的输入为224*224的RGB图片,后面跟卷积层,卷积核的大小基本都为3*3有最小的可以保留图片空间分瓣率的卷积核,步长为1个像素,偶尔会有1*1的卷积核,这就相当于加入了一个非线性变换而已。再往后接pooling 层,它的大小为2*2,步长为2个像素,并且采用MAX-pooling的方法;再往后就是三层的全连层,第一层为4096个单元,第二层为4096个单元,第三层为1000个单元,即对应1000个类别,根据这1000个单元的输出其实这样就可以分类了;再往后为一个softmax层,目的其实就是用于计算网络的代价函数时用于求误差。就这样了,这就是整个网络的结构。根据网络的深度不同,文中探索了五种网络结构,如下所示:(黑色字体部分为网络相对于前一层增加的部分)

在上图中,如网络中的 conv3-512,表示网络的卷积核的大小为3*3, 共有512个feature map. 另外,maxpool的具体配置没有写出来。

另外,在上面的网络配置中,每经过一个 maxpooling的时候,它的feature map就增加一倍哦, 不对过maxpooling的话,feature map 的个数不变的,这样做的目的方便增加网络的深度;

网络采用最小的卷积核 3*3, 其实呢,当两层的3*3的卷积层叠加时相当于一个5*5的卷积层(因为它们对应的接收域是相同的),当三层的3*3的卷积层叠加时相当于一个7*7的卷积层哦。所以呢,文中的做法就是减少了卷积层的宽度,而增加了卷积层的深度,这样做有一个好处,可以减少参数的个数。例如:三层的3*3有卷积层的参数个数为3* 3*3* num_featuremap, 而一层的7*7 的卷积层的参数个数为:7*7*num_featuremap。 是不是减少了好多呢,哈哈哈。 既然参数减少了,这个过程也就相当于一个隐形的对网络一种  regularization。

网络的训练一些相关细节:

网络采用常用的mini-batch 的梯度下降法进行网络的训练, size为256;权值更新的原则也是常用的 momentum 的方法,动量值为0.9; 对网络的权值 decay 采用L2正则化方法,其中惩罚因子为5*10-4; 对最后的全连接层的前两层采用 dropput 的正则化机制, dropout的值为0.5;网络的学习率的大体设置为:初始值为0.01,当进入plateau时(可以认为验证值的识别率不再变化,当然也可以选其它的哦,如:lossValue),学习率 缩小10倍,变为0.001,然后再重复一次,变为0.0001就OK了。

权值的初始化是一个重要的问题:对于深层的网络来说,网络的权值初始值特别特别容易影响最后的识别率的,而相对于比较 shallow的网络的初始值我们可以用随机初始化的方法解决的哦。所以文中的做法就是随机初始化(用mean为0,variance为0.01的高斯分布)相当shallow的网络 A,然后训练完成啦,当我们训练其它相当于较深的网络的时候,我们用网络A的权值来初始化其它网络的权值就OK了,在训练过程中,我们的学习率初始值同样保持为0.01,好让它们充分学习嘛。

网络的输入的图片的选择问题:

我发现这个在文章中显的很重要呢,,,好像网络的没有什么创新,然后在这个方面下工夫来提高识别率吧,, 不过这个太也什么了吧。。。没点。。。。啥啥呢。。感觉。。。。。哎,,,这一部分吧,看得也有点模糊哦。额。。

网络的训练:对于训练时的图片我还能看懂,就是把图片调整为边长最小的(估计不是正方形的吧)为Q,Q为256,或384,或在(256,512)之间的值。然后呢,在上面随机采样224*224大小的区域,然后去训练就可以啦,还是每次迭代时都是再重新彩样的。在训练时,为了加快速度,当我们训练完Q为256的时候,当我们再训练Q=384时,我们的网络用Q为256权值初始化,然后把学习率调整为0.001再训练。。   当我们训练Q=(256,512)之间的值时, 我们的网络用Q为384权值初始化,然后把学习率调整为0.001再训练。。

测试网络的过程:在测试网络过程中吧,同样是把图片调成 multi-scale,即不同大小嘛。。然后吧,后面分两种方法哈:第一种dense evaluation, 这个吧就是 fully-convolutional networks.可以参考我之前写过的 对 OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks 一文的理解,第二种方法吧,就是在图片上进行multi-crop,然后送给网络进行测试,这样计算量很大的其实。反正吧,文中说它们之间可以进行 complementary.为什么呢?1,采用dense的 evaluation时,窗口的采样率为2*2*2*2*2=32个像素的(一共5个步长为2的max-pooling),而如果用multi-crop的话,我们可以人为控制步长了吧;2,采用dense evaluation与 multi-crop时的一点小差别为:可能由于zero-padding 导制边缘数据不一样,这样很容易理解啦( dense evaluation 时补充的为相邻的像素值,而 multi-crop补充的为0嘛)。

结果表明了什么呢?首先看 A 与 A-LRN, 说明了局部的正则化 不起毛作用啊,白白增加了计算量,所以,后面的网络就不用它了。现看网络B与网络C-1,它俩的区别在于C-1增加了一层的卷积核为1 的卷积层,即相当于此引入了非线性,结果呢,识别的错误率有所下降,说明起点作用啦(这样也可以,竟然,,,我怎么觉得在瞎搅gu 呢)。再看D-1与C-1,它们的区别在于把C-1中的卷积核为1*1换为了3*3的卷积核,结果又有提高,说明了,用原文中的话就是 it is  important to capture spatial context by using conv. 文中一句话我觉得很重要的:文中在的实验过程中表示出了当网络的深度增加到了 19层的时候,网络的错误识别率达到了饱和了,已经很难下降了哦。。。

而multi scale evaluation 对应于三个 scale 的图片,然后求它们三个的average 就可以啦,结果如下图所示:

反正这么做的结果就是:网络的性能提高了。。提高了,提高了。。。其实像这样的做法提高也在情理之中吧,,我觉得在情理之中, ,也没有什么技术含量啊。。。。。

测试网络的过程2: 对于测试的 multi-crop evaluation 与 dense evaluation的对比,反正没看明白什么意思,怎么又把网络的全连接层转为 卷积层的呢,泥马 这么做的话,权值怎么办啊。留着后续去看相关论文去寻找答案吧。

网络的实现:

网络的训练是基于caffe的,当然也对它进行修改了,主要就是来实现多GPU的加速。  文中采用的方法为把一个 min-batch 分为多份,然后让每一个 GPU 去求对应的梯度值,然后呢,再把这个GPU的梯度值进行求平均,再权值更新。。 总之吧,最后用4块

NVIDIA Titan 系列(一两万一块)的 GPU,训练网络要花2-3周,  如果我用我笔记本跑的话,单 620M的显卡, 估计可以跑一年,哈。。。。

图片分类实验:

这里要说一点我们经常见到的 top-1 error 与top-5 error是什么毛玩意呢。。。top-1 error 就是实在的错误率,概率最大一类的作为输出;而top-5 error常作为 ILSVRC 官方的识别率的测试,它指 的是概率的前5个中 只要有对应的正确的类就算是识别对了,没有就是错了。。。以前傻乎乎的不明白,现在终于知道了。。。。。。另外吧,ILSVRC分类识别中,一般我们只知道训练集与验证集哦,然后呢, 如果想要测试,那好,就提交给 ILSVRC大赛的官方服务器就可以哦,,这样做防止别人作弊。。记得15年的大赛中,某网上寻医问药有风险的互联网巨头,在2014年11月28日至2015年5月13日期间,参赛团队使用了至少30个帐号向测试服务器进行了至少200次提交,这大大超过了比赛规定的每周提交两次的上限,最后被禁止参与这样的竞赛了,哈哈哈!!!

所谓的 网络融合(convnet fusion,翻译过来应该是这个意思)

这种做法,是什么呢?很简单很简单,多个网络模型的输出结果求平均再用于识别。在ILSVRC的比赛中大家都在用,为什么呢?因为这样做基本上稍微弄弄,都可以提高网络的识别率。原理呢,可能就是所谓的不同网络模型之间有点互补吧(complementarity). 这也说明了网络的不稳定吧。。。还是没有找到本质吧。

最后文中的附录B给出了网络的generalization

即把网络的特征提取层 用到的 data set中去。

说实话,读完了这篇文章以后,给我的什么感觉呢?无非还是 trial-and-error啊啊啊啊。。。。人工智能是不是没有发展前景呢??全都是基于数学模型与算法,还有各种大数据统计,概率相关知识吧吧。,想让电脑有自己的思想,,,我觉得还好遥远远远啊啊啊。。。

时间: 2024-10-05 08:31:08

VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION 这篇论文的相关文章

Very Deep Convolutional Networks for Large-Scale Image Recognition—VGG论文翻译

Very Deep Convolutional Networks for Large-Scale Image Recognition Karen Simonyan∗ & Andrew Zisserman+ Visual Geometry Group, Department of Engineering Science, University of Oxford {karen,az}@robots.ox.ac.uk 摘要 在这项工作中,我们研究了在大规模的图像识别环境下卷积网络的深度对识别的准确率

Very Deep Convolutional Networks for Large-Scale Image Recognition

Very Deep Convolutional Networks for Large-Scale Image Recognition 转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/39736509 这篇论文是今年9月份的论文[1],比較新,当中的观点感觉对卷积神经网络的參数调整大有指导作用,特总结之. 关于卷积神经网络(Convolutional Neural Network, CNN),笔者后会作文阐述之,读者若心急则或可用谷歌百度

深度学习笔记(二)Very Deep Convolutional Networks for Large-Scale Image Recognition

Very Deep Convolutional Networks for Large-Scale Image Recognition 1. 主要贡献 本文探究了参数总数基本不变的情况下,CNN随着层数的增加,其效果的变化.(thorough evaluation of networks of increasing depth using an architecture with very small (3×3) convolution filters, which shows that a si

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

一.本文的主要思想 考虑到传统的CNN构架的输入图像的尺寸都是固定的(例如:256*256),这种人工改变输入图像的尺寸破坏了输入图像的尺度和长宽比例.作者认为卷积层的输入的尺寸可以是任意,全连接层的输入是固定不变.针对这个问题,作者提出了spatial pyramid pooling(SPP-net)结构,在目标检测方面,比R-CNN快30-170倍. 二.spatial pyramid pooling(SPP-net)的优势 1.针对不同尺寸的输入可以得到相同维度的输出,而siding wi

SPPNet论文翻译-空间金字塔池化Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

http://www.dengfanxin.cn/?p=403 原文地址 我对物体检测的一篇重要著作SPPNet的论文的主要部分进行了翻译工作.SPPNet的初衷非常明晰,就是希望网络对输入的尺寸更加灵活,分析到卷积网络对尺寸并没有要求,固定尺寸的要求完全来源于全连接层部分,因而借助空间金字塔池化的方法来衔接两者,SPPNet在检测领域的重要贡献是避免了R-CNN的变形.重复计算等问题,在效果不衰减的情况下,大幅提高了识别速度. 用于视觉识别的深度卷积网络空间金字塔池化方法 Spatial Py

[论文理解] Why do deep convolutional networks generalize so poorly to small image transformations?

Why do deep convolutional networks generalize so poorly to small image transformations? Intro CNN的设计初衷是为了使得模型具有微小平移.旋转不变性,而实际上本文通过实验验证了现在比较流行的神经网络都已经丧失了这样的能力,甚至图像只水平移动一个像素,预测的结果都将会发生很大的变化.之所以如此,作者认为CNN的下采样背离了隆奎斯特采样定理,就连augmentation也并不能缓解微小变化不变性的丧失. I

Fully Convolutional Networks for semantic Segmentation(深度学习经典论文翻译)

摘要 卷积网络在特征分层领域是非常强大的视觉模型.我们证明了经过端到端.像素到像素训练的卷积网络超过语义分割中最先进的技术.我们的核心观点是建立"全卷积"网络,输入任意尺寸,经过有效的推理和学习产生相应尺寸的输出.我们定义并指定全卷积网络的空间,解释它们在空间范围内dense prediction任务(预测每个像素所属的类别)和获取与先验模型联系的应用.我们改编当前的分类网络(AlexNet [22] ,the VGG net [34] , and GoogLeNet [35] )到完

VGGnet论文总结(VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION)

VGGNet的主要贡献: 1.增加了网络结构的深度 2.使用了更小的filter(3*3) 1 introduction 这部分主要说明了,由于在所有的卷积网络上使用了3*3的filter,所以使整体网络的深度加深.最后在ILSVRC取得的成绩也是十分明显的. 2 Convent Configuration 2.1 ARCHITECTURE 在前边的卷积层上,使用3*3的filter,有时也使用1*1的filter(相当于在输入channels上进行线性变换).卷积操作的步长是1.总共有5个ma

VGG:VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION学习

牛津大学 visual geometry group(VGG)Karen Simonyan 和Andrew Zisserman 于14年发表的论文.论文地址:https://arxiv.org/pdf/1409.1556.pdf.与alex的文章虽然都采用层和每层之间用pooling层分开,最后三层FC层(Fully Connected全连接层).但是AlexNet每层仅仅含有一个Convolution层,VGG每层含有多个(2~4)个Convolution层.AlexNet的filter的大小