卷积


 

卷积是加权叠加


 

某一时刻的输出是之前很多次输入乘以各自的衰减系数之后的叠加而形成的某一点的输出。然后再把不同时刻的输出点放在一起,形成一个函数,就是卷积。

f(a)就是第a个巴掌,g(x-a)就是第a个巴掌在x的作用强度,乘起来再叠加


 

在图像处理中,用一个模版(卷积核)和一幅待处理图像进行卷积,就是一种积分(求和)运算,用来求两个曲线重叠区域面积,可以看作加权求和,可以进行消除噪声 特征增强。


 

【参考】http://blog.csdn.net/tiandijun/article/details/40080823

https://www.zhihu.com/question/22298352


 


 


 

http://www.cnblogs.com/zf-blog/p/6075286.html

http://blog.csdn.net/silence1214/article/details/11809947


 


 

The Convolution Step

ConvNets derive their name from the “convolution” operator. The primary purpose of Convolution in case of a ConvNet is to extract features from the input image. Convolution preserves the spatial relationship between pixels by learning image features using small squares of input data. We will not go into the mathematical details of Convolution here, but will try to understand how it works over images.

As we discussed above, every image can be considered as a matrix of pixel values. Consider a 5 x 5 image whose pixel values are only 0 and 1 (note that for a grayscale image, pixel values range from 0 to 255, the green matrix below is a special case where pixel values are only 0 and 1):

Also, consider another 3 x 3 matrix as shown below:

Then, the Convolution of the 5 x 5 image and the 3 x 3 matrix can be computed as shown in the animation in Figure 5 below:

Figure 5: The Convolution operation. The output matrix is called Convolved Feature or Feature Map. Source [7]

Take a moment to understand how the computation above is being done. We slide the orange matrix over our original image (green) by 1 pixel (also called ‘stride’) and for every position, we compute element wise multiplication (between the two matrices) and add the multiplication outputs to get the final integer which forms a single element of the output matrix (pink). Note that the 3×3 matrix “sees” only a part of the input image in each stride.

In CNN terminology, the 3×3(orange) matrix is called a ‘filter’ or ‘kernel’(过滤器/卷积核) or ‘feature detector’ and the matrix formed by sliding the filter over the image and computing the dot product is called the ‘Convolved Feature’ or ‘Activation Map’ or the ‘Feature Map‘. It is important to note that filters acts as feature detectors from the original input image.

It is evident from the animation above that different values of the filter matrix will produce different Feature Maps for the same input image. As an example, consider the following input image:

In the table below, we can see the effects of convolution of the above image with different filters. As shown, we can perform operations such as Edge Detection, Sharpen and Blur just by changing the numeric values of our filter matrix before the convolution operation [8] – this means that different filters can detect different features from an image, for example edges, curves etc. More such examples are available in Section 8.2.4 here.

Another good way to understand the Convolution operation is by looking at the animation in Figure 6 below:


 


 

特征图的大小由”深度””步长””补零”三个因素决定

深度是指使用多少个过滤器/卷积核来生成特征图,每个卷积核会产生特定的二维特征图,多个特征图按层排列形成深度。

The size of the Feature Map (Convolved Feature) is controlled by three parameters [4] that we need to decide before the convolution step is performed:

Figure 7


 


 

概述

前面的练习中,解决了一些有关低分辨率图像的问题,比如:小块图像,手写数字小幅图像等。在这部分中,我们将把已知的方法扩展到实际应用中更加常见的大图像数据集。


 

全联通网络

在稀疏自编码章节中,我们介绍了把输入层和隐含层进行”全连接”的设计。从计算的角度来讲,在其他章节中曾经用过的相对较小的图像(如在稀疏自编码的作业中用到过的 8×8 的小块图像,在MNIST数据集中用到过的28×28 的小块图像),从整幅图像中计算特征是可行的。但是,如果是更大的图像(如 96×96 的图像),要通过这种全联通网络的这种方法来学习整幅图像上的特征,从计算角度而言,将变得非常耗时。你需要设计 10 的 4 次方(=10000)个输入单元,假设你要学习 100 个特征,那么就有 10 的 6 次方个参数需要去学习。与 28×28 的小块图像相比较, 96×96 的图像使用前向输送或者后向传导的计算方式,计算过程也会慢 10 的 2 次方(=100)倍。


 

部分联通网络

解决这类问题的一种简单方法是对隐含单元和输入单元间的连接加以限制:每个隐含单元仅仅只能连接输入单元的一部分。例如,每个隐含单元仅仅连接输入图像的一小片相邻区域。(对于不同于图像输入的输入形式,也会有一些特别的连接到单隐含层的输入信号”连接区域”选择方式。如音频作为一种信号输入方式,一个隐含单元所需要连接的输入单元的子集,可能仅仅是一段音频输入所对应的某个时间段上的信号。)


 

网络部分连通的思想,也是受启发于生物学里面的视觉系统结构。视觉皮层的神经元就是局部接受信息的(即这些神经元只响应某些特定区域的刺激)。


 

卷积

自然图像有其固有特性,也就是说,图像的一部分的统计特性与其他部分是一样的。这也意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。


 

更恰当的解释是,当从一个大尺寸图像中随机选取一小块,比如说 8×8 作为样本,并且从这个小块样本中学习到了一些特征,这时我们可以把从这个 8×8 样本中学习到的特征作为探测器,应用到这个图像的任意地方中去。特别是,我们可以用从 8×8 样本中所学习到的特征跟原本的大尺寸图像作卷积,从而对这个大尺寸图像上的任一位置获得一个不同特征的激活值。


 

下面给出一个具体的例子:假设你已经从一个 96×96 的图像中学习到了它的一个 8×8 的样本所具有的特征,假设这是由有 100 个隐含单元的自编码完成的。为了得到卷积特征,需要对 96×96 的图像的每个 8×8 的小块图像区域都进行卷积运算。也就是说,抽取 8×8 的小块区域,并且从起始坐标开始依次标记为(1,1),(1,2),…,一直到(89,89),然后对抽取的区域逐个运行训练过的稀疏自编码来得到特征的激活值。在这个例子里,显然可以得到 100 个集合,每个集合含有 89×89 个卷积特征。


 

假设给定了

的大尺寸图像,将其定义为 xlarge。首先通过从大尺寸图像中抽取的

的小尺寸图像样本 xsmall 训练稀疏自编码,计算 f = σ(W(1)xsmall + b(1))(σ 是一个 sigmoid 型函数)得到了 k 个特征, 其中 W(1)b(1) 是可视层单元和隐含单元之间的权重和偏差值。对于每一个

大小的小图像 xs,计算出对应的值 fs = σ(W(1)xs + b(1)),对这些 fconvolved 值做卷积,就可以得到

个卷积后的特征的矩阵。


 

在接下来的章节里,我们会更进一步描述如何把这些特征汇总到一起以得到一些更利于分类的特征。


 

中英文对照

全联通网络 Full Connected Networks

稀疏编码 Sparse Autoencoder

前向输送 Feedforward

反向传播 Backpropagation

部分联通网络 Locally Connected Networks

连接区域 Contiguous Groups

视觉皮层 Visual Cortex

卷积 Convolution

固有特征 Stationary

池化 Pool


 

池化: 概述

在通过卷积获得了特征 (features) 之后,下一步我们希望利用这些特征去做分类。理论上讲,人们可以用所有提取得到的特征去训练分类器,例如 softmax 分类器,但这样做面临计算量的挑战。例如:对于一个 96X96 像素的图像,假设我们已经学习得到了400个定义在8X8输入上的特征,每一个特征和图像卷积都会得到一个 (96 − 8 + 1) * (96 − 8 + 1) = 7921 维的卷积特征,由于有 400 个特征,所以每个样例 (example) 都会得到一个 892 * 400 = 3,168,400 维的卷积特征向量。学习一个拥有超过 3 百万特征输入的分类器十分不便,并且容易出现过拟合 (over-fitting)。


 

为了解决这个问题,首先回忆一下,我们之所以决定使用卷积后的特征是因为图像具有一种”静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化 (取决于计算池化的方法)。


 

最大池化:


 


 


 


 

layer1 edge

layer2 shape

layer3 face


 


 

Max is better

下图显示池化如何应用于一个图像的四块不重合区域。


 

池化的不变性

如果人们选择图像中的连续范围作为池化区域,并且只是池化相同(重复)的隐藏单元产生的特征,那么,这些池化单元就具有平移不变性 (translation invariant)。这就意味着即使图像经历了一个小的平移之后,依然会产生相同的 (池化的) 特征。在很多任务中 (例如物体检测、声音识别),我们都更希望得到具有平移不变性的特征,因为即使图像经过了平移,样例(图像)的标记仍然保持不变。例如,如果你处理一个MNIST数据集的数字,把它向左侧或右侧平移,那么不论最终的位置在哪里,你都会期望你的分类器仍然能够精确地将其分类为相同的数字。

(*MNIST 是一个手写数字库识别库: http://yann.lecun.com/exdb/mnist/)


 

形式化描述

形式上,在获取到我们前面讨论过的卷积特征后,我们要确定池化区域的大小(假定为

),来池化我们的卷积特征。那么,我们把卷积特征划分到数个大小为

的不相交区域上,然后用这些区域的平均(或最大)特征来获取池化后的卷积特征。这些池化后的特征便可以用来做分类。


 

中英文对照

特征 features

样例 example

过拟合 over-fitting

平移不变性 translation invariant

池化 pooling

提取 extract

物体检测 object detection


发表评论

电子邮件地址不会被公开。 必填项已用*标注