Faster RCNN原理分析(二):Region Proposal Networks详解
Region Proposal Networks是Faster RCNN出新提出来的proposal生成网络。其替代了之前RCNN和Fast RCNN中的selective search方法,将所有内容整合在一个网络中,大大提高了检测速度(语文水平差,所以历史科普请看其他文章T_T)。
- 对于单通道图像+单卷积核做卷积,上一篇文章已经介绍了(参考上文图4);
- 对于多通道图像+多卷积核做卷积,计算方式如下:
(一)anchors
[[ -84. -40. 99. 55.][-176. -88. 191. 103.][-360. -184. 375. 199.][ -56. -56. 71. 71.][-120. -120. 135. 135.][-248. -248. 263. 263.][ -36. -80. 51. 95.][ -80. -168. 95. 183.][-168. -344. 183. 359.]]
- 在原文中使用的是ZF model中,其Conv Layers中最后的conv5层num_output=256,对应生成256张特征图,所以相当于feature map每个点都是256-d
- 由于输入图像M=800,N=600,且Conv Layers做了4次Pooling,feature map的长宽为[M/16, N/16]=[50, 38]
- 在conv5之后,做了rpn_conv/3x3卷积,num_output=256,相当于每个点使用了周围3x3的空间信息,同时256-d不变,如图3红框,同时对应图4中的红框中的3x3卷积
- 假设一共有k个anchor,而每个anhcor要分foreground和background,所以cls=2k scores;而每个anchor都有[x, y, w, h]对应4个偏移量,所以reg=4k coordinates
(二)softmax判定foreground与background
layer {name: "rpn_cls_score"type: "Convolution"bottom: "rpn/output"top: "rpn_cls_score"convolution_param {num_output: 18 # 2(bg/fg) * 9(anchors)kernel_size: 1 pad: 0 stride: 1}
}
"Number of labels must match number of predictions; "
"e.g., if softmax axis == 1 and prediction shape is (N, C, H, W), "
"label count (number of labels) must be N*H*W, "
"with integer values in {0, 1, ..., C-1}.";
(三)bounding box regression原理
(四)对proposals进行bounding box regression
layer {name: "rpn_bbox_pred"type: "Convolution"bottom: "rpn/output"top: "rpn_bbox_pred"convolution_param {num_output: 36 # 4 * 9(anchors)kernel_size: 1 pad: 0 stride: 1}
}
可以看到其num_output=36,即经过该卷积输出图像为PxQx36,在caffe blob存储为[1, 4x9, Q, P]。与上文中fg/bg anchors存储为[1, 18, Q, P]类似,这里相当于feature maps每个点都有9个anchors,每个anchors又都有4个用于回归的[dx(A),dy(A),dw(A),dh(A)]变换量。利用上面的的计算公式即可从foreground anchors回归出proposals。
(五)Proposal Layer
layer {name: 'proposal'type: 'Python'bottom: 'rpn_cls_prob_reshape'bottom: 'rpn_bbox_pred'bottom: 'im_info'top: 'rois'python_param {module: 'rpn.proposal_layer'layer: 'ProposalLayer'param_str: "'feat_stride': 16"}
}
Proposal Layer有3个输入:fg/bg anchors分类器结果rpn_cls_prob_reshape,对应的bbox reg的[dx(A),dy(A),dw(A),dh(A)]变换量rpn_bbox_pred,以及im_info;另外还有参数feat_stride=16。
- 再次生成anchors,并对所有的anchors做bbox reg位置回归(注意这里的anchors生成顺序和之前是即完全一致的)
- 按照输入的foreground softmax scores由大到小排序anchors,提取前pre_nms_topN(e.g. 6000)个anchors。即提取修正位置后的foreground anchors
- 利用feat_stride和im_info将anchors映射回原图,判断fg anchors是否大范围超过边界,剔除严重超出边界fg anchors。
- 进行nms(nonmaximum suppression,非极大值抑制)
- 再次按照nms后的foreground softmax scores由大到小排序fg anchors,提取前post_nms_topN(e.g. 300)结果作为proposal输出。
Faster RCNN原理分析(二):Region Proposal Networks详解相关推荐
- 第十一天: SD卡原理分析及SD卡启动详解
主流的外存设备 内存和外存的区别: 一般是把这种(random access memory,随机访问存储器,特点是任意字节读写,掉电丢失)叫内存,把ROM(read only memory,只读存储器 ...
- 深度学习论文阅读目标检测篇(三):Faster R-CNN《 Towards Real-Time Object Detection with Region Proposal Networks》
深度学习论文阅读目标检测篇(三):Faster R-CNN< Towards Real-Time Object Detection with Region Proposal Networks&g ...
- 《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》论文翻译
原文:https://arxiv.org/abs/1506.01497 Faster R-CNN: Towards Real-Time ObjectDetection with Region Prop ...
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(更快的RCNN:通过区域提议网络实现实时)
原文出处 感谢作者~ Faster R-CNN: Towards Real-Time Object Detection with Region ProposalNetworks Shaoqing Re ...
- 论文精读:Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks
Faster R_CNN代码实现详解参见:faster-rcnn源码详解_樱花的浪漫的博客-CSDN博客_faster rcnn源码 Faster-rcnn详细注释版源码地址:faster_rcnn源 ...
- 读书笔记:Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks
Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks 著名的faster R-CNN 当然应该好好 ...
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(理解)
0 - 背景 R-CNN中检测步骤分成很多步骤,fast-RCNN便基于此进行改进,将region proposals的特征提取融合成共享卷积层问题,但是,fast-RCNN仍然采用了selectiv ...
- [图解]小白都能看懂的FASTER R-CNN – 原理和实现细节
Contents [hide] 1 论文原文 2 介绍 3 Anchors 3.1 如何确定一个anchor是正样本还是负样本? 4 实现细节 5 调试信息 6 参考资料 论文原文 Faster R- ...
- Faster RCNN原理篇(一)——Bounding-Box Regression边界框回归的学习和理解
Bounding-Box Regression边界框回归的学习和理解 引言 1. (Why?)为何要做边框回归? 2. (What?)什么是边框回归? 3. (How?)如何实现边框回归? 4. 边框 ...
最新文章
- ASP.NET repeater添加序号列的方法
- 2005 打开 2010 项目经验总结
- oracle事务提交前更新机制,Oracle 事务机制 批量添加,修改,更新
- input不管用 vue_重读 VUE 官方文档 lt;2gt;
- Vue项目—请求函数的封装
- linux常用命令整理1
- 联想智能云教室部署(网络同传)
- 从OpenJDK官网下载JDK源码
- 姓名大战c语言,c语言姓名大作战游戏
- VS Code C++ 插件推荐安装
- 大疆aeb连拍_给无人机新手的3个航拍技巧,入门机也能拍大片!
- 中国卖家如何在亚马逊平台玩转“无货源模式”10人团队产值30-50w
- 元旦| 微软ATP伴你2023一路前行
- R语言绘制箱体图举例图文版
- 微信小程序表单含多图上传
- 安全测试工具BurpSuite
- picoctf-Scavenger Hunt wp
- Python 实现大连海事校园网登录
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
- IDEA查询包含关键字的文本文件
热门文章
- boost::copy_n相关的测试程序
- boost::multiprecision模块float128相关的测试程序
- hana::detail::variadic::reverse_apply用法的测试程序
- boost::hana::scan_right用法的测试程序
- boost::transpose_graph用法的测试程序
- boost::geometry::densify用法的测试程序
- allocator_difference_type的实例
- OpenCV使用VideoWriter和VideoCapture的实例(附完整代码)
- OpenCV EM clustering集群的实例(附完整代码)
- Qt Creator使用ClearCase