☰
稀疏点云感知的表示学习:从稀疏卷积到跨模态蒸馏的工程实践
2026/10/20 14:42:50 网站建设 项目流程

点云一稀疏,大家的第一反应往往都是“点变少了”。但真正上手做过感知项目的人都知道,稀疏点云带来的麻烦远不只是“点少”那么简单——它先把我们习惯的规则网格打碎,再把卷积、注意力、损失函数一个个逼到墙角,最后逼着你去重新思考什么叫“好表示”。这也正是“稀疏点云感知的表示学习”这个方向有意思的地方:表面上看是在研究网络结构,实际上是在研究如何在极度不规则的数据上,找到一种稳定、高效、能支撑检测和分割任务的中间表达。

这篇文章我想把这块内容从原理到落地完整串一遍。会聊稀疏性到底破坏了什么,表示学习要在里边解决哪些问题,主流做法包括稀疏卷积、稀疏注意力、跨模态蒸馏分别解决了什么,以及我在实际项目里踩过的坑。适合正在做三维视觉、自动驾驶感知、机器人抓取,或者准备从稠密点云转向稀疏场景的同学,看完至少能避开我当年绕过的弯路。

1. 稀疏点云的“稀疏”到底拆掉了什么

1.1 三维数据的三种常规表示:点、体素、柱状体

做三维感知,手里拿到的原始数据通常是点云,也就是一堆无序的三维坐标点,每个点可以带上反射强度、颜色之类的附加信息。怎么把这堆点喂给神经网络,业界基本分成三派。

第一派是直接吃点。把每个点当作一个带特征的样本,用共享MLP去逐个处理,再通过对称函数聚合出全局特征。这种做法对点数量不敏感,实现简单,但问题在于它天然缺少“邻域”的概念,点与点之间的局部关系需要靠额外采样和分组来构造,感受野的控制比较绕。

第二派是把空间划分成体素。三维空间用规则网格切分,落在同一个格子里的点做聚合,得到每个体素的特征,然后就能用三维卷积去扫。这个方法在结构上最接近二维图像处理,训练稳定,部署生态也成熟,但代价是内存爆炸——因为三维空间里90%以上的体素可能是空的。

第三派是柱状体,也就是只在BEV平面上做二维网格划分,竖直方向保留原始点特征。它牺牲了高度方向上的分辨率,换来了计算效率的大幅提升,在很多实时感知系统里很常见。

这三种表示各有各的脾气,但共同的问题都在稀疏性上。尤其当你用的是低线数雷达或者稀疏采样设备时,点云的空洞率会高到离谱,无论选哪一派都得先面对“大部分位置没有信息”这个事实。

1.2 一组数字:16线雷达在50米处的体素占用率

说一堆抽象的概念不如摆数字。我拿常见的16线雷达来算一笔账,假设水平分辨率是0.2度,那么一圈扫描大概产生1800个水平角度,16条线束就是28800个点。这个数字听起来不算少,但如果我们要在50米范围、200米视野、40米高度这个空间里做感知,体素分辨率设成0.1米见方的话,整个空间会被切成多少个体素呢?

不算不知道:横向大概2000个体素,纵向500个,高度上400个,总共是4亿个体素。而28800个点散落在这4亿个格子里,就算每个点都独占一个格子,占用率也只有0.0072%。也就是说,一万个格子里不到一个格子有点。

这个数字才是问题的根源。你辛辛苦苦构建好规则网格,结果发现网格里几乎全是空气,这时候再做三维卷积,绝大部分计算都在空体素上白白浪费。更麻烦的是,深度神经网络要的“局部连续性”在这么低的占用率下根本建立不起来——卷积核想聚合邻域特征,结果邻域里什么都没有。

这也是为什么“稀疏点云感知的表示学习”会独立成一个研究方向。它不是简单地把点云当成“点少一点”的普通点云来处理,而是要从表示层面去适配这种极端占用率。你得让网络学会在信息密度极低的空间里,仍然能提炼出可用的几何特征。

1.3 “稀疏”带来的三个连锁问题

第一是内存问题。用稠密三维张量表示稀疏点云,就意味着要为大量空气分配存储空间,而且随着空间范围扩大,内存占用是立方级增长的。我在早期实验里试过直接用稠密体素存一帧64线雷达点云,分辨率设成0.2米,一帧就把显存吃掉了接近一半,根本没法做端到端训练。

第二是感受野问题。在稠密图像上,一个5x5卷积核就能覆盖像素周围的真实邻居。但在稀疏点云里,同样尺寸的卷积核覆盖到的可能是五个“各自孤立”的点,它们之间存在大量空隙。如果核尺寸不够大,网络看到的就是一堆断断续续的碎片;如果核尺寸太大,又把不同物体的特征糊到一起。感受野的尺度如何跟稀疏度匹配,是个需要反复调试的事情。

第三是语义连续性问题。在图像上,“猫的轮廓”是连续的像素边界,特征一层层往上提,语义自然凝聚。但稀疏点云里物体表面是不完整的,一个行人的点可能只覆盖了上半身,下半身完全是空洞。表示学习就得想办法在这种断裂的表面下依然能补出完整的语义——要么靠上下文先验硬猜,要么靠多帧融合补洞,要么靠跨模态信息来辅助。

这三个问题加起来,决定了一件事:你不能把图像那套表示学习的方法论直接搬过来用,必须有针对稀疏数据的专门设计。

2. 表示学习的真正目标:不仅要能编码,还要能抗稀疏

2.1 感知任务需要什么样的表示

表示学习这个说法听起来玄,说白了就是让网络自动找到一种更利于后续任务的中间特征。对于稀疏点云感知,目标检测要的是“这个东西在哪、是什么、姿态如何”,语义分割要的是“每个点属于哪个类别”,跟踪要的是“同一个物体在帧间保持身份一致”。不同类型的任务对表示的要求侧重点不一样,但它们有一个共同点:都要抗稀疏。

什么叫抗稀疏?就是点云密度很低、局部信息严重不足的情况下,特征仍然稳定可靠。比如一个距离80米外的行人,在一帧稀疏点云里可能只有七八个点,如果表示学习做得好,网络应该能从这七八个点的空间分布中判断出“这里大概率是行人”;如果做得不好,这七八个点会被当成噪声直接忽略掉。

在这个意义上,稀疏点云的表示学习所要优化的目标,不是简单地让特征“信息量大”,而是让特征“对空洞鲁棒”。具体来说,好的表示应该在点云被随机丢弃、传感器距离变远、遮挡严重等情况下,性能下降得尽量平缓。

我在实际调参时发现一个很有意思的现象:有些模型在数据增强里随机丢弃50%的点后,精度下降很小,说明表示已经学会了从残缺中推断语义;有些模型只丢10%的点,精度就崩了,说明它过度依赖局部细节的“巧合”。后者就是典型的“伪鲁棒”,测试时不掉点,真上了路况复杂的场景就现原形。

2.2 下采样策略与几何自适应的取舍

表示学习绕不开的一个操作是下采样,因为原始点云点数太多,直接全量计算不现实。常见的做法有体素降采样、最远点采样、随机采样等。很多初学同学觉得下采样只是提速的手段,其实它直接影响表示质量。

体素降采样是用一个网格把空间框起来,每个格子保留一个代表点。它的优点是密度均匀化,远处的稀疏区域和近处的密集区域会被拉到同等的密度水平。但缺点也在这——它把近处的精细几何结构也抹掉了,相当于主动牺牲信息。最远点采样能很好地保留点云的空间覆盖范围,保证选出来的点尽量分散,但计算开销大,实时场景往往扛不住。

这里就有一个很现实的权衡:采样太狠,表示丢信息;采样太轻,计算扛不住。我自己的经验是,感知模型的前几层可以稍微激进一点下采样,因为低层特征需要的是“宏观结构”而不是“微观细节”;但到了高层特征,一定要保持足够的点密度,因为分类和定位都依赖细粒度的区分能力。

如果你做的是真实场景部署,建议把下采样策略跟传感器的物理特性结合起来。比如雷达点云的近处区域点非常密,远处区域点非常稀,这时用全局统一的体素尺寸就不合理,可以考虑让体素尺寸随距离增长,让表示的空间分辨率跟着点密度自适应变化。这类设计看起来不起眼,但对长距离小目标的召回率影响很大。

2.3 表示质量的三个评估角度

怎么判断一套表示学习做得好不好?不能只看最终检测精度,因为精度的影响因素太多了。我一般从三个角度单独评估。

第一是信息保持度。做一个简单的重建实验——把点云编码成特征,再用特征去重建原始点云,重建精度越高,说明表示保留的几何信息越完整。这个指标跟感知任务的相关性很强,因为检测和分割本质上都在消费几何信息。

第二是任务迁移性。在同一份稀疏点云上训练好一个表示模型,然后用这个预训练表示去初始化不同的下游任务模型,看性能如何。如果表示学习本身学到了通用几何先验,迁移到新任务时应该比随机初始化明显更好,且只需要很少的微调数据。

第三是对稀疏度的敏感性。这是我自己比较看重的指标——把测试集按距离分成近、中、远三档,分别统计精度。好的表示学习模型,远距离档位的性能下降应该平缓;如果远距离精度断崖式下跌,说明表示在低密度区域失效了,这不只是数据集标注的问题,而是表示本身没有对稀疏性做足够对抗。

这三个角度配合使用,能比较准确地定位一套表示学习方案的瓶颈到底出在数据、出在结构、还是出在训练策略。我也踩过不少坑,比如前期只看整体mAP,调了半天没进展,后来把距离分桶一看,才发现所有性能损失都集中在远端,方向直接就变了。

3. 主流技术路线拆解:稀疏卷积、稀疏注意力与跨模态蒸馏

3.1 稀疏卷积:只在占据位置计算

稀疏卷积是目前处理稀疏点云最成熟的一类算子,核心思想非常简单:只对被点云占用的位置做卷积,空位置直接跳过。它跟前段时间说的“把空体素也存起来”完全不同,稀疏卷积在底层数据结构上就只保留非空位置,配合哈希表索引来做邻域搜索。

举个例子,假设有一帧点云,在5x5x5的空间里只占用了10个格点。普通三维卷积会生成一个5x5x5的稠密输入张量,然后卷积核在所有125个位置上滑一遍;稀疏卷积则只记录这10个有值的位置,卷积核只在这10个位置的邻域内计算,其余位置根本不进显存。

这样做的好处是内存和计算量跟“实际点数”成正比,而不是跟“空间范围”成正比。空间再大,只要点少,也能跑得很稳。我在实车上测过长距离场景下的稀疏卷积模型,一帧64线雷达点云在空间范围2万平方米的条件下,前向推理时间比稠密方案快了一个数量级不止。

但是稀疏卷积也不是没有代价。它的邻域搜索需要处理不规则索引,算子实现复杂度高,不同设备上的优化程度差异也很大。有些深度学习框架对稀疏张量的支持很弱,跑起来比稠密还慢,这就很尴尬。所以在工程选型时,不能光看论文里的FLOPs,要看目标设备上的实际推理延迟。

另外一个细节是稀疏卷积的感受野拓展比稠密卷积更难。普通卷积每做一层,感受野就规则地扩大一圈;稀疏卷积扩感受野时要靠邻域关系传播,而邻域本身就可能不连续,所以往往需要堆更多层才能覆盖到足够大的范围。这里可以通过引入空洞卷积或者子流形卷积的变体来缓解,但参数也要跟着调。

3.2 稀疏注意力:让邻域关系动态化

卷积核的权重是空间共享的,这意味着无论局部点的密度如何,卷积核都用同一套权重去提取特征。可稀疏点云的局部形态差异极大——有的区域密集到可以看见完整表面,有的区域只有孤立的几个点——用同一套卷积核去处理这两种情况,显然不是最优的。

稀疏注意力机制就是在这样的背景下被引入的。它不像卷积那样用固定权重扫描邻域,而是对每一个点动态计算邻域内其他点的加权贡献。权重由点与点之间的特征相似度决定,等于让网络自己学会“在局部点很少的时候,把注意力集中到那些真正有区分度的邻居上;在局部点很多的时候,分散注意、提取多尺度信息”。

我在实验中感受到最明显的一个好处是,带稀疏注意力的模型在遮挡场景下表现更好。因为当某个物体的下半部分被完全遮住时,注意力机制可以自动去关联远处另一个物体的同类型特征,形成一种“跨物体补偿”的效果。而卷积模型遇到同样的遮挡,邻域里没东西就是没东西,特征就断了。

不过稀疏注意力的计算开销比稀疏卷积大不少,尤其是在点数多、邻域搜索范围大的时候。实际项目里我一般把注意力模块放在网络的高层,因为高层点数已经被下采样得比较少,注意力的收益最明显,开销也能控制住。低层仍然用稀疏卷积做局部特征提取,这样搭配在精度和速度上取得了比较平衡的结果。

3.3 用稠密模态“教”稀疏模态:图像到点云的对比学习

稀疏点云之所以难学,根源在于信息不完整。但你手头如果同时有摄像头图像,图像的稠密纹理信息正好可以补上点云的不足。跨模态蒸馏的核心做法就是:让点云特征去对齐图像特征,从而把图像里学到的稠密、连续语义“教”给稀疏的点云表示。

这条路线在自动驾驶感知上已经非常常见。具体实现时,通常先把图像用二维骨干网络编码,再用相机内外参把点云投影到图像平面,找到对应的图像像素特征,然后通过对比学习让同一点的点云特征和图像特征拉近,让不同点的特征推开。

我早期对这类方法的怀疑是:两个模态的特征空间差异那么大,硬拉在一起会不会反而把点云表示带偏?实际跑下来发现,只要在训练初期加一个比较温和的权重,让对齐loss只占整体loss的一小部分,点云特征非但不会被带偏,反而因为吸收了图像的纹理先验,在远距离稀疏区域的检测召回提升非常明显。

当然这里有一个边界条件:图像和点云必须严格时间同步,否则对齐的特征根本不在同一位置,学出来的表示就是乱的。这类方法对传感器标定精度也比较敏感,外参偏个几厘米都能导致投影位置漂移。工程上建议在标定环节多花一些功夫,别把算法层面的收益浪费在系统的硬伤上。

3.4 一些相对冷门但有效的表示学习范式

除了上面三条主线,还有几个思路在我的项目里也验证过,虽然没有完全成为主流,但解决特定场景问题时很顶用。

第一个是掩码自重建。方法有点类似二维里那种“遮住一部分像素,让模型重建原图”的玩法。具体到点云上,随机遮住一部分点,让模型用剩余的点去重建出被遮住的区域。这样迫使模型学会根据局部几何线索推断完整表面,学出来的特征在点云残缺时特别抗揍。

第二个是世界坐标对齐。把多帧点云通过位姿变换对齐到同一个世界坐标系,然后让模型学习“同一物体在不同帧里的表示应该一致”。这种时序自监督信号几乎不需要标注,只需要有准确的位姿信息,对提升跟踪稳定性特别有用。

第三个是密度感知的特征归一化。它针对不同距离点云密度差异大的问题,在特征计算时显式地把密度信息编码进去,让模型知道当前特征处于高密度区域还是低密度区域。方法看似简单,但对远距离目标的召回率提升往往立竿见影。

这些范式不影响主线,但属于那种“知道总比不知道好”的技巧。项目效果卡在一个瓶颈上不去的时候,往往就是这种边角料设计带来的几个点提升,决定了最终能不能达到交付线。

4. 工程选型与训练细节:跑通稀疏点云模型需要准备什么

4.1 稀疏张量的数据结构设计

要在工程上跑通稀疏点云模型,第一步是把数据组织成稀疏张量。稀疏张量本质上包含两部分:坐标和特征。坐标记录每个非空位置在空间中的索引,特征记录该位置对应的信息。这两部分都需要精心设计,否则后续算子和损失函数都会出问题。

坐标的表示方式直接影响邻域搜索效率。常见结构是哈希表和树形索引的结合——哈希表负责快速查找某个位置有没有占用,树形索引负责范围查询,也就是找出某个邻域内的所有非空位置。我建议在选型时直接把这一层的数据接口吃透,因为框架里的算子性能差异很多时候就体现在索引组织方式上。

特征部分的设计也很关键。原始特征通常包括点的三维坐标、反射强度、高度编码等。但只喂原始坐标是不够的,我在预处理里一般会额外加两个相对特征:一个是点相对于整车坐标系原点的距离,帮助模型理解目标的纵深;另一个是点所在位置的高度,帮助模型区分地面物体和非地面物体。这类手工特征的维度不用太多,但对收敛速度帮助很大。

还要注意坐标值域问题。点云的坐标范围动不动就是上百米,直接喂给网络会让初始化的梯度过大。我一般会把坐标做归一化处理,让整个空间的范围映射到一个相对合理的区间。这个细节不处理好,训练初期loss会出现比较明显的震荡。

4.2 构建稀疏Batch与数据增强注意点

训练稀疏点云模型,Batch的构建跟普通二维模型很不一样。因为每一帧点云的点数不一样,空间范围不一样,不能简单地拼成一个固定形状的Tensor。通常做法是把多帧点云的“坐标+特征”纵向拼接,同时用一个batch索引向量标记每个点属于哪一帧,让稀疏卷积算子知道帧与帧之间的边界在哪里。

这个过程中特别容易出问题的是数据增强。二维图像做随机翻转、随机裁剪,基本都是安全的;但点云不一样,你翻转一个点云的x轴,可能会把左舵车的驾驶方向变成右舵,模型学到一堆矛盾的特征。我做数据增强时遵循一个原则:只能做物理上真实可能发生的变换。

验证下来比较安全且有效的增强包括全局随机旋转、全局随机缩放、随机丢弃部分点、随机抖动坐标添加噪声。某些增强对特定任务效果很好但容易引入坏影响,比如随机平移点云会改变目标在自车坐标系下的位置,从而改变标签的方向角,如果增强逻辑里没有同步处理标签,精度会一塌糊涂。

这里我建议把“数据增强”和“标签同步”写成一个原子操作,所有变换都在一个函数里完成点和标注的联动,避免增强和标签脱节。这个看起来是工程规范问题,实际上能省下大量排查bug的时间。

4.3 训练策略与损失函数设计

稀疏点云感知模型的损失函数选择,很大程度取决于你的输出是稀疏的还是稠密的。目标检测往往对稀疏的锚框或查询点做分类和回归,损失函数用标准的分类loss加回归loss就行;语义分割则要对所有有效点计算类别预测,这时要注意类别不均衡问题。

在我做语义分割的实战中,最容易出现的情况是“物体类别”占的比例太小,背景点占了绝大多数,模型把所有点都预测成背景,loss反而挺低。解决这个问题我一般会做两件事:一是用加权采样把正类点的贡献权重调高;二是在损失函数里加上一个“边界点”的约束,让模型对物体边缘的点更加敏感。

另外一个值得注意的点是,稀疏点云模型对学习率比较敏感。因为有效计算点少,每个batch里实际参与梯度计算的样本数量远低于稠密模型,同样的学习率设置下更容易出现收敛不稳。我的习惯是使用warmup策略,让前几千步用较低的学习率预热,然后再切到正常范围,同时监控每一层特征范数的变化,及时调整学习率调度。

训练阶段的另一个常踩的坑是Loss瞬间变成NaN。这个问题十有八九出在坐标数值过大或者特征里出现无穷值。我排查的顺序是先看输入数据有没有脏点,再看注意力权重的分母有没有为0,最后看损失函数里有没有对不稳定的对数项做保护。顺序不能乱,不然容易把半天时间浪费在不存在的模型问题上。

5. 避坑记录:稀疏点云表示学习最常见的失败现场

5.1 稀疏度分布不均导致评价指标失真

项目交付时最怕的不是模型效果差,而是“你以为效果好,其实只是指标失真了”。我第一次做稀疏点云检测就是吃了这个亏:训练集整体mAP很好看,但放到真实路段上一测,远距离车辆几乎全漏检。

后来排查原因,发现是训练数据里近距离样本占绝对多数,模型整体指标被近距离的大量样本拉高了。远距离本来点就稀疏,样本又少,模型学不到有效的远端特征。这也是稀疏点云感知特有的问题——稀疏度分布和样本分布双重不均。

解决方式有硬件和算法两个层面。硬件层面可以增加远距离雷达线束密度,让远端不要那么稀疏;算法层面可以在训练时按距离分桶采样,保证每个距离段都有足够的样本权重。我在实际项目中两种手段都用了,但真正起主要作用的是距离分桶采样。因为这个改动直接把模型的学习重点从“大多数”转到了“容易被忽略的少数”。

评估时也不要只盯着一个整体指标,建议固定几个距离区间、几个目标大小区间,分别出指标再汇总。这个过程虽然累一点,但能让你清楚知道模型的能力边界在哪里,后续调优也有方向。

5.2 数据增强把“稀疏”变成“伪稠密”的坑

第二个坑来自我自己的一个失误。当时为了提升模型鲁棒性,我把训练点云做了大量随机采样,但采样方式是无放回随机采样。这个操作看起来没什么问题,但跑了几轮实验发现模型不升反降。

后来定位原因,发现随机采样在点数足够多的时候没问题,但稀疏点云本身只有几千个点的时候,随机采样会让每个物体表面保留的点分布变得非常“均匀随机”——表面点被random地把多个区域都覆盖了一部分,反而看起来密了,但实际代表真实表面的点很稀。网络在这种伪稠密数据上学习的表示,去处理真实稀疏场景时就会水土不服。

更合理的做法是模拟传感器真实的退化过程。比如按照距离增加丢点概率,因为激光雷达远端点确实更容易丢失;或者按照遮挡关系丢点,让较远物体背后的点缺失——这就跟真实遮挡一致了。我在后续实验中改成“距离相关丢点”后,远端性能确实有了明显提升。

从这件事学到的经验是:数据增强不是越随机越好,而是要贴近退化模型。数据分布跟物理过程越一致,模型学到的表示就越能泛化到真实部署环境。

5.3 坐标归一化引起的学习不稳定

这个坑相对隐蔽,我身边就有同事被坑过。当时他在用稀疏点云做目标检测,训练了十几个epoch,loss一直下不去,排除了所有网络结构问题后,最后锁定在数据预处理上。

他用了全局范围归一化把点云坐标映射到0到1之间。听起来挺合理,但这个映射对远处小目标很不友好——一个行人的尺寸在原始坐标里可能是1米量级,映射到0到1的区间后变成0.002量级;回归分支预测的框尺寸就在这么小的数值区间里来回抖,优化自然困难。

而我更倾向于用“固定范围裁剪加正态归一化”——先裁剪出感知感兴趣范围,比如前方80米、左右各40米,再把范围内的坐标按自己的固定L2范数归一化。这样既保留了数值稳定性,又不会把目标尺寸压得过分微小。不同任务的最佳归一化方式可能不同,但原则很简单:保证主要目标的尺寸在归一化后的数值空间里不要太难分辨。

如果遇到模型能收敛但精度波动大的情况,我建议你回头检查一下坐标预处理的数值分布,画出坐标和标签量纲的分布直方图,一眼就能看出合不合理。这类问题虽然不算算法创新,但解决后往往能带来稳定的几个点提升。

6. 一个完整的落地案例:从原始点云到感知模型

6.1 任务设定与数据准备

把这个方向的所有理论落到具体项目上,我拿之前做过的“园区无人配送车感知模块”来说。目标很简单:在园区低速环境下,检测行人、自行车、小型障碍物,但传感器只有一颗16线激光雷达,点云密度严重不足,测试时还要应对草坪、树木等大量背景点。

任务拆解以后发现,核心难点在于行人的远端检测。行人本身点少,而且在园区场景里往往处于移动状态,点迹更多是拖影和残缺。数据采集阶段,我们对园区不同时段、不同光照、不同路径各跑了几圈,累积了一批原始点云和对应的标注框。

标注这个环节也值得一提。稀疏点云里有些物体只剩下几个点,人眼都不太容易分辨,我们既要标注框,又要给每个点做一个“是否属于该物体”的掩膜,为后续学习提供更细粒度的监督。整个过程非常耗时,所以如果能用预训练的表示模型先出一版伪标签,再做人工修正,效率会高很多。

6.2 模型结构选择与训练流程

模型选型时我对比了两种方案:一种以稀疏卷积为主,高层拼接稀疏注意力;另一种直接全程用注意力机制。实测下来,全程注意力的方案在校验集上精度高了约3个百分点,但在实际部署设备上的推理速度慢了近一倍,最后量产版本还是选了稀疏卷积为主的方案,把注意力模块塞在中层之后的小范围内使用。

训练流程分两个阶段。第一阶段用无标注点云做掩码自重建预训练,让模型先学习点云表面的几何结构;第二阶段用标注数据做有监督微调,同时引入图像特征做跨模态对齐。这里的图像来自车上挂的一个单目摄像头,投影对齐精度不高,所以跨模态loss的权重设得比较小,只作为辅助信号。

整个训练过程最大的体会是:预训练确实有用,但收益大头在低标注数据量的情况下最明显。当我们把标注数据从几千帧减到几百帧时,预训练过的模型比随机初始化模型在行人检测上的召回率高出一大截。标注数据充足时,预训练带来的增益反而会被监督信号稀释掉。所以要不要做自监督预训练,取决于标注成本高不高。

6.3 实验结果对比与改进方向

最终模型交付时,近距行人检测做得很好,漏检主要发生在40米以外的低矮障碍物上。这类障碍物在点云里往往只有三四个点,而且反射强度信息很弱,单靠几何特征确实很难判断。我们做了两个方向的改进尝试:一是引入地面分割作为前置模块,先把地面和地物特征分开,让下游模型更容易聚焦;二是把连续几帧的点云通过里程计叠加成一个伪稠密帧,相当于用时间去换空间,在低速场景下非常有效。

伪稠密帧的方案最终让40米外低矮障碍物的召回率提升了大概十一个百分点,代价是延迟增加约30毫秒。对于低速园区场景来说完全能接受,但对高速公路场景就需要谨慎评估——高速车流中,多帧叠加会带来比较明显的运动模糊和拖尾问题,反而可能损害感知精度。

如果在座各位将来也要做类似场景,我的建议是先想清楚一个核心问题:你的传感器硬件能提供的点云稀疏度是多少?这个答案直接决定了一整套表示学习方案的走向。硬件能上64线,方案空间大很多;硬件只有16线,那注意力、跨模态、时序融合这些手段就得多管齐下。千万不要照搬某些全稀疏方案到低线束雷达上,两边图像的空洞率完全不是一个量级。

最后再分享一个小技巧。做稀疏点云感知,日志里一定要打印每个batch的点数分布和空体素比例。这两个数字如果出现异常波动,往往意味着数据管道出了问题,提前发现能省掉很多排查时间。做完这个项目后我也养成了习惯:每次训练新模型,先跑两百步看一眼特征质量再离开,别把时间浪费在整夜的白等上。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询