20一致性与传播

有了身份之后,接下来要解决的是怎么少标一点,以及少标之后怎么保证不歪。 这一页讲三件事:一致性到底指什么、关键帧该放在哪、以及为什么有些量根本测不出来。

准与稳是两根轴 关键帧选在哪 没激励就测不出来

一、准和稳是两根轴

一批标注,每帧的框和点云误差都在正负 2 厘米以内。
质检通过了。交付。
下游用相邻两帧的位置差估速度,结果曲线剧烈抖动,不能用。

为什么 2 厘米这么小的误差会让速度不能用?算一下。

30 帧每秒,时间间隔约 0.033 秒
速度误差 ≈ 位置误差 ÷ 时间间隔
         = 0.02 ÷ 0.033
         ≈ 0.6 米每秒

两帧都带独立误差时还要乘 1.41,约 0.85 米每秒。
而一辆车正常开是 10 米每秒。

将近一成,而且逐帧乱跳。

关键在于差分这一步

速度是位置的变化率。位置有噪声,变化率就有噪声,而且被"除以一个很小的数"放大了三十倍。

差分本质上就是放大噪声。

但同样的 2 厘米,结果可以完全不同

两帧的误差关系差分之后
各自独立,随机跳不抵消,还要乘 1.41,速度误差 0.85 米每秒
完全一致,同一个偏差✅ 完全抵消,等于 0
一致时:  (p₂ + e) − (p₁ + e) = p₂ − p₁      e 消掉了
独立时:  (p₂ + e₂) − (p₁ + e₁)              e 消不掉
所以一致性的数学本质是

误差在时间上有没有相关性。

相关的,差分时自动抵消。独立的,差分时被放大三十倍。

这和"准不准"是两根独立的轴:可以让每一帧都准,但误差帧帧在跳。

顺带一个结论

真实系统不会拿相邻帧直接差分,那正是噪声被放大的根源。 它们用滤波器或者平滑拟合,本质上就是在利用时间相关性把噪声压掉。

二、传播:从已有标注算到没有标注的帧

把一帧的标"搬"到另一帧上。它其实搬两样东西:

搬什么说明
身份这一帧的框和上一帧的框是同一个物体
状态位置、朝向、尺寸,按运动模型算出来

而"往前推"有两种做法,它们的失效方式完全相反:

做法误差平滑吗
链式,每帧从前一帧推❌ 会累积,越走越歪✅ 天然连续
锚定,每帧从关键帧算✅ 不累积✅ 也连续,但会系统性偏离
逐帧独立检测✅ 不累积❌ 会抖
所以真实做法是分段锚定
关键帧 ×─────────×─────────×─────────×
          \       / \       / \       /
           \     /   \     /   \     /     窗口内部用平滑传播
            \   /     \   /     \   /
             ─         ─         ─         但每个窗口的起点钉在关键帧上

窗口内部拿到"稳",每个窗口的起点锚住拿到"不累积"。代价是关键帧之间仍然会漂, 但漂不出这个窗口。

三、关键帧该放在哪

最自然的做法是均匀撒。这是错的,而且错得很具体。

外推用的是匀速直线,它假设速度恒定。所以模型失效的条件是速度变了, 也就是加速度不为零。

误差大约等于 ½ · a · t²

要让它小于阈值,时间跨度必须小于 √(2ε/a)
所以关键帧的间隔正比于 1 除以 √a
加速度越大,间隔要越短

匀速段理论上可以放很长,弯道上要密集。

而均匀采样正好做反了:直线段浪费了关键帧,弯道段不够用。

而且必须按向量算

一辆车匀速转弯时,速度的大小完全不变,但速度的方向一直在变, 所以加速度不为零。

只盯"速度大小有没有变"  →  会以为弯道没问题  →  把关键帧全撒在直道上
而"匀速直线"外推一个弯道,会直接飞出路面

车速 10 米每秒、半径 10 米、外推 0.33 秒  →  偏离约 0.54 米

同样长度的一段路,如果是直的,外推误差接近零。

还有一类地方要加密:观测变差的地方

运动学之外,还有观测。遮挡开始和结束、点云突然变稀、雨雾, 这些时候外推没有东西纠正,会漂。

所以"变化点"应该扩展成"不确定度大的地方",两类都算。

四、回退:单位是段,不是帧

关键帧每 30 帧一个,算法在第 15 帧错了。人发现了,怎么修?
不能只改那一帧的框

改完之后,它和邻居不连续了。你修好了一个错误,又制造了一个一致性问题。 速度曲线会在那一帧上戳出一个尖刺。

正确做法是切断加重传:在出错那一帧切断,以修正结果为新起点,重传到这个窗口的右边界。

而设计上最关键的一点是:切断点必须能随便选。 如果切断只能发生在原有关键帧上,修第 15 帧就得整段重来。

所以回退的最小单位是"段",不是"帧",也不是"到结尾"。

五、可观测性:没被激励的量,测不出来

一个团队用高速公路直道的数据测了一下角速度估计:
误差 0.001 弧度每秒,看起来非常好。于是报结论:角速度估计达标。
这个结论没有信息量

直道上真实角速度恒等于零。任何估计器,只要输出接近零就能拿到这个分数, 包括"永远输出零"这个算法。

这段数据对"会不会估角速度"完全没有区分度。

数据被激励的量测不出来的
高速公路直道位置、速度角速度
匀速位置、速度加速度
静止位置速度,而且和标定偏差混在一起
正对视角位置、尺寸朝向
一般规律

要检验某个量能不能被估出来,数据里必须让那个量真的变过。

否则你测的只是"常数能不能输出常数"。而这类指标看起来最漂亮,因为误差往往接近零。

这条和标定那边是同一个病:用只覆盖画面中心的标定板去验标定, 边缘的误差永远测不出来。测试数据的分布,没有覆盖你要检验的那个维度。

六、这一页带走什么

准和稳是两根轴。位置准不代表速度准,因为差分会把独立的噪声放大三十倍。

传播要分段锚定。关键帧放在加速度大的地方,间隔正比于 1 除以根号 a。

回退的单位是段。而且要记住:没被激励的量测不出来,这类指标误差往往最漂亮。

← 上一页:4D 的定义 ·  下一页:插值 →
京ICP备19013239号