目标检测中的MAP的计算(逐步推导)

目标检测中的MAP的计算(逐步推导)

概念介绍

首先放一下前面一篇博文中提到的precision和recall的计算公式和概念。

P(precision) = TP/(TP+FP) 在目标检测中就是检测出的所有框中预测正确的比例。

R(recall) = TP/(TP+FN) 在目标检测中就是所有的ground truth(不懂ground truth的自行百度,简单点就是你的训练数据中事先标注好的bboxes)中检测出来的部分所占的比例。

我们假设一个场景,一共有两张图片,有两个类别,一个类别是人一个类别是汽车。

假如图中有5个标注为汽车的ground truth, 那么你检测到的汽车有两个, 那么对于这张图, 汽车类的 recalls 就是 2/5。

假如图中有3个人的ground truth, 你检测到的也是三个框, 但是其中只有一个框检测吻合到你的ground truth,另外两个检测成人了, TP = 1, FP = 2, 那么precision 就是 1/3

TP和FP的求解

下面正式来定义我们的场景,还是用上面的场景!!!

我们的训练集只有两张
如果人label = 1, 汽车label=2, 下面直接用vector表示

1、第一张图label = [1, 1, 2, 1, 1] 也就是说有四个人一台车, 一共五个gr

<think>好的,用户让我介绍一下Faster R-CNN中的RPN网络。我之前已经回答过关于感受野对齐的问题,现在需要转向RPN。首先,我需要确定用户的基础知识水平。他们可能已经了解过Faster R-CNN的基本结构,或者至少知道它是目标检测模型。不过,为了全面,我应该从基础讲起,但不要过于啰嗦。 用户可能想知道RPN的作用、结构,以及它在整个Faster R-CNN中的位置。需要解释清楚RPN如何生成候选区域,以及它如何与后续的检测部分结合。记得要提到anchor boxes,因为这是RPN的关键部分。同时,应该解释RPN的训练过程,比如二分类和边界框回归。 要注意用户可能的深层需求。他们可能在学习目标检测,或者在做相关项目,需要理解RPN的细节来实现或调优模型。可能需要强调RPN的高效性,以及它如何替代了之前的Selective Search方法,从而提升速度。 另外,用户可能对RPN中的正负样本划分感兴趣,比如如何定义正负样本,采样策略等。这部分对于训练效果很关键,应该详细说明。同时,损失函数的设计,分类损失和回归损失的结合,也是重点。 还要注意技术细节的正确性,比如anchor的数量、尺寸、比例,以及特征图上的每个点对应多少个anchor。这些参数影响模型的性能,需要准确描述。另外,RPN的输出是什么,如何传递给后面的Fast R-CNN网络,这部分流程需要清晰。 可能需要用一些例子或比喻来帮助理解,比如将anchor比作不同形状的框,在图像上滑动,预测是否有物体。同时,要提到NMS(非极大值抑制)在筛选候选区域时的作用,避免重复框。 最后,总结RPN的优势,比如端到端训练、提高速度与精度,以及它对后续检测任务的影响。确保回答结构清晰,逐步深入,覆盖关键点,同时保持语言简洁明了,符合中文表达习惯。</think>### Faster R-CNN中的RPN(Region Proposal Network)详解 #### 一、核心定义 **RPN(区域建议网络)** 是Faster R-CNN的核心创新,实现了**端到端的候选框生成**。其核心功能是: > **通过滑动窗口机制,直接在卷积特征图上预测目标存在的概率及边界框修正量**,替代传统方法(如Selective Search),极大提升检测效率。 --- #### 二、RPN的核心设计 ##### 1. 输入与输出 - **输入**:主干网络(如VGG/ResNet)输出的共享特征图(例如VGG16输出尺寸为$W \times H \times 512$) - **输出**: - **目标/背景二分类得分**(每个anchor的置信度) - **边界框回归偏移量**(对anchor的坐标修正) ##### 2. Anchor机制 - **基础概念**:在特征图每个位置预定义**9个anchor boxes**(3种尺度×3种长宽比) - 典型尺寸:$128^2$, $256^2$, $512^2$(面积) - 长宽比:1:1, 1:2, 2:1 - **计算示例**: - 特征图尺寸$40 \times 60$ → 共生成$40 \times 60 \times 9 = 21,600$个候选框 ##### 3. 网络结构 ```python # 伪代码结构 feature_map = backbone(image) # 输入图像提取特征 rpn_conv = 3x3_conv(feature_map) # 滑动窗口(共享计算) cls_score = 1x1_conv(rpn_conv, channels=18) # 9个anchor×2分类(目标/背景) bbox_pred = 1x1_conv(rpn_conv, channels=36) # 9个anchor×4坐标偏移量 ``` --- #### 三、训练细节 ##### 1. 正负样本定义 - **正样本**(满足其一): - Anchor与真实框IoU > 0.7 - 与某真实框IoU最大的anchor(即使IoU < 0.7) - **负样本**:与所有真实框IoU < 0.3 - **忽略样本**:IoU在[0.3,0.7)之间(不参与训练) ##### 2. 损失函数 总损失 = 分类损失 + 回归损失: $$ L = \frac{1}{N_{cls}} \sum L_{cls} + \lambda \frac{1}{N_{reg}} \sum L_{reg} $$ - **分类损失**:交叉熵(二分类) - **回归损失**:Smooth L1 Loss(仅正样本参与) ##### 3. 采样策略 - 每张图像随机采样256个anchor(正:负=1:1) - 正样本不足时用负样本填充 --- #### 四、关键流程演示 以输入图像800×600为例: 1. **特征图生成**:VGG16输出50×37×512特征图(下采样16倍) 2. **Anchor生成**:每个位置生成9个anchor → 共50×37×9=16,650个候选框 3. **预测过滤**: - 按分类得分保留前12,000个候选框 - 非极大值抑制(NMS,IoU阈值0.7) → 保留约2,000个 4. **输出传递**:将筛选后的候选框送入Fast R-CNN头部进行细粒度检测 --- #### 五、创新优势 1. **速度革命**:候选框生成耗时从2秒/图(Selective Search)降至10ms/图 2. **精度提升**:与检测网络共享特征,避免特征不对齐 3. **参数共享**:RPN与Fast R-CNN共用主干网络,减少计算冗余 --- #### 六、可视化示例 ![RPN工作流程](https://miro.medium.com/v2/resize:fit:1400/1*kk7I5j5ZfEfQe8v6sXskPQ.png) 1. 特征图上滑动3×3窗口 2. 每个中心点生成9个anchor 3. 预测每个anchor的类别和偏移量 --- #### 七、数学推导 **边界框回归公式**: $$ \begin{cases} t_x = (x - x_a)/w_a \\ t_y = (y - y_a)/h_a \\ t_w = \log(w/w_a) \\ t_h = \log(h/h_a) \end{cases} $$ 其中: - $(x_a, y_a, w_a, h_a)$:anchor坐标 - $(x, y, w, h)$:预测框坐标 - $(t_x, t_y, t_w, t_h)$:网络输出的回归参数 --- #### 八、实际应用要点 1. **Anchor尺寸设计**:需根据数据集目标尺度调整(如COCO常用[32,64,128,256,512]) 2. **特征图选择**:现代变体(如FPN)会从多尺度特征图生成anchor 3. **训练技巧**:建议RPN与Fast R-CNN交替训练(4-step alternating training) --- #### 九、总结 RPN通过**参数化的区域建议生成方式**,将目标检测流程真正统一到深度学习框架中。其设计精髓在于: - **Anchor机制**:用预定义框覆盖多尺度目标 - **共享计算**:与检测网络共用特征提取器 - **端到端优化**:联合训练建议生成与目标检测 这一设计使Faster R-CNN成为两阶段检测器的经典范式,后续改进模型(如Mask R-CNN、Cascade R-CNN)均基于此架构演进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值