您的位置:首页 > 产品设计 > UI/UE

Caffe 初学拾遗(七) Layer Catalogue (Vision Layer)

2016-09-22 15:43 453 查看
{承接CNN学习入门,笔者在这里对Caffe官方网站上的相关介绍进行了翻译总结,欢迎大家交流指正}

本文基于此刻最新的release,Caffe-rc3

Layers:

建立Caffe模型需要在protocol buffer的definition file即.prototxt文件中创建网络模型。

.prototxt文件中,层及层参数的解释方法又被定义在caffe.proto(src/caffe/proto)文件中。



1. Vision Layer:

头文件:./include/caffe/vision_layers.hpp

Vision Layer通常将images作为input并将生成其他images作为output。

现实生活中,images通常含有一个颜色通道(C = 1),所谓的灰度图像,或者三个通道(C = 3),所谓的RGB(Red Green Blue)图像。但在此文中,图像区别性的特征体现在它的空间结构上:一般的一张图片Height > 1同时Width > 1。这些2维的几何学特征将会自然而然的引出如何处理输入数据。

特别地,大多数的vision layer都将一些特殊操作应用于输入的一些特定区域,来产生对应位置的输出。

与之相反,其他层(几乎没有例外)忽略了输入的空间特征,将其视为"超大的一维向量(one big vector)",维度是Channel x Height x Width。

Convolution:

1.网络类型:Convolution

2.CPU版本实现:./src/caffe/layers/convolution_layer.cpp

3.GPU版本实现:./src/caffe/layers/convolution_layer.cu

4.参数(ConvolutionParameter convolution_param):

4.1 Required:

4.1.1 num_output(c_o):filters的数目或者说是卷积kernel的数目

4.1.2 kernel_size(Or kernel_h and kernel_w):每个卷积核的height和width

4.2 Strongly Recommended

4.2.1 weight_filler[default type:'constant' value 0]

4.3 Optional

4.3.1 bias_term[default true]:卷积
4000
输出是否加偏置 Wx + bias 中的 bias


4.3.2 pad(Or pad_h and pad_w)[default 0]:对上下左右四侧padding zero的行列数目 默认不padding

4.3.3 stride(Or stride_h and stride_w)[default 1]:指定filter的作用间隔 默认间隔1个像素

4.3.4 group(g)[default 1]:if g > 1:我们将限制每个filter只能连接到input的子集,即input和output的channels都被分到g个group,第i个output
group的channels只能和第i个input group的channels相连接。


5.输入:n * c_i * h_i * w_i

6.输出:n * c_o * h_o * w_o, h_o = (h_i + 2*pad_h - kernel_h) / stride_h , w_o算法类似。

7.示例:


layer {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
# learning rate and decay multipliers for the filters
param { lr_mult: 1 decay_mult: 1 }
# learning rate and decay multipliers for the biases
param { lr_mult: 2 decay_mult: 0 }
convolution_param {
num_output: 96     # learn 96 filters
kernel_size: 11    # each filter is 11x11
stride: 4          # step 4 pixels between each filter application
weight_filler {
type: "gaussian" # initialize the filters from a Gaussian
std: 0.01        # distribution with stdev 0.01 (default mean: 0)
}
bias_filler {
type: "constant" # initialize the biases to zero (0)
value: 0
}
}
}
Convolution layer将input image用一组权值可通过反传调整的filter(即卷积核)进行卷积,每个卷积核都将生成一个feature map,多个feature map堆叠形成ouput。

Pooling:

1.网络类型:Pooling

2.CPU版本实现:./src/caffe/layers/pooling_layer.cpp

3.GPU版本实现:./src/caffe/layers/pooling_layer.cu

4.参数(PoolingParameter pooling_param):

4.1 Required:

4.1.1 kernel_size(Or kernel_h and kernel_w):每个卷积核的height和width

4.2 Optional

4.2.1 pool[default MAX]:pooling的方法,当前有MAX,AVE,or STOCHASTIC

4.2.2 pad(Or pad_h and pad_w)[default 0]:对上下左右四侧padding zero的行列数目 默认不padding

4.2.3 stride(Or stride_h and stride_w)[default 1]:指定filter的作用间隔 默认间隔1个像素

5.输入:n * c * h_i * w_i

6.输出:n * c * h_o * w_o, h_o = (h_i + 2*pad_h - kernel_h) / stride_h , w_o算法类似。

7.示例:

layer {
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
pooling_param {
pool: MAX
kernel_size: 3 # pool over a 3x3 region
stride: 2      # step two pixels (in the bottom blob) between pooling regions
}
}


Local Response Normalization(LRN):

1.网络类型:LRN

2.CPU版本实现:./src/caffe/layers/lrn_layer.cpp

3.GPU版本实现:./src/caffe/layers/lrn_layer.cu

4.参数(LRNParameter lrn_param):

4.1 Optional

4.1.1 local_size[default 5]:用于求和的channel的数目(对应于cross channel LRN)

或用于求和的方形区域的边界长度(对应于within channel LRN)

4.1.2 alpha[default 1]:缩放系数

4.1.3 beta[default 5]:指数

4.1.4 norm_region[default ACROSS_CHANNELS]:是对相邻channels求和(ACROSS_CHANNELS)还是在空间上对相邻位置求和(WITHIN_CHANNEL)

LRN层起到一种侧抑制的作用,通过对局部input区域的标准化。在ACROSS_CHANNELS mode,local region跨过相邻的channels,但是在空间维度保持不变(举例而言,维度为local_size x 1 x 1)。在WITHIN_CHANNEL mode,local region在空间维度进行扩展,但是channel仍保持独立(举例而言,维度为1 x local_size
x local_size)。每一个input value都被除以(1+(alpha/n)*sum(x_i.^2))^beta,这里的n代表每个local region的大小,sum是对以该input value为中心的region进行求和(如果有需要的话需要进行zero padding)。


im2col:
Im2col是为了方便进行image-to-column变形的,具体细节无需了解。它被用在Caffe原始的convolution的矩阵乘法操作中,将patches转化成矩阵。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  caffe CNN