矩阵乘法和卷积乘法区别:
卷积的乘法和矩阵的乘法不一样,卷积的求和相当于加权求和,也可以称为加权叠加,矩阵相乘是将一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。
卷积乘法示例:
3 * 3 的像素区域R与卷积核G的卷积运算:
R5(中心像素)=R1G1 +R2G2 + R3G3 + R4G4 + R5G5 + R6G6 + R7G7 + R8G8 + R9G9
矩阵相乘示例:
多通道卷积过程
有颜色的RGB图像,会包含三个相同大小的图层,这时对应的滤波器也要变成三层,卷积核大小为K*K,由于处理的图片是D通道的,因此卷积核其实也就是K*K*D大小的,因此,对于RGB三通道图像,在指定kernel_size的前提下,真正的卷积核大小是kernel_size*kernel_size*3。
对于D通道图像的各通道而言,是在每个通道上分别执行二维卷积,然后将D个通道加起来,得到该位置的二维卷积输出,对于RGB三通道图像而言,就是在R,G,B三个通道上分别使用对应的每个通道上的kernel_size*kernel_size大小的核去卷积每个通道上的W*H的图像,然后将三个通道卷积得到的输出相加,得到一个二维卷积输出结果。因此,若有M个卷积核,可得到M个二维卷积输出结果,
此动态图帮助了解多通道卷积运算。
所以,理解卷积核时,不能把K*K的kernel_size看成一个二维矩阵,对于每一个kernel_size,它的维度和要处理的图片的通道数是相等的,它的个数决定了输出特征图的维度(通道数).
比如,torch的卷积函数conv=torch.nn.Conv2d(1,8,(2,3))。Conv2d的参数
[channels,output, height_2, width_2 ]其中,channels为通道数,需要和将要进行卷积运算的特征图的通道数保持一致。output 输出的深度,即输出的特征图的通道数。height_2和width_2分别表示过滤器filter的宽和高,如果是Conv2d(1,8,3),则表示卷积核的尺寸为3×3。
在卷积运算时,如果滤波器超出了图像框,一般的操作是不进行运算。所以为了防止边缘信息丢失,会进行Padding操作,意思是在卷积之前,在原图像边缘上加入一层像素(也可以多层),一般也叫做补零(因为大多数时候我们添加的元素都是0)。卷积的意义:进行一次特征“浓缩”,用另一个意思来讲,就是把它抽象化。最后经过很多次的抽象化,你会将原始的矩阵变成一个 1 维乘 1 维的矩阵,这就是一个数字(变成了可以让分类器处理的概率数字)
所以,如上图所示。卷积运算一般不会改变特征图的长和宽(padding情况下),要实现特征图不断的缩小,最后实现1×1×1000。需要max polling(最大池化操作)。
卷积运算时:无padding输出特征图w-2,h-2,有padding保持不变。
池化运算是:设输入大小W×W,核大小F,步长S,padding大小P,输出大小N×N。则N为:
N=W−F+2∗PS+1N=SW−F+2∗P+1
网友评论