PSPNet (2016):引入金字塔池化

PSPNet (2016):引入金字塔池化

导出时间:2025/11/23 20:31:46

用一张图来想象 PSPNet:先用大疆无人机“鸟瞰”整座城市(全局),再拉到“街区”(2×2),再看“街道网格”(3×3),最后低头看看“房间布局”(6×6)。把这四层视角的要点对齐、拼一起,再去给每一块地砖(像素)贴标签——这就是 PSPNet 的核心思路:用金字塔池化(PPM)把全局与局部上下文融进像素级预测

1、研究背景和动机

复杂场景解析(语义分割)里有三类“老大难”问题:
  • 上下文不匹配:仅看外观很像,就会把河上的“船”错当“汽车”;如果“知道这是河边场景”,错误就能少很多。PSPNet 直面这种缺全局常识的问题。
  • 类别混淆:如“建筑物 vs. 摩天大楼”“田野 vs. 大地”等,外观极相似,需要更大范围的语义线索来消歧。
  • 尺度极端:超大目标(占满画面)或超小目标(路牌、路灯)都容易漏检,单一感受野难以兼顾。
FCN/空洞卷积虽然扩大了感受野,但有效感受野远小于理论值,高层特征对真实全局仍不够敏感;仅用“全局平均池化”又会丢掉空间布局。于是作者提出:不是只要一个“全局向量”,而是要“多尺度分区的全局”——这就是 PPM 诞生的动机。


2、核心创新点

金字塔池化模块(PPM)

  • 在最后一层高层特征图上,做四个尺度的分区池化1×1(全局)/ 2×2 / 3×3 / 6×6
  • 每个分区池化后接 1×1 卷积做降维(第 N 层通道约为原来的 1/N),再双线性上采样回原尺寸,与主干特征拼接
  • 这样既拿到全局语义,又保留了粗粒度的空间布局,比“只做全局平均池化”更能缓解错判与混淆。

深度监督(Auxiliary Loss)

  • 在 ResNet 的 res4b22(stage4 末)分支出一个辅助分类头,训练时与主损失同时反传,常用权重 0.4
  • 测试阶段丢弃辅助分支,仅保留主干。这样能让很深的网络(101/152/269)更稳地优化收敛。

实证与系统化细节

  • 优化策略采用 poly 学习率(power=0.9),丰富的数据增强(随机缩放 0.5–2、镜像、旋转、部分数据集加高斯模糊)、多尺度测试等,给出可复现的训练配方。

结果速览(SOTA 时代性贡献)

  • ADE20K:赢得 2016 ImageNet 场景解析挑战冠军;消融中平均池化优于最大池化PPM(1/2/3/6) 明显优于仅全局池化。
  • PASCAL VOC 2012:单模 mIoU 85.4%(MS-COCO 预训练设置),当时刷新记录。
  • Cityscapes:精细+粗标注联合训练可达 80.2% mIoU。

3、模型的网络结构

image.png

(a) 输入图像 → (b) 特征图

  • 一张普通照片输入后,首先经过 CNN 主干网络(通常是 ResNet101/152 这种很深的卷积网络)。
  • CNN 的作用就像是一个“信息提取器”,它把复杂的街景照片变成一个 压缩后的特征图
  • 这个特征图已经不再是彩色像素,而是“高维语义描述”——比如某些通道可能表示“这是垂直结构”,另一些表示“这是绿色区域”。
你可以理解为:从照片里“提炼出语义底稿”,但此时它的空间分辨率已经被缩小很多。

(c) 金字塔池化模块(Pyramid Pooling Module, PPM)

这是 PSPNet 的核心创新。图中间的 “POOL → CONV → UPSAMPLE → CONCAT” 就是它的全部流程。
  1. 多尺度池化(POOL)
    • 把整张特征图切成不同格子(1×1、2×2、3×3、6×6),并在每个格子里做平均池化。
    • 想象成“用不同大小的无人机视角”观察:
      • 1×1:全局视角(整张图一块),只看“大环境”。
      • 2×2:四分屏,看大致方位。
      • 3×3:更细分的九宫格。
      • 6×6:更局部的36小块。
  2. 卷积降维(CONV)
    • 每个池化结果都经过 1×1 卷积,把通道数压缩,去掉冗余信息。
    • 这就像是“每个视角只保留关键信息摘要”。
  3. 上采样(UPSAMPLE)
    • 由于池化后的特征很小,需要通过双线性插值放大回原尺寸,让它们能和主干特征对齐。
    • 就像是“把小地图重新拉伸到全图大小”。
  4. 拼接(CONCAT)
    • 把主干特征和四种尺度的“上下文特征”一起拼接,融合成一个大特征图。
    • 这样既保留了局部细节(来自主干),又加上了全局上下文(来自 PPM)。

(d) 最终预测

  • 拼接好的特征送入最后的卷积层,得到逐像素的预测分布。
  • 这一步就像是“给图像中的每个像素都打上标签”,输出的彩色分割图就是语义分割结果。
例如:
  • 黄色代表“马路”,
  • 紫色代表“行人”,
  • 绿色代表“树木”,
  • 棕色代表“建筑物”。

总结类比

整条流程就像一个“多层次观察”的过程:
  1. CNN 提取底稿:相当于画出模糊草稿。
  2. PPM 多视角池化:像无人机飞到不同高度(1×1 全景 / 2×2 大区块 / 3×3 九宫格 / 6×6 细格),分别观察环境。
  3. 信息拼接:把不同高度的观察结果拼到草稿上。
  4. 最终预测:画师根据草稿 + 全局上下文,给每个像素上正确的颜色。


4、存在的重大缺陷

1. 速度与内存开销

  • 以 ResNet-101/152/269 为干线,输出分辨率高(空洞保持 1/8),再叠 PPM,多尺度测试更“吃显存/算力”,实时性不足,移动端部署不友好。

边界细节受限

  • PPM在高层做池化与拼接,强调语义一致性而非精细边界;直接双线性上采样的路径容易带来边缘发糊,对非常细碎的小目标仍可能欠敏感。

上下文是“分区池化”而非“自适应关系”

  • PPM 把上下文分成固定网格聚合,空间关系是“粗分箱”级的,不建模像素对像素的长程依赖结构(后来注意力/非局部方法对此更灵活)。

强配方依赖

  • 论文给出一整套训练技巧(poly LR、增强、多尺度测试等)才能跑到 SOTA,对工程化与资源有要求;在资源受限或数据分布差异较大的场景,复现曲线可能抖动更大。

5、后续基于此改进创新的模型


PSPNet 把“金字塔式上下文”刻进了分割社区的 DNA。随后很多方法要么直接复用/改造 PPM,要么替代 PPM 的上下文建模,要么在速度/边界上补齐短板。下面按主题列出代表性方向与典型模型(非完整清单):

A. 继续用/改良 PPM:作为“分割头”的标准件

  • UPerNet(2018):FPN + PPM 头,成为通用语义分割头,广泛用于各类主干(含 Transformer)。
  • PSANet(2018):作者后续工作之一,以点对点空间注意力替代固定池化,自适应聚合上下文
  • 多数开源框架(mmseg 等)都把 PPMHead 做成默认选项。

B. 用“可学习的多尺度”替代固定分箱

  • DeepLabv3 / v3+(2017–2018):用 ASPP(空洞空间金字塔池化)在多空洞率上并行卷积,效果与 PPM 同宗同源;v3+ 再加轻量解码器提升边界。
  • DANet / OCR / Non-local(2018–2020):通过自注意力或“对象级上下文”建模长程依赖,比固定池化更灵活。

C. 速度优先:轻量化与实时分割

  • ICNet(2017,同一团队):多分辨率级联网络,结合金字塔思想与轻量特征,面向城市道路实时
  • BiSeNet 系列:分流结构(语义路径+细节路径),在保边界的同时提高 FPS。

D. Transformer 时代的延续

  • SETR / Segmenter / SegFormer(2020–2021+):虽然主干换成 Transformer,但解码头常仍保留“金字塔式上下文模块”(PPM 或其变体)来汇集多尺度语义。

小结:PPM 作为“通用上下文聚合头”被复用;而“用可学习的注意力替代固定池化”“在边界与速度上补短板”这两条线,则分别催生了 DeepLabv3+/DANet/HRNet+OCR 与 ICNet/BiSeNet 等后继者。PSPNet 的思想已经从“一个具体模型”升级为“一个可插拔模块的范式”。(以上为对领域共识的梳理,便于你选型与延展。)