自瞄教程
02 识别

模型评价、部署与 PnP 影响

从连续视频、角点误差和端到端延迟评价自瞄视觉模型。

训练完成不等于视觉模块完成。一个模型只有在目标硬件、真实预处理和完整后处理下稳定输出,并且让 PnP 得到足够准确的位姿,才真正进入了自瞄系统。相机、镜头、曝光和标定怎样共同决定角点上限,参见相机选型与观测精度;本节继续讨论怎样用下游结果评价模型和部署链路。

1. 评价指标要对应下游任务

检测指标

  • Precision:输出的目标中有多少是真的;
  • Recall:真实目标中有多少被找到;
  • mAP:在不同置信度与 IoU 条件下综合评价检测效果;
  • 单位时间误检数:连续运行一分钟或一局比赛会出现多少错误目标;
  • 距离分桶召回率:分别统计近、中、远距离目标。

关键点指标

  • 每个角点的平均与 95 分位像素误差;
  • 按角点语义分别统计误差,观察某个方向是否存在系统偏差;
  • 关键点在相邻帧中的抖动;
  • 角点交换、交叉和越界比例;
  • 重投影误差与 PnP 求解成功率。

实时性指标

  • 图像预处理、网络推理、后处理分别耗时;
  • 端到端平均延迟、95 分位延迟和最大延迟;
  • 连续运行吞吐率以及丢帧情况;
  • 输入时间戳到输出观测时间戳是否保持对应。

平均 5 ms、偶尔 40 ms 的系统,和每帧稳定 7 ms 的系统对预测器影响不同。因此延迟分布比单个平均 FPS 更有意义。

2. 角点误差怎样传到 PnP

PnP 使用四个二维角点恢复装甲板的旋转和平移。角点误差会同时影响距离、方向和装甲板朝向。

对于焦距约为 fx 的相机,水平方向一个像素的误差对应近似角误差:

Δθ ≈ Δu / fx

例如 fx = 1000 px 时,1 px 大约对应 1 mrad。距离越远,同样的角误差对应越大的横向位置误差。

如果用装甲板投影宽度粗略理解深度:

Z ≈ f · W / w

其中 W 是真实宽度,w 是图像中的像素宽度。对它求微分可以得到:

ΔZ / Z ≈ -Δw / w

当远距离装甲板在图像里只有几十个像素宽时,一两个像素的宽度误差会占据更大比例。因此远距离角点精度通常比近距离更敏感。

3. 随机抖动与系统偏差不是一回事

随机抖动

角点围绕真实位置随机变化,会让 PnP 位姿产生高频噪声。滤波器可以削弱一部分噪声,但会增加滞后,并且不能恢复已经丢失的几何信息。

系统偏差

如果网络总把发光区域的外边缘当成角点,而物理模型使用灯条中心线,角点会在所有帧中朝同一方向偏移。滤波器会把稳定偏差当成真实观测,最终形成稳定但错误的距离或朝向。

角点顺序错误

一旦左上、左下或左右两侧交换,PnP 的对应关系被破坏,结果可能瞬间翻转。后处理需要统一语义顺序,并对面积、凸性、边长和重投影误差进行检查。

4. 用 PnP 反过来评价模型

视觉模型应在像素空间和物理空间同时评价。可以建立以下验证闭环:

测试图像
  → 模型关键点
  → PnP 位姿
  → 与标注或模拟器真值比较
  → 按距离、角度、光照和运动状态分组统计

建议至少输出这些曲线:

  • 角点像素误差随目标距离变化;
  • 深度、横向位置和装甲板 yaw 误差随距离变化;
  • 识别召回率随装甲板像素宽度变化;
  • 运动速度或图像模糊程度与角点误差的关系;
  • 置信度与真实角点误差的关系。

如果高置信度样本仍有较大角点误差,说明模型置信度不能直接代表几何可靠性,需要重新设计训练目标、数据或下游观测噪声模型。

5. 部署阶段最常见的偏差

RGB 与 BGR

训练框架通常按 RGB 读取图像,OpenCV 默认是 BGR。颜色顺序错误时,网络仍能输出数值,但颜色分类和特征分布会明显变化。

letterbox 坐标没有正确还原

模型输入可能是等比例缩放后补边的 640 × 640 图像。输出关键点需要先去掉 padding,再除以缩放比例,最后加回 ROI 偏移。直接按原图宽高分别缩放会产生位置相关的系统误差。

归一化与张量排布不一致

检查输入范围是 [0, 1] 还是 [0, 255],排列是 NCHW 还是 NHWC,数据类型是 FP32、FP16 还是 INT8。

后处理协议不一致

不同 YOLO 版本的输出维度、是否内置 sigmoid、类别分数计算方式、关键点排列和 NMS 位置都可能不同。替换模型时必须同时更新后处理契约。

推理正确但时间戳丢失

异步流水线中,模型输出必须带回对应输入帧的时间戳。把最新云台姿态和几帧之前的图像结果直接组合,会产生难以通过视觉指标发现的动态偏差。

6. 建立错误样本闭环

每次测试不要只保存“识别成功”的截图。更有价值的是自动记录:

  • 漏检前后若干帧;
  • 持续误检和高置信度误检;
  • 角点突跳、交换或 PnP 重投影误差过大的样本;
  • 光照、距离、速度、地图和相机参数;
  • 模型版本、阈值和推理后端。

将错误样本重新标注并加入下一轮训练,才会形成真正的数据闭环。模拟器可以快速生成姿态和距离分布明确的样本,真实相机数据负责补充传感器噪声、曝光、镜头和场地差异。训练集需要同时保留两种来源,并在测试报告中分开统计。

7. 本章验收清单

  • 能解释传统灯条方案从二值化到配对的完整流程;
  • 能说明 YOLO 的 Backbone、Neck、Head 和 NMS 分别做什么;
  • 能为装甲板或能量机关定义固定的关键点语义;
  • 能训练、验证并导出一个关键点模型;
  • 能比较 PyTorch、ONNX 与目标推理后端的输出;
  • 能统计角点误差、误检、召回率和端到端延迟;
  • 能说明角点抖动、系统偏差和顺序错误对 PnP 的不同影响。

On this page