3. 数据预处理链路故障:图像畸变校正失败、点云降采样参数异常、数据增强导致标签偏移

数据预处理,说白了就是给模型「喂饭」的环节。饭要是馊了,模型再牛也白搭。我见过太多团队花几个月调模型,最后发现是数据预处理埋了雷。今天咱们就聊聊三个最常见的坑:图像畸变校正、点云降采样、数据增强。

3.1 图像畸变校正失败

相机镜头不是完美的。尤其是鱼眼、广角镜头,拍出来的图像边缘都是弯的。畸变校正就是把这个弯掰直。但掰不好,后果很严重。

典型故障现象: 模型在图像中心区域检测准确,到了边缘就疯狂漏检或误检。或者 BEV 视角下的车道线、路沿出现「波浪形」扭曲。

为什么会这样? 说白了就是内参矩阵和畸变系数没对上。我遇到过一种情况:标定板拍了几十张图,结果有一张棋盘格角点检测错了,整个标定结果就偏了。你想想看,一个像素的偏差,在 30 米外可能就是半米的位置误差。

我个人习惯,拿到相机后第一件事就是做一次完整的标定验证。具体怎么做?

  1. 检查重投影误差:一般要求 < 0.5 像素。如果超过 1 像素,标定数据大概率有问题。
  2. 可视化验证:把校正后的图像和原始图像叠在一起看。重点关注图像边缘的直线(比如建筑物边缘、车道线)是否变直了。
  3. 交叉验证:用不同场景(白天、夜晚、不同距离)的图片跑一遍校正,看看结果是否一致。
避坑指南: 我曾经在量产项目上遇到一个问题——畸变校正后的图像边缘出现了「锯齿状」伪影。排查了两天才发现,是校正时插值方法选错了。用最近邻插值会导致边缘锯齿,用双线性插值会模糊。建议用双三次插值,效果最好。

3.2 点云降采样参数异常

激光雷达一秒钟出几十万个点。全喂给模型,计算量扛不住。所以得降采样。但降采样参数设不好,要么信息丢失,要么计算量没降下来。

常见的降采样方法有三种:

方法 原理 典型参数 常见故障
体素滤波 把空间分成小格子,每个格子保留一个点 体素大小 (0.1m, 0.1m, 0.1m) 体素太大 → 小物体消失;体素太小 → 降采样效果差
随机采样 随机保留 N 个点 保留点数 (16384, 32768) 点数太少 → 稀疏区域信息丢失;点数太多 → 内存爆炸
最远点采样 保留空间分布最均匀的 N 个点 保留点数 (1024, 2048) 计算慢,且对远处小物体不友好

我在项目中遇到过最坑的一次:体素滤波设了 0.2m 的体素大小,结果一个行人(约 0.5m 宽)只被保留了 2-3 个点。模型根本认不出来。后来改成 0.1m,效果立竿见影。

我的经验: 体素大小不要超过目标物体最小尺寸的 1/3。比如你要检测行人(宽约 0.5m),体素最好 ≤ 0.15m。对于车辆(宽约 1.8m),体素可以放宽到 0.3m。

3.3 数据增强导致标签偏移

数据增强是提升模型泛化能力的好办法。但增强操作如果「伤及无辜」,把标签也改了,那就麻烦了。

常见的数据增强操作及其对标签的影响:

  • 随机裁剪/缩放:图像变了,2D 框坐标必须跟着变。但 3D 框(BEV 视角)的物理位置不变,只是投影变了。
  • 随机旋转:图像旋转了,2D 框要旋转,3D 框的朝向角也要旋转。很多人忘了改朝向角,导致模型学到的朝向全是错的。
  • 颜色抖动/噪声:不影响标签。放心用。
  • 点云随机抖动:点云位置变了,3D 框的位置也要跟着变。但框的尺寸和朝向不变。
  • 点云随机丢弃:只丢弃点,不改变标签。但要注意,如果丢弃了某个物体的所有点,这个物体的标签就变成「无监督」了,模型会学歪。
我曾经踩过的坑: 做点云随机旋转增强时,只旋转了点云,忘了旋转 3D 框的朝向角。结果模型训练了 50 个 epoch,验证集上 mAP 死活上不去。后来一查,发现模型学到的朝向角分布是均匀的——因为增强后的数据里,朝向角是随机的,但标签没变。模型根本不知道哪个朝向是对的。

怎么避免标签偏移? 我的做法是:

  1. 统一数据增强管线:把图像、点云、标签放在同一个变换矩阵下。旋转、平移、缩放都用同一个矩阵。
  2. 可视化验证:增强后,把图像/点云和标签画在一起,肉眼检查一遍。尤其是 3D 框的朝向角,一定要看箭头方向对不对。
  3. 写单元测试:对每个增强操作写一个测试用例。输入一个已知的样本,增强后检查标签是否正确。自动化跑,省心。

3.4 知识体系总览

下面这张图总结了数据预处理链路的三大故障及其排查思路。你可以把它当作一个快速检查清单。

数据预处理链路故障排查总览 图像畸变校正失败 内参/畸变系数错误 点云降采样参数异常 体素大小/采样点数不当 数据增强标签偏移 变换未同步更新标签 重投影误差 > 0.5 像素 插值方法选择不当 体素大小 > 目标尺寸 1/3 采样点数过少/过多 旋转/裁剪未同步标签 点云丢弃导致标签失效 排查方法 ① 可视化验证 ② 单元测试 ③ 交叉验证(多场景) ④ 统一变换矩阵 最佳实践 标定后做重投影验证 降采样参数适配目标尺寸 增强后可视化检查标签 核心原则:预处理链路必须可追溯、可验证、可复现

嗯,数据预处理这块,说白了就是「细节是魔鬼」。我见过太多团队在模型结构上花大功夫,结果被预处理环节的 bug 拖垮。我的建议是:每次改预处理参数,都跑一遍可视化验证。别嫌麻烦,这比调模型结构划算多了。

一句话总结: 图像校正看边缘,点云降采样看小物体,数据增强看标签。三个环节都做可视化验证,基本不会出大问题。

可可精品资料库