Outline
什么是卷积
卷积怎么工作
什么是卷积神经网络
卷积神经网络怎么工作(经典网络)
迁移学习(概要)
数据增强方法(概要)
1 卷积的定义
首先,卷积是一种运算法则,就像乘法加法,它规定了数据之间的运算规则。它是一种怎样的运算规则呢?定义如下:
连续的定义:
直白地说,是连续函数f和g的一种积分运算,其中,一个明显的特征就是两函数自变量之和为n,,tao是一个变量,将其记为x,n-tao 记为y,符合x + y = n。如果n为常数,那么y随x变化而变化,符合线性关系x+y = n。
离散的定义:
离散的定义看起来更为直观。
为何用两函数的乘积来表示,为什么不是加法或者减法呢?乘法的含义有很多,需放在具体的应用中去,如在概率论问题“两骰子点数加起来为4的概率”:P = f(1)*g(3) + f(2)*g(2) + f(3)*g(1);
2 卷积在图像处理中的工作原理
这个图太清晰了,说明了卷积的工作过程。卷积的过程也是提取图像特征的过程。不同的卷积提取图像不同维度的特征。
2.1 卷积核的种类
(1) 1X1的卷积核
这张图片很清晰地描述了输入为WHD的数据,D可以看做其特征维度,一个11D的卷积核对输入数据做卷积操作,其实这可以看做每个维度的特征的线性组合,每维的系数是卷积核的数值。得到一个WH1的特征图,再应用非线性。11D的卷积核具备明显的降维功能,充当特征池,如average pooling(如果卷积核参数皆为1/D)。
(2)2D卷积核 W*H
2D卷积核只有w和h,同样地它只对2D输入起作用,移动卷积核以线性求和卷积核滑动的数值,输出大小的计算公式:i是输入的长或者宽,p是周围填充的行数,k是卷积核大小,s是步长。这个公式可以这样理解:移动了多少步 (一步一输出)+ 1(最开始的卷积输出);总共有i+2p个格子,移动的格子数为i+2p-k,一步跳s格,那么需要(i+2p-k)/s步才能全部卷积到,这容易理解扒!
根据padding的行数不同,可以分成不同的padding模式:I :mean 使输出和输入的尺寸一样 ;II:None 不padding ;III full就是把图像的每个像素都作为卷积的遍历对象,让图像最左上角的元素被卷积到,所以要padding = k -1
(3)离散卷积
以2D离散卷积为例,这个卷积公式只是将变量n - tao缩小了而已,如果l= 1 ,就是标准卷积,l>1,那就是t = (p - s)/l,也就是说
为什么还要用离散卷积呢?因为它一次卷积涉及到的图像的空间变大了,换句话说,就是感受野变大了,之前一次卷积只对人像的头发做运算,现在可以提取头发+脸部的特征了,空间更大了,感受野扩大了。如果用多个不同L 的离散卷积核提取特征,可想而知,每维的特征差异随感受野增大而增大,那么这些特征也就越重要,这种手段非常有效。
(4)转置卷积(Transposed Convolution)
在计算机中,卷积操作用矩阵的乘法来计算以节省时间。为了模拟卷积核在输入数据上的滑动,用填充零的方式表示,零所对应位置的数据相当于不参与到某次卷积中,下图表示了计算机中普通卷积的过程。公式如下:
(5)Depthwise Separable Convolution
后面的128个1*1的卷积核就成为各个卷积核互相分散的深度分散卷积核,有多少个这样的卷积核,最终输出就有多少的深度。这是pytorch中默认的卷积核模式。
reference:
https://www.jiqizhixin.com/articles/2019-02-28-3
https://www.zhihu.com/question/22298352
https://blog.csdn.net/tsyccnh/article/details/87357447
侵删,图是copy的,文字纯属个人理解,请多指教