☰
车路协同BEV中间融合:VIMI多视角3D检测落地
2026/10/27 3:53:35 网站建设 项目流程

车路协同的3D检测做了好几年,真正能跑起来的方案其实不多。我最早接触这个话题的时候,大家的思路都很朴素:车端把相机点云算一遍,路端也算了,然后各自输出3D框,后处理里按IoU和置信度做NMS融合,这就是所谓的后融合。这套东西在标准场景下能拿到一点点增益,但稍微遇到遮挡或者车端算力吃紧的情况,提升很快就被稀释掉了。后来陆续有几支做路侧设备的同行聊起VIMI这个工作,他们的反馈是,中间融合这条路子至少在公开评测上是真的把指标推上去了一截。这篇VIMI论文讲的核心,就是把车端和路端的多视角相机特征,在BEV空间里对齐之后再融合,来做基于相机的3D目标检测。它对标的不是临时拼起来的工程补丁,而是从特征层面重新设计了车路协同感知的整条流水线。适合谁看?做车路协同感知、BEV感知、多视角3D检测的算法同学和工程同学,尤其是正在纠结要不要从后融合切到中间融合、或者正在评估路端设备值不值得投入的团队。

1. 为什么单车感知的天花板,逼着大家往车路协同走

1.1 遮挡与远距离:单车相机绕不过的两道坎

单车做3D检测,相机布置在车身四周,前视、环视、后视加起来覆盖360°,硬件上看似已经不缺视角了。但真实路况里,遮挡是家常便饭。前方一辆高箱货车开在你前面,它身后的路口、行人、电动车你一概看不见;城市路口右转时,A柱和B柱形成的盲区,靠摄像头补也难以完全覆盖。相机再高清也就是个2D传感器,靠几何关系反推深度,遮挡一发生,被挡住的区域就永远没有有效像素。

另一个硬伤是远距离。一个200米外的轿车,在800万像素、120°水平视场的相机里,投影下来可能只占几十个像素。像素太少,深度估计的方差就大,3D框的尺寸、朝向、中心点位置都很容易飘。业内做BEV感知的同学都清楚,检测距离往上走,AP掉得特别快,这不是网络结构的问题,是信息量本身就不够。

路侧杆位的价值就体现在这里。一根6到10米的杆子架在路口,相机是俯视视角,能从上方看到车端看不到的区域,比如被大车挡住的斑马线、对向车道的来车。这种天然的空间互补,是车路协同最朴素的动机。换句话说,车路协同不是把两份差不多的数据拼一起,而是要让两份各有盲区的数据互相补位。

1.2 前融合、后融合、中间融合,本质是在“带宽”和“信息量”之间做取舍

讨论VIMI之前,先把融合的三种基本形态摆清楚,不然后面很多设计取舍会看不懂。

前融合(Early Fusion)指的是在原始数据层面融合,比如把路端的点云和车端的点云直接拼成一个大的点云,或者把图像按外参投影到统一坐标系里再送进网络。这条路理论上信息保留最完整,但代价很直接:路端要把原始数据实时传到车端,图像和点云的数据量有多大做感知的都心里有数,单路1080p视频流就是几十兆每秒,多路加起来对通信带宽是巨大压力;而且原始数据拼接对标定精度、时间同步的要求极其苛刻,稍微偏一点,拼接出来的点云就全是鬼影。

后融合(Late Fusion)是各端独立出检测结果,在box层面做融合。这种做法工程上最省事,车端和路端各跑各的模型,互相解耦,通信只需要传box,几十字节一条。但它的问题也很清楚:检测器把信息压缩到box这个高度抽象的表示之后,路端看到的细节、车端看到的细节,在融合阶段已经丢失了。当路端因为遮挡检测不到某个目标时,它没法把“我这里有部分特征但还不够出框”的信息告诉车端,信息在检测头那里就被截断了。

中间融合(Intermediate Fusion)介于两者之间,在特征层面做融合。路端和车端各自算出一组BEV特征,然后在对齐之后拼接或注意力融合,最后统一过检测头。它的好处是信息保留得比后融合充分,通信量又比前融合小得多——传的是BEV特征图,尺寸可控,而且很多场景下可以做量化压缩。

融合方式传输内容通信压力信息保留标定敏感度工程复杂度
前融合原始图像/点云极高完整极高高
中间融合BEV特征图中等较充分较高中高
后融合3D检测框极低有限低低

这张表基本概括了行业里的共识:没有一种方式是全面占优的,选型时要看你的通信链路和算力预算。VIMI之所以选中间融合,就是看中了它在带宽约束下还能保留相当程度空间信息的这个平衡点。

1.3 VIMI把融合点定在BEV特征层,是一个折中但务实的选择

为什么偏偏是BEV特征层?我的理解有两层原因。第一层,BEV是一个天然的“公共语言”。车端相机的视角、路端相机的视角,两者内参外参完全不同,图像空间里根本没法直接对话,但一旦各自转换到鸟瞰图这个统一的地面坐标系,位置就有了可比性,融合才有物理基础。第二层,BEV特征还保留着空间几何信息,不像检测框那样被过度抽象,路端在某个BEV格子上的特征,可以具体地告诉车端“这块区域我看到了什么”,这种细粒度的互补正是后融合做不到的。

当然,BEV也是个折中。分辨率高一点,远距离小目标的特征保留得更好,但通信和算力压力都上去了;分辨率低一点,量化损失明显,尤其是远端目标被压缩得厉害。VIMI在论文里对BEV网格的尺寸是有具体选择的,这一点在复现时要特别当心,因为换一个网格分辨率,指标的波动可能比换一个backbone还大。我自己在类似结构上试过,BEV网格从0.4米一格改到0.2米一格,远距离AP能涨,但车端时延也会明显上升,得根据实际部署场景去权衡。

2. VIMI的两条感知支路:车端环视和路端固定视角怎么走到同一个BEV坐标系

2.1 车端支路:多路环视图像转BEV的常规做法

车端这一路,输入是多路环视相机的图像,典型配置是前视、前左、前右、后视、后左、后右六路,覆盖360°。要把它变成BEV特征,主流做法是类似LSS那套思路:先用2D backbone(ResNet加FPN是常见组合)对每路图像提取多尺度特征,然后对每个像素预测一组离散深度分布,把2D特征按深度权重“投”到3D空间里,最后沿高度方向塌缩,得到BEV网格上的特征图。也有用query-based方案比如BEVFormer那种,通过可变形注意力从多视角图像里采样特征构建BEV,思路上不同,但目的一致——都是把图像特征统一到车体坐标系下的鸟瞰图。

车端支路在VIMI里的角色是“主视角”。因为最终检测是在车端坐标系下做的,车端特征天然就在正确的参考系里,不需要额外的重采样。这个设计其实挺关键,它意味着融合模块可以只处理路端特征的变换,车端自己不动,减少了计算量和误差累积。工程上这也符合直觉:车是移动主体,检测结果要以车为中心输出,车端特征当基准最自然。

但车端支路也有它的软肋——它默认了车辆自身的位姿是准的。如果定位系统漂了,整个BEV坐标系都会跟着偏,这时候路端特征再准,融合也会错位。这一点在论文的鲁棒性实验里有讨论,实际部署里更是要重点盯,我后面会专门讲。

2.2 路端支路:固定杆位相机的前视处理与视角差异

路端这一路和车端有本质区别。路侧相机是固定的,安装高度通常在6到10米,俯角大,视野覆盖一个路口或一段路。常见配置是2到4路,有的朝向来车,有的朝向路口中心,视角之间可能有重叠也可能有断层。因为位置固定,路端的外参一旦标定好,短期内是稳定的,这点比车端有优势。

但路端处理起来有几个麻烦。第一,视角差异大。路端是俯视,车端是平视,同一辆车在两个视角下的外观特征分布差别明显,路端特征直接搬到车端BEV网格上,语义上未必对得上。第二,路端相机数量少,覆盖角度有限,有些方向是天然看不到的,融合时不能指望它补全所有盲区。第三,路端的安装高度和俯角在部署时是变量,不同点位的几何关系不同,模型得有一定的泛化能力。

VIMI在路端支路上用的也是多视角图像转BEV的流程,和车端同构,但外参不同。这样做的好处是两部分特征在空间结构上是可比的,融合模块可以复用类似的注意力结构。论文里对路端特征的处理,我理解重点不在特征提取本身,而在后面的变换和对齐,这才是车路协同真正难的地方。

2.3 对齐这一步:外参、位姿和BEV网格的重采样

路端特征算出来之后,它是在路端自己的坐标系下的。要融合,必须先把它变换到车端坐标系。这一步涉及三个量:路端相机到路端参考系的外参、路端参考系到世界坐标系的变换、车端在世界坐标系里的位姿。三者串起来,就是路端BEV到车端BEV的变换矩阵。

具体到操作,常见做法是用这个变换矩阵对路端BEV特征做一次网格采样(grid sample),把路端每个BEV格子映射到车端BEV网格的对应位置,双线性插值取值。如果变换矩阵完全准确,这一步是干净的。但现实是,这三个量每一个都有误差:路端外参标定有残差,车辆定位有漂移,时间不同步还会引入额外的运动误差。一步错,步步错,最后融合的特征就是糊的。

VIMI这套方案的高明之处在于,它没有假设变换矩阵绝对准确,而是在融合模块里给网络留了“纠正”的余地。这一点是我认为整篇论文最有价值的部分,下一节重点讲。

3. 融合模块拆解:标定误差、时间延迟与特征异质怎么在特征层被消化

3.1 标定误差下的注意力纠偏

标定误差是车路协同绕不开的魔鬼。路侧杆在太阳下晒一天,金属结构热胀冷缩,外参就能漂个零点几度;车辆定位在城市峡谷里GPS信号差,位姿误差能到分米甚至米级。这些误差落到BEV网格上,就是几个格子的偏移,几米之外可能就把目标框对到背景上去了。

VIMI处理这个问题的思路,我理解是引入注意力机制做特征级的对齐,而不是硬依赖几何变换。大致逻辑是:先把几何变换后的路端特征作为初始对齐结果,然后在融合模块里用自注意力和交叉注意力,让车端特征去“查询”路端特征中语义相关的位置。注意力权重是学出来的,网络在训练过程中会学到“当几何对齐有偏差时,往哪个方向找才是对的”。这本质上是一种数据驱动的纠偏,用大量样本把标定误差的统计规律吸收进网络参数里。

这个设计的好处很实在:它不要求外参完美,容忍一定范围的漂移。我在类似结构上做过测试,给外参加入随机扰动后,带注意力纠偏的融合模块比纯几何对齐的版本AP掉得慢得多,说明网络确实学到了一些纠偏能力。但要注意,这种鲁棒性是有边界的,扰动太大,注意力也救不回来。论文里的鲁棒性实验应该是在一定扰动范围内做的,复现时要看清楚扰动幅度的设定,别把结论外推到极端情况。

还有一个细节值得提:注意力纠偏依赖训练数据的分布。如果训练集里标定误差的分布和实际部署时的不一致,纠偏效果会打折扣。工程上稳妥的做法是在训练时主动做数据增强,给外参和位姿加噪声,让网络见过各种偏差情况,泛化能力会好很多。这一步在论文里可能有提也可能没细说,但落地时我认为是必做的。

3.2 时间不同步带来的特征等待问题

车端和路端是两个独立设备,采集时刻不可能完全对齐,通信链路还有时延抖动,所以同一帧“融合数据”里,路端特征可能比车端特征晚了几十毫秒甚至上百毫秒。车辆在60公里时速下,100毫秒就是1.7米的位移,这个量级对3D检测来说已经不能忽略了。

处理时间不同步有几种思路。最朴素的是时间戳对齐,在车端维护一个特征缓冲区,等路端特征到了再配对。但这会增加系统时延,对实时性要求高的场景不友好。另一种是运动补偿,用车辆的运动状态把路端特征“预测”到当前时刻,但这就需要准确的运动估计,误差会叠加。VIMI论文里对时间同步的处理,我理解是在特征层面做了一定的对齐设计,把时间维度的影响吸收到融合模块里,而不是在数据层面硬等。

从工程角度看,时间同步这个问题没有银弹。我的经验是,通信时延的抖动比平均时延更致命,因为你没法用一个固定的补偿量去覆盖所有情况。实际部署时通常要在路端加时间戳、在车端做插值或外推,并且把时延监控做成系统的一部分,时延超过阈值就降级处理,宁可只用单车特征,也不要用错位的融合特征。这一点论文里未必展开,但凡是做过车路协同实车测试的同学应该都有体会。

3.3 异质特征的投影与语义对齐

车端特征和路端特征,虽然都是BEV,但“味道”不一样。车端是平视视角累积出来的,路端是俯视视角累积出来的;车端的训练数据分布、路端的光照条件、相机型号、曝光参数,全都不同。直接把两组特征channel维度上拼起来送进检测头,效果往往不如预期,因为网络要花很大力气去学怎么调和这两种分布。

VIMI的融合模块用了投影层来统一特征维度,再用注意力做交互,这其实是中间融合的标准操作。但我想强调的是,异质性问题不只是维度问题,更是分布问题。工程上比较有效的做法包括:给车端和路端分别做特征归一化、在训练时做域随机化(比如随机调整亮度、对比度、噪声)、以及在融合前加一层轻量的适配网络。论文里的具体实现可能更简洁,但落地时这些trick往往能把指标再往上推一点。

另外,路端和车端的特征在语义层级上也未必匹配。车端离目标近,特征偏细节;路端离目标远,特征偏全局。融合时要考虑这种层级差异,单纯在同一个尺度上做attention,未必能充分利用两边的互补性。多尺度融合或者层级对齐是值得尝试的扩展方向。

4. 公开数据集上的验证:VIMI到底赢在哪类样本上

4.1 数据集与评测协议

VIMI的实验是在车路协同的公开数据集上做的,这类数据集的特点是同时提供车端和路端的多视角图像、标定参数和3D标注。评测通常按距离分段,近距离、中距离、远距离各算一遍AP,还会区分是否被遮挡、目标类别等维度。之所以要这么细,是因为车路协同的增益本来就不是均匀分布的——它在某些场景下提升大,某些场景下几乎没区别,平均值会掩盖这些差异。

复现这类工作时,评测协议一定要对齐。BEV检测里IoU阈值的选取、匹配策略、是否忽略某些类别,都会显著影响最终数字。我见过不少对比实验,两边的AP差异其实来自评测脚本不一致,而不是模型本身。所以看论文结果时,别只盯总AP,要看清它用的是哪个阈值、怎么分段的。

4.2 指标拆解:AP@0.5 与 AP@0.7 的差距

3D检测里常见的两个阈值是IoU 0.5和0.7。AP@0.5宽松,AP@0.7严格。这两个指标的差距能反映模型定位的精细程度。一般来说,融合方案在AP@0.5上的提升比较明显,因为补盲区、补特征让召回上去了;但在AP@0.7上,提升会打折扣,因为高精度定位对特征对齐的要求极高,稍微有点错位,IoU就掉下去了。

我看到的趋势是,中间融合相对单车的增益,在远距离和遮挡样本上最明显。这很好理解:近距离、无遮挡的目标,单车自己就能检得很好,融合的边际收益小;远距离和遮挡场景才是车路协同真正发挥价值的地方。这也提示我们,评估车路协同方案时,按距离和遮挡程度分段看指标,比看整体数字有意义得多。如果整体AP涨了但远距离没涨,那这个融合大概率是“锦上添花”而不是“雪中送炭”,投入产出比要重新算。

4.3 消融实验透露的三个信号

消融实验是论文里信息密度最高的部分。VIMI的消融我关注三个点。

第一,融合模块的贡献有多大。如果去掉注意力融合、只做简单的特征拼接,指标掉多少,这能说明融合模块的设计是不是真的有效,还是说随便拼拼也行。从公开结果看,带注意力的融合确实比朴素拼接好一截,尤其是在标定有扰动的情况下。

第二,几何对齐的必要性。如果完全不做外参变换,直接把路端特征和车端特征叠在一起,效果会差很多,这说明几何先验在中间融合里仍然是基础,注意力纠偏是在几何之上的补充,而不是替代。这个结论对工程有指导意义:外参该标还得标,别指望网络全包。

第三,鲁棒性实验的扰动幅度。给外参加噪声、给时延加抖动,指标怎么变。这部分最能反映方案的实际可用性,因为真实世界永远不会给你完美标定。看这部分时,要特别注意扰动的具体设定,比如旋转扰动是0.5度还是2度,平移是0.2米还是1米,不同幅度下的结论完全不同。

5. 把VIMI类方案往工程上落地,绕不开的六个现实问题

5.1 外参不是标一次就完事

论文里的标定误差是模拟出来的,现实里的标定误差是活的。路侧杆受温度、风力、地面沉降影响,外参会缓慢漂移;车端相机也可能因为轻微碰撞或长期震动而偏移。我见过实际点位运行三个月后,外参漂了接近1度的案例,融合效果肉眼可见地变差。

所以落地时必须把在线标定或标定监控做进系统。简单做法是定期用已知目标(比如路面标线、固定参照物)做校验,复杂做法是用感知结果反推标定偏差,做闭环修正。不管哪种,核心是别假设标定是静态的,要有监控和更新机制。这一点论文不会细讲,但它是方案能不能长期稳定运行的关键。

5.2 路端视觉先决条件:光照与雨雾

路端相机装在户外,直面阳光直射、逆光、夜间低照度、雨雾天气。这些条件对2D特征提取的影响很大,进而影响BEV特征质量。车端虽然有同样的问题,但车端可以靠自身运动和多帧累积来缓解,路端是固定的,反而更难。

实际部署时,路端的相机选型和曝光策略要专门调,宽动态、低照度性能要好;夜间要有补光或者用对低光更鲁棒的模型。另外,雨雾天路端特征质量下降时,融合权重应该自适应降低,别让差特征污染好特征。这种质量感知的融合策略,论文里未必有,但工程上是刚需。

5.3 通信链路的抖动要让算法来兜

车路协同的通信不是实验室里的理想链路,时延抖动、丢包、带宽波动都是常态。算法层面要有兜底:路端特征超时没到,就用历史帧外推或者直接降级为单车检测;特征质量差,就降低融合权重;通信中断,系统要能无感切换到纯车端模式。

我建议在系统设计时就把“融合状态”作为一个显式输出,传给下游规划控制模块,让下游知道当前检测结果的可信度。这比让感知模块自己硬扛要合理得多。

5.4 车端算力与融合时延的平衡

中间融合要在车端做特征对齐和注意力计算,这部分算力开销不小。车端本来就要跑自己的感知,再加融合模块,对芯片的压力要提前评估。一个常见的误区是只算模型FLOPs,忽略了特征传输、内存拷贝的开销,实际时延比理论值高不少。

我的建议是融合模块要设计得尽量轻,注意力头数、特征维度都要控制;同时做好算力预算,给融合留够余量。如果车端算力实在紧张,可以考虑把部分融合计算放到路端预做,但要权衡通信开销。

5.5 失效降级:路端断了车端还得能跑

这是安全底线。车路协同再香,也不能让系统在路端失效时直接瘫掉。设计上要把车端感知作为永远在线的底座,路端融合作为增强项,增强项失效时平滑降级。降级过程要无感,不能让下游感知到突变,否则规划控制会受影响。

具体实现上,可以在训练时就做“路端特征dropout”,让模型见过没有路端输入的情况,这样降级时性能下降更平缓。这个技巧在工程上很实用,算是一种鲁棒性训练。

5.6 数据闭环:路端是天然的采集站

路端设备固定、供电稳定、视角覆盖关键路口,其实是很好的数据采集点。车路协同方案落地后,可以把路端采集的数据回流,用于模型迭代,尤其是那些车端容易漏检的遮挡、远距离样本,路端往往能提供更好的监督信号。

不过数据回流要注意隐私和合规,图像里涉及人脸、车牌的要脱敏处理。这块在方案设计初期就要考虑进去,别等系统上线了再补。

最后分享一个我在实际做类似融合方案时踩过的坑:早期我过于信任几何对齐,觉得外参标定准了、时间同步做了,融合就该没问题,结果实车一跑,指标比仿真差一大截。后来一点点排查,发现是车端定位在特定路段漂移,导致BEV坐标系整体偏移,路端特征全对错了位置。这个教训让我明白,车路协同里几何链路每一环都要有监控和容错,别把宝全押在标定上。把注意力纠偏、失效降级、状态输出这几件事做扎实,方案才敢真正上车。

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

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

立即咨询