转自:http://blog.cvmarcher.com/posts/2015/05/17/cnn-trick/

这篇文章主要讲一下Convolutional Neural Network(CNN)里面的一些概念以及技巧。

Receptive Field (感受野)

这是一个非常重要的概念,receptive field往往是描述两个feature maps A/B上神经元的关系,假设从A经过若干个操作得到B,这时候B上的一个区域areabareab只会跟a上的一个区域相关areaaareaa,这时候areaaareaa成为areabareab的感受野。用图片来表示:

在上图里面,map 3里1x1的区域对应map 2的receptive field是那个红色的7x7的区域,而map 2里7x7的区域对应于map 1的receptive field是蓝色的11x11的区域,所以map 3里1x1的区域对应map 1的receptive field是蓝色的11x11的区域。

那么很容易得出来,receptive field的计算公式如下:

  • 对于Convolution/Pooling layer:
ri=si⋅(ri+1−1)+kiri=si⋅(ri+1−1)+ki

其中riri表示第ii层layer的输入的某个区域,sisi表示第ii层layer的步长,kiki表示kernel size,注意,不需要考虑padding size。

  • 对于Neuron layer(ReLU/Sigmoid/…)
ri=ri+1ri=ri+1

Coordinate Mapping

通常,我们需要知道网络里面任意两个feature map之间的坐标映射关系,如下图,我们想得到map 3上的点p3p3映射回map 2所在的位置p2p2。

计算公式如下:

  • 对于Convolution/Pooling layer:
pi=si⋅pi+1+(ki−12−paddingi)pi=si⋅pi+1+(ki−12−paddingi)

其中pipi表示第ii层layer的输入的某个点,sisi表示第ii层layer的步长,kiki表示kernel size,paddingipaddingi

  • 对于Neuron layer(ReLU/Sigmoid/…)
pi=pi+1pi=pi+1

上面是计算任意一个layer输入输出的坐标映射关系,如果是计算任意feature map之间的关系,只需要用简单的组合就可以得到,下图是一个简单的例子:

Convolutionalize (卷积化)

最近掀起了FCN(全卷积网络)风,这种网络里面不包括全连接层(fully connected layer)。

卷积层跟全连接层的区别

卷积层的操作跟传统的滑窗(sliding windows)很相似,把kernel作用于输入的不同的区域然后产生对应的特征图,由于这样的性质,给定一个卷积层,它并不要求输入是固定大小的,它可能根据输入大小的不同而产生大小不一样的特征图。

全连接层的操作是把输入拉成一个一维的向量,然后对这一维的向量进行点乘,这就要求输入大小是固定的。

那么如果使用一个包含fc层的模型(如AlexNet)就必须使用固定大小的输入,其实有时候这是非常不方便以及不合理的,比如下图,如果我要把红框的塔输入网络,就必须得对它进行变成,假设是放到AlexNet里面,因为输入是224x224,那么就会对图片产生变形。

那么有没有办法使得网络可以接受任意的输入?实际上是可以的,只需要把全连接层变成卷积层,这就是所谓的卷积化。这里需要证明卷积化的等价性。直观上理解,卷积跟全连接都是一个点乘的操作,区别在于卷积是作用在一个局部的区域,而全连接是对于整个输入而言,那么只要把卷积作用的区域扩大为整个输入,那就变成全连接了,我就不给出形式化定义了。所以我们只需要把卷积核变成跟输入的一个map的大小一样就可以了,这样的话就相当于使得卷积跟全连接层的参数一样多。举个例子,比如AlexNet,fc6的输入是256x6x6,那么这时候只需要把fc6变成是卷积核为6x6的卷积层就好了。

例子:(1) 用全连接的: full-connected.prototxt,(2) 改成全卷积:full-conv.prototxt

Concepts and Tricks In CNN的更多相关文章

  1. Deep Visualization:可视化并理解CNN(转)

    转载地址:https://zhuanlan.zhihu.com/p/24833574 一.前言 CNN作为一个著名的深度学习领域的“黑盒”模型,已经在计算机视觉的诸多领域取得了极大的成功,但是,至今没 ...

  2. Deep Visualization:可视化并理解CNN

    原文地址:https://zhuanlan.zhihu.com/p/24833574 一.前言 CNN作为一个著名的深度学习领域的“黑盒”模型,已经在计算机视觉的诸多领域取得了极大的成功,但是,至今没 ...

  3. (转) [it-ebooks]电子书列表

    [it-ebooks]电子书列表   [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...

  4. CNN tricks

    Must Know Tips/Tricks in Deep Neural Networks (by Xiu-Shen Wei) http://lamda.nju.edu.cn/weixs/projec ...

  5. Deep Learning in a Nutshell: Core Concepts

    Deep Learning in a Nutshell: Core Concepts This post is the first in a series I’ll be writing for Pa ...

  6. (转) Deep Learning in a Nutshell: Core Concepts

    Deep Learning in a Nutshell: Core Concepts Share:   Posted on November 3, 2015by Tim Dettmers 7 Comm ...

  7. 【CV】CVPR2015_A Discriminative CNN Video Representation for Event Detection

    A Discriminative CNN Video Representation for Event Detection Note here: it's a learning note on the ...

  8. CNN for NLP (CS224D)

    斯坦福课程CS224d: Deep Learning for Natural Language Processing lecture13:Convolutional neural networks - ...

  9. 神经网络训练中的Tricks之高效BP(反向传播算法)

    神经网络训练中的Tricks之高效BP(反向传播算法) 神经网络训练中的Tricks之高效BP(反向传播算法) zouxy09@qq.com http://blog.csdn.net/zouxy09 ...

随机推荐

  1. ubuntu 搭建python2.x 抓取环境

    1.apt-get install python-bs4 bs4只有py2的代码,安装在py3下会很麻烦 bs4支持HTML parser,也可以支持第三方的分析器 2.apt-get install ...

  2. git切换分支

    今天同事问我她的报错了,我看了一下,是分支没有指向远程仓库对应的分支;报错如下; $ git pull There is no tracking information for the current ...

  3. UVa 11426

    首先我们了解一下欧拉函数phi[x],phi[x]表示的是不超过x且和x互素的整数个数 phi[x]=n*(1-1/p1)*(1-1/p2)....(1-1/pn); 计算欧拉函数的代码为 int e ...

  4. Bullcow 牡牛和牝牛(bzoj 3398)

    Description     约翰要带N(1≤N≤100000)只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛.牛们要站成一排.但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡 ...

  5. Android应用程序组件介绍

    应用程序组件是Android应用程序的基本构建单元.每个组件是系统进入你的应用程序的不同入口点.不是所有的组件对于用户都是实际上的入口点,有些是互相依赖的,但是每个组件都有特定的作用——每个都是唯一的 ...

  6. [CSS备忘]多行文本省略号

    overflow : hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box ...

  7. 《高性能Javascript》读书笔记-2

    第二章 数据存取 字面量: 代表自身 不存特定位置   :字符串 数字 bool 对象 array 函数  正则表达 本地变量: var 数组: 存储在js数组对象内部,以数字做索引 对象成员 存储在 ...

  8. sql删除数据总结

    Delphi ADOQuery连接数据库的查询.插入.删除.修改 //查询记录 procedure TForm1.Button1Click(Sender: TObject); begin ADOQue ...

  9. install font

    哪些字体包含国际音标呢? 在微软的Windows与Office的2000或以上版本中分别带有Lucida Sans Unicode和Arial Unicode MS两种字体(以下分别简称LSU和AUM ...

  10. 笨方法学python--参数,解包,变量

    1 cmd中执行 python ex11.py, ex11.py部分也是所谓的"参数". 2 from sys import argv script, first, second, ...