1摘要
虽然最近基于纯视觉的3D检测方法利用了时序信息,但它们使用的有限历史信息限制了时序融合性能提升的上限。论文观察到现有多帧图像融合的本质是时序立体匹配,且目前算法的性能受到以下因素影响:1)匹配分辨率的低粒度;2)有限历史信息的使用产生的次优多目设置。论文的理论和实验分析表明,不同像素和深度的视图之间的最优时间有显著差异,因此有必要融合长期历史上的多个时间戳信息。基于此,论文建议从长期的图像观察中生成cost volume,用更优的多目匹配补偿粗糙但有效的匹配分辨率。此外,论文增加了用于长期粗匹配和短期细粒度匹配的逐帧单目深度预测,并发现长短期时间融合具有高度互补性。论文提出的算法名为SOLOFusion,在保持高效的同时,在nuScenes测试集上取得新SOTA!
代码链接:https://github.com/Divadi/SOLOFusion
上图中的 Localization Potential 是作者定义的一个值,当这个值大的时候,变化相同的深度,采样点在两张图像中的成像位置差别越大,因此深度越容易被感知到。比如图中右上角3D世界中的两个红色圆点,在 和 两帧图像中的投影长度是不一样的,这表示在 Ref. view 下,采样点深度变化相同的长度时,在 这一帧中是更容易被网络感知到的
在stereo temporal 3D detection方法下,作者发现目前方法性能(上图中的 Localization Potential )主要受限于:
匹配分辨率的低粒度
使用的历史帧数量十分有限以至于匹配过程总是次优的
为了分析图像分辨率和 Timesteps 这两个因素如何影响检测性能,作者将3D检测形式化,用candidate匹配中的localization potential来描述模型在相邻帧中感知深度的能力,
并且自然而然提出了一个结合short-term和long-term history的算法(SOLOFusion),在图像分辨率和融合时序帧之间做了一个平衡,在不增加内存和时间消耗的情况下大大提升了算法在nuScenes数据集上的性能
2用于纯视觉3D检测的统一时序立体形式
作者在这一节给出了camera only的基于时序立体匹配的一个通用的形式化定义,作者认为目前的基于时序帧的方法可以归纳为以下通用的组成部分:
Candidate Locations:指在3D空间中的需要匹配的点的位置
Sampling Operation :如何在已有的2D图像特征中采样对应Candidate Locations所对应的图像中的区域
Sampling Resolution :用于采样的2D图像特征的分辨率
Temporal Aggregation:用于融合不同帧的特征的方法
Timesteps Used:相邻帧之间的间隔
Candidate Location Processing:用于处理融合多帧之后的特征的模块,并且这个模块需要给出2D特征到3D世界的映射
Task/Supervision:用于监督的任务和对应的loss
根据以上的定义,作者用一个表格来对比了目前多目立体匹配的方法以及LSS-based(例如Bevdepth),Query-Based(例如BevFormer)的方法之间的异同,并将stereo temporal的3D检测方法与多目立体匹配联系在了一起
从形式上面看,多目立体匹配和temporal 3D检测都需要融合不同时刻的多帧信息,多目立体匹配MVS和temporal 3D检测都是估计在3D世界中的某个位置是否被某个物体占据,只不过MVS只需要知道这个位置有没有物体,而3D检测需要知道在这个位置是哪个特定的物体
举个例子,对于Candidate Locations,MVSNet是在3D空间中用平面扫描的方法来采样,沿着参考图像相机法线的方向对3D空间均匀的切片;LSS-based的方法是在整个3D空间或者Bev视角下用网格生成密集的candidate位置;而Query-Based的方法生成的是稀疏的candidate,不过要另外用L1 Loss去回归一个距离中心点的offset
从表一中,作者发现当前的3D检测算法在选择的帧数和时间间隔都不是很大(Prev Time 列),并且从Sampling Res 来看,MVSNet是在分辨率上采样图像特征,而大部分检测方法中使用的是更小的,而BEVStereo,虽然也使用了MVS模块,并且也沿用了MVSNet用的分辨率,但是它使用的是short temporal history,作者在后续中分析了这种short-term信息实际上是会限制网络性能的。
3理论分析
这一节作者主要从理论上分析了 temporal differences 和 image resolution是如何影响性能的(以two-view 为例)
上图是两个相机坐标系的示意图,橙色是参考相机坐标系(Ref.),蓝色是源图像(Src.)坐标系,两个坐标系之间的夹角是,两个坐标系之间的平移分别是和;图中橙色原点是参考相机坐标系原点,蓝色原点是源相机坐标原点。三个红色的点分别表示采样点在三维世界中真实的坐标,以及在两个相机平面的成像点(参考对极几何的原理)
首先作者给出了一个变换公式,在已知相机A和B的内参矩阵以及相机A(Ref.)到B(Src.)的变换,以及Ref. view中对应像素点的深度值之后,我们可以得到这个点在Src. view下的图像平面的位置,由一个单应性变换给出:
在已知相机A和相机B的内参和外参矩阵,以及采样点在相机A坐标系下的深度时,单应性变换通过投影和逆投影,将平面A上的像素点变换到相机B的坐标系下,找到相机A中像素点在相机B图像中对应的位置
其中,,, 是相机A的光心,对应图中的橙色圆点,之所以求这个变换是为了下一步求导:
对求导,这个导数的值越大,表示深度变化一个单位,表现在图像上的距离变化越大,比如变化会越大(同理)当这个导数值越大的时候,事实上深度值的变化是更容易被感知到的,从公式(3)中我们可以看到,这个值是和图上的 还有 相关的(表示坐标系之间的平移矩阵,因此只要能保证物体能在图像中成像,当这个距离越长的时候,导数是越大的)
根据上述公式,我们可以定义一个最优的localization potential,即让上述导数取最大值即可,根据上述分析,作者统计了像素点在不同深度假设下最优localization potential所需要的时间长度:
在图4中,纵轴是深度采样,值越小,深度越小,填充的颜色越深代表最优时间步长越短,从图上我们可以看出,深度越小的地方,最优时间步长越小,此外,我们还能看出,在同一个Ref. view下面,对于不同的像素点,最优时间步长很不一样,因此作者认为,增加融合的帧数以及在一个长的时间内去感知可以得到更好的结果
那么图像分辨率是如何影响localization potential的呢?
公式(3)中的是内参矩阵中的焦距,当图像被下采样的时候,焦距也要乘以一个相同的下采样系数,所以当采样分辨率越小的时候,相应的localization potential也会变小,但是作者发现,下采样带来的性能损失,可以被融合更多的序列帧来解决
4方法
根据上面的分析,作者提出了SOLOFusion框架,包括两部分:
基于LSS-based 框架使用低分辨率图像特征以及Long term history
MVS-based框架,用高分辨率图像来估计short term的深度
对于低分辨率Long term history,作者将历史帧中的特征变换到当前帧中,直接concat到一起,作者表明使用这样的方式以及高于了当前的很多算法
对于高分辨率short term特征,作者使用了两个连续帧来进行立体匹配,得到深度的信息,但是如果对整个深度区域进行采样的话,这样高分辨率的立体匹配其实对计算和存储的消耗都非常大,因此作者利用了单目的信息来减小立体匹配中的计算消耗。用Gaussian-Spaced Top-k sampling 在单目估计出来的深度附近采样K个点,然后再对这K个点做立体匹配,得到 plane sweeping cost volume,最后估计出一个深度图,来补充Long term 低分辨率所丢失的信息,作者表明,在不使用这种特殊采样方法的情况下,SOLOFusion在GPU以及运行时间上有显著的增加
那么作者是如何采样的呢?
作者从强化学习中得到了平衡 “exploration”和“exploitation”的灵感,先用单目估计的深度作为先验,既要利用单目的先验信息,也要充分探索其他候选位置的深度,因此作者提出了一种Gaussian-Spaced Top-k sampling 采样策略,对于高概率的地方,用概率来进行反向加权(down-weight)
是第 次迭代之后的概率分布,表示在深度 处的概率质量函数(Probability Mass Function,可以理解为离散概率分布中的概率密度函数,表示离散概率的差分值,这个值越大,概率变化越陡峭),这个公式可以理解为,概率密度越大的地方权重越小,通过这样的加权方式作为“exploration”,探索其他候选位置的深度。
迭代几次之后,深度的采样点如下图所示:
5实验
在nuScenes验证集和测试集上的结果:
SOLOFusion目前在nuScenes数据集上camera-only 3D detection中位列第一
消融实验一:对于低分辨率long-term,融合更多时间帧性能更好:
作者以BEVDepth为baseline模型,在这个基础上不断增加参与融合的时序帧的数量,当timesteps小于16时,每次增加时序帧性能都会有显著的提升,但是当融合的timesteps超过16时,对性能的提升就很小了,对比timesteps取16和取41,性能几乎没有提升,作者认为这是因为在超过16帧之后可见区域几乎没有重叠。
消融实验二:对于高分辨率,short-term中立体匹配使用平面扫描算法时深度平面的采样数量:
当均匀采样112个深度的时候,cost volume的大小是,作者表示在这样的分辨率下面,显存和运行时间会显著增加,因此没有办法训练模型,当在整个深度范围内均匀采样的数量越小,性能越差,但是使用作者提出的Gaussian-Spaced Top-k sampling 方法,可以在采样7个深度的情况下达到均匀采样28个深度所能达到的性能
消融实验三:High-Res, Short-Term 以及Low-Res, Long-Term 的有效性:
baseline 模型是BEVDepth,在BEVDepth的基础上叠加High-Res, Short-Term 或者Low-Res, Long-Term 模块。
从(a)到(b),在baseline的基础上叠加了High-Res, Short-Term模块,在不增加内存的情况下性能已经有所提升;从(a)到(c),Low-Res, Long-Term 模块对FPS的影响更小,但是这个模块被证明是对性能提升更大的;作者在这一部分还提到,High-Res, Short-Term模块对性能的提升在左右,而Low-Res, Long-Term 模块对性能提升在左右,叠加这两个模块得到的改进是左右(实验d),这说明这两个模块不仅都被证实是有用的,而且在功能上是高度互补的
实验四:时序融合和图像分辨率之间的平衡:
由于融合了长短时信息,SOLOFusion即使在较低的分辨率下(,BEVDepth的一半)也能达到高于BEVDepth的性能,这个实验也验证了SOLOFusion的一个重要性质,即通过减小图像分辨率的同时(减小了分辨率之后计算量会大大减小)融合时空序列信息(在本文中对算法的延迟很小),低分辨率的SOLOFusion可以以大约5倍的FPS和一半的内存成本实现了与高分辨率BEVDepth相似的性能。
实验五:运行时间:
对比了两个当前的short-term stereo算法(BevStereo和STS),在这里作者为了公平比较只使用了short-term high resolution 部分的算法,SOLOFusion在准确率和效率上都超过了BEVStereo,尽管mAP略低于STS,但是运行时间和显存占用都更少
转自:“arXiv每日学术速递”微信公众号
如有侵权,请联系本站删除!