假设输入图像的宽高为
input
,卷积核宽高为kernel
,步长stride
,填充padding
(单边填充值),输出特征图的宽高为output
。
o u t p u t = i n p u t − k e r n e l + 1 output = input-kernel+1 output=input−kernel+1
o u t p u t = f l o o r ( i n p u t − k e r n e l s t r i d e ) + 1 output=floor(\frac{input-kernel}{stride})+1 output=floor(strideinput−kernel)+1
floor代表向下取整,例如 f l o o r ( 6 − 3 2 ) + 1 = 2 floor(\frac{6-3}{2})+1=2 floor(26−3)+1=2
o u t p u t = f l o o r ( i n p u t − k e r n e l + 2 × p a d d i n g s t r i d e ) + 1 output=floor(\frac{input-kernel+2 \times padding}{stride})+1 output=floor(strideinput−kernel+2×padding)+1
假设输入图像通道数为 n i n p u t n_{input} ninput,则卷积核通道数同样也应该为 n i n p u t n_{input} ninput,卷积核个数为 n k e r n e l n_{kernel} nkernel,输出特征图的维度(通道数)为 n o u t p u t n_{output} noutput,其余条件同上,则有
o u t p u t = f l o o r ( i n p u t − k e r n e l + 2 × p a d d i n g s t r i d e ) + 1 output=floor(\frac{input-kernel+2 \times padding}{stride})+1 output=floor(strideinput−kernel+2×padding)+1
n o u t p u t = m n_{output} = m noutput=m
一句话总结:卷积核的通道数应等于输入图像通道数,输出图像通道数应等于卷积核的个数,而跟输入图像的通道数无关。
参数量的大小决定了网络的复杂度,参数量越小则网络复杂度越低。
w e i g h t s = k e r n e l × k e r n e l × i n p u t × n k e r n e l weights=kernel \times kernel \times input \times n_{kernel} weights=kernel×kernel×input×nkernel
b i a s = n k e r n e l bias = n_{kernel} bias=nkernel
w e i g h t s + b i a s = k e r n e l 2 × i n p u t × n k e r n e l + n k e r n e l weights+bias=kernel^{2} \times input \times n_{kernel}+n_{kernel} weights+bias=kernel2×input×nkernel+nkernel
单次卷积,是单个卷积核的 k e r n e l ∗ k e r n e l ∗ n k e r n e l kernel*kernel*n_{kernel} kernel∗kernel∗nkernel个元素与输入图像对应位置相乘,则有 k e r n e l ∗ k e r n e l ∗ n k e r n e l kernel*kernel*n_{kernel} kernel∗kernel∗nkernel次乘法操作,相乘结束后还需要对 k e r n e l × k e r n e l × n k e r n e l kernel\times kernel\times n_{kernel} kernel×kernel×nkernel个数值进行累加,则一共有 k e r n e l ∗ k e r n e l ∗ n k e r n e l − 1 kernel*kernel*n_{kernel}-1 kernel∗kernel∗nkernel−1次加法,因此,一次卷积操作所需要的乘加计算量为:
2 × k e r n e l × k e r n e l × n k e r n e l − 1 2\times kernel\times kernel\times n_{kernel} - 1 2×kernel×kernel×nkernel−1
由于输出特征图的大小为 o u t p u t × o u t p u t output \times output output×output,那么对全图进行卷积操作,则需要的乘加计算量为:
( 2 × k e r n e l 2 × n k e r n e l − 1 ) ∗ o u t p u t 2 (2\times kernel^{2} \times n_{kernel} - 1)*output^{2} (2×kernel2×nkernel−1)∗output2
若卷积核不止一个,即输出特征图的通道数 n o u t p u t ≠ 1 n_{output}\neq 1 noutput=1,则需要的总乘加计算量为:
( 2 × k e r n e l 2 × n k e r n e l − 1 ) × o u t p u t 2 × n o u t p u t (2\times kernel^{2} \times n_{kernel} - 1)\times output^{2}\times n_{output} (2×kernel2×nkernel−1)×output2×noutput