《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》笔记

介绍

CNN处理图像时,输入图像的size往往固定(例如224x224);对于一些图像,缩放操作改变了物体的长宽比,影响了识别率。这篇文章中,提出了“spatial pyramid pooling”,去掉了对输入图像size固定的限制;因为pyramid pooling对图像形状有很好的鲁棒性,因此可以提高识别率。作者提出的新的网络结构叫做SPP-net。

CNN对输入图像size固定的限制是技术问题。输入图像size固定时,对图像处理通过crop或wrap,crop的区域可能不包含物体,wrap的图像可能改变了物体的形状。如下图所示
spp_net01.jpg

CNN为什么对输入图像size有要求呢?CNN有conv和fully-connected组成(pool也属于conv);conv是通过滑动窗口得到feature map,conv对输入size没有要求;fully-connected layer对输入size有固定要求。 通过在最后一个conv和fully-connected layer之间添加一个spp layer,spp layer池化最后一个conv输出的feature map,得到固定大小的feature,再喂给fully-connected layer。也就是说,在高层特征中,将信息进行了聚合,避免了对输入固定size的限制,如下图所示:
spp_net02.jpg

Spp全称为Spatial pyramid pooling,有以下特性:1、spp可以生成固定长度输出,2、spp可以多尺度空间特征,对形变物体有鲁棒性,3、spp可以在不同尺度pool特征。

SPP-net可以对任意size图像生成固定size的表示,还可以在训练时输入任意size图像,有助于增加缩放不变性和减小over-fitting。训练时具体做法为:把这个网络看做多个共享参数的网络,在一个epoch,输入的图像size大小固定,在下个epoch,切换输入size;multi-size training和传统single-size training收敛同,但是可以提高测试准确率。

SPP的优点适用于特定的CNN设计,例如AlexNet、VGG,尽管这些网络结构各不相同。

在R-CNN上,SPP-net有很大优势。R-CNN要计算每个candidate window的特征,因为candidate window太多,这些计算区域有重叠,计算量很大。使用SPP-net可以只计算图像特征一次,再根据candidate window,从feature map中选择对应区域特征即可。基于SPP-net的系统,与R-CNN对比,有24-102倍的加速。

CNN结构通常是CONV + POOL + Fully-connected,只有最后面的fully-connected要求输入size固定,因此可以在最后一个CONV/Pool和fully-connected之间加上一个spp layer。

SPP Layer

spp_net03.jpg
上图中就是在CONV和fully-connected layer之间加上spp layer。通过对feature map的spatial bins做不同尺度的pooling,得到固定size的输出。因为输入图像的size不影响spatial bin的数量,因此spp-layer可以得到固定size的输出。

在每一个spatial bin中,通过pooling每一个filter的response得到输出。例如有M个bin,k个filter,那么输出维度为kM。

训练

理论上来说,可以使用反向传播算法来训练spp-net,实际中还要考虑GPU实现因素。

Single-size training

先考虑固定size输入的训练。最后一个conv输出的size为 a×a ,pyramid level 为 n×n 。可是通过一个滑动窗口实现spp layer, win=a/n stride=a/n 。下图就是一个3-level pyramid pooling(3x3, 2x2, 1x1)的一个配置

spp_net04.jpg

spp-layer输入为13x13,size X <script type="math/tex" id="MathJax-Element-5">X</script>表示滑动窗口的大小。

Multi-size training

输入使用不同size训练时,先预定义输入size的集合,像上面一样计算好不同size输入时,spp-layer参数设置。在一个epoch训练输入size1,下一个epoch训练输入size2。

SPP-net for Object Detection

R-CNN重复计算了重叠的candidate window,效率低下。可以计算整幅图像的feature map, 在把candidate window对应的feature map找到,把特定区域的feature map输入到spp-layer,可以得到固定size输出,如下图所示:

spp_net05.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值