## 整理重复预测时还没有看到真值 ## 解释、算例与证据 # P34 · 三个框,并不代表三只杯子 三个重叠预测可能对应一只杯子。NMS 用预测之间的分数与重叠整理重复,评价匹配则使用真值,二者不是同一操作。先看三框算例,再看同一真实教学检测器放宽 NMS 后召回和精度的相反变化。 图内标签与数值:Lecture 03 课堂图解 P34;保留 A;B、C 与它过度重叠;教学分数 / IoU 阈值 0.5;A 0.90 保留;B 0.80 抑制;C 0.60 抑制;另一只杯子仍然保留;拥挤对象也可能互相压制;按同类别分数排序,抑制 IoU > 0.5 的重叠预测;分数是教学设定。 红杯上的 A、B、C 框分数为 0.90、0.80、0.60。IoU(A,B)≈0.90、IoU(A,C)≈0.88;阈值0.5时保留A、抑制B和C。蓝杯独立框与A不重叠,继续保留。 - 保留 A;B、C 与它过度重叠 - 教学分数 / IoU 阈值 0.5 - A 0.90 保留 - B 0.80 抑制 - C 0.60 抑制 - 另一只杯子仍然保留 - 拥挤对象也可能互相压制 - 按同类别分数排序,抑制 IoU > 0.5 的重叠预测;分数是教学设定。红杯上的 A、B、C 框分数为 0.90、0.80、0.60。IoU(A,B)≈0.90、IoU(A,C)≈0.88;阈值0.5时保留A、抑制B和C。蓝杯独立框与A不重叠,继续保留。 [查看对应图解状态](/#/l3-r2-p34/1)[查看完整图解](/course/figures/l3-r2-p34-1.html) ## 课堂讲述 同一个对象可能被多个候选检测到,于是系统交付了多个重叠框。不能把这些框直接解释成多个物体。 常见的处理是先保留高分框,再抑制与它过度重叠的重复预测,这就是非极大值抑制的基本直觉。它不是重新训练表示,而是在整理已经产生的候选结果。 现在指着图里的 C:它也围着红杯,与 A 的 IoU 约为 0.88,所以阈值 0.5 时同样去掉;右边蓝杯的框是另一个对象,不是这里的 C。 如果两个真实对象非常靠近,过强的抑制也可能误删目标。于是检测效果不是只由骨干网络决定,候选、类别分数、位置和后处理都会影响交付。我们不在这里比较所有 NMS 变体,只看清一个系统事实:怎样组织输出,也是方法的一部分。 ### NMS 不看真值,评价匹配必须看真值 [独立阅读](/course/blocks/nms-versus-matching.html) NMS 从预测框中整理重复。按类别与分数排序,保留最高分框 A,再抑制与 A 的 IoU 大于阈值的同类低分框,然后继续。输入只有预测框、分数和类别,不需要人工真值。 回到 P34 同一杯子上的三个框。A、B、C 的教学分数分别为 0.90、0.80、0.60;IoU(A,B)≈0.90,IoU(A,C)≈0.88。按分数先保留 A,在 NMS 阈值为 0.5 时,B 和 C 都与 A 过度重叠,因此都被抑制。蓝杯的另一个框与 A 不重叠,仍然保留。这里比较的是预测框彼此之间的重叠,还没有使用真值。 若把阈值放宽到 0.90,在本例原始坐标下,IoU(A,B)=0.8950778、IoU(A,C)=0.8774870,都没有超过阈值;重复框便可能继续留下。因此判定应使用未四舍五入的 IoU,图中 0.90 只是显示精度。下一步评价才用真值判断它们是在补漏检还是重复命中。 若两只真实杯子互相遮挡,两个正确框也可能高度重叠。将 `(0,0,2,2)` 与 `(.5,0,2.5,2)` 当作两只对象的框,交集 3、并集 5,IoU=.6;NMS=.5 就可能删掉较低分的真对象。它以几何重叠近似重复,没有直接知道对象身份。 评价再用保留下来的框与人工对象对应。重复命中同一真值只允许一次计为 TP,其余是 FP;漏掉的对象降低 recall。模型预测、后处理、评价三层分开,就能解释为什么“放宽 NMS 得到更多框”既可能补召回,也可能伤精度。 #### 图示条件与公式约定 分数为教学设定。A=(177,238,390,351)、B=(190,246,390,351)、C=(161,252,410,352),此处框写作 xywh;IoU(A,B)=.8950778368≈.90,IoU(A,C)=.8774869809≈.88。同类 greedy NMS,阈值.5。没有报告模型或论文性能。 #### 这条线索的展开与后续阅读 - [NMS 排序后抑制重复框|问题从哪里出现](/supplement.html?return=l3-r2-p34/0#/l3-nms-crowds-problem/0) 本页说明 - [NMS 排序后抑制重复框|核心改动怎样工作](/supplement.html?return=l3-r2-p34/0#/l3-nms-crowds-mechanism/0) 本页说明 - [NMS 排序后抑制重复框|一起算一个完整例子](/supplement.html?return=l3-r2-p34/0#/l3-nms-crowds-example/0) 本页说明 - [NMS 排序后抑制重复框|怎样检查这项解释](/supplement.html?return=l3-r2-p34/0#/l3-nms-crowds-evidence/0) 本页说明 - [NMS 排序后抑制重复框|什么结论还不能推出](/supplement.html?return=l3-r2-p34/0#/l3-nms-crowds-boundary/0) 本页说明 ## 只改变 NMS,检查新增框究竟是什么 已有模型让我们能够固定输入与权重,只检查后处理带来的取舍。 ### 同一检测器改变 NMS,召回为何变好而精度变差 [独立阅读](/course/blocks/nms-measured-tradeoff.html) LAB10 已保存一组更接近真实使用的对照:输入与训练后权重保持不变,只把 NMS IoU 阈值从 .35 放宽到 .65。展示/工作点的分数门槛固定 .4。 | NMS IoU | recall@工作点 | precision@工作点 | AP50 | | --- | --- | --- | --- | | .35 | .98311 | .94175 | .97303 | | .65 | 1.00000 | .41926 | .95866 | 放宽后,一些原来被抑制的候选重新出现,补到了最后少数对象;同时大量同一对象的重复框留在输出,所以 precision 大降。AP 的变化比这个固定工作点的 precision 小,因为 AP 汇总整个分数排序,而工作点只看分数至少 .4 的输出。 这组已有本地结果不是本轮新运行。它的价值是把 P34 的两种效应落实到同一模型:预测数量增加本身没有确定好坏,必须看新增的是哪个对象、是否重复,以及部署时怎样使用阈值。选阈值应使用验证集与任务成本;不能反复挑保留集最漂亮的数字再称泛化结果。 ### 沿着图解追问 以下是备课用的模拟师生对话,不是课堂实录。 **学生:**为什么同一杯子上的 C 也要抑制,而蓝杯的框保留? **教师:**C 围着红杯,与 A 的 IoU 约为0.88,超过0.5。蓝杯框是另一个框,与A不重叠,所以这轮保留。若把阈值提高到0.90,要用原始IoU计算,不能拿显示成0.90的近似数作严格大于判断。 ## 沿这个问题继续 沿 CLS07 的公式定位疑问,再选 LAB09 解析练习或 LAB10 完整训练。 #### 按问题回查的讲解与短练习(1) **出处:**[Faster R-CNN (2015)](https://arxiv.org/abs/1506.01497)