自瞄教程
04 跟踪与预测

研究方向二:从角点误差改进 PnP 观测

用同曝光角点真值、逐级恢复消融、同射线距离修正和装甲板内部结构,研究二维观测怎样影响三维位置与未来预测。

方向一固定观测,研究怎样改进状态估计;这一页沿数据流向前走,研究怎样向状态估计器提供更好的观测。

图像 → 四个角点 → PnP → 三维装甲板观测 → 跟踪器 → 未来装甲板位置
        ↑          ↑
     角点修正    像素重投影观测

本页先回答四个能够直接测量的问题:检测角点偏离了多少;角点恢复到不同精度时,PnP 能改善多少;学习方法应该优化像素误差,还是直接优化 PnP 后的位姿误差;装甲板内部的数字结构还能提供多少独立信息。最后再讨论吉林大学把四角点 u/v 直接接入时序优化的方案。

实验阶梯

角点恢复消融使用相同曝光、相同四点顺序、相同 135 × 55 mm 小装甲板模板、相同相机内参和相同 IPPE 选解。学习式实验固定检测器输出,保留同济 IPPE 的观察方向,只学习沿射线的距离比例。这样可以逐级改变一项输入:

级别交给 PnP 或跟踪器的观测回答的问题
A检测角点 → 当前 IPPE → 固定 11 维 EKF完整生产基线有多大误差
B恢复 25% / 50% / 75% / 100% 的角点 → 同一 IPPE角点精度与 PnP 精度之间是什么关系
C1当前目标图像 → 连续距离修正 → 保留同济 IPPE 观察方向网络能否从当前图像恢复有用的距离信息
C2更宽的当前图像+数字内部结构监督 → 第二次距离修正装甲板内部图案能否补充四角点没有表达的信息
D当前 PnP + 离线物理装甲板槽位 → 固定 EKF在线关联贡献了多少误差
E同曝光真值装甲板位置 → 固定 EKF观测接近理想时,当前状态模型还能做到多好

本页完成 A、B、C1 与 C2。C1 已在四种运动工况的 2139 个新曝光上复验;C2 又在两套相互独立的新采集中复验,并接入同济 11 维状态方程进行共同关联回放。D、E 继续分离关联误差与状态模型误差。

先测量角点偏移

实验保存每次曝光对应的检测角点和几何真值角点。第 i 个角点的二维误差为:

eᵢ = qᵢ,detector - qᵢ,exact

单帧角点 RMS = sqrt((1/8) Σᵢ(eᵢ,u² + eᵢ,v²))

本次数据包含 387 个匀速运动片段内的有效样本:平移 159 个、原地旋转 117 个、平移与旋转同时发生 111 个。真值与图像共享同一个曝光身份,评分时不需要在相邻帧之间寻找近似对应。

三组运动下的同曝光角点误差与局部图像示例

先看图中的两种条形:蓝色表示一个典型帧——把所有样本按误差从小到大排列,它位于正中间;橙色表示较差帧的范围——假设有 100 帧,大约 95 帧不会超过橙色条,仍可能有约 5 帧更差。它们分别对应后文使用的 P50 和 P95。

上图可以分成两层阅读:

  • A、B 是以检测框为中心生成的局部透视图。蓝色四边形是检测器输出,橙色四边形是真值。普通帧仍能看到四点形状上的偏差;较差帧中,真实装甲板已经有很大一部分落在局部图像之外,此时只看这张局部图的二级网络无法获得完整目标纹理。
  • C 中四根蓝条都接近 3 px,说明普通帧的四个角点精度相近;橙条达到 24.20–32.75 px,说明少数较差帧会偏得很远,其中右上与右下更明显。
  • D 中平移的蓝条和橙条只有 1.82/3.23 px;原地旋转变成 6.18/20.88 px;平移与旋转同时发生时为 2.36/21.43 px。这并不是说旋转时每一帧都很差,而是旋转工况更容易出现少数大误差帧。

这些数值不仅说明“平均偏了几个像素”。它们还区分了两类样本:多数帧是可以局部微调的小偏差,尾部帧则可能同时包含可见性下降、局部裁剪失配和错误几何形状,需要检测器或更大视野的模型重新判断。

恢复多少角点,PnP 会改善多少

为了只测角点误差的贡献,我们不更换 PnP,而是在检测角点与真值角点之间做插值:

qᵢ(α) = qᵢ,detector + α (qᵢ,exact - qᵢ,detector)

α = 0 是原检测角点,α = 1 是真值角点。中间的 0.25 / 0.50 / 0.75 分别表示恢复了四分之一、一半和四分之三的角点偏差。每一级都重新运行同一个 OpenCV IPPE,并用同曝光相机坐标系真值计算误差。

不同角点恢复比例下的 PnP 误差

角点恢复比例角点 RMS P95三维位置 P95深度 P95射线方向 P95
0%19.86 px772.1 mm760.7 mm33.73 mrad
25%14.89 px586.6 mm580.8 mm25.25 mrad
50%9.93 px389.4 mm386.3 mm16.78 mrad
75%4.96 px199.7 mm196.2 mm8.43 mrad
100%0≈ 0 mm≈ 0 mm≈ 0 mrad

这条曲线给出了三点直接结论:

  1. 角点恢复确实会连续改善 PnP,而不是只有“完全正确”才有用。恢复 25% 的角点偏差,三维位置误差 P95 已从 772.1 mm 降到 586.6 mm。
  2. 三维位置误差几乎与深度误差重合。当前角点形状更容易把装甲板算近或算远,水平方向的瞄准射线受到的影响相对较小。
  3. 恢复 75% 后,尾部仍有约 200 mm 的三维位置误差。对于宽 135 mm、高 55 mm 的小装甲板,仅提高一部分角点精度还不足以让所有尾部样本落入可击打窗口。

100% 档使用与 PnP 模板一致的精确投影,因此闭合到数值精度。它验证了这组数据中从角点进入 IPPE 的几何链,也给出了“二维观测正确时”这一段的上限。

我们尝试过哪些角点与 PnP 修正

局部几何细化

传统做法是在检测角点附近寻找更清晰的边缘、灯条端点或亚像素极值。这类方法计算量小,适合修正 A 图所示的局部小偏差;它看不到 B 图中已经落出局部区域的目标,也无法重新判断装甲板身份。

早期 4,280 组角点记录中,局部细化让 52.1% 的样本更接近真值,让 36.7% 的样本变差。原始角点的逐角 P95 为 3.09–3.47 px,细化后变为 4.21–4.59 px。因此细化结果需要由几何质量或可见性判断控制,而不适合对每一帧无条件替换。

只学习像素残差:第一次网络实验失败

第一个学习方案把局部 RGB 图像、检测角点和几何特征输入小型网络,直接预测四角点残差;训练目标主要是让预测角点接近真值角点。跨采集测试中,最佳候选的总体角点 RMS 只改善 2.55%。在旋转和平移旋转工况,PnP 横向误差 P95 反而从 11.06 / 13.82 mm 增加到 25.48 / 38.06 mm。

原因可以从 PnP 的输入看出来:四个角点不是八个彼此等价的数。短边高度、左右边长度比和透视形变对深度特别敏感。一个网络即使降低了平均像素距离,也可能轻微改变装甲板宽高和面积,从而放大 PnP 深度误差。

第一版:从可微 PnP 的启发到同射线距离修正

BPnP展示了怎样让梯度穿过 PnP 优化器;EPro-PnP进一步把位姿写成概率分布,并联合学习带权二维—三维对应。这些方法给我们的直接启发是:训练目标应当评价最终几何量,而不是把八个角点坐标当成彼此等价的像素回归任务。

前面的恢复消融还显示,当前三维位置误差几乎与深度误差重合,而同济 IPPE 给出的观察方向相对稳定。因此,第一版有效方案没有继续枚举多组 PnP 姿态,而是把可靠的方向与不稳定的距离分开:保留同济 IPPE 的相机射线,只学习目标沿这条射线应该位于多远。

同济 IPPE:t₀ = [x₀, y₀, z₀]

网络输入:当前帧 64 × 128 目标图像
        + 检测器、四角点、相机内参与 IPPE 的 27 项几何量

训练目标:ℓ* = log(z真值 / z₀)
网络输出:ℓ̂

s = exp(ℓ̂)
t修正 = s · t₀

27 项几何量包含检测器输出特征、归一化后的八个角点坐标、IPPE 的两个观察方向分量与对数深度,以及目标在图像中的尺度。训练损失同时照顾普通样本和误差最大的五分之一;在线推理只读取当前帧,不使用历史状态,也不读取真值。距离比例被限制在约 0.70–1.49,数值异常时回到原始 IPPE。

这个方法与可微 PnP 角点网络的区别在于:可微 PnP 通过角点把三维损失传回图像网络;同射线距离修正直接学习 IPPE 的深度比例残差。它不能改变观察方向或装甲板朝向,但更集中地处理了这组数据中最大的误差来源。

第一版在新曝光上的 PnP 结果

训练数据包含 7550 个曝光、32 个完整片段,每种运动工况各 8 段。整段交叉留出回放中,同帧方案的三维位置与深度 P95 分别改善 61.59% 和 62.09%;最弱工况也分别改善 60.90% 和 60.96%。带历史的候选没有带来足以抵消复杂度的优势,因此最终采用同帧方案。

独立复验使用 Daedalus 1.4.0-learning-r1 的 Release 高性能无前端模式,保持 CUDA YOLO 与同济 IPPE 不变。八个全新片段共得到 2139 个有效曝光:静止 716 个、匀速平移 500 个、原地旋转 471 个、平移与旋转同时发生 452 个。两路方法逐帧共享同一个检测结果,真值只用于最后评分。

同济 IPPE 与同射线距离修正在新曝光上的三维位置误差对比

指标同济 IPPE同射线距离修正变化
三维位置 P50299.2 mm73.3 mm下降 75.5%
三维位置 P95964.5 mm315.1 mm下降 67.34%
深度误差 P50299.0 mm65.7 mm下降 78.0%
深度误差 P95962.5 mm312.4 mm下降 67.54%
精确方向夹角 P501.277 mrad1.277 mrad不变
精确方向夹角 P9518.699 mrad18.699 mrad不变

四种工况的三维位置 P95 都下降了一半以上:静止 52.61%、匀速平移 67.17%、原地旋转 63.52%、平移与旋转同时发生 72.93%。修正前后的 x/z、y/z 保持一致,所以精确方向夹角逐帧相同;这组约 67% 的收益来自距离估计,而不是旋转了瞄准射线。

第二版:让网络观察装甲板内部的数字结构

四个外角只能描述装甲板的外轮廓;装甲板内部的数字笔画还包含透视缩短、局部形变和可见范围等线索。最新方案先把编号 3 周围更宽的当前帧区域缩放成 192 × 96 灰度图,再用预训练的 SuperPoint 编码器提取特征。训练阶段在数字笔画上标注 16 个结构点,使共享编码器学会关注稳定的内部位置关系;在线主输出仍然只是一个距离残差:

基础距离修正:t₁

宽视野当前帧 ──→ 共享图像特征 ──┬─→ 16 个数字结构点(训练监督)
基础方案的同帧量 ───────────────┘
                                  └─→ Δℓ(第二次对数距离修正)

t₂ = exp(Δℓ) · t₁

数字结构点不直接作为额外 PnP 点。单独用这些点解 PnP 时,少数关键点的大误差会产生更长的深度尾部;把它们作为辅助监督,则可以让图像特征学到四角之外的信息,再由距离分支决定应该把装甲板沿原射线前移还是后移。

训练采用按完整片段隔离的四折模型,再把四个教师的距离输出蒸馏到一个单模型。蒸馏只使用原来的 32 个开发片段;两套新采集都在模型输出冻结后才读取同曝光真值评分。在线仍只读取当前帧,不需要历史运动状态。

两套新采集都复现了提升

两套新采集都包含匀速平移、原地旋转以及平移与旋转同时发生。下表只汇总运动样本,并在同一行内比较相同曝光:

新采集指标 P95同济 IPPE基础距离修正数字结构辅助修正相对同济相对基础修正
第一套,1267 帧三维位置1140.3 mm353.2 mm199.3 mm下降 82.52%再下降 43.58%
第一套,1267 帧深度1140.1 mm351.3 mm182.1 mm下降 84.03%再下降 48.16%
第二套,958 帧三维位置999.0 mm358.8 mm207.7 mm下降 79.21%再下降 42.12%
第二套,958 帧深度997.7 mm354.5 mm197.1 mm下降 80.24%再下降 44.40%

第一套新采集的三维位置和深度 P95 都越过了 80%;第二套新采集得到接近相同的误差量级,其中深度仍超过 80%。在第二套数据的三个运动模式中,新方案相对基础修正的三维位置 P95 分别再下降 38.07%、41.37% 和 36.19%。

不只改善了 P95

三种方法在第二套新采集上的误差分布与阈值覆盖率

在第二套新采集的 958 个运动样本中,三维位置误差的平均值、中位数、P75、P90 和 P95 相对同济分别下降 80.58%、81.20%、82.00%、80.24% 和 79.21%;P99 也下降 74.98%。换一种更直观的读法:要求误差不超过 200 mm 时,同济 IPPE 覆盖 26.83% 的帧,基础距离修正覆盖 73.59%,数字结构辅助修正覆盖 94.15%。

逐帧配对时,新方案在 90.50% 的帧中优于同济,在 75.89% 的帧中优于基础距离修正。因此,这里的“约 80%”描述的是整组误差尺度相对同济的收缩,并不是每一帧都按同一个比例变化。

三种方法与同曝光真值的相机俯视位置

俯视图横轴是相机右方,纵轴是相机前方,每种运动展示一段完整新采集。灰色同济点在前向距离上形成较大的偏移;蓝色基础修正已经把点云拉向黑色真值点;橙色新方案继续收紧距离。三种方法的精确射线方向 P95 都是 20.84 mrad,因为两次修正都沿同一条相机射线缩放。

观测改善怎样传入 11 维 EKF

第一版的高帧率在线 A/B 让一个检测结果同时进入两个参数相同、状态彼此独立的 11 维 EKF:一路使用原始同济 IPPE,一路使用基础距离修正。11200 个稳定阶段状态记录的结果如下:

当前状态的 P95 误差同济 IPPE+EKF距离修正+EKF变化
整车中心三维位置0.834 m0.295 m下降 64.58%
整车中心水平位置0.832 m0.286 m下降 65.57%
整车中心距离0.828 m0.282 m下降 65.93%
整车中心竖直位置0.074 m0.084 m增加 13.11%
三维速度0.925 m/s0.769 m/s下降 16.83%
角速度2.000 rad/s1.882 rad/s下降 5.91%

基础距离收益已经明显进入整车中心的位置估计,但没有等比例进入速度与角速度。分工况看,平移和复合运动的中心三维位置 P95 分别下降 59.77% 和 73.70%,原地旋转下降 17.69%;静止工况则从 0.127 m 增加到 0.184 m。跟踪覆盖率从 99.19% 变为 97.76%。

数字结构辅助修正随后进入锁定的同济 11 维状态方程。两路复用同济在线选出的同一个关联编号,因此下面的差异来自观测值而不是切换到了不同装甲板。第二套新采集的共同运动帧结果为:

装甲板位置 P95基础距离修正+11 维跟踪数字结构辅助修正+11 维跟踪变化
当前时刻225.0 mm207.2 mm下降 7.88%
未来 100 ms268.1 mm237.7 mm下降 11.34%
未来 200 ms351.5 mm321.2 mm下降 8.64%
未来 300 ms442.8 mm427.6 mm下降 3.44%

第一套新采集中的对应改善为 17.29% / 19.73% / 7.12% / 1.07%。两套结果都显示出同一条趋势:最新方案把单帧 PnP 误差相对同济压低约 80%,但进入 11 维跟踪后,相对基础修正的新增收益会随预测时域逐步减小。第二套数据的速度 P95 从 0.604 m/s 降到 0.547 m/s,角速度 P95 则保持在约 4.06 rad/s。

这组共同关联回放的源更新频率约为 10 Hz,用于观察现有状态方程怎样吸收更准确的单帧位置。下一轮高帧率实验将继续补齐 100 / 200 / 300 / 500 ms 的法向、径向、切向和竖直误差,把观测收益与最终击打窗口直接连接起来。

在线 A/B 的双分支完整算法路径平均耗时 3.689 ms,P95 为 5.284 ms;四段运行的平均处理速度约 190.25 FPS。这包含共享检测器、两路 PnP 和两个 EKF,用于说明实验链路能够实时运行。

稠密对应与概率 PnP

PVNet让目标像素投票得到关键点位置和不确定度,EPro-PnP 则允许网络学习带权二维—三维对应。它们提示了下一步:不要只输出四个确定角点,还可以输出多组独立对应和每组可信度,让 PnP 降低遮挡区域与模糊灯条的权重。

我们已经验证了一条重要边界:如果“稠密点”只是由现有四角点的同一个单应变换采样出来,它们仍然只包含原四边形的八个投影自由度,并没有增加新的图像证据。有效的稠密方案需要从 RGB 特征独立预测对应与不确定度,而不是把四角点机械复制成更多点。

吉林大学方案:把角点 u/v 直接写入时序优化

另一条思路是不把单帧 PnP 的 tvec 当成已经完成的三维观测。吉林大学 TARS Go 的开源实现为每块装甲板建立四个像素重投影因子,每个角点直接提供一对图像坐标 (uᵢ, vᵢ):

当前链路:四角点 → 单帧 IPPE → tvec → 11 维 EKF

像素因子图:
四角点 (uᵢ, vᵢ) ───────┐
装甲板尺寸、K、D ────────┼→ 重投影因子图 → 整车中心、速度、yaw、角速度、半径
相邻帧运动与刚体约束 ────┘
PnP 位姿 ─────────────────→ 优化初值

给定图中的当前整车状态,先计算第 i 个三维装甲板角点在相机中的预测像素 (ûᵢ, v̂ᵢ),观测残差直接写成:

rᵢ = [ûᵢ - uᵢ, v̂ᵢ - vᵢ]

四个角点形成八维像素残差。因子图再把同一装甲板位姿连接到车辆中心、半径和 yaw,并用相邻帧的平移、旋转、速度一致性约束连接整段轨迹。运动先验因此可以在像素域直接约束当前位姿,而不是等 PnP 先把角点误差放大成深度跳变后再滤波。

这一结构与 11 维 EKF 的区别不只是把观测变量从 x/y/z 改名成 u/v:

对比项单帧 PnP + 11 维 EKF像素重投影因子图
进入时序估计的观测PnP 三维位置与 yaw四角点的八个 u/v 像素残差
PnP 的角色生成每帧正式观测提供非线性优化初值
运动约束作用的位置PnP 之后的状态更新与像素重投影同时优化
噪声定义三维位置与 yaw 协方差水平、竖直像素误差及整车几何因子
深度怎样得到单帧平面几何直接解算尺寸、透视、跨帧运动与整车结构共同约束

它把角点、PnP 和跟踪合成了一个联合优化问题,适合处理“像素误差小、深度误差大”的观测结构。同时也需要可靠初值、稳定的雅可比和清楚的因子权重;公开实现的说明中提到位置与转速拟合较稳,而半径仍较难调好。

吉林大学项目的整车状态观测器说明和单角点重投影因子实现给出了完整的数据流。

接下来怎样比较这些方案

下一组实验继续使用统一的未来位置评价:

  1. 将原始、25% / 50% / 75% / 100% 恢复角点逐帧通过 IPPE 和固定 11 维 EKF;
  2. 加入基础距离修正与数字结构辅助修正,保持曝光、关联和滤波器完全相同;
  3. 分别绘制 100 / 200 / 300 / 500 ms 的法向/径向、切向、竖直和三维未来位置误差;
  4. 用 135 × 55 mm 小装甲板窗口计算预测点覆盖率;
  5. 将像素重投影因子图作为完整链路候选,在同一曝光和同一未来真值上评分。

这套顺序会把“角点更准”转成两个可比较的量:它让 PnP 观测改善了多少,以及这些改善最终有多少进入了未来装甲板位置。

本页使用的消融脚本、新曝光汇总、中文图表数据与机器可读结果一并保存在教程工程的 experiments/observation-quality 目录中。

On this page