OccFlowNet: Towards Self-supervised Occupancy Estimation via Differentiable Rendering and Occupancy Flow
原文链接:https://arxiv.org/abs/2402.12792
1. 引言
自动驾驶需要对无法预料的物体进行检测,这需要通用表达,如3D占用。但目前的3D占用估计方法需要大量有3D体素标签的数据。
本文提出OccFlowNet,仅使用2D监督进行3D占用估计的方法。本文仅需要图像和语义激光雷达点,使用NeRF中的可微渲染训练网络。渲染深度图与2D语义图后,使用获取自激光雷达扫描的2D标签监督。存在3D标签时,也可使用之以获取更高的性能。为获取更多监督,还渲染了时间上相邻的帧。最后,还引入占用流,在3D边界框标注存在时处理动态物体。
3. 方法
3.1 问题定义
给定当前时刻的 N N N视图图像 I = { I 1 , ⋯ , I N } I=\{I^1,\cdots,I^N\} I={ I1,⋯,IN},占用预测的目标是在预定义的网格中估计语义体素 V = { c 0 , c 1 , ⋯ , c C } X × Y × Z V=\{c_0,c_1,\cdots,c_C\}^{X\times Y\times Z} V={ c0,c1,⋯,cC}X×Y×Z,其中 C C C为语义类别数, c 0 c_0 c0代表未被占用。使用模型 M M M预测占用: V ^ = M ( I ) \hat V=M(I) V^=M(I)。
3.2 模型结构
如上图所示,使用BEVStereo的方法将图像特征转化为3D体素特征(其余方法也可)。然后3D解码器(3D CNN+MLP)预测每个体素的密度概率和语义分数。可使用3D体素监督,或使用2D标签通过体渲染进行监督。
2D到3D的特征编码器:BEVStereo的编码器使用当前帧多视图图像与部分过去帧获取3D特征。具体来说,首先使用预训练的主干 B B B提取图像特征,然后类似LSS的方法利用深度投影到3D空间,并使用体素池化 P P P得到3D体素特征 F t F_t Ft:
F t = P ( L S S ( B ( I ) ) ) F_t=P(LSS(B(I))) Ft=P(LSS(B(I)))
3D解码器:使用3D解码器 Θ \Theta Θ(由3D卷积、BN、ReLU和跳跃连接组成)聚合 F t F_t Ft的局部特征,然后使用两个MLP Φ σ \Phi_\sigma Φσ与 Φ s \Phi_s Φs预测占用概率(或体密度) V ^ σ \hat V_\sigma V^σ和 C C C类语义分数 V ^ s \hat V_s V^s。使用sigmoid函数 ψ \psi ψ将密度分数转化为概率:
V ^ s = Φ s ( Θ ( F t ) ) ∈ R X × Y × Z × C V ^ σ = ψ ( Φ σ ( Θ ( F t ) ) ) ∈ [ 0 , 1 ] X × Y × Z \hat V_s=\Phi_s(\Theta(F_t))\in\mathbb R^{X\times Y\times Z\times C}\\ \hat V_\sigma=\psi(\Phi_\sigma(\Theta(F_t)))\in[0,1]^{X\times Y\times Z} V^s=Φs(Θ(Ft))∈RX×Y×Z×CV^σ=ψ(Φσ(Θ(Ft)))∈[0,1]