这篇论文是华中科技大学白翔老师团队的工作,利用SAM大模型进行3D目标检测。主要思路是将Lidar点云投影成BEV伪图像,利用SAM对BEV伪图像进行分割得到Mask,获取Mask的最小2D bounding boxes,将2D bounding boxes向3D空间投影,得到最终的3D检测结果。
论文地址: https://arxiv.org/abs/2306.02245
github地址:https://github.com/DYZhang09/SAM3D
1.引言
-
分割一切模型(SAM)作为视觉领域的基石模型,有强大的泛化性,能解决很多2D视觉问题。但是SAM是否可以适用于3D视觉任务,仍需要被探索。
-
目前几乎没有关于3D目标检测的零样本学习,如何使SAM的零样本能力适用于3D目标检测是本文的主要研究内容。
-
本文提出SAM3D,使用SAM分割BEV图,然后从输出的掩膜预测物体。
2.方法
2.1 准备知识
问题定义
给定一个在有标注的源数据集
\[D_s=\{X_{i}^{s}, Y_{i}^{s} \}\]上训练的模型$F$,以及一个3D检测无表标签数据集
\[D_t=\{X_i^t\}\](此处$X_i^t $表示激光雷达点云),零样本 3D 目标检测任务的目标就是在不使用 $D_t$ 标签的情况下,最大化 $F$在$D_t$上的性能。
SAM的回顾
虽然SAM的能力很强大,但模型很简单:强大的图像编码器和提示编码器分别将图像与提示转换为嵌入特征,随后轻量级的掩膜解码器用于组合信息并预测分割结果。
具体来说,图像编码器是使用MAE预训练的ViT,提示编码器使用CLIP中现成的文本编码器,利用位置编码和自由文本表达点与边界框。掩膜提示使用卷积嵌入,并与图像嵌入特征按元素求和。掩膜解码器使用Transformer解码器(含提示自注意力和两个方向的交叉注意力),并使用动态掩膜头,在图像的每个位置计算掩膜前景概率。
2.2 整体框架
由于本文使用的是3D点云,而SAM的输入是2D图像,因此本文先将激光雷达点云转换为类似2D图像的表达以减小域Gap。基于BEV,本文的使用SAM的模型如下图所示。
本文的方法分5个步骤:
-
激光雷达到BEV的投影:将激光雷达信号转化为BEV图像。使用投影方程决定每个点在图像平面的坐标,并预定义一组强度到RGB的映射,以得到BEV图像像素的RGB值,使处理时更具判别力。
-
BEV后处理:将原始BEV图像进行一个简单的操作,以获得更稳定的SAM输入,使分割更简单、性能更好。
-
SAM分割:将改进的BEV图像和网格提示输入SAM,在BEV中分割前景物体。为加速分割,还对提示进行了修剪,这不会牺牲性能。
-
掩膜后处理:使用先验推导出的规则过滤带噪声的掩膜,以减少FP。
-
Mask2Box:对前景掩膜寻找最小边界框,提取BEV下的2D框,与激光雷达点云交互后,预测最终的3D边界框。
2.3 激光雷达到BEV的投影
\[P=\{(x_i, y_i, z_i)\}_{𝑖=1}^{N_p} \quad (L_x \leq x_i \leq U_x, L_y \leq y_i \leq U_y)\] \[\downarrow\] \[I \in \mathbb{R}^{H×W×3}\]-
每个点都会落入BEV图像上的一个网格,网格的坐标$(c_x, c_y)$ 按下式计算:
\[cx_i = \lfloor (U_x − x_i )/s_x \rfloor, \\ cy_i = \lfloor (U_y − y_i )/s_y \rfloor\]其中$s_x$, $s_y$为$x$, $y$方向的Pillar大小。
-
此后,需要得到填入BEV图像中的像素值,使BEV图像更具判别力。点的反射强度
\[R=\{r_i \}_{i=1}^{N_p}\]可以用于形成BEV图像的特征向量。首先将反射强度归一化到 [0,1] 内,并用其从预定义的调色板上选择色彩向量:
\[c_i=Pallete(Norm(r_i)) \in \mathbb{R} ^3, \\ I[cx_i, cy_i,:]=c_i\]无对应点的BEV像素,使用零向量填充。
-
最后得到有判别力的BEV图像
\[I \in \mathbb{R}^{H×W×3}\]
2.4 BEV后处理
- SAM的图像是在“密集”的自然图像上训练的,BEV图像是“稀疏”的。为减小间隙,使用形态扩张(最大池化):
2.5 使用SAM分割
-
为尽可能分割更多的前景目标哦,使用$32\times32$ mesh grid覆盖整张图像,作为SAM的Prompt。
-
但是由于稀疏BEV图像有很多空的区域,对Prompt进行了修剪。将Prompt投影到BEV图像上,检查每个Prompt的邻域,将周围无激活像素的提示丢弃掉。该步骤使得整个流程被极大地加速。
-
该步骤完成后,得到$N_m$个分割掩膜
2.6 掩膜后处理
-
尽管SAM有强大的零样本能力,但其输出的掩膜仍存在噪声,需要进一步处理。这里使用汽车的面积阈值$[T_l^a,T_h^a]$和长宽比阈$[T_l^r,T_h^r]$值来过滤掩膜。
-
最终得到个$N_o$相对高质量的前景掩膜
\[M'=\{m_i \in \mathbb{R}^{H \times W} \}_{i=1}^{N_o},\]每个掩膜对应一个前景物体。
2.7 Mask2Box
-
首先根据掩膜获取最小2D bounding boxes:
\[B^{2D}=\{(x_i^{2D},y_i^{2D},dx_i^{2D},dy_i^{2D},\theta_i^{2D})\}_{i=1}^{N_o}\] -
然后,将2D属性投影到对应的3D属性:
\[x_{i}^{3D} = U_{x} - (x_{i}^{2D} + 0.5 ) \times s_{x}, \\ y_{i}^{3D} = U_{y} - (y_{i}^{2D} + 0.5 ) \times s_{y}, \\ dx_{i}^{3D} = dx_{i}^{2D} \times s_{x}, \\ dy_{i}^{3D} = dy_{i}^{2D} \times s_{y}, \\ \theta_{i}^{3D} = \theta_{i}^{2D}\] -
最后,选择落在2D边界框内的激光雷达点,使用垂直坐标计算边界框的垂直属性:
\[Z_{i} = \{z_j|(x_j, y_j, z_j) \ \textbf{inside} \ B^{3D} \}, \\ dz_{i}^{3D} = max(Z_{i}) - min(Z_{i}), \\ Z_{i}^{3D} = min(Z_{i}) + \frac{dz_{i}^{3D}}{2}\]
3.实验
3.1 设置
本文在Waymo Open的验证集上对汽车类别进行评估,且只考虑最多30m内的物体。
3.2 定性结果
可视化表明,SAM能在不接触3D标注的情况下生成高质量的2D边界框,且能进一步得到高质量的3D边界框。
但也存在一些明显的失效情况:当物体距离较近时,SAM会重复生成掩膜;与汽车外观类似的物体会被SAM错误分割为前景;由于激光雷达点云的稀疏性以及截断或遮挡等,部分汽车在BEV图像中被部分激活,因此SAM会忽略这些物体,导致很多FN。
3.3 消融研究
-
Pillar size的影响
当柱体大小较大,量化误差增大,且难以区分近距离的物体;当柱体大小较小同样会损害性能,因为激光雷达点云的稀疏性使得来自同一物体的点难以形成连通区域,SAM倾向于将一个物体分割为多个部分。
-
反射强度的影响
将本文的预定义的强度到RGB的映射方法与二值法(生成黑白双色的二值图像)、强度法(生成灰度图像)比较,实验表明本文的方法在性能上能大幅超过二值法与强度法,因为彩色图像更具判别力,SAM更容易分割。
-
SAM结构的影响
实验表明,使用小容量模型会导致性能下降,但使用大容量模型也仅能带来微小的性能提升。这说明模型容量不是性能瓶颈,且SAM的能力仍需被充分被挖掘。
-
BEV后处理的影响
实验表明,去除BEV后处理会带来显著的性能下降,这表明BEV后处理能缩减BEV图像和自然图像的间隙。
-
掩膜后处理的影响
面积与长宽比的后处理均对性能提升有帮助,因为仍然存在不可忽视的域间隙。
4.讨论
本文的实验表明,使用SAM进行零样本3D目标检测任务是可行的。但仍存在一些需改进的重要方面:
-
使用BEV图像表达,可能无法进行室内的3D目标检测,需要寻找更好的场景表达。
-
由于遮挡和截断,以及激光雷达点云的稀疏性,本文的方法会产生许多FN,特别是对于远距离物体。结合其余模态的信息可能有帮助。
-
虽然通过提示修剪大幅减小了推断时间,推断速度仍受限于SAM的复杂性。模型压缩和蒸馏可能可以解决此问题。
-
本文的方法还不支持多类别物体检测,因为SAM缺乏语义标签的输出。可以使用视觉-语言模型(如CLIP Goes 3D)进行零样本分类。
-
使用少样本学习和提示工程等技术,可以更有效地利用视觉基石模型解决3D任务。