卷积运算

1.卷积核的通道(也叫滤波器)的个数得与被卷积的图片通道数相同

eg:输入图片是1024×1024×3,即通道数为3,那么每个卷积核得有3个通道

2.卷积核做的是线性运算,核上的每个值与它滑动到的对应位置上的值相乘,然后把这些值相加。

eg:默认滑动步长为1

机器学习 卷积入门 卷积程序_机器学习

用右边的9个格放到原图上,9个9个的不重复的走

先从左向右滑:

输出的第一个值为
2×1+8×0+9×2+1×1+2×0+8×1+7×3+7×0+2×0=50
输出的第二个值为
8×1+9×0+1×2+2×1+8×0+3×1+7×3+2×0+9×0=36
输出的第三个值为
9×1+1×0+4×2+8×1+3×0+8×1+2×3+9×0+5×0=39

所以得到的输出特征图第一行的值为50 36 39

再从上往下滑:

卷积核的第一行就到了原图的第二行,然后继续从左向右滑

机器学习 卷积入门 卷积程序_深度学习_02


机器学习 卷积入门 卷积程序_机器学习_03


1×1+2×0+8×2+7×1+7×0+2×1+5×3+4×0+4×0=41

2×1+8×0+3×2+7×1+2×0+9×1+4×3+4×0+8×0=36

8×1+3×0+8×2+2×1+9×0+5×1+4×3+8×0+1×0=43

输出特征图的第二行的值为 41 36 43

输出特征图第三行的计算:

机器学习 卷积入门 卷积程序_卷积核_04


7×1+7×0+2×2+5×1+4×0+4×1+3×3+5×0+3×0=29

7×1+2×0+9×2+4×1+4×0+8×1+5×3+3×0+6×0=52

2×1+9×0+5×2+4×1+8×0+1×1+3×3+6×0+2×0=26

输出特征图的第三行的值为 29 52 26

所以,输出的特征图是3行3列,为
50 36 39
41 36 43
29 52 26

3.特征图大小计算

设输入特征图大小为m×n,卷积核大小为i×j,卷积步长为s(即横向和纵向都是s),无填充(就是不让原图变大)
则输出特征图大小为u×v
行:u=ceil((m-i+1)÷s)
列:v=ceil((n-j+1)÷s)
ceil()为向上取整
eg:输入特征图大小为256×128,卷积核大小为4×3,卷积步长为2
u=ceil((256-4+1)÷2)=ceil(126.5)=127
v=ceil((128-3+1)÷2)=ceil(63)=63
所以输出特征图大小为127×63

注意:步长s就是走一步要跳s步

eg:步长为2,此图输出为2×2大小,框起来的就是每次卷积核要运算的位置,每次要跳两行或者两列的走。

机器学习 卷积入门 卷积程序_机器学习 卷积入门_05

若有填充,计算为

设输入特征图大小为m×n,卷积核大小为i×j,卷积步长为s(即横向和纵向都是s),填充为p×q
则输出特征图大小为u×v
行:u=ceil((m+p-i+1)÷s)
列:v=ceil((n+q-j+1)÷s)

eg:输入特征图大小为256×128,卷积核大小为4×3,卷积步长为2,填充为3×4
u=ceil((256+3-4+1)÷2)=ceil(128)=128
v=ceil((128+4-3+1)÷2)=ceil(65)=65
所以输出特征图大小为128×65

以上均为单通道计算

4.多通道卷积(卷积完还是单通道)

原理和单通道卷积相同,每个通道按单通道计算,最后把对应位置的值相加;卷积核的通道数和输入图片的通道数相同,但一般卷积核上的每个通道的值是不同的(为了提取不同特征)

机器学习 卷积入门 卷积程序_卷积核_06


图中的三个卷积核是指一个卷积核的三个通道(滤波器)

机器学习 卷积入门 卷积程序_机器学习 卷积入门_07


其实多通道卷积原理和单通道卷积,就可以想象成千层蛋糕,一层蛋糕(原图)配一层奶油(卷积核),最后把它们每一层算完后,再叠在一块,压厚实了(对应位置相加),成为了一层蛋糕(输出特征图)。