目标检测
目标检测为每个预测实例给出类别、分数和边界框。同类对象可以位于不同位置。分数筛选移除弱候选,非极大值抑制移除可能的重复框。提高分数阈值会拒绝更多候选,提高重叠阈值却会容忍更多重复。
把框看成贴在照片上的便签:“这里可能有一只猫。”两张便签可指同一只猫,删冗余框有用,删另一只猫唯一的框则造成漏检。框消失不代表猫从照片消失。
检测输出与后处理
分类器对一张给定图像或裁剪输出类别分数;检测器还输出每个实例的位置,记录数可变。两条 cat 记录可能是两只猫,不能只凭同类就判重复。
本课使用 Torchvision 的 SSDLite320、MobileNetV3 主干与 COCO 权重的一次记录。模型接收缩放后的 320×320 RGB,提取特征、预测类别和框偏移,再解码矩形。训练建立特征、类别、位置的关系,调整阈值不会重训。参见 Torchvision 模型说明。
框用对角 (x1,y1)、(x2,y2) 表示,已映回 1280×853 源图像素,x 向右、y 向下。矩形不是动物轮廓;轮廓属于分割任务。
分数筛选
候选须严格大于分数阈值。阈值 0.50 时 0.33 失败、0.98 通过。只改候选资格,不改原分数或坐标。多个近似框都能高分,分数不是正确、唯一或定位准确的保证。
交并比 IoU
IoU = 交集面积 / (A 面积 + B 面积 − 交集面积)
减去交集避免重复计数。不相交为零,完全相同为一。不同物体的框也能相交,IoU 衡量矩形重叠,不识别动物身份。
贪心非极大值抑制
NMS 从待定候选中保留最高分,抑制与它同类且 IoU 超过阈值的低分框,再对剩余最高分重复。“待定”尚未决定,“抑制”已排除。硬 NMS 选择现有框,不平均坐标、不合并形状,规则见 Torchvision NMS。
提高分数阈值要求更高分;提高 IoU 阈值则需要更大重叠才抑制,两个方向不同。
逐步演示
照片有并排两只猫。记录保留 NMS 前分数 大于 0.20 的全部 31 个前景候选。0.20 是这份记录的下限,不是检测原理的限制。默认分数阈值 0.50、IoU 阈值 0.50,字母始终指向同一个原始候选。
| 候选 | 类别 | 分数 | 位置 |
|---|---|---|---|
| A | cat | 99.3% | 右猫 |
| B | cat | 98.6% | 左猫 |
| C | cat | 97.8% | 与 A 近似的右猫框 |
| U | bench | 33.1% | 弱模型预测 |
- 读 A:源坐标约
(639.2,161.4)到(1200.8,731.5)。99.3% 是另一个字段,不表示覆盖了猫身体的 99.3%。 - 分数筛选:31 中 17 通过,U 被拒绝,A、B、C 都通过,重复仍在。
- 保留 A、比较 C:交集约 317,207 px²,并集约 325,699 px²,
IoU ≈ 0.9739 > 0.50,同为 cat,所以抑制 C。A 坐标不变。 - 比较 A 与 B:
IoU ≈ 0.0402,未超过 0.50,B 保持待定,还没有被选为下一保留框。 - 继续 A 的比较:再抑制八个候选。接着 B 成为待定最高分,保留它,并抑制周围六个重叠框。动画合并重复节拍,但每次移除都有计算和原因。
- 结果:保留 A、B 两个同类、不同位置的检测。NMS 共移除 15 个,与此前分数拒绝的 14 个分开计数。
- 只提高分数到 0.99:B 的 98.6% 失败,只剩一个框,但猫仍有两只。
- 恢复分数 0.50,只提高 IoU 到 0.90:留下 A、B、P 三框,P 是右猫的另一个重复框。结尾恢复默认两框,并展示两项对照。模型从未改变。
阈值选择与诊断
| 分数阈值 | IoU 阈值 | 输出 | 含义 |
|---|---|---|---|
| 0.50 | 0.50 | A、B | 两只猫各一框 |
| 0.99 | 0.50 | A | B 低于分数门槛,漏一猫 |
| 0.50 | 0.90 | A、B、P | 放宽重叠容忍后重复存活 |
| 0.50 | 0.00 | A | 任何同类正重叠就抑制,B 被错删 |
| 0.30 | 0.50 | A、B、U | 弱 bench 预测也留下 |
| 1.00 | 0.50 | 无 | 没有分数严格大于一 |
这些是单图测量,不是部署建议。应在标注的代表性图像上比较漏检与误检成本,每次改一个参数。相邻物体的框可能重叠,过强抑制会误删;重复框重叠不足则可能逃过。
缺框时先看筛选前候选。低分被拒看分数阈值;已通过却被高分同类框抑制看 NMS。降低分数阈值不能救回本来就通过却被抑制的框,两个控制也都造不出模型未预测的框。
重复时检查成对 IoU,降低 IoU 阈值使该对更容易被抑制,但可能伤及邻近对象。“Too much suppression”的 0.00 就因 A/B 小幅重叠而删 B。
后处理成本
n 个候选的分数筛选 O(n),排序 O(n log n),直接贪心 NMS 最坏 O(n²),工作列表空间 O(n)。这不包括神经网络推理。本播放器最多处理 31 个记录,真实检测器可有更多候选。
边界情况
- 输出空:照片仍可能有对象。降低阈值只能改变记录中已有候选的存活情况。
- 等于阈值:分数相等时失败,IoU 相等时不抑制,两处都是严格比较。
- 不同类:类别感知 NMS 不因跨类重叠抑制,可能保留同一区域的冲突标签。
- 相同框:同类、IoU 阈值小于一时低分框被抑制;阈值一时严格规则连完全相同框也保留。
- 同分:本课按源 ID 打破并列保证回放一致,其他实现或设备可能选择不同。
- 最大密度:分数 0.20、IoU 1.00 保留全部 31。列表最多显示活动候选附近六行,或最终前六行,并注明范围与总数;计算仍包含全部。
常见错误
- 把框数当物体数。一个对象可能多框,另一个可能无框,需与标注匹配。
- 把类别分数当定位质量。高分框也可能位置不准。
- 因同类就全删。两只猫需要两条记录,同类只是 NMS 比较条件。
- 期待 NMS 修正角点或平均 A、C;硬 NMS 只选已有框。
- 以为所有检测器都采用相同去重流程;这里限定为 SSDLite 与类别感知贪心 NMS。
模型范围与来源
一张照片、一个预训练检测器、分数大于 0.20 的记录。省略训练、特征细节、锚框回归运算、校准、跟踪、分割和数据集评估。模型离线运行,浏览器在未编辑的预测上重算两种阈值,重复比较按节奏分组。
两只交叉前腿坐着的猫由 Irshath 25 发布,许可为 CC0。生成程序和导出元数据保存图像、模型哈希与运行版本。可继续阅读图像分类与混淆矩阵,区分输入约定、预测和真实标签。