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),笔者后会作文阐述之,读者若心急则或可用谷歌百度一下。
本文下面内容即是论文的笔记,笔者初次尝试对一篇论文提取重点做笔记,若有不足之处请阅读原文者指出。
1. Main Contribution
- 考察在參数总数基本不变的情况下,CNN随着层数的添加,其效果的变化。
- 论文中的方法在ILSVRC-2014比赛中获得第二名。
- ILSVRC——ImageNet Large-Scale Visual Recongnition Challenge
2. CNN improvement
在论文[2]出现以后,有非常多对其提出的CNN结构进行改进的方法。比如:
- Use smaller receptive window size and smaller stride of the first convolutional layer.
- Training and testing the networks densely over the whole image and over multiple scales.
3. CNN Configuration Principals
- CNN的输入都是224×224×3的图片。
- 输入前唯一的预处理是减去均值。
- 1×1的核能够被看成是输入通道的线性变换。
- 使用较多的卷积核大小为3×3。
- Max-Pooling 一般在2×2的像素窗体上做,with stride 2。
- 除了最后一层全连接的分类层外,其它层都须要使用rectification non-linearity(RELU)。
- 不须要加入Local Response Normalization(LRN),由于它不提升效果反而会带来计算花费和内存花费,添加计算时间。
4. CNN Configuration
- 卷积层的通道数目(宽度)从64,每过一个max-pooling层翻倍,到512为止。
- Use filters with 3×3 size throughout the whole net, because a stack of two 3×3 conv layers (without spatial pooling in between) has an effective receptive of 5×5, and three a stack of 3×3 conv layers has a receptive of 7×7, and so on.
- 为甚么使用三层3×3取代一层7×7?
- 第一,三层比一层更具有判别性;
- 第二,如果相同的通道数C,那么三层3×3的參数数目为3×(3×3)C×C=27C×C,一层7×7參数数目为7×7×C×C=49C×C。大大降低了參数数目。
使用1*1的卷积核能够在不影响视野域的情况下添加判别函数的非线性。该核能够用于“Network in Network”网络结构,能够參考论文的參考文献12。
图1是论文中实验使用的神经网络结构,能够看到,CNN的层数从11层到19层,结构符合上面的总结的点。图2则是各个CNN的參数总数,能够看到,尽管深度变化了,可是參数数目变化不大。
Figure1 Convnet Configuration
Figure2 Parameter Num
5. Training
- 除了使用multiple scale之外,论文[1]实验基本都follow论文[2]的设置。batch size是256,momentum是0.9,正则化系数是5×10e-4,前两层全连接的dropout參数设置为0.5,学习步长初始化为10e-2,且当验证集结果不再上升时步长除以10,除三次为止。学习了370K迭代(74 epochs)时停止。
- 论文猜測,本文的网络比原来的网络要更easy收敛,原因有二:
- Implicit regularization imposed by greater depth and smaller conv filter sizes
- Pre-initialisation of certain layers. 先训练浅层网络,如图中的A网络,得到參数后,当训练更深的网如E时,使用A中得到的參数初始化相应的层,新层的參数则随机初始化。须要注意的是,使用这种方式进行初始化,不改变步长。
- 224×224输入的获得,将原始图片等比例缩放,保证短边大于224,然后随机选择224×224的窗体,为了进一步data augment,还要考虑随机的水平仿射和RGB通道切换。
- Multi-scale Training, 多尺度的意义在于图片中的物体的尺度有变化,多尺度能够更好的识别物体。有两种方法进行多尺度训练。
- 在不同的尺度下,训练多个分类器,參数为S,參数的意义就是在做原始图片上的缩放时的短边长度。论文中训练了S=256和S=384两个分类器,当中S=384的分类器的參数使用S=256的參数进行初始化,且将步长调为10e-3。
- 还有一种方法是直接训练一个分类器,每次数据输入时,每张图片被又一次缩放,缩放的短边S随机从[min, max]中选择,本文中使用区间[256,384],网络參数初始化时使用S=384时的參数。
6. Testing
測试使用例如以下步骤:
- 首先进行等比例缩放,短边长度Q大于224,Q的意义与S同样,只是S是训练集中的,Q是測试集中的參数。Q不必等于S,相反的,对于一个S,使用多个Q值进行測试,然后去平均会使效果变好。
- 然后,依照本文參考文献16的方式对測试数据进行測试。
- 将全连接层转换为卷积层,第一个全连接转换为7×7的卷积,第二个转换为1×1的卷积。
- Resulting net is applied to the whole image by convolving the filters in each layer with the full-size input. The resulting output feature map is a class score map with the number channels equal to the number of classes, and the variable spatial resolution,
dependent on the input image size. - Finally, class score map is spatially averaged(sum-pooled) to obtain a fixed-size vector of class scores of the image.
7. Implementation
- 使用C++ Caffe toolbox实现
- 支持单系统多GPU
- 多GPU把batch分为多个GPU-batch,在每一个GPU上进行计算,得到子batch的梯度后,以平均值作为整个batch的梯度。
- 论文的參考文献[9]中提出了非常多加速训练的方法。论文实验表明,在4-GPU的系统上,能够加速3.75倍。
8. Experiments
共进行三组实验:
8.1 Configuration Comparison
使用图1中的CNN结构进行实验,在C/D/E网络结构上进行多尺度的训练,注意的是,该组实验的測试集仅仅有一个尺度。例如以下图所看到的:
Figure3 Performance at a single test scale
8.2 Multi-Scale Comparison
測试集多尺度,且考虑到尺度差异过大会导致性能的下降,所以測试集的尺度Q在S的上下32内浮动。对于训练集是区间尺度的,測试集尺度为区间的最小值、最大值、中值。
Figure4 Convnet performance at multiple test scales
8.3 Convnet Fusion
模型融合,方法是取其后验概率预计的均值。
融合图3和图4中两个最好的model能够达到更好的值,融合七个model会变差。
Figure5 Convnet Fusion
9. Reference
[1]. Simonyan K, Zisserman A. Very Deep Convolutional Networks for Large-Scale Image Recognition[J]. arXiv preprint arXiv:1409.1556, 2014.
[2]. Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems. 2012: 1097-1105.
Very Deep Convolutional Networks for Large-Scale Image Recognition的更多相关文章
- VGGNet论文翻译-Very Deep Convolutional Networks for Large-Scale Image Recognition
Very Deep Convolutional Networks for Large-Scale Image Recognition Karen Simonyan[‡] & Andrew Zi ...
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Kaiming He, Xiangyu Zh ...
- 目标检测--Spatial pyramid pooling in deep convolutional networks for visual recognition(PAMI, 2015)
Spatial pyramid pooling in deep convolutional networks for visual recognition 作者: Kaiming He, Xiangy ...
- SPPNet论文翻译-空间金字塔池化Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
http://www.dengfanxin.cn/?p=403 原文地址 我对物体检测的一篇重要著作SPPNet的论文的主要部分进行了翻译工作.SPPNet的初衷非常明晰,就是希望网络对输入的尺寸更加 ...
- 《DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks》研读笔记
<DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks>研读笔记 论文标题:DSLR-Quality ...
- 2014-VGG-《Very deep convolutional networks for large-scale image recognition》翻译
2014-VGG-<Very deep convolutional networks for large-scale image recognition>翻译 原文:http://xues ...
- 深度学习论文翻译解析(九):Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
论文标题:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 标题翻译:用于视觉识别的深度卷积神 ...
- 论文笔记:(2019CVPR)PointConv: Deep Convolutional Networks on 3D Point Clouds
目录 摘要 一.前言 1.1直接获取3D数据的传感器 1.2为什么用3D数据 1.3目前遇到的困难 1.4现有的解决方法及存在的问题 二.本文idea 2.1 idea来源 2.2 初始思路 2.3 ...
- 大规模视觉识别挑战赛ILSVRC2015各团队结果和方法 Large Scale Visual Recognition Challenge 2015
Large Scale Visual Recognition Challenge 2015 (ILSVRC2015) Legend: Yellow background = winner in thi ...
随机推荐
- 让工程师爱上CMMI,实现管理于无形 --- 中标软件CMMI L5之路 (1/2)
操作系统市场被微软等国外的IT厂商垄断的大环境下,中标软件作为市场夹缝中发展起来的民族企业,致力于成为中国操作系统旗舰企业.系列核心产品已经在政府.金融.教育.财税.公安.审计.交通.医疗.制造等行业 ...
- LA - 4043 - Ants
题意:n只蚂蚁,n棵树,每只蚂蚁要连一棵树,连线(直线)不能相交,给出n只蚂蚁和n棵树的坐标,输出n只蚂蚁所配对的树的编号(1 <= n <= 100, -10000 <= 坐标x, ...
- Jedi项目,还真得好好看看,有许多控件和新封装的API(Delphi里面没有)
以前没有重视 http://www.delphi-jedi.org/ https://github.com/project-jedi https://sourceforge.net/projects/ ...
- Songs
Two Steps From Hell - Strength of a Thousand Men
- Python的对象和类型
Python使用对象来存储数据,构造任何类型的值都是一个对象. 任何一个对象都有三个特性:身份,类型和值. 身份是对象的唯一标识,可以通过内建函数id()得到,这个值可以认为是该对象的内存地址. Py ...
- MingW环境下的windows编程
一般在进行windows编程时都使用vc++精简版,其插入菜单,图片等资源等更简单,且vc中对中文有更好的支持,win7下安装的Mingw中文并不能很好地显示,有光标显示的位置和光标实际位置不符的问题 ...
- UITableView性能优化及手工绘制UITableViewCell
提高表视图的性能 UITableView作为应用中最常用的视图,它的性能优化问题几乎是经常提及.下面对在非网络访问情况下的表视图性能优化进行了主要的几点说明: 1.自定义类或XIB文件时 在系统提供的 ...
- 多图真相:Adobe Dreamweaver CC 2014.1来了-体验卓越PSD提取和诸多精彩云功能!
作为经典的web开发工具,DW此次版本号更新提供了更加丰富的云功能,是网页开发人员的利器! 直接发多图(来源:zoomla!逐浪CMS UED): watermark/2/text/aHR0cD ...
- Spring Framework AOP具体解释
此前对于AOP的使用仅限于声明式事务,除此之外在实际开发中也没有遇到过与之相关的问题.近期项目中遇到了下面几点需求,细致思考之后,认为採用AOP来解决.一方面是为了以更加灵活的方式来解决这个问题,还有 ...
- poj 1743 男人八题之后缀数组求最长不可重叠最长重复子串
Musical Theme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14874 Accepted: 5118 De ...