Feature Maps
特征图是滤波器在图像上滑动时产生的响应网格,用于显示其中模式出现的位置。涵盖计算方式、形状和可视化。
特征图是卷积神经网络(CNN)某一层中一个滤波器的输出:一个二维数值网格,用于记录该滤波器的模式在输入各个位置上出现的强度。具有 64 个滤波器的卷积层会生成 64 张特征图,并将它们堆叠为形状为通道数 × 高度 × 宽度的张量;该张量会成为下一层的输入。早期层的特征图突出显示边缘、颜色和纹理,深层特征图则会响应物体部件和完整物体。激活图是它的同义词;一层中堆叠后的整个张量通常也称为该层的特征图。
特征图的计算方法#
滤波器(也称卷积核)是一个小型网格,由学习得到的模型权重组成;每个输入通道通常对应一个 3×3 的网格。卷积会让它在输入上滑动,并在每个位置将重叠值逐元素相乘后求和,再加上偏置,得到一个输出数值。较大的输出值表示输入在该位置与滤波器的模式相匹配。输出的高度和宽度由输入尺寸、卷积核尺寸 k、填充 p 和步幅 s 决定,公式为 floor((input + 2p - k) / s) + 1;因此,步幅为 1 时,使用填充 1 的 3×3 卷积核会保持尺寸不变,而步幅为 2 时尺寸会减半。
下面的代码片段将垂直边缘卷积核应用于一张左侧较暗、右侧较亮的小图像。
import torch
import torch.nn.functional as F
# 一张 8x8 灰度图像:左半部分较暗,右半部分较亮,因此只有一条垂直边缘
image = torch.zeros(1, 1, 8, 8)
image[..., 4:] = 1.0
# 一个用于检测垂直边缘的 3x3 Sobel 卷积核
kernel = torch.tensor([[-1.0, 0.0, 1.0], [-2.0, 0.0, 2.0], [-1.0, 0.0, 1.0]]).view(1, 1, 3, 3)
# 将卷积核在图像上滑动,生成特征图
feature_map = F.conv2d(image, kernel)
print(feature_map.shape)
print(feature_map[0, 0, 0])它会输出 torch.Size([1, 1, 6, 6]) 和 tensor([0., 0., 4., 4., 0., 0.])。不使用填充时,8×8 图像会生成 6×6 特征图(8 − 3 + 1 = 6),且只有卷积核跨越边缘的两列非零。训练后的 CNN 会学习许多类似这个 Sobel 卷积核的第一层滤波器,以及针对颜色和纹理的滤波器。
网络中的特征图#
数据在 CNN 中传递时,特征图的高度和宽度通常会缩小,通道数则会增加。每次下采样都会使分辨率减半,而深层特征图中的每个位置都会汇总原始图像中更大的感受野。检测器会保留多个深度的特征图,因为这种权衡有利也有弊:对于 640×640 图像,步幅为 8 的特征图是 80×80 网格,精细程度足以定位小物体;步幅为 32 的特征图是 20×20 网格,每个网格单元都能看到足够大的图像区域来识别大型物体。特征金字塔网络(FPN)会融合这些不同深度的特征图,让每个尺度都兼具精确位置和高级语义;生成这些特征图的主干网络是模型的主要特征提取阶段。
特征图与相关术语的比较#
- 滤波器:滤波器包含学习得到的权重,特征图则是将权重应用于一个输入后得到的结果。每个图像中的一个滤波器会生成一张特征图。
- 激活函数:在卷积后逐元素应用于特征图的函数,例如 ReLU。激活前后都存在特征图,分别对应预激活值和后激活值。
- 嵌入向量:嵌入向量通常是通过池化或展平特征图得到的一维向量,它保留图像包含的内容,但丢弃位置信息。嵌入向量可用于相似性搜索和聚类;而需要位置信息的任务(例如语义分割)则使用空间特征图。
- 显著图: 显著图是一张热力图,用于解释一次预测,通常根据特征图及其梯度计算得出。
检查和可视化特征图#
将单个通道绘制成灰度图,可以看出每个滤波器会对什么产生响应。第一层的特征图看起来像经过边缘滤波的照片副本,而深层特征图则是在物体部件上呈现的粗略斑块。在 PyTorch 中,通过 register_forward_hook 注册的前向钩子,可以在推理期间捕获任意层的特征图。深层有数百个通道,因此可解释人工智能工具通常会将它们浓缩成一张热力图。Grad-CAM 根据类别分数的平均梯度为后期特征图的每个通道加权,再将通道求和,从而突出对预测起作用的图像区域。在 nano YOLO26 模型中,640×640 图像到达检测头时会变成三张特征图,尺寸分别为 64×80×80、128×40×40 和 256×20×20;使用 visualize=True 进行预测会保存一张 _cam.jpg LayerCAM 叠加图,该图根据每个位置相对于各预测类别的正梯度为这些特征图加权。










