《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》笔记
2017-04-26 23:18
459 查看
介绍
SPP Layer
训练
Single-size training
Multi-size training
SPP-net for Object Detection
CNN对输入图像size固定的限制是技术问题。输入图像size固定时,对图像处理通过crop或wrap,crop的区域可能不包含物体,wrap的图像可能改变了物体的形状。如下图所示
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全称为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。
上图中就是在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-layer输入为13x13,sizeX表示滑动窗口的大小。
SPP Layer
训练
Single-size training
Multi-size training
SPP-net for Object Detection
介绍
CNN处理图像时,输入图像的size往往固定(例如224x224);对于一些图像,缩放操作改变了物体的长宽比,影响了识别率。这篇文章中,提出了“spatial pyramid pooling”,去掉了对输入图像size固定的限制;因为pyramid pooling对图像形状有很好的鲁棒性,因此可以提高识别率。作者提出的新的网络结构叫做SPP-net。CNN对输入图像size固定的限制是技术问题。输入图像size固定时,对图像处理通过crop或wrap,crop的区域可能不包含物体,wrap的图像可能改变了物体的形状。如下图所示
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全称为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
上图中就是在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-layer输入为13x13,sizeX表示滑动窗口的大小。
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输出,如下图所示:相关文章推荐
- 【转】R-CNN学习笔记3:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-net)
- 深度学习笔记空间金字塔池化阅读笔记Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- 深度学习笔记(一)空间金字塔池化阅读笔记Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- 【论文阅读笔记】Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- R-CNN学习笔记3:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-net)
- 【笔记】SPP-Net : Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- 【论文笔记】Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-net) 笔记
- 论文笔记|Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- 深度学习论文笔记:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition--SPP-net论文笔记
- 深度学习论文笔记-Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- 论文笔记 《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》
- RCNN学习笔记(1):《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》论文笔记
- [SPP-NET]Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- SPP-Net:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-Net)解读
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- SPPNet:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition