SPPnet 详解[通俗易懂]

SPPnet 详解[通俗易懂]RCNN系列:RCNN,SPPNet,FastRCNN,FasterRCNN,R-FCN。  前不久刚刚看完rcnn和fastrcnn,对目标检测的学习更进一步。sppNet简介:作者:何凯明  2016年加入成为FAIR(facebook微软研究员),2011年获得博士学位,主要兴趣和研究在计算机视觉和深度学习。获得cpvr和iccv多个奖项。 SP…

大家好,又见面了,我是你们的朋友全栈君。

RCNN系列:RCNN,SPPNet,Fast RCNN,Faster RCNN,R-FCN。

 

  前不久刚刚看完rcnn和fast rcnn,对目标检测的学习更进一步。sppNet简介:

作者: 何凯明

SPPnet 详解[通俗易懂]

   2016年加入成为FAIR(facebook 微软研究员),2011年获得博士学位,主要兴趣和研究在计算机视觉和深度学习。

获得cpvr和iccv多个奖项。

 

SPPNet为何出现?

之前的网络,比如LeNet,AlexNet,ZF,VGG等,它们的输入都是固定大小的,为什么要固定大小呐?原因就在最后连接的全连接层上。全连接层的输入一定是固定大小的。这一点很容易理解,因为全连接层网络就是传统的神经网络,传统的神经网络的输入层必定是固定大小的。而卷积神经网络的conv层的输入并不需要固定大小,

那么conv层不用固定大小,FC层的输入又要固定大小,那么在这两者之间加上一层SPP即可解决这个问题了。

SPPnet 详解[通俗易懂]

spp的实现

SPPnet 详解[通俗易懂]

黑色图片代表卷积之后的特征图,接着我们以不同大小的块来提取特征,分别是4*4,2*2,1*1,将这三张网格放到下面这张特征图上,就可以得到16+4+1=21种不同的块(Spatial bins),我们从这21个块中,每个块提取出一个特征,这样刚好就是我们要提取的21维特征向量。这种以不同的大小格子的组合方式来池化的过程就是空间金字塔池化(SPP)。比如,要进行空间金字塔最大池化,其实就是从这21个图片块中,分别计算每个块的最大值,从而得到一个输出单元,最终得到一个21维特征的输出。

输出向量大小为Mk,M=#bins, k=#filters,作为全连接层的输入。

         例如上图,所以Conv5计算出的feature map也是任意大小的,现在经过SPP之后,就可以变成固定大小的输出了,以上图为例,一共可以输出(16+4+1)*256的特征。

 

网络训练阶段:

       论文中将网络的训练分为两种:一种是single-size,一种是Multi-size。

先讲解single-size的训练过程:理论上说,SPP-net支持直接以多尺度的原始图片作为输入后直接BP即可。实际上,caffe等实现中,为了计算的方便,GPU,CUDA等比较适合固定尺寸的输入,所以训练的时候输入是固定了尺度了的。以224*224的输入为例:在conv5之后的特征图为:13×13(a*a)金字塔层bins:   n*n将pooling层作为sliding window pooling。
windows_size=[a/n] 向上取整 , stride_size=[a/n]向下取整。

例如论文中给出的参数如下:

SPPnet 详解[通俗易懂]

对于pool 3*3:      sizeX=5 的计算公式是:[13/3]向上取整=5 ,stride = 4的计算公式是:[13/3]向下取整。

如果输入改成180×180,这时候conv5出来的reponse map为10×10,类似的方法,能够得到新的pooling参数。

       对于Multi-size training即就是:使用两个尺度进行训练:224*224 和180*180

       训练的时候,224×224的图片通过crop得到,180×180的图片通过缩放224×224的图片得到。之后,迭代训练,即用224的图片训练一个epoch,之后180的图片训练一个epoch,交替地进行。

        两种尺度下,在SSP后,输出的特征维度都是(9+4+1)x256,参数是共享的,之后接全连接层即可。

        论文中说,这样训练的好处是可以更快的收敛。

 

  spp_Net:

  1. 首先通过选择性搜索,对待检测的图片进行搜索出2000个候选窗口。这一步和R-CNN一样。
  2.  特征提取阶段。这一步就是和R-CNN最大的区别了,这一步骤的具体操作如下:把整张待检测的图片,输入CNN中,进行一次性特征提取,得到feature maps,然后在feature maps中找到各个候选框的区域,再对各个候选框采用金字塔空间池化,提取出固定长度的特征向量。而R-CNN输入的是每个候选框,然后在进入CNN,因为SPP-Net只需要一次对整张图片进行特征提取,速度会大大提升。
  3. 最后一步也是和R-CNN一样,采用SVM算法进行特征向量分类识别。
  4. 使用nms做极大值抑制处理,获取候选的region proposal
  5. 做回归器精修处理

 

总结:

  1.sppnet的存在可以使CNN输入不同大小的图片,但可以获得相同的特征向量。

  2.RCNN会对每个ss选出来的region proposal 进行cnn处理,占用大量时间,sppNet直接对整张图进行cnn操作,再用每个region proposal 对应conv5后的feature map进行spp处理获得相同大小的特征向量,减少训练时间。

  3.依然会将处理的特征向量放入disk 占用100多G memory

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131140.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月12日 下午8:36
下一篇 2022年6月12日 下午8:46


相关推荐

  • 测试用例模板和例子[通俗易懂]

    测试用例模板和例子[通俗易懂]该范例已经包含一个测试用例的模板。项目/软件技术出口合同网络申领系统 (企业端)程序版本1.0.25   功能模块名Login 编制人  xxx   用例编号-TC-TEP_Login

    2022年7月17日
    14
  • pycharm设置背景色及字体_pycharm字体大小设置不了

    pycharm设置背景色及字体_pycharm字体大小设置不了1、首先在pycharm打开FILE,点击seting2、点击Editor,再点击Font可以设置字体大小;点击ColorScheme可以设置背景色。3、字体设置:点击Font可以选择不同字体,点击Size可以调节字体大小,右侧可以看预览效果,最后点击ok即可。4、背景色设置:先点击ColorSchemeFont,Scheme可以选择不同的背景,下面框框里是预览效果,最后点击Ok即可。…

    2022年8月29日
    4
  • OpenClaw 自动化测试实践与探索

    OpenClaw 自动化测试实践与探索

    2026年3月13日
    3
  • 第二天

    第二天

    2021年7月22日
    57
  • 给 Pycharm 安装 pytorch

    给 Pycharm 安装 pytorch问题在之前的文章Win10通过Anaconda下载安装PyTorch中,用Anacondaprompt在base环境中安装了PyTorch,并且能在Jupyternotebook中调用。但遇到了两个问题:使用Pycharm创建新project时,envs目录下找不到pytorch的选项;在Pycharm中运行>>>importtorch报错“Couldnotfindcondaenvironment:torch”

    2022年8月27日
    11
  • 2022年1月 idea最新激活码[最新免费获取]

    (2022年1月 idea最新激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~4K…

    2022年4月1日
    100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号