4. 算法性能评估指标体系
在 Teledyne 视觉算法从工作站迁移到边缘设备的过程中,最容易被忽视的不是模型能不能跑,而是“跑得够不够好、够不够稳、值不值得”。要回答这个问题,必须建立一套可量化、可复现、可横向对比的指标体系。本节围绕延迟、吞吐量、精度、功耗、内存占用、能效比六个基础指标,进一步展开端到端时延分解与基准测试设计,帮助你把“感觉很快”变成“数据可证”。
一、六个基础指标的定义与边界
延迟(Latency)指从输入数据可用到输出结果可用的时间,通常以毫秒计。它关注的是“单次任务多久完成”,对实时抓取、机器人避障、在线检测等场景至关重要。延迟必须明确起点和终点:是从图像采集完成开始,还是从算法函数被调用开始?不同定义会带来数倍差异。
吞吐量(Throughput)指单位时间内完成的推理任务数量,常用 FPS(帧/秒)或 inferences/s 表示。它关注的是“系统整体能处理多少”,适合产线批量检测、多路视频分析等场景。延迟低不等于吞吐量高,因为批处理会提高吞吐量但可能增加单帧延迟。
精度(Accuracy)在视觉任务中需具体化:分类看 Top-1/Top-5,检测看 mAP@0.5 或 mAP@0.5:0.95,分割看 mIoU,关键点看 PCK 或 NME。边缘部署常伴随量化、剪枝、算子替换,精度必须与浮点基线对比,记录绝对下降值和相对下降比例。
功耗(Power)指设备在运行算法时的平均功率,单位瓦特(W)。测量点通常在整机电源输入端,而非单芯片。需要区分空闲功耗、峰值功耗和典型工作功耗,因为边缘设备常受散热和供电限制。
内存占用(Memory Footprint)包括模型权重、运行时激活值、输入输出缓冲和框架开销。常用指标有峰值内存(Peak Memory)和常驻内存(RSS)。对 Teledyne 相机内嵌处理或 Jetson 类设备,内存往往是比算力更早触顶的瓶颈。
能效比(Energy Efficiency)通常表示为每瓦性能,如 FPS/W 或 inferences/J。它把吞吐量和功耗结合起来,是电池供电、太阳能供电或散热受限场景的核心选型依据。
二、端到端时延分解:找到真正的瓶颈
很多团队只测“推理时间”,却忽略了完整链路。一个典型的 Teledyne 视觉边缘处理链路可以分解为:传感器曝光与读出 → 图像传输(如 GigE Vision、USB3 Vision、MIPI)→ 预处理(去噪、白平衡、缩放、格式转换)→ 推理 → 后处理(NMS、解码、跟踪)→ 结果输出或执行机构响应。每一段都可能成为瓶颈。
建议用时间戳打点法逐段测量:在采集完成、传输完成、预处理完成、推理完成、后处理完成五个位置记录单调时钟时间,得到四段耗时。若推理只占 30%,而预处理占 45%,那么优化模型带来的收益非常有限,应优先优化色彩转换或缩放算子。
三、基准测试设计:让数据可复现
基准测试不是“跑一遍看看”,而是一套受控实验。建议固定以下条件:输入分辨率与像素格式(如 1920×1080 BayerRG8 或 1280×720 RGB)、批大小(batch size)、精度模式(FP32/FP16/INT8)、设备功耗模式(如 Jetson 的 15W/30W 模式)、环境温度与散热条件。每次测试前预热 50 次,避免冷启动和频率爬升带来的偏差。
统计时不要只报平均值。延迟分布往往有长尾,P95 和 P99 更能反映最差体验。建议同时记录:均值、P50、P95、P99、最大值、标准差。吞吐量测试则要区分“纯推理吞吐”和“含前后处理的端到端吞吐”,两者可能相差 30% 以上。
功耗测量建议使用可编程电源或功率计,采样率不低于 10 Hz,记录空闲、峰值和稳态三段。内存用 /usr/bin/time -v 或 tegrastats 观察峰值 RSS。精度评估必须在固定验证集上进行,量化前后使用同一套标注和同一评估脚本。
四、指标之间的权衡与选型
六个指标并非独立,而是相互拉扯。提高吞吐量常用批处理,但会增加延迟;降低功耗常需降频,会同时降低吞吐量并可能拉长延迟;INT8 量化能显著降低内存和延迟,但精度可能下降 1~3 个百分点。因此,选型时应先确定“硬约束”和“软目标”。例如,产线检测要求吞吐量 ≥ 60 FPS、延迟 ≤ 30 ms、mAP 下降 ≤ 1%,功耗 ≤ 15 W;在这些约束下再追求能效比最高。
五、一个可执行的基准测试记录表示例
下表给出一个可直接填写的基准测试记录表结构,字段均围绕本节指标设计,不含无关管理字段。
| 测试项 | 示例值(假设) | 测量方式 |
|---|---|---|
| 设备 / 功耗模式 | Jetson Orin NX 16GB / 15W | 设备铭牌与 nvpmodel |
| 输入规格 | 1920×1080 BayerRG8,batch=1 | 固定测试集 |
| 精度模式 | FP16 | TensorRT 引擎配置 |
| 延迟均值 / P95 / P99 | 22.4 ms / 26.1 ms / 31.8 ms | 时间戳打点,1000 次 |
| 吞吐量 | 44.6 FPS(端到端) | 总帧数 / 总耗时 |
| 精度(mAP@0.5) | 0.842(FP32 基线 0.851) | 固定验证集,同一评估脚本 |
| 功耗(空闲 / 稳态 / 峰值) | 4.2 W / 13.8 W / 16.5 W | 功率计,10 Hz 采样 |
| 峰值内存 / 常驻内存 | 1.9 GB / 1.2 GB | tegrastats 或 time -v |
| 能效比 | 3.23 FPS/W | 吞吐量 / 稳态功耗 |
需要强调,上表数值为教学示例,用于说明字段和量级,并非某次真实实测结果。实际项目中应以你自己的测量为准,并保留原始日志。只有把指标定义、测量条件、统计方法和记录格式统一起来,Teledyne 视觉算法在边缘设备上的性能评估才具备可比性和工程决策价值。