返回 MLE 工程师 思维导图
中文·English
💻 MLE 工程师ID: mle-coding-nms-iou

手写目标检测 NMS 与 IoU 矩阵

Live Coding: NMS & IoU Matrix
🎯核心定义
手写目标检测非极大值抑制与 IoU 计算算子 (Live Coding: Non-Maximum Suppression & Intersection over Union in Pure Numpy) 是计算机视觉与多模态目标检测系统后处理阶段最核心的手撕代码题;包含两大部分:1) 向量化 IoU 计算:给定两组候选框 A,BRM×4A, B \in \mathbb{R}^{M \times 4}(坐标为 [x1,y1,x2,y2][x_1, y_1, x_2, y_2]),利用矩阵广播计算两两相交区域的左上与右下坐标 (xinter1=max(Ax1,Bx1),yinter1=max(Ay1,By1),)(x_{\text{inter1}} = \max(A_{x1}, B_{x1}), y_{\text{inter1}} = \max(A_{y1}, B_{y1}), \dots),进而计算 IoU=Intersection AreaAreaA+AreaBIntersection Area\text{IoU} = \frac{\text{Intersection Area}}{\text{Area}_A + \text{Area}_B - \text{Intersection Area}};2) NMS 贪心抑制过滤:按分类置信度得分降序排序所有框,每次挑选当前最高分框保留入输出集,并计算其与剩余所有框的 IoU,剔除所有 IoU>threshold\text{IoU} > \text{threshold} 的重叠冗余框,循环直至候选集为空。
💡使用场景
YOLO / Faster-RCNN / DETR 目标检测模型后处理、OCR 文本检测框去重、自动驾驶 3D Bounding Box 过滤。
解决的核心痛点
密集目标检测器在同一个真实目标周围会生成数十个高度重叠的高分候选边界框;NMS 在保留最高质量检测框的同时完全消除同目标冗余重复框。
🎯5 个高频面试考点 (Exam Points)
1
现场手写包含向量化广播计算的 `compute_iou(boxes1, boxes2)` 与标准 `nms(boxes, scores, iou_threshold)` Pure Numpy 代码?
2
边界框坐标边界处理:为什么在计算像素宽度与高度时需要加 1(即 w=x2x1+1w = x_2 - x_1 + 1)?在连续浮点坐标与离散像素坐标下的差异?
3
Soft-NMS (软 NMS) 算法的核心改进:为什么采用高斯连续衰减打分 si=sieiou2σs_i = s_i e^{-\frac{\text{iou}^2}{\sigma}} 替代粗暴直接删除框?
4
Batched NMS (多类别 NMS): 如何通过坐标偏移技巧(如给每个类别 ID 赋予巨大的坐标偏移 x=x+cls_id×4096x' = x + \text{cls\_id} \times 4096)在单次 NMS 调用中实现跨类别独立抑制?
5
从启发式 NMS 到端到端无 NMS 架构演进:DETR (基于双边匹配匈牙利算法 Hungarian Loss) 如何从根本上消除后处理 NMS?
📖 关联深度指南:📄 mle-coding-and-algo-prep
更新于 2026-08-14
🎯
检验攻克程度:针对「手写目标检测 NMS 与 IoU 矩阵」专属刷题排雷
做单选排雷题、推导选项机制,答错自动收录进专属错题本。
🚀 开始本考点专项刷题
上一个知识点手写 K-Means 向量化聚类迭代下一个知识点手写逻辑回归梯度下降与 L2

🔗 更多 MLE 工程师 知识点卡片

偏差-方差权衡与过拟合诊断常见损失函数选型与梯度特性优化器收敛性与动量选型准则模型集成 Stacking 与 Blending