Faster R-CNN的参数设计细节
之前有篇关于原理的文章(Faster R-CNN文章详细解读),该文章讲述了网络的设计原理,但是具体实现还有很多细节,比如RPN层在推断的时候选了多少候选框,怎么将得到的候选框分配给FPN层的各个层进行特征的提取,Faster R-CNN的正负样本选择方式等等细节,下面来给出一些记录。
下面是根据detectron2中带FPN结构的Faster R-CNN来解释的,FPN规定的层中都会跟一个RPN,具体结构如下图所示。
1. RPN层的ground truth中正负样本怎么定义的?
生成的所有的anchor框与标注框计算iou,如果iou小于0.3则将anchor定义为负样本,如果大于0.7则定义为正样本,在[0.3, 0.7]之间的不参与rpn层的loss计算
2. RPN层的ground truth中正负样本的占比怎么分配?
预先设定RPN层参与训练的anchor框为256个,其中正样本最多为256 * 0.5 = 128个,256减去正样本个数为参与训练的负样本个数
3. R-CNN部分的ground truth是什么?
不同于RPN需要自己根据标注框生成ground truth,R-CNN部分的ground truth就是标注框
4. RPN采用的是哪几层作为提取候选区域的feature输出层?
RPN提取的特征是[“p2”, “p3”, “p4”, “p5”, “p6”],对应的stride(也就是输出的feature相对于原始输入的缩小尺度)为(4, 8, 16, 32, 64),这里"p2", “p3”, “p4”, "p5"都是根据backbone输出的feature获得的,只有"p6"是直接通过"p5"下采样得到的。
5. RPN阶段,每层输出多少个候选框,最终总共输出多少个候选框?
这个问题分为训练阶段和推断阶段
训练阶段,每层feature(“p2”, “p3”, “p4”, “p5”, “p6”),先从RPN层输出中最多2000个框,这些框是根据置信度从大到小排序选出,然后将所有层的候选合并(合并后有2000*6=12000个候选)经过NMS操作选出最多1000个候选框作为最终的输出
测试阶段逻辑同训练阶段,只是从每层的RPN输出中选出最多1000个框,合并后有1000 * 6 = 6000个候选,然后经过NMS操作选出最多1000个候选框
6. RPN选出的候选后,提取FPN中的那些feature用于之后的R-CNN训练和推断中?
训练时,RPN提出了1000个候选框,这些框的大小都是不一样的,需要根据候选框的大小分配给FPN中的五层featuremap(“p2”, “p3”, “p4”, “p5”)中去,分配的公式如下:
floor(4+log2(area224))floor(4 + log_2(\sqrt{\frac{\sqrt{area}}{224}}))floor(4+log2(224area))
上式中area为候选框的面积,floor为向下取整操作。上式求出的值小于等于2则分配个p2,等于3分配给p3,等于4分配各p4,大于等于5则分配给p5。举个例子,当area=224*224时,就将该候选框分配到p4层中,去使用ROIPooling操作获取roi特征。
这里要注意是分配给五层,而不是使用用于提出候选框的六层feature
7. 训练时,经过RPN后选出了最多1000个框用于R-CNN的训练,怎么平衡正负样本数?
将候选框与R-CNN的ground truth(也就是标注框)计算iou,大于0.5的作为正样本,其余的为负样本。预设R-CNN部分参与选了的样本总数为512个,为了平衡正负样本,先从上述的正样本中选出最多512 * 0.25 = 128个,剩下的为负样本的个数,即尽量控制参与训练的正负样本数为1:3。
8. 推断时,经过RPN后选出了最多1000个框用于R-CNN的推断,最终怎么输出?
将候选框提取相应的feature后,输入R-CNN的输出结构中,得到输出的1000个框,将这些框经过NMS操作后,选择置信度最高的100个框作为最终的输出
Faster R-CNN的参数设计细节相关推荐
- Faster R CNN
Faster R CNN 3 FASTER R-CNN 我们的Faster R CNN 由两个模块组成,第一个模块是 proposes regions 的全卷积网络,第二个是使用 proposed r ...
- mlp 参数调优_积神经网络(CNN)的参数优化方法
积神经网络(CNN)的参数优化方法 from:http://blog.csdn.net/u010900574/article/details/51992156 著名: 本文是从 Michael Nie ...
- 卷积神经网络(CNN)的参数优化方法
积神经网络的参数优化方法--调整网络结构是关键!!!你只需不停增加层,直到测试误差不再减少. 著名: 本文是从 Michael Nielsen的电子书Neural Network and Deep L ...
- AI:IPPR的数学表示-CNN结构/参数分析
前言:CNN迎接多类的挑战 特定类型的传统PR方法特征提取的方法是固定的,模式函数的形式是固定的,在理论上产生了特定的"局限性" 的,分类准确度可以使用PAC学习理论的方法计算出来 ...
- 【 C++ 技术】 C++ 高性能服务器网络框架设计细节
作者:范蠡 原文:C++ 高性能服务器网络框架设计细节 前言 这篇文章我们将介绍服务器的开发,并从多个方面探究如何开发一款高性能高并发的服务器程序.需要注意的是一般大型服务器,其复杂程度在于其业务, ...
- HFSS设计双脊喇叭天线之路——天线结构与参数设计
超宽带双脊喇叭天线设计--天线结构与参数设计 这是本人在闲时,结合以往设计经验和参考前人的工作,设计了超宽带的双脊喇叭天线,这篇文章不是进行知识补充,而是主要针对设计时的流程以及可能遇到的问题进行 ...
- BUCK电路工作原理以及参数设计
转自萌萌老师的帖子 什么是Buck电路? BUCK电路是一种降压斩波器,降压变换器输出电压平均值Uo总是小于输出电压UD. 通常电感中的电流是否连续,取决于开关频率.滤波电感L和电容C的数值. BUC ...
- LM358运放电路参数设计-运算放大器-单位增益带宽及反馈并联电容
[电路笔记]LM358运放电路参数设计 实验目的:利用LM358放大电路对电流取样信号进行放大,且模拟浪涌状态,外加300K的干扰信号,分析运放输出波形的变化,选取合适的参数. 一.对仅使用电阻反馈放 ...
- [龙讯6号]龙芯2E首次公布设计细节
LSLSLSLSLSLSLSLSLSLSLSLSLSLSLSLS === 龙讯 === ...
最新文章
- java/jsp/sql server项目 字符编码统一_JSP开发过程遇到的中文乱码问题及解决方案...
- 57 第一个Celery程序
- bring your mac everywhere you go
- 2016年第七届蓝桥杯 - 省赛 - C/C++大学A组 - F. 寒假作业
- Linux 串口 gprs at,linux下GPRS模块使用AT命令实现拨接电话,发中英文短信
- Wicket模型的干净方法
- elaseticsearch 配置ik分词器的热更新_Elasticsearch从入门到放弃:分词器初印象
- 统一资源管理与调度平台(系统)介绍
- “公益AI之星”挑战赛-新冠疫情相似句对判定大赛
- matlab 电力系统分析 毕设,基于Labview的“电力系统分析”课程仿真:电力系统分析matlab仿真实例...
- 机器学习10-信用卡反欺诈模型
- 学习html+css+js笔记
- 怎样找到优质的APP推广渠道
- 2021年少儿编程未来趋势分析
- latexkatex@常用符号@符号手写识别
- 第一章 概率论的基本概念 1.6 独立性
- 正多边形的滚动与旋轮线下的面积
- c语言除法留小数点两位小数,高精度除法小数点位数
- 阿里巴巴/招行信用卡中心21届实习面试知识点汇总
- SEPM执行LiveUpdate 失败,错误“磁盘空间不足...”