1. 卷积是什么
- 在泛函分析中,卷积、旋积或摺积(英语:Convolution)是通过两个函数f 和g 生成第三个函数的一种数学算子,表征函数f与g经过翻转和平移的重叠部分的面积。
- 如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是“滑动平均”的推广。
那f
和g
函数的卷积就可以表示为:
- 连续形式
( f ∗ g ) ( n ) = ∫ − ∞ ∞ f ( τ ) g ( n − τ ) d τ (f*g)(n) = \int_{-\infty}^{\infty}f(\tau)g(n-\tau)d\tau (f∗g)(n)=∫−∞∞f(τ)g(n−τ)dτ
- 离散形式
( f ∗ g ) ( n ) = ∑ τ = − ∞ ∞ f ( τ ) g ( n − τ ) (f*g)(n) = \sum_{\tau=-\infty}^{\infty}f(\tau)g(n-\tau) (f∗g)(n)=τ=−∞∑∞f(τ)g(n−τ)
通俗的理解
- 卷积就是一种乘积的方式,只不过呢,不能按照我们惯有的乘法直接乘,得用一种新的方式来乘。
- 就比如,把乘积类比成爬树,但是有些人为了突破身体极限,或者为了锻炼身体等,采用了一种爬树的方式,没错,他们发明了一种新型的爬树方式:倒着爬树!没错,这便是卷积了。显然倒着爬树,还是爬树,但是呢,是一种新型的爬树方式,为了达到新的目地的爬树方式。
- 那两个函数的卷积,本质上就是先将一个函数翻转(爬树将人翻转),然后进行滑动叠加(爬树的动作便是滑动)。
2. 图像和函数卷积的区别
联系
- 图像的卷积借用了函数卷积的形式:滑动,相乘。
区别
- 为了方便理解,假设卷积核的大小为1×1,步长为1,图像的通道数也为1,再假如我们把图像的矩阵【也可以看成一个长向量】的值看作是f(x),那g(x)【卷积核的参数】则是一个常数,也就是说,g(x)翻转不翻转结果都一样,因为g(x)的不变的。
总结
- 图像的卷积来自于函数的卷积,但是在图像卷积的时候,我们看不到
卷
的过程,那是因为本来要卷的g(x)的是一个常量,所以说你也可以没卷,也可以说卷了,但是确实有滑动,相乘的形式,所以,称为图像的卷积,也说的过去。
3. 卷积核的作用
- 卷积核用于特征的提取
- 一般来说,卷积核没有
1×1
或1×1×3
的,不过依然可以给图片降维或者升维,卷积核数如果大于当前的图片的通道数,则为升维,小于则为降维
4. 特征提取的含义
我们来看一个3×3
的卷积核g
[ 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 ] \left[ \begin{array}{ccc} \frac{1}{9} & \frac{1}{9} & \frac{1}{9}\\ \frac{1}{9}& \frac{1}{9} & \frac{1}{9}\\ \frac{1}{9} & \frac{1}{9} & \frac{1}{9} \end{array} \right] ⎣⎡919191919191919191⎦⎤
这是个图片平滑处理的卷积核,那这个卷积核是如何实现了图片的平滑处理的呢?
我们可以把目光锁定在矩阵的最中心的位置,也就是说,一次的卷积运算,我们可以理解为中心位置的像素点的值和周围像素点的值的平均值,我们知道中心像素点,其实就算是整个图片的像素点,所以,整次卷积的完成后,是对整个图片的几乎每个像素做了一次和周围像素的值的平摊,也就是说,把图片里的高值像素点都给变低了,而低值像素点变高了,所以达到了图片平滑的作用。
同理,我们再看一个强化边缘的卷积核
g = [ − 1 − 1 − 1 − 1 9 − 1 − 1 − 1 − 1 ] g=\left[ \begin{array}{ccc} -1 & -1 & -1\\ -1&9 &-1\\ -1& -1 & -1 \end{array} \right] g=⎣⎡−1−1−1−19−1−1−1−1⎦⎤
为什么这个卷积可以达到边缘强化的效果呢?
我们还是以中心点的参数和周围的参数看起,其实这就是中心点的像素值乘9,分别减去周围的像素值,所以,中心点和周围的平均值差别越大,就越会保留下来。那什么地方的像素和周围的平均值差别越大呢,可想而知,那便是像素过渡的地方,而过渡的地方那个,就是图像内部物体的边缘,所以卷积后的图片就是一个边缘强化后的特征图片。
随着参数的不同,所以提取的特征也不尽相同,多层的卷积,就可以对特征来提取特征,所以就有更底层的特征。
5. 卷积神经网络
- 对于普通的神经网络来说,数据分别是特征值和标签值;
- 特征图是由不同的特征组成的;
- 图片处理成了不同的特征,当然就可以向普通的神经网络那样来做分类的任务啦。
6. 结尾
完