1.边缘检测
滤波器(卷积核):[1 0 -1;1 0 -1;1 0 -1]进行垂直检测,图片左侧亮,右侧暗; [111;000;-1-1-1]水平检测,图片上侧亮,下侧暗。
如果增加中间部分权重;则可以sobel filter[10-1;202;10-1];或者[3 0 -3;10 0 -10;3 0 -3]
2.padding
如果输入图片为n×n,卷积核为f×f,则输出为:(n-f+1)(n-f+1);例如6×6,卷积核3×3,则输出4×4;
卷积缺点:1.随着卷积次数增加,图片会越来越小;2.那些边缘的角落,被卷积核触碰的次数少,因此意味着你丢掉了图像边缘位置;
解决方法:在图像的边缘进行填充,习惯上用0来填充,填充层数通常用字母p表示,那么输出尺寸变成了:(n+2p-f+1)(n+2p-f+1)
特殊的,如果想让输出尺寸=输入尺寸,则有:n+2p-f+1=n,则p=(f-1)/2,这里f通常是奇数。
3.卷积步长
卷积核在图片上扫动时,每几格移动一次,stride即为卷积步长。同样的,引入步长概念之后,输出尺寸:
[(n+2p-f)/s+1]×[(n+2p-f)/s+1]。
如果得出不是整数,则向下取整。注意:如果按照数学或信号处理相关教材说明,所有卷积操作之前,需要对卷积核进行180反转,
但是实际机器学习过程通常不进行反转操作,管他叫做卷积运算。
4.三维卷积
以上操作均为二维,即检测灰度图像,如果操作彩色图像即RGB三通道图像,需要用到三维卷积。因此在进行卷积运算时,图片可以想象成三层叠加的立体,而卷积核也是相应的立体:例如用3×3×3的卷积核操作6×6×3的图片,运算时与上述操作一样,只不过计算完每一层数之和,将三层叠加到一起。输出尺寸为:4×4×1;注:如果想单独检测某一个通道,则可以将卷积核对应通道设置相应的参数,而其余
通道参数均设为0;如果想用两个卷积核检测三维图片,则输出为4×4×2;
5.单层卷积网络
问题:假设有10个过滤器(3×3×3卷积核),神经网络的一层有多少个参数?
每一层27个参数+1个偏差=28,十个则:28×10=280个
总结:第l-1层参数为:f[l-1]=filter size ;p[l-1]=padding;s[l-1]=stride;输出:n[l-1]×n[l-1]×n[l-1](长,宽,通道,公式同上,注意输出通道数=上层滤波器个数。)
第l-1层的参数决定本层输出,同时也是第l层的输入。
6.简单网络实例
假设给定一张39×39×3图片,用10个3×3的过滤器提取特征,那么本层输出为:(39-3+1)×(39-3+1)×10,作为本层的激活值继续传递给下一层作为输入,假设继续给定20个过滤器f=5×5×10
步长s=2,p=0,那么第二层层输出为((37-5)/2)+1)×((37-5)/2)+1)×20;第三层假设有40个过滤器依然为f=5×5×20,步幅s=2,输出为7×7×40.
因此最后神经网络提取出了1960个特征,将其平滑处理后形成一个向量,填充到softmax回归函数中。
一个典型神经网络通常三层:1.卷积层conv,2.池化层pool,3.全连接层FC
7.池化层
最大池化:挑选每一组最大像素值保留下来,继续移动卷积核,最后输出尺寸计算公式同上。注:最大池化时往往不进行零填充(padding)
平均池化:取每一组平均值保留下来,之后过程同上。
他们只是神经网络中的一个静态属性。
8.全连接层
例:输入:32×32×3,参数:6个f=5,s=1;
conv1:28×28×6;参数:6个f=2,s=2;pool1:14×14×6;参数:16个f=5,s=1,conv2:10×10×16;参数:16个f=2,s=2,pool2:5×5×16=400
利用400个单元构建下一层;FC3:(120,1)(一般选用别人调试好的参数)FC4:(84,1);softmax:(10,1)=841。