前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论文阅读: SPPNet

论文阅读: SPPNet

作者头像
JNingWei
发布2018-09-27 14:37:22
1.3K0
发布2018-09-27 14:37:22
举报
文章被收录于专栏:JNing的专栏JNing的专栏

Introduction

R-CNN中,通过在原图先抠取出很多的像素块,再分别单独进行特征抽取的方式来一个个生成proposal,很低效:

这里写图片描述
这里写图片描述

SPPNet则改成了直接先对整张图片进行特征抽取。再在这一大张feature map上,接上一个SPP layer:

这里写图片描述
这里写图片描述

和R-CNN一样,SPPNet的输入也包括两部分:

  • 1batch的输入图像
  • selective search算法对应每个输入图像生成的一系列proposal

另外,SPPNet还设计了全新的SPP layer,通过“池化”方式来统一“proposal的size”。 而在R-CNN中,则是通过“warp”方式来统一“proposal的size”。

该layer详细结构如下图红框部分:

这里写图片描述
这里写图片描述

假设最后一个卷积层输出的feature map tensor的size为 W×H×CW×H×CW\times H\times C ,那么红框部分其实就是 滑窗size 为 W/4×H/4×CW/4×H/4×CW/4\times H/4\times C 的 average pooling:

这里写图片描述
这里写图片描述

将该size的滑窗滑过全feature map tensor所pooling得到的tensor,沿channel方向一根根抽取出来,头尾拼接:

这里写图片描述
这里写图片描述

再用 W/2×H/2×CW/2×H/2×CW/2\times H/2\times C 的滑窗 和 W×H×CW×H×CW\times H\times C 的滑窗 在同一张feature map tensor上进行average pooling 。

其中,后者 (红框部分) 相当于 global average pooling (全局平均池化)

这里写图片描述
这里写图片描述

最后,三种size的average pooling会生成 16+4+1=2116+4+1=2116+4+1=21 根vector。 把这些vector头尾相接,并送入fc6层,即完成了SPP layer的使命:

这里写图片描述
这里写图片描述

SPP layer的设计有着“multi-scale”的影子,但在几个月后的Fast R-CNN中被弃用。也就意味着Fast R-CNN主动放弃了multi-scale。

Innovation

SPPNet有两个最大的创新点:特征抽取共享化SPP layer

  • 特征抽取共享化 :大大简化了原本R-CNN设计中的巨大计算量,让原本需要分别单独进行特征抽取的各proposal可以放在一块,一起一次性完成特征抽取。后续所有的检测网络,无不继承了此思想。可以说,SPPNet推动了Detection的发展。
  • SPP layer :该layer可以 适应任意size和宽高比的输入图像

Result

在VOC 2007上的结果:

这里写图片描述
这里写图片描述

SPPNet检测效果图:

这里写图片描述
这里写图片描述

Thinking

SPPNet有两大划时代的贡献:

  • 特征抽取共享化;
  • 对RoI进行pooling。

SPPNet是一个被人忽视的杰出贡献。具体来说:

  • 第一次提出了网络前半部分的 特征抽取共享化 。使得特征抽取不再是瓶颈。几个月之后的 Fast R-CNN 正是吸收了这部分的核心精华并进行了进一步的改进。
  • 对RoI进行pooling,使得检测网络可以输入任意size的图片。因为从输入图片到fc之间契入了对RoI的pooling,使得fc的存在也无法写死输入图片的size。

SPP layer有着明显的缺陷。因为:

  • pooling后得到的一根根tensor并没有按原先的位置排放成阵列,而是直接头尾相接,从而放弃了重要的位置信息,对RoI的分类不利 (Fast R-CNN提出的RoIPooling改进了这点) 。
  • 其设计阻断了梯度下降的反向传播,使得下层的conv部分无法被从后往前update。该缺陷在Fast R-CNN中被修正。

[1] Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition [2] 深度学习: global pooling (全局池化)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年04月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Introduction
  • Innovation
  • Result
  • Thinking
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档