佳文参考:《Faster RCNN 学习笔记 - 勇者归来 - 博客园》

《Faster-Rcnn中RPN(Region Proposal Network)的理解》

一、网络流图

二、维度分析

 

​​​​​​​

三、FPN在Faster RCNN中的应用

3.1 FPN结构

图中只画了3个stage,但我们以论文描述的为主,其实最起码有5个stage。左侧模型从低到高的卷积结果记为C2,C3,C4,C5,C6(有C1,但是论文里是抛弃了这层,为了不造成混淆,所以这里自动忽略了),同理右侧模型从低到高记为P2,P3,P4,P5,P6。

自底向上(下采样)
就是网络训练的前向传播过程,特征图尺寸越来越小,缩放stride。有些层的尺寸不变,我们把这些尺度不变的层定义为一个stage。我们选择每个阶段的最后一层输出作为分类和回归参考特征图。 因为每个阶段的最后一层提取的特征应该是最好的。

自顶向下(上采样)
把高层特征图进行上采样(比如最近邻上采样),然后把该特征横向连接(lateral connections )至前一层特征,因此高层特征得到加强。这样做主要是为了利用底层的定位细节信息。

横向连接
较低层特征通过1×1卷积改变一下低层特征的通道数,然后简单地把将P的上采样和1×1卷积后的结果对应元素相加。为什么横向连接要使用1×1卷积呢,为什么不能原地不动地拿过来呢?原来在于作者想用1×1改变通道数,以达到各个level处理结果的channel都为256-d,便于后面对加起来的特征进行分类。

3.2 FPN实验

faster r-cnn 的结构图

上图为faster r-cnn 的结构图,作者主要讲FPN结构用在了 RPN检测 两个部分。

首先使用backbone提取特征,然后使用上采样和侧边连接,得到多尺度的特征图P2...P5,然后在这些特征图上使用3x3卷积进行滑动,使用两个分支对每个特征点进行 box检测和回归; 类似于rcnn,只不过这个是 在多个特征图上同时做回归

下面这个图可以更清楚的理解这个结构;

对ResNet提取的不同stage特征图,先在?上进行1×1卷积降维通道数,得到P5。P5上采样与C4的1×1卷积结果对应元素相加,得到P4,然后用3×3卷积处理,以减小上采样带来的混淆现象(附原文We append a 3×3 convolution on each merged map to generate the final feature map,which is to reduce the aliasing effect of upsampling)。相加的结果称为?,与同样大小的?对应。

 RPN部分实验

RPN即一个用于目标检测的一系列滑动窗口。具体地,RPN是先进行3×3,然后跟着两条并行的1×1卷积,分布产生前背景分类和框位置回归,我们把这个组合叫做网络头部network head。

但是前背景分类与框位置回归是在anchor的基础上进行的,简言之即我们先人为定义一些框,然后RPN基于这些框进行调整即可。在SSD中anchor叫prior,更形象一些。为了回归更容易,anchor在Faster R-CNN中预测了3种大小scale,宽高3种比率ratio = {1:1,1:2,2:1},共9种anchor框。

在FPN中我们同样用了一个3×3和两个并行的1×1,但是是在每个级上都进行了RPN这种操作。既然FPN已经有不同大小的特征scale了,那么我们就没必要像Faster R-CNN一样采用3种scale大小的anchor了,我们只要采用3种比率的框就行了。所以每个级level的anchor都是相同的scale。所以我们在?上分别定义anchor的scale为?,在每级level的?上有{1:1,1:2,2:1}三种宽高比率ratio的框。所以我们在特征金字塔上总共有15(3 * 5个stage)个anchor。

此外,每个级level的头部的参数是共享的,共享的原因是实验验证出来的。实验证明,虽然每级的feature大小不一样,但是共享与不共享头部参数的准确率是相似的。这个结果也说明了其实金字塔的每级level都有差不多相似的语义信息,而不是普通网络那样语义信息区别很大。

检测部分

在Fast rcnn中因为只有一个特征图,所以直接使用RPN提取的ROI在特征图进行裁剪特征即可,然后将ROI特征进行二次回归和分类;
但是在FPN中提取到不同scale的特征金字塔,作者认为,不同尺度的特征图包含的物体大小也不同,所以不同尺度的ROI应该在不同尺度的特征图上进行特征提取,大尺度的ROI使用深层P5的特征图进行ROI Pooling操作,小尺度的ROI使用浅层的特征图P4进行ROI Pooling操作,为了更好的定义不同尺度的ROI使用那层特征图进行ROI Pool操作,作者定义了一个判别公式:

实验结果

FPN对RPN的影响 关心AR(box的召回率)

下标sml指的是gt框的大小small,medium,large

  • (a,b)只使用conv4或conv5的R-CNN在召回率上提升10%(a,b),尤其在小物体上提升明显。(使用相同的超参数anchors)
  • (d)去掉了top-down,只保留横向连接(SSD).即去掉了上采样,相当于论文图1的c。性能仅与原 RPN 差不多,原因可能是不同层的语义信息差别较大。
  • (e)去掉了横向链接。相当于只上采样。语义多,但位置不准确。
  • (f)只用P2特征层,不使用金字塔模型。对应论文图1的(b)。结果当然不是很好。

FPN对整个Faster R-CNN的影响

Faster RCNN 网络分析及维度分析相关推荐

  1. Faster RCNN原理分析(二):Region Proposal Networks详解

    Region Proposal Networks是Faster RCNN出新提出来的proposal生成网络.其替代了之前RCNN和Fast RCNN中的selective search方法,将所有内 ...

  2. 分析Faster RCNN中的RPN

    faster rcnn是经典的detection网络,虽然现在有更好的模型(yolo等),但是faster rcnn依然是很值得研究的. 之前在商汤论文分享会上遇到李博同学分享刚刚发表在CVPR201 ...

  3. faster rcnn中RPN网络源码分析(pytorch)

    最近刚入坑检测,初步看了RGB大佬的faster rcnn文章,再看看源码 本次分析的源码是陈云大佬pytorch版本的GITHUB地址 上一张输入输出图 一.forward 主文件./model/r ...

  4. 【技术综述】万字长文详解Faster RCNN源代码

    文章首发于微信公众号<有三AI> [技术综述]万字长文详解Faster RCNN源代码 作为深度学习算法工程师,如果你想提升C++水平,就去研究caffe源代码,如果你想提升python水 ...

  5. 目标检测——Faster R-CNN论文阅读

    论文阅读--Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks 文章目录 论文阅读--Faste ...

  6. 里程碑式成果Faster RCNN复现难?我们试了一下 | 附完整代码

    作者 | 已退逼乎 来源 | 知乎 [导读]2019年以来,除各AI 大厂私有网络范围外,MaskRCNN,CascadeRCNN 成为了支撑很多业务得以开展的基础,而以 Faster RCNN 为基 ...

  7. 一文读懂Faster RCNN

    来源:信息网络工程研究中心本文约7500字,建议阅读10+分钟 本文从四个切入点为你介绍Faster R-CNN网络. 经过R-CNN和Fast RCNN的积淀,Ross B. Girshick在20 ...

  8. 修订版 | 目标检测:速度和准确性比较(Faster R-CNN,R-FCN,SSD,FPN,RetinaNet和YOLOv3)...

    很难在不同的目标检测器之间进行公平的比较.对于哪个模型是最好的?这个问题是没有直接的答案.对于现实生活中的应用,我们选择平衡准确性和速度.除了检测器类型外,我们还需要了解影响性能的其他选择: Feat ...

  9. Faster R-CNN论文详解

    原文链接:http://lib.csdn.net/article/deeplearning/46182 paper链接:Faster R-CNN: Towards Real-Time Object D ...

  10. CNN目标检测(一):Faster RCNN详解

    ↑↑↑↑目录在这里↑↑↑↑↑ Faster RCNN github : https://github.com/rbgirshick/py-faster-rcnn Faster RCNN paper : ...

最新文章

  1. 求求你别再写上千行的类了,试试这些牛逼的重构技巧吧
  2. python 中主线程结束 子线程还在运行么_python 线程之一:线程的创建、启动及运行方式
  3. IIS 500错误,一步帮你搞定.
  4. 04_有序清单无序清单
  5. 我精心珍藏的Python代码技巧
  6. GO string 转map_用go语言,只需两百行代码就能搞定并发聊天室!
  7. 百练 2972 确定进制 解题报告
  8. C#中窗体的数据传递
  9. matlab 类型强制转换,关于数据类型强制转换的分析和应用
  10. 我分析了100篇文章,总结出5点头条号推荐机制真相
  11. 【Caffe学习01】在Caffe中trian MNIST
  12. 详解Pod和容器资源管理和分配(CPU和内存分配,临时存储管理)
  13. 前端自动生成Change Log的实现
  14. 计算机组成原理:系统总线总结
  15. 香港武侠电影十大金曲
  16. 寻求IOS大神,App马甲包上架Appstore
  17. 用 justify-content 属性设置子元素两端对齐
  18. 基于SSM实现水果商城批发平台
  19. android editable接口,Spannable与Editable区别
  20. Scrum敏捷开发简介

热门文章

  1. 4.3 CMMI4级——定量项目管理(Quatitative Project Management)
  2. html表格的基础知识及源代码-尚硅谷
  3. Win7扫雷的H5完整复刻实现(三) / 鼠标左右键同时按下事件与收尾工作的实现
  4. 「图像处理」C#+AForge.Net+DlibDotNet实现人脸识别
  5. React小书中得CommentList的需求实现
  6. PHP绿色集成环境在云服务器上的应用,PHPWAMP在服务器上搭建网站案例
  7. Irrlicht引擎源码剖析——第十三天
  8. java实现中文大写金额转小写数字
  9. IP一键替换[非原创]
  10. NSSM - 将任何exe应用封装成windows服务的神器