欢迎光临 x-algo
关注算法在工业界应用
Hi, 这是一个关注大数据算法在工业界应用的网站

SPP-net原理介绍

感觉这个论文出来就是「啪啪啪」打R-CNN的脸的,「spatial pyramid pooling」是一种可以不用考虑图像大小,输出图像固定长度representation结构,并且可以做到在图像变形情况下表现稳定。SSP-net的效果已经在不同的数据集上面得到验证,速度上比R-CNN快24-102倍。在ImageNet 2014的比赛中,此方法检测中Rank#2,分类中Rank#3.

处理过程

QQ20170112-0

一个正常的深度网络由两部分组成,卷积部分和全连接部分,要求输入图像需要固定size的原因并不是卷积部分而是全连接部分。所以SPP层就作用在最后一层卷积之后,SPP层的输出就是固定大小。

SPP-net不仅允许测试的时候输入不同大小的图片,训练的时候也允许输入不同大小的图片,通过不同尺度的图片同时可以防止overfit。

相比于R-CNN提取2000个proposal,SPP-net只需要将整个图扔进去获取特征,这样操作速度提升了100倍左右。

不是说好输入全图吗?

With the recent fast proposal method of EdgeBoxes [25], our system takes 0.5 seconds processing an image (including all steps). This makes our method practical for real-world applications.

SPP Layer

QQ20170112-1

输入图像有变化之后,feature map的个数不会有变化,但是feature map的大小会发生变化。SPP Layer的目标就是如何修改feature map的大小,一种简单的方式就是在pooling的时候根据不同的图像大小决定stride,从而控制输出大小。

作者使用了更加不丢失信息的方式,如果确定pooling的输出大小,通过输入的feature map大小就可以得到pooling的stride,但是如何选择合适的输出大小呢?输出大小选择的不合适可能会丢失信息,所以一种极端的方式就是像「金字塔」一样从小到大枚举出来一些大小(如上图中边长为1、2、4的输出),然后再全部拼到一起即可。

分类

接着问题就来了,由于caffe之类的工具都是针对固定的输入大小的,现在输入大小可以变化就需要解决这个问题。

具体解决方式也很简单,卷积的过程中,参数都是位于卷积核部分,输入的图像大小不一样并没有影响卷积核的大小和个数,只是影响最后输出的feature map的大小;作者提出来的方式就是直接当做一个模型训练即可,不同输入大小之间全职完全共享。

multi-size

使用10-view的方式,如果测试的时候使用224作为固定输入,作者通过尝试发现224和180两个大小训练要比[180,224]随机选择的效果好,原因可能是测试的时候随机情况对224的模式训练不充分。效果如下图:

QQ20170113-0

full-image

不使用10-view的方式进行图像裁剪,只是进行缩放,将原图按照 \(min(w,h)=256\) 缩放后作为训练的输入。

QQ20170113-1

multi-view test*

这是一个很不错的想法,这种方式是原始的10-view的一种替代,原始的10-view的方式是通过crop图片得到输入,这里直接输入一次原始图片,在feature map的位置进行「裁剪」。因为没有全连接层,在输入图中的window和feature map中的window是一一对应的关系。这么做有0.1%的准确率的提升。

QQ20170113-2

检测

检测中值得一说的就是类似上面「multi-view test」,实现使用selective search得到的候选窗口们的特征的可以只进行一次卷积。文中作者是通过输入不同的尺度图像,选择一个大小接近224的作为特征提取的网络。详细看论文吧。

论文

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

网络资料

SSP-net  http://blog.csdn.net/u011534057/article/details/51219959

未经允许不得转载:大数据算法 » SPP-net原理介绍

分享到:更多 ()

评论 抢沙发

*

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

关注大数据算法在工业界应用

本站的GitHub关于本站