Faster RCNN 网络分析及维度分析
佳文参考:《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 的结构图,作者主要讲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 网络分析及维度分析相关推荐
- Faster RCNN原理分析(二):Region Proposal Networks详解
Region Proposal Networks是Faster RCNN出新提出来的proposal生成网络.其替代了之前RCNN和Fast RCNN中的selective search方法,将所有内 ...
- 分析Faster RCNN中的RPN
faster rcnn是经典的detection网络,虽然现在有更好的模型(yolo等),但是faster rcnn依然是很值得研究的. 之前在商汤论文分享会上遇到李博同学分享刚刚发表在CVPR201 ...
- faster rcnn中RPN网络源码分析(pytorch)
最近刚入坑检测,初步看了RGB大佬的faster rcnn文章,再看看源码 本次分析的源码是陈云大佬pytorch版本的GITHUB地址 上一张输入输出图 一.forward 主文件./model/r ...
- 【技术综述】万字长文详解Faster RCNN源代码
文章首发于微信公众号<有三AI> [技术综述]万字长文详解Faster RCNN源代码 作为深度学习算法工程师,如果你想提升C++水平,就去研究caffe源代码,如果你想提升python水 ...
- 目标检测——Faster R-CNN论文阅读
论文阅读--Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks 文章目录 论文阅读--Faste ...
- 里程碑式成果Faster RCNN复现难?我们试了一下 | 附完整代码
作者 | 已退逼乎 来源 | 知乎 [导读]2019年以来,除各AI 大厂私有网络范围外,MaskRCNN,CascadeRCNN 成为了支撑很多业务得以开展的基础,而以 Faster RCNN 为基 ...
- 一文读懂Faster RCNN
来源:信息网络工程研究中心本文约7500字,建议阅读10+分钟 本文从四个切入点为你介绍Faster R-CNN网络. 经过R-CNN和Fast RCNN的积淀,Ross B. Girshick在20 ...
- 修订版 | 目标检测:速度和准确性比较(Faster R-CNN,R-FCN,SSD,FPN,RetinaNet和YOLOv3)...
很难在不同的目标检测器之间进行公平的比较.对于哪个模型是最好的?这个问题是没有直接的答案.对于现实生活中的应用,我们选择平衡准确性和速度.除了检测器类型外,我们还需要了解影响性能的其他选择: Feat ...
- Faster R-CNN论文详解
原文链接:http://lib.csdn.net/article/deeplearning/46182 paper链接:Faster R-CNN: Towards Real-Time Object D ...
- CNN目标检测(一):Faster RCNN详解
↑↑↑↑目录在这里↑↑↑↑↑ Faster RCNN github : https://github.com/rbgirshick/py-faster-rcnn Faster RCNN paper : ...
最新文章
- 求求你别再写上千行的类了,试试这些牛逼的重构技巧吧
- python 中主线程结束 子线程还在运行么_python 线程之一:线程的创建、启动及运行方式
- IIS 500错误,一步帮你搞定.
- 04_有序清单无序清单
- 我精心珍藏的Python代码技巧
- GO string 转map_用go语言,只需两百行代码就能搞定并发聊天室!
- 百练 2972 确定进制 解题报告
- C#中窗体的数据传递
- matlab 类型强制转换,关于数据类型强制转换的分析和应用
- 我分析了100篇文章,总结出5点头条号推荐机制真相
- 【Caffe学习01】在Caffe中trian MNIST
- 详解Pod和容器资源管理和分配(CPU和内存分配,临时存储管理)
- 前端自动生成Change Log的实现
- 计算机组成原理:系统总线总结
- 香港武侠电影十大金曲
- 寻求IOS大神,App马甲包上架Appstore
- 用 justify-content 属性设置子元素两端对齐
- 基于SSM实现水果商城批发平台
- android editable接口,Spannable与Editable区别
- Scrum敏捷开发简介
热门文章
- 4.3 CMMI4级——定量项目管理(Quatitative Project Management)
- html表格的基础知识及源代码-尚硅谷
- Win7扫雷的H5完整复刻实现(三) / 鼠标左右键同时按下事件与收尾工作的实现
- 「图像处理」C#+AForge.Net+DlibDotNet实现人脸识别
- React小书中得CommentList的需求实现
- PHP绿色集成环境在云服务器上的应用,PHPWAMP在服务器上搭建网站案例
- Irrlicht引擎源码剖析——第十三天
- java实现中文大写金额转小写数字
- IP一键替换[非原创]
- NSSM - 将任何exe应用封装成windows服务的神器