3、目标检测基础:任务定义、常用数据集与评价指标

目标检测是计算机视觉中最核心的任务之一,也是TinyML在边缘设备上最具落地价值的应用方向。与图像分类不同,目标检测不仅要回答"图像中有什么",还要回答"这些物体在哪里"。在Ethos-U这类算力受限的MCU级NPU上部署目标检测模型,首先需要精确理解任务的定义边界、数据集的构成逻辑以及评价指标的数学含义。本节将系统梳理这三个基础模块,为后续的模型选型、量化和部署优化建立统一的评估坐标系。

目标检测基础三要素关系图 任务定义 • 输入:图像/视频帧 • 输出:类别 + 边界框 • 核心:定位 + 分类 • 难点:多目标、尺度变化 常用数据集 • COCO:80类,30万+图像 • VOC:20类,约1.1万图像 • 标注格式:XML/JSON • 类别平衡与场景覆盖 评价指标 • IoU:框重叠度 • Precision / Recall • mAP:综合精度 • FPS / 模型大小 TinyML部署约束(Ethos-U平台) • 算力:~0.5 TOPS • 内存:< 1MB SRAM • 功耗:mW级 数据准备 标注→增强→划分 模型训练 选择→训练→验证 部署评估 量化→编译→测试

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))。与图像分类(输出单一类别)和语义分割(逐像素分类)不同,目标检测需要同时解决"是什么"和"在哪里"两个子问题,且图像中目标数量不固定、尺度变化大、相互遮挡频繁。

核心原理:从数学角度看,目标检测是一个多任务联合优化问题。分类分支使用交叉熵损失(Cross-Entropy Loss)衡量类别预测误差,回归分支使用 Smooth L1 Loss 或 IoU Loss 衡量边界框位置误差。在TinyML场景下,由于Ethos-U的NPU仅支持定点运算,模型在训练时通常使用浮点精度,但在部署前需要转换为 int8 或 int16 量化格式,这会导致检测精度出现一定程度的下降(通常 mAP 下降 1-3% 属于可接受范围)。

目标检测的算法范式主要分为两阶段(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进行正式训练。

实战建议:当使用COCO预训练权重进行微调时,需要注意类别映射问题。例如,COCO中的"motorcycle"对应VOC中的"motorbike",但两者在标注边界上存在细微差异。在迁移学习时,建议冻结前几层特征提取网络,只微调检测头(Detection Head),这样可以减少对Ethos-U部署时量化误差的影响。

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 作为辅助指标。

常见误区:在TinyML部署中,很多开发者只关注 mAP 数值,却忽略了 模型大小与推理速度 的权衡。例如,一个 mAP 为 45% 的模型(如 YOLOv5s)在 Ethos-U55 上可能只能达到 5 FPS,而一个 mAP 为 38% 的轻量模型(如 YOLOv5n)可以达到 15 FPS。在实时检测场景中,后者可能更实用。因此,建议使用 效率指标(mAP / 推理时间) 来综合评估模型在边缘设备上的适用性。

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 的深层特征图对量化误差更敏感,而轻量模型的通道数较少,量化损失更小。

实际操作步骤:

  1. 使用 YOLOv8n 作为最终模型,在 COCO 预训练权重基础上,冻结 backbone 前 5 层,微调检测头 50 个 epoch。
  2. 采用 PTQ(Post-Training Quantization)进行 int8 量化,使用 500 张验证图像作为校准集,选择 MSE 作为量化误差度量。
  3. 在 Ethos-U55 上使用 Vela 编译器进行 NPU 编译,设置内存模式为 "Shared SRAM",优化策略为 "Performance"。
  4. 最终 int8 模型 mAP@0.5 = 81.2%,模型大小 0.5MB,推理速度 12 FPS,满足项目需求。

结果对比与复盘:最终方案相比初始方案,mAP 提升了 2.7%(从 78.5% 到 81.2%),模型大小减少了 58%,推理速度提升了 2 倍。复盘经验:在TinyML场景下,模型选择应优先考虑量化鲁棒性,而非单纯追求浮点精度。此外,校准集的选择对量化效果影响显著,建议使用与目标场景分布一致的图像进行校准。

3.5 常见误区与总结复盘

在目标检测基础概念的学习和应用中,以下误区需要特别注意:

误区一:混淆 mAP@0.5 与 mAP@[0.5:0.95]。mAP@0.5 只计算 IoU 阈值为 0.5 时的精度,对边界框定位精度要求较低;而 mAP@[0.5:0.95] 对定位精度要求更严格。在TinyML部署中,如果模型量化后 mAP@0.5 下降不明显但 mAP@[0.5:0.95] 下降显著,说明量化主要影响了边界框回归精度,此时应优先优化回归分支的量化策略。
误区二:忽视类别不平衡问题。COCO 数据集中,某些类别(如 "person")的实例数量远多于其他类别(如 "toothbrush")。在训练时,如果不对损失函数进行类别加权,模型会对高频类别过拟合,导致低频类别 AP 极低。在TinyML场景下,由于模型容量有限,这种不平衡问题会被放大。建议使用 Focal Loss 或类别重采样策略。
总结复盘:目标检测的基础三要素——任务定义、数据集、评价指标——构成了一个完整的闭环。任务定义决定了数据集的选取和标注方式,数据集的质量和分布直接影响模型的泛化能力,而评价指标则是衡量模型性能的统一语言。在Ethos-U部署场景中,还需要额外关注量化精度损失、内存占用和推理延迟这三个工程指标。建议在项目启动时,就明确设定 mAP、模型大小、FPS 三个核心 KPI,并在模型选型、训练、量化、编译的每个阶段持续跟踪这些指标,避免在最后部署阶段才发现精度或性能不达标。