CNN卷积神经网络
启发
想要识别的物体特征会出现在不同图像的不同区域
卷积层
卷积神经网络是包含卷积层的神经网络
一个卷积层包含多个卷积核用于识别多个图像特征
卷积层作用
卷积是一种局部操作,通过一定大小的卷积核作用于局部图像区域获得图像的局部信息。下面以三种边缘卷积核(也可成为滤波器)来说明卷积神经网络中卷积的作用
如图的三种滤波器分别为整体边缘滤波器,横向边缘滤波器和纵向边缘滤波器,试想,若原图像素(x,y)处可能存在物体边缘,则其四周(x-1,y),(x+1,y),(x,y-1),(x,y+1)处像素值应与(x,y)处有显著差异,此时,如作用以整体边缘滤波器Ke,可消除四周像素值差异小的图像区域而保留显著差异区域,以此可检测出物体边缘信息,其他同理,纵向边缘滤波器可保留纵向边缘信息,横向边缘滤波器可保留横向边缘信息。
事实上,卷积网络中的卷积核参数是通过网络训练学出的,除了可以学到类似的横向,纵向边缘滤波器,还可以学到任意角度的边缘滤波器。当然,不仅如此,检测颜色,形状,纹理等等众多基本模式的滤波器(卷积核)都可以包含在一个足够复杂的深层卷积神经网络中,通过组合这些滤波器(卷积核)以及随着网络后续操作的进行,基本而一般的模式会逐渐被抽象为具有高层语义的“概念”表示,并以此对应到具体的样本类别。颇有“盲人摸象”后,将各自结果集大成之意。
总结
- 输入图像尺寸 W1,H1,D1
- 四个超参数Hyperparameters:
- 滤波器数量K
- 滤波器尺寸F
- 步长S
- 填充P
- 输出尺寸 W2,H2,D2
- W2 = (W1 - F + 2P) / S + 1
- H2 = (H1 - F + 2P) / S + 1
- D2 = K
- 参数数量:(F X F X D1) X K
- 输出的第d个通道(W2 X H2)是将输入图像与第d个滤波器做卷积再加上bias的结果
卷积层单通道输入
卷积层多通道输入
卷积层相对于全连接层使用了如下技术减少参数/权值数量:
- 减少节点之间的连接数量
- 权值共享
- 池化层进一步减少参数/权值数量
全连接层
池化层
池化层不包含需要学习的参数。
三种功效
- 特征不变性。池化操作使模型更关注是否存在某些特征而不是特征具体的位置。可看作使一种很强的先验,使特征学习包含某种程度自由度,能容忍一些特征微小的位移。
- 特征降维。由于池化操作的降采样作用,池化结果中的一个元素对应于原输入数据的一个子区域,因此池化相当于在空间范围内做了维度约减,从而使模型可以抽取更广范围的特征。同时减小了下一层输入大小,进而减小计算量和参数个数。
- 在一定程度防止过拟合,更方便优化。
向下采样Subsampling不会改变需要识别的目标
- 减小特征图,从而减小截下来的层的参数/权值
- 读理处理各个特征图:
Maxpooling最大池化
总结
- 输入图像尺寸 W1,H1,D1
- 3个超参数Hyperparameters:
- 滤波器尺寸F
- 步长S
- 输出尺寸 W2,H2,D2
- W2 = (W1 - F) / S + 1
- H2 = (H1 - F) / S + 1
- D2 = D1
- 没有引入额外的参数 / 权值
- 无需填充Padding
卷积层的权值共享
结尾
- 卷积网络包含卷积CONV,池化POOL,全连接层FC层
- 发展的趋势是使用小尺寸的滤波器,更深的网络结构
- 有提出来全卷积层的结构(无需池化,全连接层)
- 典型的网络结构
- [(CONV - RELU) * N - POOL?] * M - (FC - RELU) * K,SOFTMAX
- N约等于 ~5,M非常大,0 <= k <= 2
- GoogleNet,ResNet提出了新的结构