3. 视觉推理基础

在旭日X5这类边缘智能平台上做视觉推理,第一步不是急着写代码,而是把“任务—流程—指标”这条主线理清楚。任务决定模型输出什么,流程决定数据如何从像素走到结果,指标决定这套系统在真实场景里是否可用。三者缺一不可,否则很容易出现“模型精度很高,但端侧跑不动”或“帧率达标,但漏检严重”的尴尬局面。

一、计算机视觉任务分类:先分清模型在“回答什么问题”

计算机视觉任务可以按输出粒度由粗到细排列。分类回答“这张图是什么”,检测回答“有什么、在哪里”,分割回答“每个像素属于谁”,关键点回答“结构在哪里”,而视觉推理则进一步回答“它们之间是什么关系、接下来会发生什么”。

  • 图像分类:输出单一或 Top-K 类别标签,如“猫/狗/缺陷/正常”,适合粗筛和状态判断。
  • 目标检测:输出边界框与类别,如 YOLO 系列,适合计数、定位、跟踪前置。
  • 语义分割:每个像素给类别,不区分同类个体,适合道路、可行驶区域。
  • 实例分割:像素级区分不同个体,适合堆叠物体、零件分拣。
  • 关键点/姿态:输出人体或物体的骨架点,适合行为分析、抓取位姿。
  • 视觉推理:在检测/分割基础上做关系判断,如“人是否佩戴安全帽”“零件是否装反”。

在旭日X5上,任务选择直接决定后处理复杂度。分类后处理最轻,检测需要 NMS,分割需要掩码还原,视觉推理往往还要叠加规则引擎或小模型。因此,能用分类解决的就不要上检测,能用检测解决的就不要上分割,这是端侧部署的重要原则。

二、深度学习推理流程:从像素到结果的完整链路

推理不是“模型前向一次”这么简单。在端侧,它是一条包含预处理、推理、后处理、业务逻辑的流水线。任何一环成为瓶颈,整体帧率都会下降。

输入图像(BGR/RGB)
  → 预处理:resize / letterbox / 归一化 / 排布转换(NCHW)
  → 模型推理:BPU/CPU/GPU 执行前向计算
  → 后处理:解码 / NMS / 阈值过滤 / 掩码还原
  → 业务逻辑:计数 / 跟踪 / 规则判断 / 报警
  → 输出:结构化结果(JSON) / 画面叠加 / 控制信号

其中预处理和后处理常被忽视。例如 YOLO 的 letterbox 若与训练时不一致,框会整体偏移;归一化均值方差写错,精度会明显下降。旭日X5的 BPU 对输入排布、量化类型有要求,通常需要把模型编译为 .bin 并在运行时做内存对齐。

建议把预处理和后处理都做成可配置参数,并与训练脚本保持一致。端侧调试时,先固定一张测试图,逐段打印中间结果,确认每一步都与 PC 端对齐。

三、模型部署关键指标:精度、速度、资源、稳定性

部署指标不是单一维度。只看 FPS 会忽略精度,只看 mAP 会忽略延迟和内存。下表给出端侧视觉推理最常用的四类指标。

指标类别典型指标含义与关注点
精度Top-1/Top-5、mAP@0.5、mIoU模型是否“答对”,需与业务阈值联合看
速度单帧延迟(ms)、FPS、端到端时延端到端包含预处理与后处理,不能只看推理
资源BPU占用率、内存峰值、功耗决定能否多路并行、是否过热降频
稳定性长时运行掉帧、内存泄漏、温度7×24 小时场景必须验证

实际项目中,常用“精度—速度”权衡曲线来选型:同一模型换输入分辨率、换量化精度,都会移动工作点。例如 640×640 换到 416×416,FPS 提升明显,但小目标 mAP 会下降。此时应结合业务最小可接受精度来定。

四、案例与场景:安全帽检测的端到端拆解

以工地安全帽检测为例。任务上属于“检测 + 视觉推理”:先检测人和安全帽,再判断“人头部是否佩戴安全帽”。流程如下:

  1. 摄像头取流,解码为 BGR 帧;
  2. letterbox 到 640×640,归一化并转为 NCHW;
  3. BPU 执行量化后的检测模型,输出多尺度特征;
  4. 后处理解码框、置信度过滤、NMS;
  5. 规则引擎:将安全帽框与人体头部区域做 IoU 匹配;
  6. 未匹配则判定“未佩戴”,触发报警并叠加画面。

这里的关键指标是:单路 1080p 解码 + 推理端到端延迟小于 80ms,mAP@0.5 不低于 0.85,BPU 占用低于 70%,连续运行 24 小时无内存增长。若只优化推理而忽略解码和后处理,端到端时延可能翻倍。

常见误区:把 PC 端 PyTorch 的 mAP 直接当作端侧精度。量化、输入尺寸、预处理差异都会造成精度损失,必须在旭日X5上重新评测。

五、复盘:把任务、流程、指标串成一条线

回到本节主线:任务分类决定模型输出形态,推理流程决定工程实现路径,部署指标决定方案是否落地。三者是递进关系,而不是并列知识点。建议在项目启动时先写一张“任务—流程—指标”对照卡:任务是什么、流程分几段、每段用什么指标验收。这样在后续模型转换、量化、多路并行时,才能快速定位问题出在哪一段。

视觉推理端到端链路与关键指标 任务分类 分类 / 检测 分割 / 关键点 视觉推理 决定输出形态 深度学习推理流程 预处理 BPU推理 后处理 业务 像素 → 张量 → 结果 → 决策 每段都可能成为瓶颈 部署关键指标 精度 mAP/mIoU 速度 延迟/FPS 资源 BPU/内存 稳定性 长时运行 案例:安全帽检测 取流解码 letterbox BPU检测 NMS解码 IoU匹配 报警 验收:端到端 <80ms,mAP@0.5 ≥ 0.85,BPU <70%,24h 无内存增长 复盘主线 任务 流程 指标 验收 任务决定输出,流程决定实现,指标决定落地; 三者对齐,端侧视觉推理才能稳定交付。

把这张图记在脑子里:左边是任务,中间是流程,右边是指标,下方是案例与复盘。后续无论是模型转换、量化调优还是多路并行,都可以回到这条主线上定位问题。视觉推理的“推理”二字,既指模型前向计算,也指工程上对任务、流程与指标的理性权衡。