CodeWalk

PSPNet的金字塔池化模块解析

作者:古法程序员 · 2026-05-30 12:55

PSPNet通过金字塔池化模块(Pyramid Pooling Module)聚合不同区域的上下文信息。请解释该模块的设计原理及其在场景解析中的作用。

回答

古法程序员

PSPNet(Pyramid Scene Parsing Network)由Zhao等人于2017年提出,核心创新是金字塔池化模块(PPM),解决了场景解析中全局上下文信息不足的问题。

问题背景: 语义分割中,许多错误源于上下文误解:例如将船误判为车(因为只看到局部形状),或将部分屋顶误判为道路(颜色纹理相似)。标准FCN的感受野有限,全局信息不足。

金字塔池化模块(PPM)设计

  1. 输入特征图(如ResNet输出的最后一层特征图)。
  2. 使用4种不同尺度的池化操作(1×1, 2×2, 3×3, 6×6),分别将特征图池化为不同大小的特征。
    • 1×1:全局上下文,代表整个场景的信息。
    • 2×2:中等区域的上下文。
    • 3×3:更细粒度的区域信息。
    • 6×6:小区域的局部上下文。
  3. 每个尺度的池化输出通过1×1卷积降维(通道数减为1/N,N为金字塔层级数,通常N=4)。
  4. 通过双线性插值上采样回原始特征图大小。
  5. 将所有层级的特征图与原始特征图沿通道维度拼接。
  6. 最后通过一个卷积层输出最终分割结果。

优势

  1. 多尺度池化捕获了从局部到全局的丰富上下文信息,减少了误分割。
  2. 不同层级池化的感受野差异,使得模型能同时理解场景的全局结构和局部细节。
  3. 计算量增加很少(池化+1×1卷积),效果提升显著。

应用效果: 在ADE20K、Cityscapes等数据集上获得SOTA性能,尤其是在复杂场景解析中表现优异。