2. 目标检测基础
在把模型真正部署到旭日(Sunrise)边缘设备之前,必须先建立一套统一的“语言体系”。目标检测不是简单的图像分类,它要同时回答两个问题:图里有什么,以及它在哪里。本节围绕这一核心,梳理目标检测的基本概念、常见术语、评估指标与应用场景,为后续的模型转换、量化与板端推理打下基础。
一、核心原理:从“分类”到“定位+分类”
图像分类只输出一个类别概率,而目标检测的输出是一组边界框(Bounding Box),每个框附带类别标签和置信度。一个检测结果通常表示为:
[x_min, y_min, x_max, y_max, class_id, confidence]
# 例如: [34, 58, 210, 305, 0, 0.92] 表示“人”,置信度 0.92
主流检测器分为两大类:两阶段检测器(如 Faster R-CNN)先生成候选区域再分类回归,精度高但速度慢;单阶段检测器(如 YOLO、SSD、RetinaNet)直接在特征图上预测框和类别,速度快,更适合旭日这类算力受限的边缘平台。部署时通常选择 YOLO 系列,因为其结构规整、算子友好、易于量化。
二、常见术语:读懂模型输出与配置文件
- Anchor(锚框):预设的参考框,模型在其基础上预测偏移量。YOLOv5/v8 中通过聚类得到不同尺度的 anchor。
- Grid / Stride(网格与步长):特征图被划分为网格,每个网格负责预测中心落在其中的目标;stride 越大,感受野越大,适合大目标。
- NMS(非极大值抑制):去除同一目标的重复框,保留置信度最高的框。IoU 阈值是 NMS 的关键参数。
- Confidence Threshold(置信度阈值):过滤低置信度预测,部署时常用 0.25~0.5。
- Head(检测头):输出类别分数、框坐标和 objectness 的分支。
- Backbone / Neck:Backbone 提取特征(如 CSPDarknet),Neck 融合多尺度特征(如 PANet、FPN)。
三、评估指标:IoU、mAP 与 FPS
IoU(交并比)衡量预测框与真实框的重叠程度,是判断“检测是否正确”的基础:
IoU = 交集面积 / 并集面积
通常 IoU ≥ 0.5 视为命中(TP),否则为误检(FP)
Precision / Recall:Precision = TP / (TP + FP),Recall = TP / (TP + FN)。两者往往此消彼长,因此用 PR 曲线下的面积 AP(Average Precision) 综合衡量某一类别的检测质量。
mAP(mean Average Precision)是所有类别 AP 的平均值。常见变体:
- mAP@0.5:IoU 阈值为 0.5 时的 mAP,最常用。
- mAP@0.5:0.95:IoU 从 0.5 到 0.95 每隔 0.05 取一次,再平均,更严格,COCO 标准。
FPS(Frames Per Second)衡量推理速度,直接决定能否满足实时性。部署中还要区分:
- 纯推理 FPS:只统计模型前向耗时。
- 端到端 FPS:包含预处理、推理、NMS、后处理与画框。
四、指标关系与部署权衡(图解)
下图把“预测框—真实框—IoU—TP/FP—mAP”以及“推理耗时—FPS”两条链路放在一起,帮助理解评估指标是如何从原始输出一步步计算出来的。
五、应用场景与指标选择
不同场景对指标的敏感度完全不同。下表给出典型场景与推荐关注指标:
| 应用场景 | 典型目标 | 优先指标 | 部署要点 |
|---|---|---|---|
| 智能安防 | 人、车、头盔 | Recall 优先,mAP@0.5 | 漏检代价高,阈值偏低 |
| 工业质检 | 缺陷、划痕 | Precision 优先,mAP@0.5:0.95 | 误检成本高,需高 IoU |
| 自动驾驶 | 车辆、行人、车道 | mAP + 低延迟 | 端到端 FPS ≥ 30 |
| 零售客流 | 人、商品 | FPS 优先,mAP@0.5 | 多路视频,算力受限 |
| 无人机巡检 | 电力线、火点 | Recall + 功耗 | 小目标,需高分辨率输入 |
六、案例与复盘:一次“mAP 高但板端效果差”的排查
某项目在 PC 上测得 mAP@0.5 = 0.86,但部署到旭日 X3 后画面框抖动、漏检明显。复盘发现三个问题:
- 预处理不一致:训练用 letterbox,板端直接 resize,导致长宽比失真,IoU 下降。
- 量化精度损失:FP32 转 INT8 后,小目标置信度整体下降约 0.1,原阈值 0.5 过滤掉大量真实目标。
- NMS 在 CPU 上执行:后处理耗时占比过高,端到端 FPS 从 45 掉到 18。