关于深度学习中的各种卷积

卷积与互相关

在信号/图像处理领域,卷积的定义是:
在这里插入图片描述
其定义是两个函数中一个函数经过反转和位移后再相乘得到的积的积分。
在这里插入图片描述
信号处理中的卷积。过滤器 g 经过反转,然后再沿水平轴滑动。在每一个位置,我们都计算 f 和反转后的 g 之间相交区域的面积。这个相交区域的面积就是特定位置出的卷积值。


互相关是两个函数之间的滑动点积或滑动内积。互相关中的过滤器不经过反转,而是直接滑过函数 f。f 与 g 之间的交叉区域即是互相关。
在这里插入图片描述
在深度学习中,卷积中的过滤器不经过反转。严格来说,这是互相关。我们本质上是执行逐元素乘法和加法。但在深度学习中,直接将其称之为卷积更加方便。这没什么问题,因为过滤器的权重是在训练阶段学习到的。如果上面例子中的反转函数 g 是正确的函数,那么经过训练后,学习得到的过滤器看起来就会像是反转后的函数 g。因此,在训练之前,没必要像在真正的卷积中那样首先反转过滤器。


3D卷积

首先看一下二维卷积,一个33的卷积核,在单通道图像上进行卷积,得到输出。
在这里插入图片描述
然后我们再看一下3维卷积,一个3
3*3的卷积核在立方体上进行卷积:
在这里插入图片描述
相比于2D卷积,3D卷积多了一个深度通道
应用:视频分类,图像分割


空洞卷积

空洞卷积有两种实现方式:

第一种是插入空洞(零元素)或者对输入特征地图同等稀疏地采样,来对滤波器进行上采样。

第二种,通过一个等于atrous convolution rate r的因子对输入特征图进行子采样,对每个 r×r 可能的偏移,消除隔行扫描生成一个 r^2 降低的分辨率图。接下来对这些中间特征图使用标准卷积,隔行扫描生成原始图像分辨率。

空洞卷积,r=2, stride=1

空洞卷积的作用
扩大感受野:能不丢失分辨率,且扩大感受野。这在检测,分割任务中十分有用。一方面感受野大了可以检测分割大目标,另一方面分辨率高了可以精确定位目标。

捕获多尺度上下文信息

缺点:在实际中不好优化,速度会大大折扣。

感受野计算

空洞卷积实际卷积核大小:
K=k+(k-1)(r-1),k为原始卷积核大小,r为空洞卷积参数空洞率;

感受野递推公式:
R(n-1) = f(n) + ( R(n) - 1 ) * S(n).
其中以n=0代表第零层。R(0)表示感受野。就是最高level的featuremap一个像素单元在几次卷积(下采样)之后对应原图的像素单元个数(也即是最后一个像素的输出占了原输入多少像素)。一般是11对应感受野 RR . 假设图像是方形的我们只推一边的线性长度为例。1→R这样。fn是得到第n层卷积用的filter边长(大小一般表示为f*f)。Sn是filter移动步幅。

卷积层输出计算公式:
N = (W − F + 2P )/S+1
输入图片大小 W×W,Filter大小 F×F,步长 S,padding的像素数 P
输出图片大小为 N×N

举例
经过三个r=2; 3x3,S=1的filter(即三层5x5, S=1的filter进行卷积)后一个1*1大小像素在原图中的感受野。
计算:
R2 = f3 + (R3-1)*S =5+(1-1)*1= 5
R1 = f2 + (R2-1)*S =5+(5-1)*1 = 5+4
R0 = f1 + (R1-1)*S =5+(9-1)*1 =5+(5+4-1)*1=5+4+4=13

参考文章:
模型解读,从2D到3D卷积,有什么不一样
空洞卷积-简书
卷积有多少种,一文读懂深度学习中的各种卷积