目录
1.卷积的基本概念
卷积的意义(图像处理而言);对图像使用不同的卷积模板,对图像做不同的处理。比如平滑模板可以使图像模糊,并且可以减少噪声、锐化模板可以使图像的轮廓变得清晰。
数字图像处理中我们用卷积模板和原始图像的像素卷积。过程如下:
Step 1、先将模板旋转180度(又称折叠)。
Step 2、然后让模板依次和原始图像重叠,并且计算重叠部分的数值乘积之和。
以2D为例
先对模板K做折叠,然后依次覆盖图像I,并且计算重叠部分的数值乘积之和:
依次进行到最后,会多出一圈,得到最后的卷积结果。
2.卷积网络的结构
卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。卷积神经网络中的每一个特征提取层(C-层)都紧跟着一个用来求局部平均与二次提取的下采样层(S-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。
原始图像的大小决定了输入向量的尺寸,隐层由C-层(特征提取层)和S-层(下采样层)组成,每层均包含多个平面。C1层神经元提取图像的局部特征,因此每个神经元都与前一层的局部感受野(也就是局部输入窗口)相连。C1层中各平面(由神经元构成)提取图像中不同的局部特征,如边缘特征,上下左右方向特征等,C1层中的输入是有由上一层局部窗口的数值和连接的权值的加权和(也就是卷积,后面会具体解释为什么是卷积),然后通过一个激活函数(如sigmoid 函数,反正切函数)得到C1层的输出,接下来S2层是下采样层,简单来书,由4个点下采样为1个点,也就是4个数的加权平均。换句话说,就是我们把2*2的像素缩小成为一个像素,某种意义上来说可以认识是图像处理中的模糊。然后按照这个C—S的结构继续构成隐层,当然这些隐层的连接都是局部相连的。同时有人会问了,例如S2和C3层具体要怎么连接呢,为什么会从6张变成16张特征图呢。C3层的特征图是由S2层图像的感受野和对应权值的卷积后,通过随机的组合而形成的,也就意味着S2层和C3层并不像C1层和S2层那样是一一对应的。但当我们感受野的大小和图像一样时,我们经过特征提取后就变成一个像素了,这里我们开始使用全连接(这样才能完整的把特征保留)。
卷积网络第一个特点是连接权值远远小于BP网络的权值。卷积神经网络另外一个特性是权值共享。这样一来就更进一步减少了对网络权值的训练(毕竟权值是共享的,也就意味着有一些全是是相同的)。权值共享是指同一平面层的神经元权值相同。如何理解呢!看下图2,假设红色的点和黑色的点是C1层第一个特征图的2个不同神经元,感受窗口的大小是5*5的(意味着有25个连接),这2个神经元连接的权值是共享的(相同的)。这样一来,C1层中的每个神经元的输入值,都有由原始图像和这个相同的连接权值的加权和构成的,想想看,这个过程是不是和卷积的过程很像呢!没错,就是由这个得名的。同时这样一来,我们需要训练的权值就更少了,因为有很多都是相同的。
C1层是一个卷积层(也就是上面说的特征提取层),由6个特征图Feature Map构成。特征图中每个神经元与输入中5*5的邻域相连。特征图的大小为28*28。C1层有156个可训练参数(每个滤波器5*5=25个unit参数和一个bias[偏置]参数,一共6个滤波器,共(5*5+1)*6=156个参数),共156*(28*28)=122,304个连接。
S2层是一个下采样层,有6个14*14的特征图。特征图中的每个单元与C1中相对应特征图的2*2邻域相连接。S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid函数计算。每个单元的2*2感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4(行和列各1/2)。S2层有12个可训练参数和5880个连接。
3.卷积网络的训练
在一个卷积层,上一层的特征maps被一个可学习的卷积核进行卷积,然后通过一个激活函数,就可以得到输出特征map。每一个输出map可能是组合卷积多个输入maps的值:
这里Mj表示选择的输入maps的集合,那么到底选择哪些输入maps呢?有选择一对的或者三个的。但下面我们会讨论如何去自动选择需要组合的特征maps。每一个输出map会给一个额外的偏置b,但是对于一个特定的输出map,卷积每个输入maps的卷积核是不一样的。也就是说,如果输出特征map j和输出特征map k都是从输入map i中卷积求和得到,那么对应的卷积核是不一样的。