Coursera 笔记

Module 03 · Object Detection

Non-max Suppression非极大值抑制

Coursera ↗

在目标检测任务中,一个常见的问题是 算法可能会对同一个物体进行多次检测。也就是说,算法不仅检测到一个物体,还可能多次检测到它。这会导致重复检测结果,因此需要采取措施来确保每个物体仅被检测一次。这个过程就是 非极大值抑制(Non-Maximum Suppression, NMS)。


什么是非极大值抑制(NMS)?

非极大值抑制 是一种用于去除重复检测框的技术,确保每个物体只被检测一次。通过比较不同检测框的 概率 和 重叠度(IoU),NMS 会保留最有信心的预测结果,并抑制与其高度重叠的其他框。


NMS 过程示例

假设你要检测图像中的 行人、汽车和摩托车。你可以将图像分成 19x19 的网格。每个网格都运行目标检测和定位算法,可能会导致多个网格同时预测到同一物体。

检测框的重叠问题

  • 每个网格都有可能认为它包含了一个物体的中心位置,因此多个网格可能会同时检测到同一物体。
  • 例如,对于同一辆车,算法可能会在多个网格中检测到它,产生多个重叠的检测框。

NMS 工作原理

  1. 获取每个检测框的概率,即该检测框包含物体的可能性(Pc)。
  2. 选择概率最大的框,作为最有信心的检测结果。
  3. 抑制与已选择框有较高重叠度(IoU)的其他框,即删除那些与最有信心框重叠过多的框。
  4. 重复以上步骤,直到所有框都被处理完,最终保留唯一的检测结果。


NMS 算法步骤

  1. 生成 19x19 网格的输出:
  • 每个网格会输出一个 概率值(Pc) 和 边界框信息。
  • 假设只进行汽车检测,输出的结果会包含每个网格是否检测到车的概率以及相应的边界框。
  1. 初步筛选:
  • 丢弃 概率值小于某个阈值(如 0.6)的框,保留 概率值较高的框。
  • 这样可以去除那些检测概率较低的框。
  1. 选择最大概率框:
  • 在剩余的框中,选择 概率值最大 的框作为当前检测结果。
  • 例如,假设概率为 0.9 的框被选择为最有信心的检测结果。
  1. 抑制与最大概率框重叠的框:
  • 对于与当前选中的框有较高重叠的其他框(IoU较高),进行抑制。
  • 重叠较大的框会被 去除 或 暗化,显示它们被抑制的状态。
  1. 重复步骤:
  • 对剩余的框进行相同的操作,直到所有框都被处理。
  • 最终,剩下的框就是 最终的检测结果,每个物体只保留一个框。

抑制过程可视化

步骤 操作 结果
1. 选择最有信心的框 选出概率值最大(0.9)的框 高亮显示此框
2. 抑制重叠框 删除与选中框(IoU高)的重叠框 其他框被暗化
3. 继续选择最大概率框 选出下一个概率高的框(0.8) 高亮显示此框
4. 继续抑制 删除与新框有高重叠的框 最终保留两个框

多物体检测的 NMS

当你同时检测多个物体(如 行人、汽车和摩托车)时,输出向量会包含多个类别。每个类别的目标框都需要独立进行 非极大值抑制,以确保每个类别内的检测框不会重复。

  • 独立进行 NMS: 对每个类别分别应用 NMS,例如对 行人、汽车、摩托车 各自进行一次 NMS。

这些细节将留给你在本周的 编程练习 中实现。


总结与展望

非极大值抑制(NMS)是一种有效的技术,可以清理目标检测中的重复框,确保每个物体只被检测一次。通过使用 NMS,算法能够生成更为精确的检测结果。

在完成 目标检测 的实现后,下一步,我们将介绍 锚框(Anchor Boxes) 的概念,它可以进一步提升目标检测算法的表现。

准备好进入下一个视频,学习如何通过 锚框 来优化目标检测吗?🚀