卷积与池化基础【MOOC课手记】
卷积【卷积层】
卷积是有效提取图像特征的方法:
因为直接使用高分辨率的图会导致过拟合的发生。故先对原始图像进行特征提取然后再把提取到的特征喂给神经网络。
用一个正方形卷积核,遍历图片上的每个点。图片区域内,相对应的每一个像素值,乘以卷积核内相对应点的权重,求和,再加上偏置。
假设有一个5* 5* 1的灰度图片,则在图片中定义一个3* 3* 1的正方形卷积核,在图片区域上每个像素点上都有相对应的每一个像素值,用其像素值乘以卷积核内相对应点的权重,再求和,然后加上偏置,得出卷积核所在位置的一个值。
使用这个3* 3* 1的卷积核遍历图片上面的每一个点,进入如上操作。直到得出所有的值,然后将其组成一个矩阵(把这个矩阵当成一个新的图片代替原来图片进行下一步运算或者操作即可)。
可以总结出来: 输出图片边长 = (输入图片边长-卷积核长 +1) /步长
上面的举例的输出图片边长为(5-3+1)/1 = 3,当然,我们想要的还有卷积之后的像素点构成的矩阵。
在输入图边周围进行全0填充再进行卷积选取特征可以保证输出图片的长度和原来的一样。
- 全0填充的话,输出图片边长 = 输入图片边长/步长 (向上取整)
- 在tf中,用参数padding = 'SAME’表示全0填充 或padding = 'VALID’表示不使用全0填充。
tensorflow如何实现灰度图的卷积
此外rgb三色图片则表示有三层通道,也就是进行卷积之后有三个矩阵和一个偏置b,其实就是说这个卷积层有三层。
把三层的卷积核分别套在三层的彩色图片上,对每个重合的图,用重合的27个像素点进行乘加运算,最后将三个值加起来再加上偏置b就得到输出图片的矩阵的一个值。
然后使用三层的卷积层分别同时遍历 那三层的彩色图片,进行计算,最后得到一个和原图片的长度相同的矩阵(输出图片)
对于多通道图来说:
池化【池化层】
通过卷积得到的矩阵是多维的,数量巨大,运算久耗资源等等。
- 池化用于减少特征数量
- 最大池化可提取图片纹理,均值池化可保留背景特征。
如果使用2* 2的核以2为步长对图片进行池化,那么输出图片将是原图片的1/4大小。
- 平均池化:有效保留图片的背景信息。
- 最大池化:有效的保留图片的纹理信息。
我觉得,池化就是一个扫描器,达到筛选的作用。