对图像和滤波矩阵(滤波器、卷积核)做内积的操作就是卷积。单次卷积操作就是对应位置的两个元素相乘,之后所有乘积相加。
在卷积神经网络中,通过卷积操作,可以提取图片中的特征,低层的卷积层可以提取到图片的一些边缘、线条、角等特征,高层的卷积能够从低层的卷积层中学到更复杂的特征,从而利用提取到的特征,可以进行分类、目标检测等任务。高层的复杂特征具体代表啥,谁也不知道。
训练卷积网络是寻找某种模式匹配的过程。一个卷积核有且只有一种匹配模式,其实质是计算 N*N 的矩阵块与某一模式块的相似度。卷积网络的可视化解释_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
卷积最主要的特点就是局部感知和权值共享。
局部感知:卷积的大小远远小于图像,只需要感知图像中的局部信息,然后在更高层次进行信息组合理论上就可以得到全局信息,减少了计算量。
权值共享:使用同一模板(相同的卷积核、参数)按滑动窗口的方式去提取特征,参数可以共享。这个可以带来平移不变性,而且一个卷积核可以只干一件事,只提取某一个特征。
头重脚轻:越靠近输入层,参数数量越少,越靠近输出层,参数数量越多,呈现出一个倒三角的形态,这就很好地避免了BP神经网络中反向传播的时候梯度损失得太快。
卷积能够平移变换使得其可以找出各种各样物体的特征。但卷积本身无法进行尺度变换、旋转变换。这两个问题一般通过制作多尺度和不同旋转角度的训练集缓和。同时也有少许相关工作——Spatial Transformer Layer、Vladlen Koltun: Beyond convolutional networks (June 2020)。
区别:输入和输出不同,卷积输入输出都是NCHW格式,全连接输入输出都是NV结构;全连接网络两层之间的神经元是两两相连,卷积是部分相连。
全连接不适合做CV:1)参数量过多扩展性差;2)网络局限,梯度传播很难超过3层;3)没有利用像素之间的位置关系; 卷积适合做CV:局部连接、权值共享以及池化,减少参数、利用像素之间的关系。
感受野是输出特征图上的像素点对于原图的映射区域的大小,特征图上的一个点相对于原图的大小。代表该像素点是由其感受野范围内的所有像素点得到的。
注意:
stride_i=stride_1 times stride_2 times … times stride_{(i−1)}/ mathrm{RF}_{i+1} = mathrm{RF}_i + (f_{i+1} − 1) times stride_i times dilation_{i+1} /
其中 mathrm{RF}_i 为第i层感受野,f_{(i+1)} 为第i+1层卷积核大小,dilation_{(i+1)}为第i+1层空洞率。
最开始的输入层:i=0, mathrm{RF}_0=1,即第一层卷积之后的特征图感受野的大小等于卷积核的 size。
计算注意:
反卷积是一种特殊的正向卷积,先按照一定的比例通过补padding来扩大输入图像的尺寸,接着旋转卷积核,再进行正向卷积。反卷积的参数不需要反向传播,而是行列转置之前卷积核的参数。
正向卷积:Y=WX 反卷积:X=W^T Y
但是,如果代入数字计算会发现,反卷积的操作只是恢复了矩阵X的尺寸大小,并不能恢复X的每个元素值。反卷积操作并不能还原出卷积之前的图片,只能还原出卷积之前图片的尺寸。
需要注意的是,反卷积本质是padding补0的卷积,而不是卷积的逆运算
反卷积的用途有:实现上采样;近似重构输入图像,卷积层可视化
空间可分离卷积就是将 n times n的卷积分成n times 1和1 times n两步计算。
虽然空间可分离卷积可以节省计算成本,但一般情况下很少用到。主要原因之一是并非所有卷积核都可以分为两个较小的卷积核。如果用空间可分离卷积代替所有传统的卷积,现有优化器无法找到较优解(训练精度不高)。
深度可分离卷积是将卷积分为Depth-wise Convolution(逐深度卷积)和Point-wise Convolution(逐点1*1卷积)计算。
也用来减少卷积的参数。因此对于规模较小的模型,如果将2D卷积替换为深度可分离卷积,其模型大小可能会显著降低,模型的能力可能会变得不太理想,因此得到的模型可能是次优的。但如果使用得当,深度可分离卷积能在不牺牲模型性能的前提下显著提高效率。
逐深度卷积:将单个卷积核应用到单个通道并生成单个特征图。
逐点1 times 1卷积:跟普通卷积一样,不过使用的是1 times 1的卷积,这样可以把深度卷积后的特征图的通道数增加。
设原通道为c_1,目标通道为c_2。
将特征图在通道上拆分为g个H times W times frac{c_1}{g},对每个frac{c_1}{g}都进行frac{c_2}{g}个3 times 3 times frac{c_1}{g}的标准卷积,之后再拼接起来。相当于参数少了g倍。
如果g等于输入通道数,就变成了Depth-wise Convolution;如果g等于输入通道数,而且卷积大小等于输入图片大小,就变成了全局加权池化,权重是可学习的。
根据输入的图像,进行卷积来学一个偏移,学的是卷积核的偏移,然后进行正常卷积的时候,使用的偏移之后的像素。
最初是在2014年GoogLeNet中首先应用 作用:
主流论文 | 概述 | 学习目标 |
---|---|---|
AlexNet(2010) | 深度学习的开端。 | 卷积的定义与计算过程 |
VGG(2014) | 改进AlexNet。 | 现在大量使用3×3卷积核的原因 |
GoogLeNet(2014) | 加宽网络层,提升精度。 | InceptionV1 |
InceptionV2V3V4(2015) | 分解卷积核,提升速度。 | 卷积分解 |
ResNet(2015) | 经典,现在最广泛的网络。 | 残差模块与Inception的异同 |
MobileNet(2017) | 分解Channel,提升速度。 | 空间、深度可分离卷积 |
ShuffleNet、Xception(2017) | 改进MobileNet。 | Group Conv.与MobileNet的区别 |