理解卷积神经网络

卷积神经网络避免对参数的过度依赖,相比全连接神经网络,能更好地识别高维数据(即超大图片)。它是什么样一个东西呢?
先来理解一下sobel算子吧。经过sobel算子处理后的图片,它可以把图片的轮廓显示出来。
不要被它的名字吓到,它其实是个简单的矩阵计算。
整个过程如下图:
具体步骤:
1 在外围补一圈0,这个过程叫padding,目的是为了变换后生成同样大小的矩阵。
2 将图a左上角3*3矩阵中的每个元素与中间的3*3矩阵对应位置上的元素相乘,然后再相加,这样得到的值作为图b的第1个元素。
0*(-1)+0*0+0*1+0*(-2)+1*0+3*2+0*(-1)+2*0+0*0=6
3 中间的3*3矩阵就是sobel算子。
4 把图a中左上角的3*3矩阵向右移动一个格,这可以理解为步长为1.
5 将图a矩阵中的每个元素分别与中间的3*3矩阵对应位置上的元素相乘然后进行加和运算,算出的值填到图b的第二个元素里。
6 一直重复上面操作,直到图b的值都填满,整个过程叫做卷积。
sobel矩阵可以理解为卷积神经网络里的卷积核(也可以叫做“滤波器”,filter),它里面的值也可以理解为权重w。在sobel中,这些w是固定的,就相当于一个训练好的模型,只要通过里面的值变化后的图片,就会生成轮廓的效果,这个变换后的图片,在卷积神经网络里称为feature map。
注意:
新生成的图片里面的每个像素值并不能保证在0~255之间,对应在区间外的像素点会导致灰度图无法显示,所以还需要做一次归一化,然后每个值都乘以256,再将所有的值映射到这个区间内。
归一化算法:x=(x-Min)/(Max-Min)
其中,Max与Min为整体数据里的最大值和最小值,x是当前要转换的像素值,归一化之后可以保证每个x都在[0,1]的区间内。

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/80260373