1. 通道的定义与基本概念
1.1 什么是通道?
在卷积神经网络(CNN)中,通道(Channels)是指输入数据或特征图(Feature Map)在深度维度上的分量。简单来说,通道是描述数据在特定维度上的特征表示。通道的概念贯穿CNN的输入、处理和输出。
-
输入图像中的通道:
- 对于彩色图像(RGB格式),通常有3个通道:红(R)、绿(G)、蓝(B)。每个通道是一个二维矩阵,存储对应颜色的像素强度。
- 对于灰度图像,仅有1个通道,表示像素的亮度值。
- 例如,一张RGB图像的尺寸可表示为 (H,W,C)(H, W, C)(H,W,C),其中 HHH 是高度,WWW 是宽度,CCC 是通道数(RGB图像为3)。
-
特征图中的通道:
- 在CNN的中间层,卷积操作生成新的特征图。这些特征图也有多个通道,每个通道表示从输入中提取的某种特征(如边缘、纹理、颜色分布等)。
- 特征图的通道数由卷积核(Filter)的数量决定,而非输入图像的通道数。
1.2 为什么需要通道?
通道的存在是为了捕捉数据的多样化特征:
- 输入通道:RGB图像的3个通道分别捕捉不同颜色信息,组合形成完整的视觉信息。
- 特征图通道:CNN通过多个卷积核生成多通道特征图,每个通道提取不同特征。例如,一个通道可能检测水平边缘,另一个可能检测垂直边缘。
- 多通道设计增强了模型的表达能力,使CNN能够学习复杂、抽象的特征。
2. 通道的计算与运算(深入讲解)
在CNN中,通道的计算与运算主要发生在卷积层,因为卷积操作是处理和转换通道的核心。本节从基础概念开始,逐步深入,详细讲解通道的计算过程、卷积核的作用、输出通道数的确定,以及如何通过运算实现通道转换。
2.1 卷积操作的基本概念
卷积操作是CNN的核心,通过一个或多个卷积核在输入数据上滑动,计算加权和,生成新的特征图。通道在这一过程中至关重要,因为卷积核的深度(通道数)必须与输入通道数匹配,而输出通道数由卷积核数量决定。
2.1.1 关键术语
- 输入张量:形状为 (H,W,Cin)(H, W, C_{\text{in}})(H,W,Cin),其中:
- HHH:高度(行数)。
- WWW:宽度(列数)。
- CinC_{\text{in}}Cin:输入通道数(例如RGB图像的3个通道)。
- 卷积核:形状为 (Kh,Kw,Cin,Cout)(K_h, K_w, C_{\text{in}}, C_{\text{out}})(Kh,Kw,Cin,Cout),其中:
- KhK_hKh:卷积核高度(例如3)。
- KwK_wKw:卷积核宽度(例如3)。
- CinC_{\text{in}}Cin:卷积核深度,必须等于输入通道数。
- CoutC_{\text{out}}Cout:卷积核数量,决定输出通道数。
- 输出张量:形状为 (H′,W′,Cout)(H', W', C_{\text{out}})(H′,W′,Cout),其中:
- H′H'H′ 和 W′W'W′:输出空间尺寸,由输入尺寸、卷积核大小、步幅(Stride)和填充(Padding)决定。
- CoutC_{\text{out}}Cout:输出通道数,等于卷积核数量。
- 偏置(Bias):每个卷积核通常有一个偏置项,形状为 (Cout)(C_{\text{out}})(Cout),添加到输出特征图的每个通道。
2.1.2 卷积的核心思想
- 卷积核在输入张量的空间维度 (H×W)(H \times W)(H×W) 上滑动,针对每个位置提取特征。
- 每个卷积核处理输入的所有通道 (Cin)(C_{\text{in}})(Cin),生成一个单通道的输出特征图。
- 使用多个卷积核 (Cout)(C_{\text{out}})(Cout),生成多个输出通道 (Cout)(C_{\text{out}})(Cout)。
2.2 单通道卷积(简化理解)
为便于理解,我们从最简单的单通道输入开始,逐步扩展到多通道情况。
2.2.1 场景
- 输入:一张灰度图像,形状为 (H,W,1)(H, W, 1)(H,W,1),例如 (28,28,1)(28, 28, 1)(28,28,1)(如MNIST数据集中的手写数字图像)。
- 卷积核:一个卷积核,形状为 (Kh,Kw,1)(K_h, K_w, 1)(Kh,Kw,1),例如 (3,3,1)(3, 3, 1)(3,3,1)。
- 输出:一个单通道特征图,形状为 (H′,W′,1)(H', W', 1)(H′,W′,1)。
2.2.2 计算过程
-
滑动窗口:
- 卷积核 (3×3)(3 \times 3)(3×3) 在输入图像的 (28,28)(28, 28)(28,28) 平面上滑动。
- 每次滑动覆盖一个 3×33 \times 33×3 的区域(称为感受野)。
- 步幅(Stride)决定滑动距离,例如步幅为1时,每次移动1个像素。
-
点积计算:
- 对于每个 3×33 \times 33×3 区域,卷积核的权重(3×33 \times 33×3 矩阵)与输入区域的像素值逐元素相乘,然后求和。
- 结果是一个标量,表示该位置的特征值。
- 公式:
Y[h′,w′]=∑i=0Kh−1∑j=0Kw−1X[h′+i,w′+j]⋅W[i,j]+bY[h', w'] = \sum_{i=0}^{K_h-1} \sum_{j=0}^{K_w-1} X[h'+i, w'+j] \cdot W[i, j] + bY[h′,w′]=∑i=0Kh−1∑j=0Kw−1X[h′+i,w′+j]⋅W[i,j]+b
其中:- X[h′+i,w′+j]X[h'+i, w'+j]X[h′+i,w′+j]:输入区域的像素值。
- W[i,j]W[i, j]W[i,j]:卷积核的权重。
- bbb:偏置。
-
输出尺寸:
- 输出特征图的空间尺寸由以下公式决定:
H′=⌊H+2⋅padding−Khstride⌋+1H' = \lfloor \frac{H + 2 \cdot \text{padding} - K_h}{\text{stride}} \rfloor + 1H′=⌊strideH+2⋅padding−Kh⌋+1
W′=⌊W+2⋅padding−Kwstride⌋+1W' = \lfloor \frac{W + 2 \cdot \text{padding} - K_w}{\text{stride}} \rfloor + 1W′=⌊strideW+2⋅padding−Kw⌋+1 - 假设无填充(Padding=0),步幅为1,输入 (28,28,1)(28, 28, 1)(28,28,1),卷积核 (3,3,1)(3, 3, 1)(3,3,1):
H′=⌊28−31⌋+1=26,W′=⌊28−31⌋+1=26H' = \lfloor \frac{28 - 3}{1} \rfloor + 1 = 26, \quad W' = \lfloor \frac{28 - 3}{1} \rfloor + 1 = 26H′=⌊128−3⌋+1=26,W′=⌊128−3⌋+1=26 - 输出形状:(26,26,1)(26, 26, 1)(26,26,1)。
- 输出特征图的空间尺寸由以下公式决定:
2.2.3 例子
- 输入:(28,28,1)(28, 28, 1)(28,28,1),一个灰度图像。
- 卷积核:(3,3,1)(3, 3, 1)(3,3,1),权重为:
[10−110−110−1]\begin{bmatrix} 1 & 0 & -1 \\ 1 & 0 & -1 \\ 1 & 0 & -1 \end{bmatrix} 111000−1−1−1
偏置 b=0b = 0b=0。 - 计算:
- 卷积核在输入图像上滑动,覆盖第一个 3×33 \times 33×3 区域(假设输入像素值如下):
[231452103]\begin{bmatrix} 2 & 3 & 1 \\ 4 & 5 & 2 \\ 1 & 0 & 3 \end{bmatrix} 241350123 - 点积:
(2⋅1)+(3⋅0)+(1⋅−1)+(4⋅1)+(5⋅0)+(2⋅−1)+(1⋅1)+(0⋅0)+(3⋅−1)=2+0−1+4+0−2+1+0−3=1(2 \cdot 1) + (3 \cdot 0) + (1 \cdot -1) + (4 \cdot 1) + (5 \cdot 0) + (2 \cdot -1) + (1 \cdot 1) + (0 \cdot 0) + (3 \cdot -1) = 2 + 0 - 1 + 4 + 0 - 2 + 1 + 0 - 3 = 1(2⋅1)+(3⋅0)+(1⋅−1)+(4⋅1)+(5⋅0)+(2⋅−1)+(1⋅1)+(0⋅0)+(3⋅−1)=2+0−1+4+0−2+1+0−3=1 - 输出特征图的第一个像素值为1。
- 重复此过程,生成 (26,26,1)(26, 26, 1)(26,26,1) 的特征图。
- 卷积核在输入图像上滑动,覆盖第一个 3×33 \times 33×3 区域(假设输入像素值如下):
2.2.4 可视化理解
- 卷积核像一个“模板”,在输入图像上滑动,提取特定模式(例如边缘)。
- 因为输入和卷积核都是单通道,计算简单,输出也是单通道。
2.3 多通道卷积(核心内容)
现在进入更常见的情况:输入有多个通道(例如RGB图像的3个通道或上一层的多通道特征图)。多通道卷积是CNN中通道计算的关键,理解它对掌握通道运算至关重要。
2.3.1 场景
- 输入:形状为 (H,W,Cin)(H, W, C_{\text{in}})(H,W,Cin),例如 (32,32,3)(32, 32, 3)(32,32,3)(RGB图像)。
- 卷积核:CoutC_{\text{out}}Cout 个卷积核,每个卷积核形状为 (Kh,Kw,Cin)(K_h, K_w, C_{\text{in}})(Kh,Kw,Cin),例如 (3,3,3)(3, 3, 3)(3,3,3)。
- 输出:形状为 (H′,W′,Cout)(H', W', C_{\text{out}})(H′,W′,Cout),例如 (30,30,Cout)(30, 30, C_{\text{out}})(30,30,Cout)。
2.3.2 计算过程
多通道卷积的关键是:每个卷积核处理输入的所有通道 (Cin)(C_{\text{in}})(Cin),生成一个单通道的输出特征图;多个卷积核生成多个输出通道。
-
卷积核的结构:
- 每个卷积核的深度为 CinC_{\text{in}}Cin,与输入通道数匹配。
- 例如,输入是RGB图像(Cin=3C_{\text{in}} = 3Cin=3),卷积核形状为 (3,3,3)(3, 3, 3)(3,3,3),表示它有3个 3×33 \times 33×3 的子矩阵,分别对应R、G、B通道。
-
单卷积核的计算:
- 对于一个卷积核,它在输入的 (H,W)(H, W)(H,W) 平面上滑动,覆盖 Kh×Kw×CinK_h \times K_w \times C_{\text{in}}Kh×Kw×Cin 的区域。
- 计算过程:
- 卷积核的每个通道(CinC_{\text{in}}Cin 个子矩阵)与输入的对应通道进行二维卷积,生成 CinC_{\text{in}}Cin 个中间结果。
- 将这 CinC_{\text{in}}Cin 个中间结果逐元素相加,再加上偏置,得到一个单通道的输出特征图。
- 公式:
Y[:,:,c]=∑i=1Cin(X[:,:,i]∗W[:,:,i,c])+b[c]Y[:,:,c] = \sum_{i=1}^{C_{\text{in}}} (X[:,:,i] * W[:,:,i,c]) + b[c]Y[:,:,c]=∑i=1Cin(X[:,:,i]∗W[:,:,i,c])+b[c]
其中:- X[:,:,i]X[:,:,i]X[:,:,i]:输入的第 iii 个通道。
- W[:,:,i,c]W[:,:,i,c]W[:,:,i,c]:第 ccc 个卷积核的第 iii 个通道。
- ∗*∗:二维卷积操作。
- b[c]b[c]b[c]:第 ccc 个卷积核的偏置。
-
多卷积核的计算:
- 如果有 CoutC_{\text{out}}Cout 个卷积核,重复上述过程 CoutC_{\text{out}}Cout 次。
- 每个卷积核生成一个输出通道,最终得到 CoutC_{\text{out}}Cout 个通道的特征图。
- 输出形状:(H′,W′,Cout)(H', W', C_{\text{out}})(H′,W′,Cout

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



