17下游与导出

同一批标注,两类消费方要的东西完全不一样。这一页先讲它们怕的东西为什么相反, 再看导出格式实际长什么样。

训练要自洽 规划要准确 导出格式

一、两类下游

训练感知模型规划直接消费
怎么用当成一批样本去做统计学习当成"障碍物在哪"的即时输入
有平均吗✅ 有。个别误差会被大批样本稀释❌ 没有。这条数据直接进决策
怕什么映射有矛盾数值不对

一句话:训练关心映射有没有矛盾,规划关心数值对不对。

二、四种偏差,两类下游的反应完全相反

拿"框整体往右偏 10 厘米"这个偏差做例子,改一下它的性质,看结论怎么变。

偏差类型对训练对规划
随机噪声轻微,可以平均掉烦,但能靠保守策略吸收
均匀偏差✅ 基本无害❌ 最严重
非均匀偏差❌ 有害,伤泛化❌ 严重
不一致❌ 最有害❌ 严重

为什么均匀偏差对训练无害

训练时:  场景 X  →  标注 Y,整体偏了 10 厘米
模型学:      X  →  Y

推理时:  场景 X' →  输出 Y',也整体偏 10 厘米

模型学到的映射是自洽的。长得一样的输入给同样偏的输出,没有矛盾。

打个比方:一把尺子的刻度整体印偏了一毫米。你量什么都会多一毫米, 但你量完之后减掉一毫米就对了。测量过程本身没错。

为什么非均匀偏差就有害了

因为"越靠边越偏"是一个跟输入位置有关的形变,不是常数偏移。

模型本来只需学:  形状 → 形状
现在被迫多学:    位置 → 形变

而那个形变不是世界的规律,是标注错误。模型把标注错误当成了物理规律来学, 换一台相机就崩。它伤的是泛化。

为什么均匀偏差对规划最严重

因为它太安静了
障碍物位置平滑   正常
尺寸合理         正常
时序连续         正常
就是整体错了一个常数

规划永远不会发现所有东西都偏了十厘米,因为没有任何东西看起来不对。

而比这更麻烦的是:整体错一个常数,只有在跟另一个独立来源对比时才能发现。 它躲过了所有内部检查。

三、所以导出不只是"转换格式"

导出这一环承担三件事:合并、过滤、和交代清楚"这些数是怎么来的"。

其中第三件最容易被忽略。前面讲过,标注结果里混着两类东西:

来源例子错了会怎样
观测宽度 1.82 米、距离 12.3 米有噪声,可以查、可以修
先验车长填的是 4.6 米,因为厂商目录这么写静默。没有东西可查,因为它是假设

导出的训练集里,这两类东西长得一模一样。下游会拿一个假设当成一次测量去用。

一条要求

不可见的部分用先验补,这一点可以接受,但要能被认出来它是先验。

否则下游默认"这个 4.6 是量出来的",而它其实是猜的。

四、导出格式:COCO 与原生格式

最通用的导出格式是 COCO。它的结构很简单,一个 JSON 里有三个数组:

images      每张图的文件名、宽、高
annotations 每个标注的 bbox、类别 id、图片 id
categories  类别的 id 和名字

其中 bbox 是最容易踩坑的地方,它的约定是:

[x, y, width, height]

x, y   左上角的绝对像素坐标,原点在图像左上角
width  宽,像素
height 高,像素

注意:不是中心点,不是归一化,是【左上角加宽高】
三个常见的错

一、把中心点当左上角。差半个宽高,整体偏移。

二、归一化。有人习惯 YOLO 那种 0 到 1 的写法,直接换过来会小一百倍。

三、丢掉 3D 信息。COCO 只有 2D 框。 3D 标注体系里那些位置、朝向、尺寸,导出成 COCO 时会全部丢掉。

第三点很重要:COCO 是一种降维导出。如果下游要 3D, 就得用平台自己的原生格式,而不是 COCO。

原生格式为什么必须有

COCO原生格式
能表达 3D 吗❌ 只有 2D 框✅ 位置、朝向、尺寸
能表达身份吗❌ 没有跨帧身份✅ 带身份,能还原轨迹
能表达来源吗❌ 没有✅ 人标的还是模型标的
通用性✅ 几乎所有人都吃❌ 换平台要改
结论

COCO 是交付格式,原生格式是归档格式。

给外部用 COCO,因为它通用。自己留着用原生的,因为只有它能还原全部信息。 而且要注意 COCO 是有损的,导出之后再也导不回来。

五、这一页带走什么

两类下游怕的东西相反:训练怕不一致,规划怕一致地错。 所以别用同一个指标去评价同一批数据。

导出不是格式转换,它要负责合并、过滤,以及交代清楚哪些数是量出来的、哪些是猜的。

COCO 是交付格式,不是归档格式。它丢掉的 3D 和身份信息,导出去就回不来了。

← 上一页:几何原语与自动预处理 ·  下一页:算法流程与模型架构 →
京ICP备19013239号