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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DirectX修复工具在线修复版

    DirectX修复工具在线修复版DirectX修复工具最新版:DirectXRepairV3.9在线修复版NEW!版本号:V3.9.0.29371大小:971KB/7z格式压缩,2.63MB/ZIP格式压缩,5.62MB/解压后其他版本:标准版增强版MD5校验码(校验工具下载):DirectXRepair.exe/eeab9900cc4c10da8e6b786e5f79d09c…

    2022年6月13日
    41
  • 匈牙利算法

    匈牙利算法

    2021年12月15日
    49
  • 程序员法则xiazai_黑客攻略

    程序员法则xiazai_黑客攻略第九章对手  “喂,有电话拉,喂,有电话拉。”清晨很早的时候一阵手机铃声把我吵醒了。  “喂?你好,你是哪位?”我一把抓过手机憋着一肚子火尽量语气平和的问道。  “小毅你还没起来吗?我是秦谊,现在在你们楼下。”秦谊动听的声音透过手机传进我的耳朵。  “啊,是你啊,我马上下来。”三两下穿好衣服,梳洗就免了,我随便拨弄了一下头发,冲出了宿舍。  远远的我看见秦谊站在我们宿舍楼下,手上似乎还拿着东西。

    2022年9月28日
    0
  • BaseDao[通俗易懂]

    BaseDao[通俗易懂]BaseDao

    2022年4月24日
    110
  • adminLTE模态框弹出页面样例[通俗易懂]

    adminLTE模态框弹出页面样例[通俗易懂]项目中引用adminLTE前端框架,弹出页面是模态框方法,下面是某个detail.html文件<divclass=”modalfade”id=”viewDialog”role=”viewDialog”aria-hidden=”true”><divclass=”modal-dialogmodal-full”>&l…

    2022年7月27日
    48
  • 什么是跨域?什么情况下会发生跨域请求?

    什么是跨域?什么情况下会发生跨域请求?跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。同源策略:所谓同源是指:协议,域名,端口均相同。即便两个不同的域名指向同一个ip地址,也非同源。http://www.123.com/index.html调用http://www.123.com/server.php(非跨域)http://www.123.com/index.html调用http://www.456.com/server.php(主域名不同:123/456,跨域)http:/

    2022年5月29日
    57

发表回复

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

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