POP-3D(NeurIPS 2023)精读笔记

1 介绍

输入:同一相机位置的环视图像组
输出:密集的3D语言嵌入体素图,该图能够支持一系列开放词汇量的任务。


原文链接:https://arxiv.org/abs/2401.09413?context=cs

主要分为三步:

  • 2D-3D编码器从输入图像生成一个体素特征网络。
  • 占用头解码这个网络并将其转换成一个占用图,能够表明哪些体素处于空闲或占用状态。
  • 3D语言头将每一个占用体素嵌入语言模型,使之能够执行3D开放词汇任务。


    工作流程示意图

2D-3D编码器
V=f_{3D}(I)\in \mathbb{R}^{H_V\times W_V\times D_V\times C_V}
其中,H_V,W_V,D_V是体素网络的空间维度,C_V是每个体素的特征维度。得到的体素网络接下来会传给两个平行的预测头,分别为了进行不分类别的占用预测和文本对齐的特征预测任务。
占用头
占用头g由“Linear-Softplus-Linear”结构的N_{occ}个隐藏块构成非线性网络实现,将体素网络分类为“空闲”或“占用”状态。每个隐藏块有C^{hidden}_{occ}个隐藏特征。最后一个线性分类器输出两个逻辑回归值,每个类别一个。输出为张量形式:
O_{occ}=g(V)\in \mathbb{R}^{H_V\times W_V\times D_V\times 2}
3D语言头
和CLIP类似,对每个体素特征做处理,输出视觉、语言对齐的嵌入式向量。这个头的结构和占用头类似,它由N_{ft}个“Linear-Softplus-Linear”块组成,每个隐藏块的线性层输出C^{hidden}_{ft}个特征,最后一个线性层为每个体素输出C^{out}_{ft}维的视觉语言嵌入式向量。
O_{ft}=g(V)\in \mathbb{R}^{H_V\times W_V\times D_V\times C^{out}_{ft}}

2 三模态自监督训练算法

占用损失(occupancy loss)
为了将无标签的LiDAR点云图的每个点云打上标签,本文引入占用损失(occupancy loss),它是交叉熵损失和Lovász-softmax损失的联合函数:
\mathcal{L}_{occ}(\boldsymbol{O}_{occ},\boldsymbol{T}_{occ})=\mathcal{L}_{CE}(\boldsymbol{O}_{occ},\boldsymbol{T}_{occ})+\mathcal{L}_{Lov}(\boldsymbol{O}_{occ},\boldsymbol{T}_{occ})
其中,T_{occ}\in \{ 0,1\},1表示占用,0表示空闲。
图像-语言蒸馏(Image-language distillation)
为了得到特征目标(feature targets),需要把3D点p_n投影到2D点u_n = (u^{(x)}_n,u^{(y)_n}),其中(u^{(x)}_n,u^{(y)_n})对应该点在相机c中的(x,y)坐标。
这样就得到了3D点云对应的相机坐标下的2D点集。然后对于相机图像,用预训练的的文本-图像对齐的特征提取器f_I进行特征提取,之后用3D投影的2D点坐标进行采样,就得到了对应点云的特征目标T_{ft}
为了训练3D语言头,本文采用了特征目标和预测目标之前的L_2均方误差损失:
\mathcal{L}_{ft}=\frac{1}{NC^{out}_{ft}}||T_{ft}-\widetilde{O}_{ft}||^2
最终损失
\mathcal{L}=\mathcal{L_{occ}}+\lambda \mathcal{L}_{ft}

部分实验结果

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容