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的更多相关文章

  1. VGGNet论文翻译-Very Deep Convolutional Networks for Large-Scale Image Recognition

    Very Deep Convolutional Networks for Large-Scale Image Recognition Karen Simonyan[‡] & Andrew Zi ...

  2. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Kaiming He, Xiangyu Zh ...

  3. 目标检测--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 ...

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

    http://www.dengfanxin.cn/?p=403 原文地址 我对物体检测的一篇重要著作SPPNet的论文的主要部分进行了翻译工作.SPPNet的初衷非常明晰,就是希望网络对输入的尺寸更加 ...

  5. 《DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks》研读笔记

    <DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks>研读笔记 论文标题:DSLR-Quality ...

  6. 2014-VGG-《Very deep convolutional networks for large-scale image recognition》翻译

    2014-VGG-<Very deep convolutional networks for large-scale image recognition>翻译 原文:http://xues ...

  7. 深度学习论文翻译解析(九):Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    论文标题:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 标题翻译:用于视觉识别的深度卷积神 ...

  8. 论文笔记:(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 ...

  9. 大规模视觉识别挑战赛ILSVRC2015各团队结果和方法 Large Scale Visual Recognition Challenge 2015

    Large Scale Visual Recognition Challenge 2015 (ILSVRC2015) Legend: Yellow background = winner in thi ...

随机推荐

  1. App 运营 推广相关

    基本要素 1.定位和产品 2.取个好名字,一目了然+下载冲动 3.设计一个好图标,有感性和直观的认识 4.做好产品的说明.关键字,截图(前1-2行是重点) 5.做市场的排名(相关因素如下)   (1) ...

  2. 一个解析RTSP 的URL函数

    写了一个解析URL的函数,可以提取URL中的IP 和 port. 如:url = "rtsp://192.168.1.43:2554/realmp3.mp3"; url = &qu ...

  3. OCA读书笔记(4) - 管理数据库实例

    Objectives: •Start and stop the Oracle database and components •Use Oracle Enterprise Manager •Acces ...

  4. ORACLE 更改username

    曾经一直常常改动oracle的用户password,但非常少改动username的. 曾经仅仅能创建一个用户1.然后将用户2数据导入到用户1.然后经用户1删掉,这样很麻烦并且耗时,今天就整理了下怎样改 ...

  5. vs2013 IntelliSense: &quot;const char *&quot; 类型的实參与 &quot;LPCWSTR&quot; 类型的形參不兼容

    错误例如以下: 解决方法: project字符集选择多字符

  6. Label的各个属性

  7. HTML5文件上传还有进度条

    以下是自学it网--中级班上课笔记 网址:www.zixue.it 需要在chrome,ff,IE10下运行 html页面 <!DOCTYPE html> <html lang=&q ...

  8. Java线程状态及Thread类中的主要方法

    要想实现多线程,就必须在主线程中创建新的线程对象. 不论什么线程一般具有5种状态,即创建,就绪,执行,堵塞,终止. 创建状态: 在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态,此时 ...

  9. latex表格线的颜色设置(边框添加颜色)

    添加了如下包:边框颜色要用到booktabs, colortbl, 包,下面代码里有一个自定义的颜色tabcolor \usepackage{ctexcap} \usepackage{graphicx ...

  10. MFC之窗体改动工具栏编程状态栏编程程序启动画面

    1窗体外观的改动 (1)改动在CMainFrame::preCreateWindow(CREATESTRUCT& cs) 改动标题:cs.style&=FWS_ADDTOTITLE; ...