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%,那么优化模型带来的收益非常有限,应优先优化色彩转换或缩放算子。

端到端时延分解与指标映射 时间 曝光与读出 t_sensor 图像传输 t_link 预处理 t_pre 推理 t_infer 后处理 t_post 输出 t_out 指标映射关系 延迟 Latency = t_sensor + t_link + t_pre + t_infer + t_post + t_out 吞吐量 Throughput ≈ 1 / max(各阶段瓶颈时间) 能效比 Efficiency = Throughput / Power 内存占用 峰值 + 常驻 瓶颈判断示例(假设数据,仅用于说明方法) 若 t_pre = 18 ms,t_infer = 12 ms,t_post = 6 ms,t_link = 4 ms,则预处理占端到端约 45%,优化模型收益有限,应优先优化预处理。 若 t_infer 占 70% 以上,则量化、算子融合、TensorRT/OpenVINO 加速收益最明显。 基准测试设计要素 固定输入分辨率与格式 · 预热 50 次 · 统计均值/P50/P95/P99 · 记录温度与频率 · 区分冷启动与稳态 · 重复 3 轮取中位数

三、基准测试设计:让数据可复现

基准测试不是“跑一遍看看”,而是一套受控实验。建议固定以下条件:输入分辨率与像素格式(如 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 视觉算法在边缘设备上的性能评估才具备可比性和工程决策价值。