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、后处理与画框。
常见误区:只看 mAP 不看 FPS,或只看 FPS 不看 mAP。边缘部署必须在“精度—速度—功耗”之间做权衡。旭日平台还要额外关注量化后的精度损失。

四、指标关系与部署权衡(图解)

下图把“预测框—真实框—IoU—TP/FP—mAP”以及“推理耗时—FPS”两条链路放在一起,帮助理解评估指标是如何从原始输出一步步计算出来的。

目标检测评估指标计算链路 精度链路 预测框 Pred (x,y,w,h,cls,conf) 真实框 GT (标注框) IoU 交并比 ≥ 0.5 ? TP / FP / FN 命中 / 误检 / 漏检 Precision, Recall AP → mAP mAP@0.5 mAP@0.5:0.95 速度链路 预处理 resize / 归一化 模型推理 BPU 前向 后处理 NMS / 解码 画框输出 显示 / 上报 FPS 1/总耗时 部署权衡: 提高置信度阈值 → FP 减少、Recall 下降;降低 IoU 阈值 → 更容易命中但框更松;量化加速 → FPS 上升、mAP 可能下降。

五、应用场景与指标选择

不同场景对指标的敏感度完全不同。下表给出典型场景与推荐关注指标:

应用场景 典型目标 优先指标 部署要点
智能安防 人、车、头盔 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 后画面框抖动、漏检明显。复盘发现三个问题:

  1. 预处理不一致:训练用 letterbox,板端直接 resize,导致长宽比失真,IoU 下降。
  2. 量化精度损失:FP32 转 INT8 后,小目标置信度整体下降约 0.1,原阈值 0.5 过滤掉大量真实目标。
  3. NMS 在 CPU 上执行:后处理耗时占比过高,端到端 FPS 从 45 掉到 18。
排查建议:先对齐预处理,再校准量化阈值,最后把 NMS 放到 BPU 或优化为向量化实现。指标要在“端到端”口径下复测,而不是只看纯推理 mAP。