yun@dicom

导航

矩阵卷积操作详解 - 可视化教程

矩阵卷积操作详解 - 可视化教程

什么是卷积?

卷积是一种数学运算,可以理解为"滑动加权求和"。在深度学习中,卷积被广泛用于提取特征。

基础示例:6×6矩阵与3×3卷积核的卷积

我们使用一个简单的6×6输入矩阵 \(I\) 和一个3×3卷积核 \(K\)

输入矩阵 \(I\)

\[I = \colorbox{lightblue}{$ \begin{array}{cccccc} 1 & 2 & 3 & 4 & 5 & 6\\ 7 & 8 & 9 & 10 & 11 & 12\\ 13 & 14 & 15 & 16 & 17 & 18\\ 19 & 20 & 21 & 22 & 23 & 24\\ 25 & 26 & 27 & 28 & 29 & 30\\ 31 & 32 & 33 & 34 & 35 & 36\\ \end{array} $} \]

卷积核 \(K\)

\[K = \colorbox{lightgreen}{$ \begin{array}{ccc} k_1 & k_2 & k_3\\ k_4 & k_5 & k_6\\ k_7 & k_8 & k_9\\ \end{array} $} = \colorbox{lightgreen}{$ \begin{array}{ccc} 0.1 & 0.2 & 0.3\\ 0.4 & 0.5 & 0.6\\ 0.7 & 0.8 & 0.9\\ \end{array} $} \]

这是一个简单的3×3卷积核,每个元素的值都不同,以便更清楚地展示计算过程。


卷积计算步骤(步幅=1,无填充)

第1步:计算输出矩阵(0,0)位置的元素

将卷积核放在输入矩阵的左上角:

\[\colorbox{lightblue}{$ \begin{array}{cccccc} \colorbox{lightcoral}{1} & \colorbox{lightcoral}{2} & \colorbox{lightcoral}{3} & 4 & 5 & 6\\ \colorbox{lightcoral}{7} & \colorbox{lightcoral}{8} & \colorbox{lightcoral}{9} & 10 & 11 & 12\\ \colorbox{lightcoral}{13} & \colorbox{lightcoral}{14} & \colorbox{lightcoral}{15} & 16 & 17 & 18\\ 19 & 20 & 21 & 22 & 23 & 24\\ 25 & 26 & 27 & 28 & 29 & 30\\ 31 & 32 & 33 & 34 & 35 & 36\\ \end{array} $} \otimes \colorbox{lightgreen}{$ \begin{array}{ccc} k_1 & k_2 & k_3\\ k_4 & k_5 & k_6\\ k_7 & k_8 & k_9\\ \end{array} $} \]

逐元素相乘:

\[\begin{aligned} &\colorbox{lightcoral}{1}\times k_1 + \colorbox{lightcoral}{2}\times k_2 + \colorbox{lightcoral}{3}\times k_3 + \\ &\colorbox{lightcoral}{7}\times k_4 + \colorbox{lightcoral}{8}\times k_5 + \colorbox{lightcoral}{9}\times k_6 + \\ &\colorbox{lightcoral}{13}\times k_7 + \colorbox{lightcoral}{14}\times k_8 + \colorbox{lightcoral}{15}\times k_9 \end{aligned} \]

代入数值计算:

\[\begin{aligned} &= 1\times0.1 + 2\times0.2 + 3\times0.3 + \\ &7\times0.4 + 8\times0.5 + 9\times0.6 + \\ &13\times0.7 + 14\times0.8 + 15\times0.9 \end{aligned} \]

逐步计算:

  1. 第一行:\(0.1 + 0.4 + 0.9 = 1.4\)
  2. 第二行:\(2.8 + 4.0 + 5.4 = 12.2\)
  3. 第三行:\(9.1 + 11.2 + 13.5 = 33.8\)

总和:

\[1.4 + 12.2 + 33.8 = \colorbox{lightyellow}{47.4} \]


第2步:计算输出矩阵(0,1)位置的元素

将卷积核向右移动1格:

\[\colorbox{lightblue}{$ \begin{array}{cccccc} 1 & \colorbox{lavender}{2} & \colorbox{lavender}{3} & \colorbox{lavender}{4} & 5 & 6\\ 7 & \colorbox{lavender}{8} & \colorbox{lavender}{9} & \colorbox{lavender}{10} & 11 & 12\\ 13 & \colorbox{lavender}{14} & \colorbox{lavender}{15} & \colorbox{lavender}{16} & 17 & 18\\ 19 & 20 & 21 & 22 & 23 & 24\\ 25 & 26 & 27 & 28 & 29 & 30\\ 31 & 32 & 33 & 34 & 35 & 36\\ \end{array} $} \otimes \colorbox{lightgreen}{$ \begin{array}{ccc} k_1 & k_2 & k_3\\ k_4 & k_5 & k_6\\ k_7 & k_8 & k_9\\ \end{array} $} \]

逐元素相乘:

\[\begin{aligned} &\colorbox{lavender}{2}\times k_1 + \colorbox{lavender}{3}\times k_2 + \colorbox{lavender}{4}\times k_3 + \\ &\colorbox{lavender}{8}\times k_4 + \colorbox{lavender}{9}\times k_5 + \colorbox{lavender}{10}\times k_6 + \\ &\colorbox{lavender}{14}\times k_7 + \colorbox{lavender}{15}\times k_8 + \colorbox{lavender}{16}\times k_9 \end{aligned} \]

代入数值计算:

\[\begin{aligned} &= 2\times0.1 + 3\times0.2 + 4\times0.3 + \\ &8\times0.4 + 9\times0.5 + 10\times0.6 + \\ &14\times0.7 + 15\times0.8 + 16\times0.9 \end{aligned} \]

逐步计算:

  1. 第一行:\(0.2 + 0.6 + 1.2 = 2.0\)
  2. 第二行:\(3.2 + 4.5 + 6.0 = 13.7\)
  3. 第三行:\(9.8 + 12.0 + 14.4 = 36.2\)

总和:

\[2.0 + 13.7 + 36.2 = \colorbox{lightcyan}{51.9} \]


第3步:计算输出矩阵(0,2)位置的元素

将卷积核继续向右移动1格:

\[\colorbox{lightblue}{$ \begin{array}{cccccc} 1 & 2 & \colorbox{peachpuff}{3} & \colorbox{peachpuff}{4} & \colorbox{peachpuff}{5} & 6\\ 7 & 8 & \colorbox{peachpuff}{9} & \colorbox{peachpuff}{10} & \colorbox{peachpuff}{11} & 12\\ 13 & 14 & \colorbox{peachpuff}{15} & \colorbox{peachpuff}{16} & \colorbox{peachpuff}{17} & 18\\ 19 & 20 & 21 & 22 & 23 & 24\\ 25 & 26 & 27 & 28 & 29 & 30\\ 31 & 32 & 33 & 34 & 35 & 36\\ \end{array} $} \otimes \colorbox{lightgreen}{$ \begin{array}{ccc} k_1 & k_2 & k_3\\ k_4 & k_5 & k_6\\ k_7 & k_8 & k_9\\ \end{array} $} \]

逐元素相乘:

\[\begin{aligned} &\colorbox{peachpuff}{3}\times k_1 + \colorbox{peachpuff}{4}\times k_2 + \colorbox{peachpuff}{5}\times k_3 + \\ &\colorbox{peachpuff}{9}\times k_4 + \colorbox{peachpuff}{10}\times k_5 + \colorbox{peachpuff}{11}\times k_6 + \\ &\colorbox{peachpuff}{15}\times k_7 + \colorbox{peachpuff}{16}\times k_8 + \colorbox{peachpuff}{17}\times k_9 \end{aligned} \]

代入数值计算:

\[\begin{aligned} &= 3\times0.1 + 4\times0.2 + 5\times0.3 + \\ &9\times0.4 + 10\times0.5 + 11\times0.6 + \\ &15\times0.7 + 16\times0.8 + 17\times0.9 \end{aligned} \]

逐步计算:

  1. 第一行:\(0.3 + 0.8 + 1.5 = 2.6\)
  2. 第二行:\(3.6 + 5.0 + 6.6 = 15.2\)
  3. 第三行:\(10.5 + 12.8 + 15.3 = 38.6\)

总和:

\[2.6 + 15.2 + 38.6 = \colorbox{palegreen}{56.4} \]


第4步:计算输出矩阵(0,3)位置的元素

将卷积核移动到最右边:

\[\colorbox{lightblue}{$ \begin{array}{cccccc} 1 & 2 & 3 & \colorbox{thistle}{4} & \colorbox{thistle}{5} & \colorbox{thistle}{6}\\ 7 & 8 & 9 & \colorbox{thistle}{10} & \colorbox{thistle}{11} & \colorbox{thistle}{12}\\ 13 & 14 & 15 & \colorbox{thistle}{16} & \colorbox{thistle}{17} & \colorbox{thistle}{18}\\ 19 & 20 & 21 & 22 & 23 & 24\\ 25 & 26 & 27 & 28 & 29 & 30\\ 31 & 32 & 33 & 34 & 35 & 36\\ \end{array} $} \otimes \colorbox{lightgreen}{$ \begin{array}{ccc} k_1 & k_2 & k_3\\ k_4 & k_5 & k_6\\ k_7 & k_8 & k_9\\ \end{array} $} \]

逐元素相乘:

\[\begin{aligned} &\colorbox{thistle}{4}\times k_1 + \colorbox{thistle}{5}\times k_2 + \colorbox{thistle}{6}\times k_3 + \\ &\colorbox{thistle}{10}\times k_4 + \colorbox{thistle}{11}\times k_5 + \colorbox{thistle}{12}\times k_6 + \\ &\colorbox{thistle}{16}\times k_7 + \colorbox{thistle}{17}\times k_8 + \colorbox{thistle}{18}\times k_9 \end{aligned} \]

代入数值计算:

\[\begin{aligned} &= 4\times0.1 + 5\times0.2 + 6\times0.3 + \\ &10\times0.4 + 11\times0.5 + 12\times0.6 + \\ &16\times0.7 + 17\times0.8 + 18\times0.9 \end{aligned} \]

逐步计算:

  1. 第一行:\(0.4 + 1.0 + 1.8 = 3.2\)
  2. 第二行:\(4.0 + 5.5 + 7.2 = 16.7\)
  3. 第三行:\(11.2 + 13.6 + 16.2 = 41.0\)

总和:

\[3.2 + 16.7 + 41.0 = \colorbox{blanchedalmond}{60.9} \]


继续计算第二行

第5步:计算输出矩阵(1,0)位置的元素

将卷积核向下移动1格,回到左边:

\[\colorbox{lightblue}{$ \begin{array}{cccccc} 1 & 2 & 3 & 4 & 5 & 6\\ \colorbox{lightcoral}{7} & \colorbox{lightcoral}{8} & \colorbox{lightcoral}{9} & 10 & 11 & 12\\ \colorbox{lightcoral}{13} & \colorbox{lightcoral}{14} & \colorbox{lightcoral}{15} & 16 & 17 & 18\\ \colorbox{lightcoral}{19} & \colorbox{lightcoral}{20} & \colorbox{lightcoral}{21} & 22 & 23 & 24\\ 25 & 26 & 27 & 28 & 29 & 30\\ 31 & 32 & 33 & 34 & 35 & 36\\ \end{array} $} \otimes \colorbox{lightgreen}{$ \begin{array}{ccc} k_1 & k_2 & k_3\\ k_4 & k_5 & k_6\\ k_7 & k_8 & k_9\\ \end{array} $} \]

逐元素相乘:

\[\begin{aligned} &\colorbox{lightcoral}{7}\times k_1 + \colorbox{lightcoral}{8}\times k_2 + \colorbox{lightcoral}{9}\times k_3 + \\ &\colorbox{lightcoral}{13}\times k_4 + \colorbox{lightcoral}{14}\times k_5 + \colorbox{lightcoral}{15}\times k_6 + \\ &\colorbox{lightcoral}{19}\times k_7 + \colorbox{lightcoral}{20}\times k_8 + \colorbox{lightcoral}{21}\times k_9 \end{aligned} \]

代入数值计算:

\[\begin{aligned} &= 7\times0.1 + 8\times0.2 + 9\times0.3 + \\ &13\times0.4 + 14\times0.5 + 15\times0.6 + \\ &19\times0.7 + 20\times0.8 + 21\times0.9 \end{aligned} \]

逐步计算:

  1. 第一行:\(0.7 + 1.6 + 2.7 = 5.0\)
  2. 第二行:\(5.2 + 7.0 + 9.0 = 21.2\)
  3. 第三行:\(13.3 + 16.0 + 18.9 = 48.2\)

总和:

\[5.0 + 21.2 + 48.2 = \colorbox{lightcoral}{74.4} \]


第6步:计算输出矩阵(1,1)位置的元素

将卷积核向右移动1格:

\[\colorbox{lightblue}{$ \begin{array}{cccccc} 1 & 2 & 3 & 4 & 5 & 6\\ 7 & \colorbox{lavender}{8} & \colorbox{lavender}{9} & \colorbox{lavender}{10} & 11 & 12\\ 13 & \colorbox{lavender}{14} & \colorbox{lavender}{15} & \colorbox{lavender}{16} & 17 & 18\\ 19 & \colorbox{lavender}{20} & \colorbox{lavender}{21} & \colorbox{lavender}{22} & 23 & 24\\ 25 & 26 & 27 & 28 & 29 & 30\\ 31 & 32 & 33 & 34 & 35 & 36\\ \end{array} $} \otimes \colorbox{lightgreen}{$ \begin{array}{ccc} k_1 & k_2 & k_3\\ k_4 & k_5 & k_6\\ k_7 & k_8 & k_9\\ \end{array} $} \]

逐元素相乘:

\[\begin{aligned} &\colorbox{lavender}{8}\times k_1 + \colorbox{lavender}{9}\times k_2 + \colorbox{lavender}{10}\times k_3 + \\ &\colorbox{lavender}{14}\times k_4 + \colorbox{lavender}{15}\times k_5 + \colorbox{lavender}{16}\times k_6 + \\ &\colorbox{lavender}{20}\times k_7 + \colorbox{lavender}{21}\times k_8 + \colorbox{lavender}{22}\times k_9 \end{aligned} \]

代入数值计算:

\[\begin{aligned} &= 8\times0.1 + 9\times0.2 + 10\times0.3 + \\ &14\times0.4 + 15\times0.5 + 16\times0.6 + \\ &20\times0.7 + 21\times0.8 + 22\times0.9 \end{aligned} \]

逐步计算:

  1. 第一行:\(0.8 + 1.8 + 3.0 = 5.6\)
  2. 第二行:\(5.6 + 7.5 + 9.6 = 22.7\)
  3. 第三行:\(14.0 + 16.8 + 19.8 = 50.6\)

总和:

\[5.6 + 22.7 + 50.6 = \colorbox{lavender}{78.9} \]


完整卷积结果(前几项)

按照同样的方法计算所有位置,我们得到4×4的输出矩阵:

完整计算过程:

  • 位置(0,0): 47.4
  • 位置(0,1): 51.9
  • 位置(0,2): 56.4
  • 位置(0,3): 60.9
  • 位置(1,0): 74.4
  • 位置(1,1): 78.9
  • 位置(1,2): 83.4
  • 位置(1,3): 87.9
  • 位置(2,0): 101.4
  • 位置(2,1): 105.9
  • 位置(2,2): 110.4
  • 位置(2,3): 114.9
  • 位置(3,0): 128.4
  • 位置(3,1): 132.9
  • 位置(3,2): 137.4
  • 位置(3,3): 141.9

最终结果:

\[\text{卷积结果} = \colorbox{lightyellow}{$ \begin{array}{cccc} 47.4 & 51.9 & 56.4 & 60.9\\ 74.4 & 78.9 & 83.4 & 87.9\\ 101.4 & 105.9 & 110.4 & 114.9\\ 128.4 & 132.9 & 137.4 & 141.9\\ \end{array} $} \]


观察规律

从计算结果我们可以观察到:

  1. 每一行内,数值从左到右递增(差值都是4.5)
  2. 每一列内,数值从上到下递增(差值都是27.0)
  3. 这是因为输入矩阵是均匀递增的,而卷积核的权重也是递增的

总结

卷积操作步骤:

  1. 将卷积核放在输入矩阵的左上角
  2. 逐元素相乘:输入矩阵的每个元素乘以卷积核对应的元素
  3. 求和:将所有乘积相加,得到输出矩阵的第一个元素
  4. 滑动:将卷积核向右滑动(步幅=1),重复2-3步
  5. 到达最右边后,回到最左边,向下滑动一行
  6. 重复直到覆盖整个输入矩阵

输出大小公式:
如果输入矩阵大小为 \(n \times n\),卷积核大小为 \(k \times k\),步幅为1,无填充:

\[\text{输出大小} = (n-k+1) \times (n-k+1) \]

在我们的例子中:\(n=6\), \(k=3\),输出大小为 \((6-3+1) \times (6-3+1) = 4 \times 4\)

数学表达式:
对于输出矩阵中的元素 \(O_{i,j}\)

\[O_{i,j} = \sum_{m=0}^{2}\sum_{n=0}^{2} I_{i+m,j+n} \times K_{m,n} \]

通过这个详细的例子,我们能清楚地理解卷积操作的计算过程了!

下面再讲解多通道卷积


多通道卷积详解

什么是多通道卷积?

在深度学习中,我们经常处理多通道数据,比如彩色图片有3个通道(红、绿、蓝)。多通道卷积是单通道卷积的扩展,每个输入通道都有一个对应的卷积核,最后将所有通道的结果相加。

示例:2通道输入,2个卷积核

假设我们有一个2通道的4×4输入,使用2个卷积核,每个卷积核也是2通道的3×3大小:

输入张量 \(I\)(2通道,4×4):

通道1:

\[I_1 = \colorbox{lightblue}{$ \begin{array}{cccc} 1 & 2 & 3 & 4\\ 5 & 6 & 7 & 8\\ 9 & 10 & 11 & 12\\ 13 & 14 & 15 & 16\\ \end{array} $} \]

通道2:

\[I_2 = \colorbox{lightgreen}{$ \begin{array}{cccc} 17 & 18 & 19 & 20\\ 21 & 22 & 23 & 24\\ 25 & 26 & 27 & 28\\ 29 & 30 & 31 & 32\\ \end{array} $} \]

卷积核 \(K\)(2个卷积核,每个有2通道):

卷积核1:

\[K_1^{(1)} = \colorbox{lightcoral}{$ \begin{array}{ccc} 0.1 & 0.2 & 0.3\\ 0.4 & 0.5 & 0.6\\ 0.7 & 0.8 & 0.9\\ \end{array} $} \quad K_1^{(2)} = \colorbox{lavender}{$ \begin{array}{ccc} 1.0 & 1.1 & 1.2\\ 1.3 & 1.4 & 1.5\\ 1.6 & 1.7 & 1.8\\ \end{array} $} \]

卷积核2:

\[K_2^{(1)} = \colorbox{peachpuff}{$ \begin{array}{ccc} 2.1 & 2.2 & 2.3\\ 2.4 & 2.5 & 2.6\\ 2.7 & 2.8 & 2.9\\ \end{array} $} \quad K_2^{(2)} = \colorbox{lightcyan}{$ \begin{array}{ccc} 3.1 & 3.2 & 3.3\\ 3.4 & 3.5 & 3.6\\ 3.7 & 3.8 & 3.9\\ \end{array} $} \]


计算第一个卷积核的输出

第一步:计算输出位置(0,0)

卷积核1的两个通道分别与对应的输入通道卷积:

通道1的卷积:

\[\colorbox{lightblue}{$ \begin{array}{cccc} \colorbox{lightyellow}{1} & \colorbox{lightyellow}{2} & \colorbox{lightyellow}{3} & 4\\ \colorbox{lightyellow}{5} & \colorbox{lightyellow}{6} & \colorbox{lightyellow}{7} & 8\\ \colorbox{lightyellow}{9} & \colorbox{lightyellow}{10} & \colorbox{lightyellow}{11} & 12\\ 13 & 14 & 15 & 16\\ \end{array} $} \otimes \colorbox{lightcoral}{$ \begin{array}{ccc} 0.1 & 0.2 & 0.3\\ 0.4 & 0.5 & 0.6\\ 0.7 & 0.8 & 0.9\\ \end{array} $} \]

计算:

\[\begin{aligned} &1\times0.1 + 2\times0.2 + 3\times0.3 + \\ &5\times0.4 + 6\times0.5 + 7\times0.6 + \\ &9\times0.7 + 10\times0.8 + 11\times0.9 \\ &= 0.1 + 0.4 + 0.9 + 2.0 + 3.0 + 4.2 + 6.3 + 8.0 + 9.9 \\ &= 34.8 \end{aligned} \]

通道2的卷积:

\[\colorbox{lightgreen}{$ \begin{array}{cccc} \colorbox{lightyellow}{17} & \colorbox{lightyellow}{18} & \colorbox{lightyellow}{19} & 20\\ \colorbox{lightyellow}{21} & \colorbox{lightyellow}{22} & \colorbox{lightyellow}{23} & 24\\ \colorbox{lightyellow}{25} & \colorbox{lightyellow}{26} & \colorbox{lightyellow}{27} & 28\\ 29 & 30 & 31 & 32\\ \end{array} $} \otimes \colorbox{lavender}{$ \begin{array}{ccc} 1.0 & 1.1 & 1.2\\ 1.3 & 1.4 & 1.5\\ 1.6 & 1.7 & 1.8\\ \end{array} $} \]

计算:

\[\begin{aligned} &17\times1.0 + 18\times1.1 + 19\times1.2 + \\ &21\times1.3 + 22\times1.4 + 23\times1.5 + \\ &25\times1.6 + 26\times1.7 + 27\times1.8 \\ &= 17.0 + 19.8 + 22.8 + 27.3 + 30.8 + 34.5 + 40.0 + 44.2 + 48.6 \\ &= 285.0 \end{aligned} \]

两个通道结果相加:

\[34.8 + 285.0 = \colorbox{lightyellow}{319.8} \]

所以卷积核1在位置(0,0)的输出是 319.8


第二步:计算输出位置(0,1)

卷积核1的两个通道分别卷积:

通道1(向右滑动一格):

\[\colorbox{lightblue}{$ \begin{array}{cccc} 1 & \colorbox{lightyellow}{2} & \colorbox{lightyellow}{3} & \colorbox{lightyellow}{4}\\ 5 & \colorbox{lightyellow}{6} & \colorbox{lightyellow}{7} & \colorbox{lightyellow}{8}\\ 9 & \colorbox{lightyellow}{10} & \colorbox{lightyellow}{11} & \colorbox{lightyellow}{12}\\ 13 & 14 & 15 & 16\\ \end{array} $} \otimes \colorbox{lightcoral}{$ \begin{array}{ccc} 0.1 & 0.2 & 0.3\\ 0.4 & 0.5 & 0.6\\ 0.7 & 0.8 & 0.9\\ \end{array} $} \]

计算:

\[\begin{aligned} &2\times0.1 + 3\times0.2 + 4\times0.3 + \\ &6\times0.4 + 7\times0.5 + 8\times0.6 + \\ &10\times0.7 + 11\times0.8 + 12\times0.9 \\ &= 0.2 + 0.6 + 1.2 + 2.4 + 3.5 + 4.8 + 7.0 + 8.8 + 10.8 \\ &= 39.3 \end{aligned} \]

通道2:

\[\colorbox{lightgreen}{$ \begin{array}{cccc} 17 & \colorbox{lightyellow}{18} & \colorbox{lightyellow}{19} & \colorbox{lightyellow}{20}\\ 21 & \colorbox{lightyellow}{22} & \colorbox{lightyellow}{23} & \colorbox{lightyellow}{24}\\ 25 & \colorbox{lightyellow}{26} & \colorbox{lightyellow}{27} & \colorbox{lightyellow}{28}\\ 29 & 30 & 31 & 32\\ \end{array} $} \otimes \colorbox{lavender}{$ \begin{array}{ccc} 1.0 & 1.1 & 1.2\\ 1.3 & 1.4 & 1.5\\ 1.6 & 1.7 & 1.8\\ \end{array} $} \]

计算:

\[\begin{aligned} &18\times1.0 + 19\times1.1 + 20\times1.2 + \\ &22\times1.3 + 23\times1.4 + 24\times1.5 + \\ &26\times1.6 + 27\times1.7 + 28\times1.8 \\ &= 18.0 + 20.9 + 24.0 + 28.6 + 32.2 + 36.0 + 41.6 + 45.9 + 50.4 \\ &= 297.6 \end{aligned} \]

两个通道结果相加:

\[39.3 + 297.6 = \colorbox{lightcyan}{336.9} \]


计算第二个卷积核的输出

第一步:计算输出位置(0,0)

卷积核2的两个通道分别与对应的输入通道卷积:

通道1的卷积:

\[\colorbox{lightblue}{$ \begin{array}{cccc} \colorbox{lightyellow}{1} & \colorbox{lightyellow}{2} & \colorbox{lightyellow}{3} & 4\\ \colorbox{lightyellow}{5} & \colorbox{lightyellow}{6} & \colorbox{lightyellow}{7} & 8\\ \colorbox{lightyellow}{9} & \colorbox{lightyellow}{10} & \colorbox{lightyellow}{11} & 12\\ 13 & 14 & 15 & 16\\ \end{array} $} \otimes \colorbox{peachpuff}{$ \begin{array}{ccc} 2.1 & 2.2 & 2.3\\ 2.4 & 2.5 & 2.6\\ 2.7 & 2.8 & 2.9\\ \end{array} $} \]

计算:

\[\begin{aligned} &1\times2.1 + 2\times2.2 + 3\times2.3 + \\ &5\times2.4 + 6\times2.5 + 7\times2.6 + \\ &9\times2.7 + 10\times2.8 + 11\times2.9 \\ &= 2.1 + 4.4 + 6.9 + 12.0 + 15.0 + 18.2 + 24.3 + 28.0 + 31.9 \\ &= 142.8 \end{aligned} \]

通道2的卷积:

\[\colorbox{lightgreen}{$ \begin{array}{cccc} \colorbox{lightyellow}{17} & \colorbox{lightyellow}{18} & \colorbox{lightyellow}{19} & 20\\ \colorbox{lightyellow}{21} & \colorbox{lightyellow}{22} & \colorbox{lightyellow}{23} & 24\\ \colorbox{lightyellow}{25} & \colorbox{lightyellow}{26} & \colorbox{lightyellow}{27} & 28\\ 29 & 30 & 31 & 32\\ \end{array} $} \otimes \colorbox{lightcyan}{$ \begin{array}{ccc} 3.1 & 3.2 & 3.3\\ 3.4 & 3.5 & 3.6\\ 3.7 & 3.8 & 3.9\\ \end{array} $} \]

计算:

\[\begin{aligned} &17\times3.1 + 18\times3.2 + 19\times3.3 + \\ &21\times3.4 + 22\times3.5 + 23\times3.6 + \\ &25\times3.7 + 26\times3.8 + 27\times3.9 \\ &= 52.7 + 57.6 + 62.7 + 71.4 + 77.0 + 82.8 + 92.5 + 98.8 + 105.3 \\ &= 700.8 \end{aligned} \]

两个通道结果相加:

\[142.8 + 700.8 = \colorbox{peachpuff}{843.6} \]

所以卷积核2在位置(0,0)的输出是 843.6


第二步:计算输出位置(0,1)

卷积核2的两个通道分别卷积:

通道1(向右滑动一格):

\[\colorbox{lightblue}{$ \begin{array}{cccc} 1 & \colorbox{lightyellow}{2} & \colorbox{lightyellow}{3} & \colorbox{lightyellow}{4}\\ 5 & \colorbox{lightyellow}{6} & \colorbox{lightyellow}{7} & \colorbox{lightyellow}{8}\\ 9 & \colorbox{lightyellow}{10} & \colorbox{lightyellow}{11} & \colorbox{lightyellow}{12}\\ 13 & 14 & 15 & 16\\ \end{array} $} \otimes \colorbox{peachpuff}{$ \begin{array}{ccc} 2.1 & 2.2 & 2.3\\ 2.4 & 2.5 & 2.6\\ 2.7 & 2.8 & 2.9\\ \end{array} $} \]

计算:

\[\begin{aligned} &2\times2.1 + 3\times2.2 + 4\times2.3 + \\ &6\times2.4 + 7\times2.5 + 8\times2.6 + \\ &10\times2.7 + 11\times2.8 + 12\times2.9 \\ &= 4.2 + 6.6 + 9.2 + 14.4 + 17.5 + 20.8 + 27.0 + 30.8 + 34.8 \\ &= 165.3 \end{aligned} \]

通道2:

\[\colorbox{lightgreen}{$ \begin{array}{cccc} 17 & \colorbox{lightyellow}{18} & \colorbox{lightyellow}{19} & \colorbox{lightyellow}{20}\\ 21 & \colorbox{lightyellow}{22} & \colorbox{lightyellow}{23} & \colorbox{lightyellow}{24}\\ 25 & \colorbox{lightyellow}{26} & \colorbox{lightyellow}{27} & \colorbox{lightyellow}{28}\\ 29 & 30 & 31 & 32\\ \end{array} $} \otimes \colorbox{lightcyan}{$ \begin{array}{ccc} 3.1 & 3.2 & 3.3\\ 3.4 & 3.5 & 3.6\\ 3.7 & 3.8 & 3.9\\ \end{array} $} \]

计算:

\[\begin{aligned} &18\times3.1 + 19\times3.2 + 20\times3.3 + \\ &22\times3.4 + 23\times3.5 + 24\times3.6 + \\ &26\times3.7 + 27\times3.8 + 28\times3.9 \\ &= 55.8 + 60.8 + 66.0 + 74.8 + 80.5 + 86.4 + 96.2 + 102.6 + 109.2 \\ &= 732.3 \end{aligned} \]

两个通道结果相加:

\[165.3 + 732.3 = \colorbox{lightcyan}{897.6} \]


完整输出结果

按照同样的方法计算所有位置,我们得到:

卷积核1的输出(2×2):

\[O_1 = \colorbox{lightyellow}{$ \begin{array}{cc} 319.8 & 336.9\\ 371.4 & 388.5\\ \end{array} $} \]

卷积核2的输出(2×2):

\[O_2 = \colorbox{peachpuff}{$ \begin{array}{cc} 843.6 & 897.6\\ 951.6 & 1005.6\\ \end{array} $} \]

最终输出(2个通道的2×2特征图):

通道1(卷积核1的输出):

\[\begin{array}{cc} 319.8 & 336.9\\ 371.4 & 388.5\\ \end{array} \]

通道2(卷积核2的输出):

\[\begin{array}{cc} 843.6 & 897.6\\ 951.6 & 1005.6\\ \end{array} \]


多通道卷积公式

对于输入 \(I\)\(C_{in}\) 个通道,卷积核 \(K\)\(C_{out}\) 个,每个卷积核有 \(C_{in}\) 个通道,则输出 \(O\) 的第 \(k\) 个通道在位置 \((i,j)\) 的值为:

\[O_k(i,j) = \sum_{c=0}^{C_{in}-1} \left( \text{卷积}(I_c, K_k^{(c)}) \right) + b_k \]

其中:

  • \(I_c\) 是输入的第 \(c\) 个通道
  • \(K_k^{(c)}\) 是第 \(k\) 个卷积核的第 \(c\) 个通道
  • \(b_k\) 是第 \(k\) 个卷积核的偏置(本例中为0)
  • \(\text{卷积}(A,B)\) 表示单通道卷积操作

总结

多通道卷积的关键点:

  1. 输入通道数 = 卷积核通道数:每个输入通道都有一个对应的卷积核通道
  2. 输出通道数 = 卷积核个数:每个卷积核产生一个输出通道
  3. 计算过程:每个卷积核的所有通道分别与对应的输入通道卷积,然后相加
  4. 维度变化:输入维度为 \((C_{in}, H_{in}, W_{in})\),输出维度为 \((C_{out}, H_{out}, W_{out})\)

参数数量计算:

  • 每个卷积核的参数:\(C_{in} \times K_h \times K_w\)
  • 总参数:\(C_{out} \times C_{in} \times K_h \times K_w\)

在我们的例子中:

  • \(C_{in} = 2\), \(C_{out} = 2\), \(K_h = K_w = 3\)
  • 总参数 = \(2 \times 2 \times 3 \times 3 = 36\)

通过这个详细的例子,使用不同的卷积核值,可以更清晰地看到多通道卷积的计算过程!

posted on 2026-01-03 15:51  yun@dicom  阅读(3)  评论(0)    收藏  举报