![]()
2016 年前后,自动驾驶公司开始流行一种做法:把车开上路,录下摄像头和激光雷达的数据,然后用这些数据在电脑里"重建"出整条街道。重建完成后,工程师可以让虚拟摄像头沿着任意一条新路线飞过这个场景,生成从没真正拍摄过的画面,用来测试自动驾驶系统会不会犯错。这个技术叫新视角合成(NVS,输入几张已知角度的照片,重建出场景的三维结构,从而能够渲染出任意新角度下的画面),摄像头和激光雷达都已经玩得很溜。
但雷达一直被晾在一边。
这件事挺奇怪的,因为雷达恰恰是自动驾驶传感器套件里最特殊的一个:下雨下雪它照样工作,而且它能直接测出物体的径向速度,也就是多普勒效应(雷达波打到运动物体上反射回来时,频率会发生偏移,偏移量和物体沿雷达视线方向的速度成正比,这是雷达独有的能力,摄像头和激光雷达都测不到)。可就是这么一个独特的能力,在现有的雷达场景重建方法里几乎被完全浪费了。
这篇来自 Technion、Cornell Tech 和 NVIDIA 的论文,叫 DyRAD,想解决的正是这个尴尬局面。
三个被晾在一边的问题
先说清楚雷达数据长什么样。一台调频连续波雷达(FMCW,一种通过发射频率随时间变化的连续波来测距测速的雷达体制,是车载雷达的主流方案)每次扫描会输出一个三维的数据立方体,叫 RAD 张量,三个维度分别是距离(Range)、方位角(Azimuth)和多普勒速度(Doppler)。这三个字母拼起来就是论文标题里反复出现的 RAD。
现有的雷达场景重建方法面对这个立方体,普遍做了一件事:把多普勒维度直接压扁,只留下距离和方位角两个维度,变成一张二维的 RA 图。这就好比你拿到一盘有声电影,却只截取画面,把声音全部静音播放。能看,但损失了一半的信息。
为什么会这样?因为能处理动态场景(车辆、行人这些会动的物体)的雷达重建方法,比如论文里提到的 RF4D,选择性地放弃了多普勒;而能渲染多普勒的方法,比如 DART 和后续的几篇工作,又只能处理静止场景,它们的多普勒完全来自雷达自己在移动,场景里没有会动的车。
于是就出现了一个空白地带:没有任何一个方法,能同时处理"场景里有车在开"和"渲染出车的速度信息"这两件事。DyRAD 要补的就是这个空白。
第二个问题更隐蔽,但其实更要命。雷达的信号处理链路,会把一个本来只是一个点的反射物,在最终成像时"糊"成一小片区域,横跨好几个距离格、方位角格和多普勒格。这个"糊开"的现象有专门的名字,叫点扩散函数(PSF,Point Spread Function,描述一个理想点光源或点反射体经过成像系统后,在输出图像中呈现为多大范围、什么形状的模糊斑的函数,本质上是成像系统本身的固有属性,和被拍摄的物体无关)。
现有方法在学习场景结构的时候,没有把这个"糊开"的效应单独剥离出来,而是任由模型自己去解释:一片模糊的回波,到底是因为那里真的有一大片反射体,还是因为传感器本身就会把一个点糊成一片?模型分不清,往往会把传感器造成的模糊,错误地学成了场景里真实存在的几何形状。
这会带来什么后果?从原来拍摄的那条路径上看,重建结果可能很漂亮,误差被完美掩盖了。可一旦把虚拟摄像头挪到旁边一两米,模型渲染出来的东西就会露馅,因为它把不该固定的模糊效果,当成了场景本身的固定结构来渲染,换个角度,这个"模糊的几何体"的朝向和大小根本对不上。
这就像你照镜子时脸上有一道反光,如果你以为那道反光是脸上真实的疤痕,那你画自画像的时候就会把它画成一道疤。可一旦光源角度变了,反光消失了,你的自画像上那道"疤"却还在,露出破绽。真正的疤痕不会随光线移动,但反光会,混淆两者的代价就是换个角度就穿帮。
第三个问题是评测方式本身的漏洞。之前所有的雷达重建论文,评测的时候都是从录制好的那条行驶轨迹里,每隔几帧抽一帧出来当作"没见过的测试数据"。问题是,这一帧左右两边的训练帧,位置几乎挨在一起,模型只需要在两帧之间做插值就能蒙对答案,根本不需要真正理解场景的三维结构。
这就好比考试只考课本例题的变体,学生靠死记硬背例题模式就能答对,但你永远测不出他是不是真的理解了背后的原理。想知道模型是不是真懂了场景,你得把摄像头挪到一条完全没走过的路径上,看它还能不能画对。
把场景拆成会动和不会动的点
DyRAD 的核心思路,说起来并不复杂:把整个场景表示成一堆点反射体,每个点没有大小,就是空间里的一个坐标,带着自己的强度和反射特性。
这些点被分成两类。一类是静止的背景,比如路边的护栏、建筑物墙面;另一类是跟着某辆车、某个行人一起运动的动态反射体,它们会跟着一条学习出来的运动轨迹走。
这个设计背后的理由是,雷达的真实物理回波本来就来自离散的散射中心,也就是雷达波打到物体表面上反射最强的那些局部点。用离散的点来建模,天然就贴近物理真实,而不是像一些方法那样用连续的高斯团块去"猜"一个大概的形状。
对于动态物体,DyRAD 用的是刚体运动轨迹(Rigid Track,假设物体上所有点的相对位置保持不变,整个物体只做整体的平移和旋转,这种假设适合汽车这类不会变形的刚性物体)。具体做法是,给每个物体的每一帧记录一个轨迹点,相邻两帧之间线性插值,得到物体在任意时刻的位置,再用相邻几个轨迹点的斜率估算出这个物体当时的平移速度。
有了速度,就能算多普勒了。公式很直观:把反射体相对雷达的速度,投影到雷达视线方向上,再考虑雷达本身也在移动(自车速度),两者相减后投影到视线方向,就是这个反射体此刻应该呈现的多普勒值。
这一步设计的巧妙之处在于,它让多普勒从一个"只能看不能用"的数据,变成了既是渲染输出,又是监督信号的双重角色。模型渲染出来的多普勒,如果和真实录制的多普勒对不上,这个误差会反过来修正物体轨迹的速度估计,让轨迹变得更准。原本分离的两件事,场景重建和运动估计,被这一步接到了同一个优化循环里。
打个比方,这就像你在猜一辆车的车速,除了看它开过的距离除以时间(位置轨迹),还同时拿测速枪实测了一下(多普勒)。如果只靠位置轨迹估算,车在转弯或者被遮挡几帧的时候估计很容易跑偏;但测速枪这个额外的独立观测,能及时把跑偏的估计拉回来。如果去掉这把测速枪,消融实验里车辆的多普勒峰值误差会从 0.732 个格子跳到 1.843 个格子,涨了一倍多。
把模糊效果焊死,不许它参与学习
解决第二个问题的办法,是把点扩散函数算成一个固定不变的公式,焊死在渲染流程里,训练过程中绝对不允许它被调整。
具体做法是,论文团队从 RADIal 数据集公开的信号处理流程里,把距离维度的傅里叶变换泄漏、方位角波束形成器的响应、多普勒处理的响应,一项项拆解出来,用解析公式还原成三个独立的"模糊核"。对于没有公开处理细节的 Boreas 数据集,团队则用传感器规格和验证数据,手工拟合了一个近似的锥形核函数。
这三个核函数在场景优化开始之前就被算好了,之后全程锁死,不参与梯度更新。渲染一个点反射体的时候,先算出它本该呈现的位置、强度、速度,再用这三个固定的核函数,把它"抹"开成一小片回波,叠加到整个张量里。
这个设计的代价和收益值得说清楚。消融实验里对比了两种"偷懒"方案:一种是用可学习形状、可调大小的高斯团块代替点反射体(类似 3D Gaussian Splatting 常用的做法),另一种是保留点反射体,但让模糊核的宽度本身变成可学习参数。
结果很明确:固定点扩散函数的方案,离轨评测下的检测 F1 分数达到 0.236,而可学习高斯外形的方案只有 0.074,可学习模糊核宽度的方案是 0.124。固定方案把检测召回率提升到了另外两种方案的两倍以上。
这说明什么?如果让模型自己去学"该糊成多大一片",它会倾向于用这种灵活性去掩盖自己在反射体位置、强度上犯的错误,糊得越开,越容易在训练集上对上答案,但这种灵活性恰恰是换个角度就露馅的元凶。锁死它,相当于剥夺了模型"作弊"的工具,逼着它把精力都花在把反射体的真实位置和反射强度学对上。
这让我想起小时候描红练字,老师给的字帖笔画粗细是固定的,你只能照着描,不能把笔画描得忽粗忽细去掩盖自己手抖写歪的问题。如果字帖本身的笔画粗细可以随便改,那练字的人大可以把每一笔都描得特别粗,歪一点也看不出来,可这样一来,字到底练没练好,谁也说不准了。锁死笔画粗细这个"参照系",才能让练字者真正暴露并纠正自己的问题。
反过来说,这个设计还带来一个意外的好处:场景结构和传感器响应被彻底拆开后,同一个重建好的场景,可以直接套上另一种雷达配置的点扩散函数,不用重新训练,就能渲染出换了传感器之后应该是什么样子。论文管这个叫传感器配置迁移(Sensor-Configuration Transfer)。
实验里团队拿同一批原始 ADC 信号(模数转换器输出的雷达原始数据,是信号处理链路最前端、未经任何处理的数据),分别按粗分辨率配置(每个啁啾信号 128 个采样点,128 个啁啾)和细分辨率配置(512 个采样点,256 个啁啾)处理出两套张量。先用粗分辨率数据训练出场景,然后直接把点扩散函数和采样网格换成细分辨率的,不改任何场景参数,直接渲染。
对比简单的线性插值放大方法,直接换配置渲染让检测的倒角距离(Chamfer Distance,衡量两组点云之间平均最近邻距离的指标,数值越小说明两组点云越接近)从 7.27 米降到 3.20 米,F1 分数从 0.101 几乎翻倍到 0.195。这说明学到的反射体里确实藏着比粗分辨率测量更精细的场景信息,只是之前的粗分辨率"眼镜"没让你看清楚。
测试要走没走过的路
第三个问题,论文用了两套办法来验证。
第一套是在真实数据上做循环一致性测试(Cycle-Consistency,先用模型渲染出一个偏离原轨迹的虚拟轨迹,再用这些渲染结果重新训练一个新模型,最后检查新模型在原始轨迹上的输出和真实录制数据是否一致,用这种"绕一圈回来"的方式间接验证离轨渲染的准确性)。具体做法是,先用录制数据拟合出一个场景,渲染出一条横向偏移 2 米的虚拟轨迹,再用这条虚拟轨迹的渲染结果重新训练一个全新模型,最后拿这个新模型在原始轨迹上的预测,去跟真实录制的数据对比。
这套方法在 RADIal 数据集上,DyRAD 让检测命中率(Hit Rate,参考数据中确实检测到物体的标注框里,重建结果也成功检测到物体的比例,这个指标专门用来衡量重建结果有没有漏掉真实存在的物体)达到 91.7%,而最强的基线方法只有 18.1%。
第二套更直接,是在合成数据上做的。团队自己搭建了一套五个场景的合成雷达基准(交叉车流、弯道、路边稀疏结构、双向车道、城市峡谷),因为场景是程序生成的,所以能在任意偏离轨迹的虚拟视角上直接拿到绝对准确的真值数据,不需要绕圈子推算。
在这套合成基准上,测试了横向偏移 1.75 米、3.5 米以及偏航角 5 度、10 度等多种离轨场景后,DyRAD 的物体区域 RAD 相关系数达到 0.356,对比静态版本(不区分动态物体)的 0.161 和最强基线 RadarFields 的 0.086,差距同样明显。
实打实的对比数字
在 RADIal 数据集的原轨迹评测里,DyRAD 相比两个基线方法 RadarSplat 和 RadarFields,全测量区域的相关系数从 0.068 提升到 0.272,物体区域的命中率从 26.9% 提升到 90.7%。
值得一提的是,DyRAD 内部还做了一个对照:只用静态反射体表示(也就是不区分哪些点属于会动的车,不用运动轨迹,论文叫 DyRAD-static),单这一项改动已经把物体区域相关系数从 RadarSplat 的负值区间拉到了正值,说明单纯把物体结构显式建出来,即便没有多普勒监督,也能带来实打实的提升。再叠加动态轨迹和多普勒监督后,物体区域相关系数从 -0.013 跳到 0.658,这一步的跨度比静态版本相对基线的提升还要大。
在 Boreas 数据集上(这是一款 360 度旋转的 Navtech 雷达,不输出多普勒信息,正好测试 DyRAD 在基线方法的主场里表现如何),全测量区域相关系数 DyRAD 是 0.752,RadarSplat 是 0.666,差距不算巨大;但物体区域相关系数差距很大,0.622 对比 0.178。这说明即便拿掉多普勒这个"独门武器",光是显式建模物体这一件事,依然能带来可观的提升。
消融实验里藏着的权衡
论文还做了一组值得细看的消融实验,揭示了几个设计选择背后的取舍。
插值一致性损失(Interpolation-Consistency Loss,借鉴自 RegNeRF 的一种正则化手段,在两个真实训练帧之间插入一个虚拟时间点,强制模型在这个虚拟时间点上的预测,要和相邻两帧测量值平滑后的平均结果保持一致,目的是约束训练帧之间模型该怎么表现)在原轨迹评测上,把 RA、RD、RAD 三个投影的相关系数分别提升了 0.219、0.143、0.051。但在离轨评测上,它反而让 RAD 相关系数从 0.447 降到了 0.363。
这个矛盾其实揭示了一个很现实的问题:这个损失函数是在约束训练帧之间的时间插值行为,而离轨评测测的是空间上挪开之后的表现,两件事方向不完全一致。团队最终选择保留这个损失,是在"时间插值的平滑度"和"离轨空间精度"之间做了一个权衡取舍,不是哪个指标都要压倒性地赢。
写在后面
读完这篇论文,最让我意外的不是雷达重建这件事本身,而是它揭示的一个更普遍的道理:当一个传感器的某种能力被长期忽视时,往往不是因为这种能力不重要,而是因为处理它所需要的建模复杂度,没人愿意先啃下来。
多普勒不是什么秘密武器,它写在每一本雷达教科书里。但把"场景里有车在动"和"渲染出速度信息"这两件事放到同一个优化循环里,需要同时处理运动轨迹估计、速度投影、周期性折叠这几个互相纠缠的问题。这种工程上的麻烦,很可能就是之前没人做的真正原因,而不是技术上做不到。
还有一个细节我觉得值得单独拎出来说:固定点扩散函数这件事,初看像是放弃了一部分模型的灵活性,直觉上似乎会让拟合效果变差。但实验结果恰恰相反,限制了模型的自由度后,物体检测反而更准了。这提醒我,有时候模型表现不好,未必是因为灵活性不够,可能恰恰是灵活性太多,给了模型"作弊"的空间。
这篇论文留下的问题也挺实在的:反射体和物体的对应关系,目前是靠标注框一次性确定的,之后整个优化过程里都不会改变。如果初始标注有误差,模型没有办法自己纠正。另外,多径反射和散斑噪声(雷达信号在复杂环境中可能经历多次反射才到达接收端,或者因为随机干涉产生的颗粒状噪声,这些效应目前都没有被显式建模)这些更复杂的雷达物理现象,也还没被纳入进来。雷达这个传感器的复杂性,恐怕才刚刚开始被认真对待。
Q&A
Q1:DyRAD解决了雷达场景重建的哪些核心问题?
A:DyRAD解决了三个问题:一是现有方法在重建动态场景时忽略了多普勒速度信息,二是传感器自身造成的信号模糊被错误地学成了场景结构,导致换视角后渲染出错,三是以往评测只在原行驶轨迹上测试,无法验证真正偏离路径的渲染效果。
Q2:DyRAD为什么要把点扩散函数固定不让它参与学习?
A:如果让模糊程度可以学习,模型会倾向于用模糊来掩盖自己在反射体位置和强度上的错误,这种做法在原轨迹上表现很好,但换个角度就会露馅。实验显示固定点扩散函数后,检测召回率比可学习方案提升了一倍多。
Q3:DyRAD是怎么验证离开原行驶路径也能渲染准确的?
A:论文用了两种方法,一是在真实数据上渲染偏移2米的虚拟轨迹后重新训练模型,再检查能否还原原始轨迹的真实测量;二是搭建合成基准数据集,直接在偏离轨迹的虚拟视角上对比真值,结果显示DyRAD物体区域的检测命中率和相关系数都明显高于基线方法。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.