过滤器、padding(6)、卷积步长(7)、三维卷积、池化层
- 神经网络的前几层如何检测边缘,有些后面的层可能检测到物体的部分,更靠后的一些层,可能检测到完整的物体
- eg:给一个例子,可能首先检测图片中的垂直边缘,或者那你想检测水平边缘
- 这是6*6*1的灰度矩阵,不是6*6*3的,因为没有RGB三通道。
- 可以先构造3*3的过滤器,在论文中会被称为核,而不是过滤器
- 用3*3的过滤器对其进行卷积,会得到一个4*4的矩阵
- 怎么计算得到这个矩阵:将3*3的矩阵覆盖在6*6矩阵的左上角,第一列上角标为1,第二列上角标为0,第三列上角标为-1,相乘相加,得到4*4矩阵的第一个元素
- 3*3的过滤器可以检测出垂直的边缘
左边相对亮 ,右边相对暗
-
3*3的过滤器可以检测出水平的边缘
(注意:转置了!)上边相对亮,下方相对较暗
-
还可以使用其他数值的滤波器,如sobel滤波器,优点:增加了中间一行元素的权重,也就是处在图像中央的像素点,这使得结果的鲁棒性会更高一点。 让这九个数字都当成参数,后面我们会通过如何使用反向传播去让神经网络学习这九个数字。
- 用过滤器存在的问题、用padding解决
- 输出缩小
- 图像边缘的大部分信息都丢失了(因为中间部分的会重叠计算好多次)
- 对于1、2的解决方法,可以在原图边缘再填充一层像素,变成n*n的图像,用一个f*f的滤波器进行卷积计算,就会得到和原图一样尺寸的图像,可以用0去填充
- 对于填充多少像素,一般有两种选择
- Valid卷积(p=0)
意味着不填充 - Same卷积
意味着你填充后你的输入大小和输出大小是一样的,填充数量p=(f-1)/2, f一般是奇数
- Valid卷积(p=0)
- 卷积步长 (stride s)
如果用f*f的滤波器卷积一个n*n的图像,会得到一个[(n+2p-f)/s +1 ]* [(n+2p-f)/s +1 ] 的输出 ,如果不是整数就向下取整 - eg:6(高)*6(宽)*3(通道的数目) 的图像,有红绿蓝三个颜色通道,过滤器为3*3*3的,两个的通道数必须匹配 ,输出是4*4*1
- 对于一个6*6*3的图形,通过两个3*3*3滤波器,可以得到一个4*4*2的输出,如果是n个滤波器(看作是n个特征映射),我们会得到4*4*n维度的输出图像;用过滤器来提取特征,如垂直边缘、水平边缘和其他特征。即使这些图片很大,参数却很少,这就是卷积神经网络的一个特征,叫做“避免过拟合”。、
- 一个典型的卷积网络通常有三层,卷积层(Conv)、池化层(POOL)、全连接层(FC)
- 池化层
- 最大池化的输出大小和卷积层计算公式一样,最大池化是选择过滤器范围内最大的值。输入是几维,输出就是几维,假如输入是5*5*2,过滤器是3*3,那么输出是3*3*2。
- nc个信道中的每个信道都单独执行最大池化计算
- 平均池化(不常用):选取每个过滤器的平均值
-
池化的超级参数包括过滤器的大小 f 和步幅 s ,常用的参数值为f=2,s=2。相当于高度和宽度缩减一半。