论文笔记-PSPNet-Pyramid Scene Parsing Network

paper: Pyramid Scene Parsing Network

code: caffePyTorch

官方blog

Abstract

  1. PSPNet是港中文和商汤在CVPR2017上的一篇工作,将pyramid pooling引入到场景解析的分割任务中,取得很好的效果,2016年ImageNet的scene parsing任务冠军。在PASCAL VOC2012 test上的mIoU能够达到85.4%

  2. PSPNet的主要贡献点在于:

    • 将pyramid pooling引入到场景解析任务任务中
    • 模型训练时增加了一个辅助loss(auxiliary loss),即文中表述的effective optimization strategy
    • 实践技巧
  3. 个人想法:从多尺度特征的角度理解,PSPNet其实也只是使用了backbone网络最后的某一个特征层,那么是否可以替换为FPN结构,真正的将低层特征融合进来。(巧合的是,FPN也是CVPR2017的一片工作)

Details

  1. Pyramid pooling module

    • 这个金字塔池化其实是对SPP的改进,见下图:
    • 具体的网络结构见下图:
      • 在pyramid pooling模块,根据不同大小的kernel和stride将feature map分为不同个\( 1\times1, 2\times2, 3\times3, 6\times6 \)个bin,然后每个模块后加上一个\( 1\times1\)的conv,以降低channel个数为512(前面resnet用的是bottleneck结构,con5_3/relu的输出channel个数为2048);再然后,每个模块再通过bilinear interpolation缩放到pyramid pooling模块输入前的尺寸\( 60 \times 60\);再之后,将4个模块的特征图concat到一起,最终再通过bilinear interpolation返回到原图大小
  2. auxiliary loss

    • 个人理解是增加在网络的中间某一个地方引入一个loss,这个loss和网络最后的loss一样,都是cross entropy,加入尽量应该是为了是网络的backbone部分更加鲁棒,这样用于后面执行pyramid pooling的feature map表达能力也更强
    • 官方PPT介绍
  3. 实践技巧

    • 对比了avg/max pooling,avg pooling的效果更好
    • 使用auxiliary loss,权重设置为0.4
    • 对比不同深度的resnet作为backbone,明显越深越好
    • pyramid pooling的每个模块后加入dimension reduction的\( 1 \times 1\)卷积也能够提升效果
    • data augmentation:random mirror/resize/rotation/Gaussian blur
    • 学习率更新策略poly
    • appropriately large “cropsize” can yield good performance and “batchsize” in BN(不过这部分并没有公布代码,PSPNet的训练部分代码没有)
    • resnet中的\( 7\times7 \) conv转为\( 3\times3 \)
posted @ 2020-05-08 21:13  StoneclutterX  阅读(938)  评论(0编辑  收藏  举报