[Machine Learning Note 1]重拾卷积
写在前面:今天重新学卷积,只为弥补当年犯下的错……

起源

谈及人工智能,必定有人说深度学习,谈起深度学习,必定有人说卷积神经网络。在现阶段的“人工智障”的学习中,深度学习是无法绕过的,虽然本人认为深度学习可能不是最好的人工智能实现方法。但是在大趋势下,简单的了解卷积以及基本的深度学习网络还是很有必要的。

什么是卷积

  • 首先百度百科详细的解释了什么是卷积 ,以及卷积的一些基本性质。
  • 简单一句话概括就是:相乘求和
我们先看看卷积的公式

一维卷积

如果想明白多维卷积就要先明白一维卷积,我们首先举一个简单的例子:一个人掷两枚骰子,求点数为4的概率之和。因为两枚骰子相互独立,所以分别是P(1,3),P(2,2),P(3,1),如果f(x)和g(x)表示两枚骰子x点数的概率,则P = f(1)g(3) + f(2)g(2) + g(3)g(1),因为3+1,2+2都为一个定值4,那么
当我们仔细观察时,是否可以发现这和卷积的离散定义不谋而合呢?
其次,假设一个多项式A=1+2x+3x^2+4x^3与另外一个多项式B=1+2x进行卷积,以Python角度可以转换为A=[1,2,3,4],B=[1,2]两个list的卷积。代码如下
    from scipy import signal
    import numpy as np
    a = np.array([1,2,3,4])
    b = np.array([1,2])
    signal.convolve(a,b,mode=”full”) #还有same,valid卷积
    =>array([ 1,  4,  7, 10,  8])
那么这是如何计算的呢?是否还记得上文曾经说过:相乘求和,我们可以看这张图解。
从图片中不难看出这个过程,同时不难发现[1,2,3,4]卷积[1,2]的时候需要将其中一个**翻转**才能得到正确的结果。

二维卷积

如果想明白多为卷积,就要从二维卷积入手。二维卷积的公式如下:
同样的,二维卷积也可以分为离散的,和连续的两类。我们简单的举一个二维卷积的例子,因为是二维的,所以我们这里使用**矩阵**来表示。
我们暂时先忽略下面same标注的矩阵,我们先研究full标注的这个矩阵,这时候肯定一头雾水不知道二维卷积该怎么算,不急,我们用一维卷积的思维来计算二维卷积
通过上图可以看出3×3的矩阵卷积2×2的矩阵使用一维卷积思维的计算过程,当然我们也可以用符合它自身特色的方法计算,如下图
从以上两种计算方法中很容易看出,原2×2矩阵为[[1,2],[3,4]],但是计算时为[[4,3],[2,1]],明显这个矩阵翻转了180°
接下来我们介绍same标注的卷积运算,它最大的不同就是只保存了和原图形状相同的矩阵,但是边际效应依旧存在。所以在实际处理中,往往选择奇数卷积核进行运算。如:3,5等
至此我们就大概明白了二维卷积的计算方法,二维卷积主要应用于图像处理方面,但是有些人可能会有疑问——“二维卷积可以处理彩色图像吗?”
众所周知,jpg的图片是RGB三通道的,png图片是RGBA四通道的,我们可以通过以下代码简单的看一下以下这张图片的基本数据。
**示例图片**
import numpy as np
from PIL import Image
#假设当前文件夹下有两张图,分别是zero.png和zero.jpg
zero_jpg = Image.open(‘zero.jpg’)
zero_png = Image.open(‘zero.png’)
zero_jpg_data = np.array(zero_jpg)
zero_png_data = np.array(zero_png)
zero_jpg_data.shape
=>(904, 1280, 3) #可以理解为图片904像素*1280像素,为RGB图片
zero_png_data.shape
=>(904, 1280, 4) #可以理解为图片904像素*1280像素,为RGBA图片
以上的代码可以看出图片的基本数据,直接使用二维卷积明显不能处理3维的矩阵,因此要将原图转灰度图,RGB不能反映图像的形态特征,只是从光学的原理上进行颜色的分配。接上面的代码:
zero_gray = zero_jpg.convert(“L”) #PIL 自带图片转灰度的方法
注:在图像处理的方面,一般最后的层是channel层,即上述jpg图片的3和png图片的4,此处的“3维”不是真正意义上的三维,而是有三个通道的图片,类似的还有:CT层图

2020.6.26 wicos
暂无评论

发送评论 编辑评论


				
上一篇
下一篇