一、单通道卷积

以单通道卷积为例,输入为(1,5,5),分别表示1个通道,宽为5,高为5。假设卷积核大小为3x3,padding=0,stride=1。

单通道图像的深度学习代码怎么改成三通道适用的 单通道算法_卷积核


相应的卷积核不断的在图像上进行遍历,最后得到3x3的卷积结果,结果如下:

单通道图像的深度学习代码怎么改成三通道适用的 单通道算法_cnn_02

二、多通道卷积

以彩色图像为例,包含三个通道,分别表示RGB三原色的像素值,输入为(3,5,5),分别表示3个通道,每个通道的宽为5,高为5。假设卷积核只有1个,卷积核通道为3,每个通道的卷积核大小仍为3x3,padding=0,stride=1。

卷积过程如下,每一个通道的像素值与对应的卷积核通道的数值进行卷积,因此每一个通道会对应一个输出卷积结果,三个卷积结果对应位置累加求和,得到最终的卷积结果(这里卷积输出结果通道只有1个,因为卷积核只有1个。

可以这么理解:最终得到的卷积结果是原始图像各个通道上的综合信息结果。

单通道图像的深度学习代码怎么改成三通道适用的 单通道算法_深度学习_03

上述过程中,每一个卷积核的通道数量,必须要求与输入通道数量一致,因为要对每一个通道的像素值要进行卷积运算,所以每一个卷积核的通道数量必须要与输入通道数量保持一致。

单通道图像的深度学习代码怎么改成三通道适用的 单通道算法_卷积_04

三、多核卷积

下图为双核卷积的效果。

单通道图像的深度学习代码怎么改成三通道适用的 单通道算法_深度学习_05

三、卷积核输出特征大小计算

若图像为正方形:设输入图像尺寸为WxW,卷积核尺寸为FxF,步幅为S,Padding使用P,经过该卷积层后输出的图像尺寸为NxN:

单通道图像的深度学习代码怎么改成三通道适用的 单通道算法_计算机视觉_06


若图像为矩形:设输入图像尺寸为WxH,卷积核的尺寸为FxF,步幅为S,图像深度(通道数)为C,Padding使用P,则卷积后输出图像大小:

单通道图像的深度学习代码怎么改成三通道适用的 单通道算法_cnn_07


注意:Padding的作用用于解决图像边缘信息损失的问题。

单通道图像的深度学习代码怎么改成三通道适用的 单通道算法_深度学习_08


如same:(same模式只有步长为1时,输入和输出的尺度才相同)

输入特征图为5x5,卷积核为3x3,外加padding 为1,则其输出尺寸为:

单通道图像的深度学习代码怎么改成三通道适用的 单通道算法_深度学习_09

池化操作:

设输入图像尺寸为WxH,其中W:图像宽,H:图像高,D:图像深度(通道数),卷积核的尺寸为FxF,S:步长。池化后输出图像大小:

单通道图像的深度学习代码怎么改成三通道适用的 单通道算法_计算机视觉_10


当进行池化操作时,步长S就等于池化核的尺寸,如输入为24x24,池化核为4x4,则输出为:

单通道图像的深度学习代码怎么改成三通道适用的 单通道算法_深度学习_11


若除不尽,则取较小的数,如池化核为7x7,则输出为:

单通道图像的深度学习代码怎么改成三通道适用的 单通道算法_计算机视觉_12


不是用四舍五入,就是取最小的整数,即使为3.9,也是取3。

池化的作用:

1.特征不变形:池化操作是模型更加关注是否存在某些特征而不是特征具体的位置。

2.特征降维:池化相当于在空间范围内做了维度约减,从而使模型可以抽取更加广范围的特征。同时减小了下一层的输入大小,进而减少计算量和参数个数。

3.在一定程度上防止过拟合,更方便优化。

空洞卷积(也称扩张卷积,膨胀卷积)–dilated convolution

单通道图像的深度学习代码怎么改成三通道适用的 单通道算法_卷积_13


其中 d为空洞卷积的空洞率(正常的卷积d=1),p为padding,k为kernel size。

下面的空洞卷积核是d=2,k=2的空洞卷积卷积核。当d=2,k=2时,-d(k-1)-1 = -3,即相当于 一个k=3的正常卷积核。下图的正好是3x3的。

单通道图像的深度学习代码怎么改成三通道适用的 单通道算法_cnn_14

更多基础知识见网址:https://cs231n.github.io/convolutional-networks/#conv