## 分开参考框、候选框与最终检测框 ## 解释、算例与证据 # P32 · Faster R-CNN:让候选区域也成为预测 按“参考框→RPN 候选→最终框”给图中的矩形分配身份,并把人工真值单独留在监督侧。RPN 让候选变为可学习预测。LAB10 采用共享原理的一阶段教学变体,不应把它说成原版 Faster R-CNN。 图内标签与数值:Lecture 03 课堂图解 P32;共享 F;RPN;前景分数 + 框偏移;区域读出;分类 + 最终框修正;候选框 → 供后级使用;参考框;参考几何 → 预测候选 → 最终检测框 共享 F 分为 RPN 和区域预测;RPN 产生候选并供后级使用,参考框与偏移后的候选用不同颜色表示。 - 共享 F - RPN - 前景分数 + 框偏移 - 区域读出 - 分类 + 最终框修正 - 候选框 → 供后级使用 - 参考框 - 参考几何 → 预测候选 → 最终检测框共享 F 分为 RPN 和区域预测;RPN 产生候选并供后级使用,参考框与偏移后的候选用不同颜色表示。 [查看对应图解状态](/#/l3-r2-p32/1)[查看完整图解](/course/figures/l3-r2-p32-1.html) ## 课堂讲述 Faster R-CNN 增加了区域建议网络,也就是 RPN。它在共享特征上判断一些参考框是否像前景,并预测位置修正,形成后面使用的候选。 请区分图上的三个对象:参考框是我们提供的几何起点,候选框是这一步的预测,最终检测框是后续处理后的结果。训练时,还要根据真实标注定义哪些参考框负责哪些对象。 至此,从外部产生区域、反复编码区域,到共享卷积、再学习候选,瓶颈被一段段重新组织。这条路线有跨团队与合作者的汇合,不能把原始 R-CNN、SPP-net 和 Faster R-CNN 都归给一个人。它们相连的是具体问题与可复用的计算。 ### 参考框、候选框与最终检测框 [独立阅读](/course/blocks/rpn-three-boxes.html) RPN 在共享特征图上铺一组参考框。参考框由网格位置、预设尺度和长宽比决定;它们在看图之前就可生成,不能当成检测结果。网络为每个参考框输出物体性分数和四个偏移,经解码、筛选后形成 proposals,再交给区域头作更具体的类别判断和位置修正。 因此画面中的三个矩形有不同身份:anchor 是几何起点,proposal 是 RPN 的预测,最终 box 是整个检测流程交付的结果。训练真值是第四种对象,它负责给预测规定目标,并不在推理时送进模型告诉它答案。 同一张 F 可同时供 RPN 与后级区域头使用。它把“在哪里值得再看”从外部算法变成从图像特征学习的任务。这是 Faster R-CNN 与 Fast R-CNN 相比发生改变的具体一段,不能只记一个更快的名字。 LAB10 采用单层锚框直接分类与回归的一阶段教学检测器,不是原版两阶段 RPN。它与本页共享锚框、匹配、位置损失等原理,保留了可运行的学习闭环;读实验时应辨明哪些流程共用、哪些结构不同。 **出处:**[Faster R-CNN 原论文](https://arxiv.org/abs/1506.01497) · [D2L §14.7 TinySSD](https://d2l.ai/chapter_computer-vision/ssd.html) #### 图示条件与公式约定 参考框是几何起点,RPN 输出 objectness 与偏移形成 proposals,后级再预测类别与框。图省略 NMS、采样与正负匹配阈值,它们在补充材料中保留。 #### 这条线索的展开与后续阅读 - [候选区域,也从共享表示中学习](/supplement.html?return=l3-r2-p32/0#/l3-rpn/0) 本页说明 - [RPN 如何把参考框变成训练样本|问题从哪里出现](/supplement.html?return=l3-r2-p32/0#/l3-rpn-anchors-problem/0) 本页说明 - [RPN 如何把参考框变成训练样本|核心改动怎样工作](/supplement.html?return=l3-r2-p32/0#/l3-rpn-anchors-mechanism/0) 本页说明 - [RPN 如何把参考框变成训练样本|一起算一个完整例子](/supplement.html?return=l3-r2-p32/0#/l3-rpn-anchors-example/0) 本页说明 - [RPN 如何把参考框变成训练样本|怎样检查这项解释](/supplement.html?return=l3-r2-p32/0#/l3-rpn-anchors-evidence/0) 本页说明 - [RPN 如何把参考框变成训练样本|什么结论还不能推出](/supplement.html?return=l3-r2-p32/0#/l3-rpn-anchors-boundary/0) 本页说明 - [一阶段检测把预测铺满特征图|问题从哪里出现](/supplement.html?return=l3-r2-p32/0#/l3-dense-one-stage-problem/0) L03补充阅读 - [一阶段检测把预测铺满特征图|核心改动怎样工作](/supplement.html?return=l3-r2-p32/0#/l3-dense-one-stage-mechanism/0) L03补充阅读 ## 给正例、背景和忽略项分配任务 先明确训练分配,才能知道哪一项预测拥有位置目标。 ### 为什么要有正例、背景和忽略项 [独立阅读](/course/blocks/anchor-training-assignment.html) 给定参考框与真值的 IoU 矩阵,匹配规则把参考框变成训练样本。例如课堂教学阈值若设正例至少 0.7、背景小于 0.3,则 IoU 为 0.8、0.4、0.1 的三个框分别是正例、忽略、背景。只有正例有对应的框回归目标。忽略的用途是暂不把模糊覆盖强行当正或负,而不是悄悄改成背景。 真实 LAB10 使用另一组公开写明的阈值:正例至少 0.45,背景低于 0.25,中间忽略;再用逐次最大 IoU 为每个真值保留一个不同 anchor,避免某个对象完全收不到位置监督。强制匹配服务于学习,评价时不能为了“每个对象都匹配一次”照搬这条规则。 空图同样是有效训练输入。所有参考框都应学背景,回归项没有正例便归零。如果只训练总有物体的图片,模型可能从未被要求学会空输出。 负例远多于正例时,本实验选难负例参与分类损失,最多正例数的三倍、每图至少十二个。阅读代码时应看 loss 的掩码与归一化,而不只看 $L=L_{cls}+\lambda L_{box}$ 这一行总公式。 **出处:**[D2L §14.4 锚框](https://d2l.ai/chapter_computer-vision/anchor.html) ## 进入 LAB10:先读失败图,再解释高分 把错误分类、IoU 和 AP 带回已保存的图像到框学习记录。 ![LAB10 原失败图的样本35完整面板,绿色为真值,黄色为分数至少0.4的预测](/course/semantic-assets/lab10-sample35.png)已有实验记录的样本35面板:绿色框为真值,黄色框为分数至少0.4的预测。样本35的真值与预测各有两个框,但边界没有正确对应两个相邻对象。样本按几何失败选取,不能代表全部样本的错误比例。[查看完整失败图](/assets/display/88df211a98edfb7b00515441.webp) ### 从 RGB 到框:当前 LAB10 已经具备完整闭环 [独立阅读](/course/blocks/detector-learning-evidence.html) 当前 LAB10 的主实验输入是真正的 48×48 RGB 合成图,目标是零至三个对象的类别与归一化框。卷积骨干生成 12×12 网格,每格两个参考框,共 288 个;两个头输出 `[B,288,3]` 类别 logits 与 `[B,288,4]` 偏移。图像进入 `model(images)`,坐标只参与监督与评价。 保留的 2026-09-22 本地完整运行用 768 张训练图、96 张验证图、192 张保留图,训练 28 epoch。它以 TinySSD 的锚框检测闭环为起点,采用单特征层、两种参考尺度,不能称为 D2L 全部多尺度结构的复现。 | 条件 | AP50 | AP75 | | --- | --- | --- | | 随机初始化 | .00746 | .00003 | | 训练后原尺度 | .97303 | .70367 | | 同权重,仅对象尺寸减半 | .61490 | .17987 | 这些是已有运行记录,本轮内容整理没有重跑实验。原分布明显改善,且存在多对象与空图,支持“模型学习到了图像到对象位置的映射”。更严格位置门槛与小尺度条件仍显著下降,帮助定位下一步研究问题。红色与矩形、蓝色与椭圆相关,因此不能据此宣称自然图像泛化。 读者可先看同一行的 RGB、真值框、预测框和失败图,再看匹配与损失,最后按需运行。原四维逻辑回归保留在热身位置,它说明分类更新,不承担检测证据。 **出处:**[D2L §14.7 TinySSD](https://d2l.ai/chapter_computer-vision/ssd.html) ## 一阶段检测简化哪一段,保留哪些问题? 回查 LAB10 实现时,用这一页辨认它与两阶段路线共有和不同的部分。 ### 选读:一阶段检测保留了哪些相同问题 [独立阅读](/course/blocks/dense-detector-ssd-extension.html) 一阶段检测不先为每个 proposal 再做一套区域分类,而是在一个或多个特征网格上直接预测类别与位置。这个改变简化了输出路径,却没有消除参考几何、目标匹配、正负不平衡、重复预测与定位评价。 若 16×16 网格每格有 4 个参考框,共 1024 项;每项预测含背景的 3 类 logits 与 4 个偏移,就有 7168 个输出数。这些数还是结构化候选,需按同一位置顺序与参考框配对,随后解码并整理。张量 reshape 顺序错误时,模型的偏移可能被贴到另一个 anchor 上。 D2L TinySSD 在多尺度特征上构造参考框与预测。当前 LAB10 为保持 CPU 可运行,用 12×12 单层网格、每格两个尺寸,共 288 项;它保留图像输入到框输出的学习链,但不等于多尺度模型的全部能力。 本条作为从主讲移出的深入阅读:理解它有助于读实验代码,不要求课堂再开 SSD 全章。FPN 关注怎样形成不同尺度的表示,SSD 关注怎样在特征上预测;两者都出现多尺度,不意味着同一机制。 **出处:**[D2L §14.7 TinySSD](https://d2l.ai/chapter_computer-vision/ssd.html) ## 沿这个问题继续 沿 CLS07 的公式定位疑问,再选 LAB09 解析练习或 LAB10 完整训练。 #### 按问题回查的讲解与短练习(1) **出处:**[Faster R-CNN (2015)](https://arxiv.org/abs/1506.01497)