1.roi_pooling层是先利用spatial_scale将region proposal映射到feature map上,然后利用pooled_w、pooled_h分别将映射后的框的长度、宽度等分形成bin,最后对每个bin进行max_pooling,这其实就是一个spp-net的过程(只不过sppnet使用多个等分尺寸,这里只使用一个等分尺寸),因为他就是为了将不同大小的框都处理成相同的长方体(这也是roi_pooling的本质,对任何大小的框都是相同的输出,这样不用向rcnn那样resize图片或者resize region proposal),其实每一个点就是一个值,就有点像用固定长度进行编码。

2.roi_pooling层后面接的是一个全连接层,roi_pooling池化后生成的应该是一个固定大小的长方体(或者说正方体),即(a,b,c,d),因为pooling是在每个channel进行,pooling前和pooling后的channel应该不变;每个channel的大小变为pooled_w*pooled_h,因为roi_pooling将每个channel的宽度均分成pooled_w份,高度均分成pooled_h份,在每份里max_pooling,所以大小就变成pooled_w*pooled_h。

比如prototxt里roi_pooling的设置是这样:

roi_pooling_param {
    pooled_w: 6
    pooled_h: 6
    spatial_scale: 0.0625 # 1/16

}

那输出的shape就是(batch,channel,6,6)

下面是roi_pooling的源码,可以看到roi_pooling的输出的shape是:

  第一维:rois的个数

  第二维:conv5的channel个数

  第三维:pooled_height_,在高度上等分然后提取的个数

  第四维:pooled_width_,在宽度上等分然后提取的个数

这个问题依旧没有解决,到底batch是怎么回事

这样一个长方体是不能和全连接层直接使用的,开始以为roi_pooling层将这个转换成了batch个vector,vector的大小是channel * w * h,但后来发现这个操作其实是在InnerProduct实现的。

这是InnerProduct的cpp源码,可以看到,会先从inner_product_param的axis读取一个值,这个值其实就是要进行flatten的维度的起点

去caffe.proto里面找InnerProduct这一层的参数,可以发现axis默认是1,也就是从channel那一维开始flatten。

也就是说roi_pooling后面接的那一层InnerProduct先把roi_pooling的输出转换成(roi的个数,channel*width*height),然后每个roi进行InnerProduct计算。

CanonicalAxisIndex这个函数在blob.hpp里面定义了。要寻找这个函数的定义,你可以看到是bottom在调用这个函数,那一定是在blob里面定义,只是看到底是在cpp还是hpp了

这个函数是提供负数也可以进行索引

faster rcnn细节总结的更多相关文章

  1. 深度学习原理与框架-卷积网络细节-三代物体检测算法 1.R-CNN 2.Fast R-CNN 3.Faster R-CNN

    目标检测的选框操作:第一步:找出一些边缘信息,进行图像合并,获得少量的边框信息 1.R-CNN, 第一步:进行图像的选框,对于选出来的框,使用卷积计算其相似度,选择最相似ROI的选框,即最大值抑制RO ...

  2. Faster RCNN 的细节补充

    一.faster rcnn的结构 通过上面的结构,我们知道该faster rcnn前面以VGG16为框架,加入RPN层,最后做分类层. 采用VGG16相对ZF来说慢一点,但是精度也高一点. 二.RPN ...

  3. r-cnn学习系列(三):从r-cnn到faster r-cnn

    把r-cnn系列总结下,让整个流程更清晰. 整个系列是从r-cnn至spp-net到fast r-cnn再到faster r-cnn.  RCNN 输入图像,使用selective search来构造 ...

  4. [原创]Faster R-CNN论文翻译

    Faster R-CNN论文翻译   Faster R-CNN是互怼完了的好基友一起合作出来的巅峰之作,本文翻译的比例比较小,主要因为本paper是前述paper的一个简单改进,方法清晰,想法自然.什 ...

  5. 读论文系列:Object Detection NIPS2015 Faster RCNN

    转载请注明作者:梦里茶 Faster RCNN在Fast RCNN上更进一步,将Region Proposal也用神经网络来做,如果说Fast RCNN的最大贡献是ROI pooling layer和 ...

  6. Faster R-CNN 的 RPN 是啥子?

     Faster R-CNN,由两个模块组成: 第一个模块是深度全卷积网络 RPN,用于 region proposal; 第二个模块是Fast R-CNN检测器,它使用了RPN产生的region p ...

  7. Faster R-CNN

    1.R-CNN R-CNN网络架构图 R-CNN网络框架流程 1)原图像经过 selective search算法提取约2000个候选框 2)候选框缩放到同一大小,原因是上图的ConvNet需要输入图 ...

  8. Faster RCNN 学习笔记

    下面的介绍都是基于VGG16 的Faster RCNN网络,各网络的差异在于Conv layers层提取特征时有细微差异,至于后续的RPN层.Pooling层及全连接的分类和目标定位基本相同. 一). ...

  9. Faster R-CNN:详解目标检测的实现过程

    本文详细解释了 Faster R-CNN 的网络架构和工作流,一步步带领读者理解目标检测的工作原理,作者本人也提供了 Luminoth 实现,供大家参考.   Luminoth 实现:https:// ...

随机推荐

  1. 创建Python本地副本

    创建本地副本后可以避免解释器找不到模块的情况. 1. 创建一个测试用的pl.py def printTest(): print("this is a test") 2. 将pl.p ...

  2. Maven虐我千百遍,我待Maven如初恋

    前言 在如今的互联网项目开发当中,特别是Java领域,可以说Maven随处可见.Maven的仓库管理.依赖管理.继承和聚合等特性为项目的构建提供了一整套完善的解决方案,可以说如果你搞不懂Maven,那 ...

  3. Spring入门(四):使用Maven管理Spring项目

    让我们先回顾下本系列的前3篇博客: Spring入门(一):创建Spring项目 Spring入门(二):自动化装配bean Spring入门(三):通过JavaConfig装配bean 1.为什么要 ...

  4. Codeforces Round #383 【总结】

    总结一下这场... 搞起大号就崩了... A题没啥问题..通过电脑到手机上提交没啥大问题: B题,讲个最严重的问题,也是最近以来最严重的问题,虽然我说你开了个数组,虽然这个数组是不是最终的答案数组,但 ...

  5. Codeforces714C【映射】

    题意: T次操作: +的话就是往 multiset 塞进一个: -的话就是往 multiset 去除一个: ?操作 思路: +和-操作就是处理字符串直接实现一个原字符串改成"01" ...

  6. Android 跨应用调用Activity

    http://blog.csdn.net/ouyangliping/article/details/7972141 如何调用另外一个app应用的activity或者service,本文提供一个验证可行 ...

  7. Codevs 1312 连续自然数和

    1312 连续自然数和 题目描述 Description 对于一个自然数M,求出所有的连续的自然数段,使得这些连续自然数段的全部数字和为M.eg:1998+1999+2000+2001+2002=10 ...

  8. XHTML学习笔记 Part4:列表

    1. 空格 如果在两个单词中间放置几个连续的空格,默认情况下只会显示一个空格,这种情况成为空格折叠.同样,如果在源文档中开始一个新行,或者放置多个连续的空行,则这些新行将被忽略并被处理为一个空格.对制 ...

  9. PJzhang:国内常用威胁情报搜索引擎说明

    猫宁!!! 参考链接: https://www.freebuf.com/column/136763.html https://www.freebuf.com/sectool/163946.html 如 ...

  10. java数据结构----数组篇

    1.数组作为java常用的数据结构之一,使用相对简单,下图展示了数组常用操作在允许和不允许重复值的情况下的比较次数 2.进行封装后的代码: package com.cn.higharray; /** ...