3、目标检测基础:任务定义、常用数据集与评价指标
目标检测是计算机视觉中最核心的任务之一,也是TinyML在边缘设备上最具落地价值的应用方向。与图像分类不同,目标检测不仅要回答"图像中有什么",还要回答"这些物体在哪里"。在Ethos-U这类算力受限的MCU级NPU上部署目标检测模型,首先需要精确理解任务的定义边界、数据集的构成逻辑以及评价指标的数学含义。本节将系统梳理这三个基础模块,为后续的模型选型、量化和部署优化建立统一的评估坐标系。
3.1 目标检测任务定义与问题建模
目标检测(Object Detection)的任务可以形式化描述为:给定一张输入图像 I,算法需要输出一组检测结果 D = {d₁, d₂, ..., dₙ},其中每个检测结果 dᵢ 包含两个核心信息:类别标签 cᵢ(来自预定义的类别集合 C)和边界框 bᵢ(通常表示为 (x_min, y_min, x_max, y_max) 或 (x_center, y_center, width, height))。与图像分类(输出单一类别)和语义分割(逐像素分类)不同,目标检测需要同时解决"是什么"和"在哪里"两个子问题,且图像中目标数量不固定、尺度变化大、相互遮挡频繁。
目标检测的算法范式主要分为两阶段(Two-stage)和单阶段(One-stage)两大类。两阶段方法(如 Faster R-CNN)先通过区域提议网络(RPN)生成候选框,再对候选框进行分类和回归,精度高但计算量大,不适合MCU级设备。单阶段方法(如 YOLO、SSD)直接在特征图上预测类别和边界框,速度快但精度略低。对于Ethos-U平台,单阶段轻量化模型(如 YOLOv5n、YOLOv8n、MobileNet-SSD)是主流选择,因为其参数量通常在 2-5M 之间,计算量在 1-5 GMACs 范围内,经过量化后可以满足 < 1MB SRAM 的部署约束。
3.2 常用数据集:COCO 与 VOC 的深度解析
数据集是目标检测模型训练的"教材",也是评估模型泛化能力的"考卷"。在TinyML领域,最常用的两个公开数据集是 Microsoft COCO(Common Objects in Context) 和 PASCAL VOC(Visual Object Classes)。理解这两个数据集的差异,对于模型选型和精度评估至关重要。
| 对比维度 | COCO(2017版) | PASCAL VOC(2012版) |
|---|---|---|
| 类别数量 | 80类(含person、car、dog等) | 20类(含aeroplane、bicycle等) |
| 图像数量 | 训练集118K,验证集5K | 训练验证集约11K |
| 实例数量 | 约150万个标注实例 | 约27,450个标注实例 |
| 标注格式 | JSON(COCO格式) | XML(VOC格式) |
| 小目标占比 | 约41%(面积<32²像素) | 较少,目标尺度偏大 |
| 评估指标 | mAP@[0.5:0.95](主指标) | mAP@0.5(主指标) |
| 适用场景 | 通用检测、小目标、复杂场景 | 基础检测、快速验证 |
在TinyML模型训练中,COCO数据集是更推荐的基准,原因有三:第一,COCO包含大量小目标,这与边缘设备在真实场景(如安防摄像头、工业质检)中遇到的情况更接近;第二,COCO的评估协议更严格(mAP@[0.5:0.95] 取多个IoU阈值的平均值),能更全面地反映模型性能;第三,COCO的80类覆盖了大多数实际应用场景。但COCO数据量较大,在资源受限的开发环境中,可以先使用VOC进行模型架构验证,再迁移到COCO进行正式训练。
3.3 评价指标:IoU、Precision/Recall 与 mAP
评价指标是衡量目标检测模型性能的"标尺"。在TinyML部署中,我们不仅关注精度指标,还需要综合考虑模型大小、推理速度和内存占用。以下从数学定义到工程实践,逐一解析核心指标。
3.3.1 IoU(Intersection over Union)
IoU 是衡量预测边界框与真实标注框重叠程度的指标,计算公式为:
IoU = Area(预测框 ∩ 真实框) / Area(预测框 ∪ 真实框)
IoU 的取值范围为 [0, 1],0 表示完全不重叠,1 表示完全重合。在目标检测中,通常设定一个阈值(如 0.5)来判断预测框是否为正确检测(True Positive)。在COCO评估协议中,会计算 IoU 从 0.5 到 0.95(步长 0.05)共 10 个阈值下的平均精度,这被称为 mAP@[0.5:0.95],是更严格的评估标准。
3.3.2 Precision 与 Recall
精确率(Precision)和召回率(Recall)是评估检测结果的两个基本维度:
- Precision = TP / (TP + FP):预测为正样本的实例中,实际为正样本的比例。高精确率意味着误检少。
- Recall = TP / (TP + FN):实际为正样本的实例中,被正确预测出来的比例。高召回率意味着漏检少。
在目标检测中,Precision 和 Recall 是一对矛盾指标。当检测阈值降低时,Recall 升高但 Precision 下降;反之亦然。因此,需要绘制 PR曲线(Precision-Recall Curve) 来综合评估模型性能,而 AP(Average Precision) 就是 PR 曲线下的面积。
3.3.3 mAP(mean Average Precision)
mAP 是所有类别 AP 的平均值。对于每个类别,先计算该类别在不同置信度阈值下的 Precision-Recall 曲线,然后计算曲线下面积得到 AP,最后对所有类别的 AP 取平均得到 mAP。在COCO评估中,mAP@[0.5:0.95] 是主指标,mAP@0.5 和 mAP@0.75 作为辅助指标。
3.4 案例拆解:基于COCO的轻量检测模型评估流程
为了将上述概念串联起来,我们以一个实际的TinyML项目为例,展示如何利用COCO数据集和mAP指标进行模型选型与评估。
项目背景:某工业视觉项目需要在 Ethos-U55 上部署一个安全帽佩戴检测模型,要求检测精度 mAP@0.5 ≥ 80%,推理速度 ≥ 10 FPS,模型大小 ≤ 500KB(int8量化后)。
初始现象与目标:团队最初选择了 YOLOv5s 作为基线模型,在 COCO 上预训练后微调。浮点模型在验证集上达到 mAP@0.5 = 86.2%,但 int8 量化后 mAP 降至 78.5%,且模型大小为 1.2MB,超出限制。
关键数据与分析:
模型 | 浮点mAP@0.5 | int8 mAP@0.5 | 模型大小 | 推理时间(FPS)
YOLOv5s | 86.2% | 78.5% | 1.2MB | 6 FPS
YOLOv5n | 82.1% | 80.3% | 0.4MB | 14 FPS
YOLOv8n | 83.5% | 81.2% | 0.5MB | 12 FPS
分析判断过程:YOLOv5s 虽然浮点精度最高,但量化后精度下降明显(7.7%),且模型大小和推理速度均不达标。YOLOv5n 和 YOLOv8n 在量化后精度下降较小(1.8% 和 2.3%),且满足大小和速度要求。进一步分析发现,YOLOv5s 的深层特征图对量化误差更敏感,而轻量模型的通道数较少,量化损失更小。
实际操作步骤:
- 使用 YOLOv8n 作为最终模型,在 COCO 预训练权重基础上,冻结 backbone 前 5 层,微调检测头 50 个 epoch。
- 采用 PTQ(Post-Training Quantization)进行 int8 量化,使用 500 张验证图像作为校准集,选择 MSE 作为量化误差度量。
- 在 Ethos-U55 上使用 Vela 编译器进行 NPU 编译,设置内存模式为 "Shared SRAM",优化策略为 "Performance"。
- 最终 int8 模型 mAP@0.5 = 81.2%,模型大小 0.5MB,推理速度 12 FPS,满足项目需求。
结果对比与复盘:最终方案相比初始方案,mAP 提升了 2.7%(从 78.5% 到 81.2%),模型大小减少了 58%,推理速度提升了 2 倍。复盘经验:在TinyML场景下,模型选择应优先考虑量化鲁棒性,而非单纯追求浮点精度。此外,校准集的选择对量化效果影响显著,建议使用与目标场景分布一致的图像进行校准。
3.5 常见误区与总结复盘
在目标检测基础概念的学习和应用中,以下误区需要特别注意: