【论文笔记】OccFlowNet: Towards Self-supervised Occupancy Estimation via Differentiable Rendering and Occu

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]X×Y×Z

推断时,可给定置信度阈值 τ \tau τ,组合上述结果得到最终的语义预测 V ^ \hat V V^
V ^ ( x , y , z ) = { arg max ⁡ c V ^ s ( x , y , z ) V ^ σ ( x , y , z ) ≥ τ c 0 V ^ σ ( x , y , z ) < τ \hat V(x,y,z)=\left\{\begin{matrix}\argmax_c \hat V_s(x,y,z)&\hat V_\sigma(x,y,z)\geq\tau\\ c_0&\hat V_\sigma(x,y,z)<\tau\end{matrix}\right. V^(x,y,z)={argmaxcV^s(x,y,z)c0V^σ(x,y,z)τV^σ(x,y,z)<τ

3.3 3D监督

可分别使用3D密度损失(二元交叉熵)和3D语义损失(交叉熵)监督MLP的输出。给定3D语义占用标签 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,占用概率与语义标签真值如下:
V σ ( x , y , z ) = { 0 V ( x , y , z ) = c 0 1 否则 V s ( x , y , z ) = { V ( x , y , z ) V ( x , y , z ) ≠ c 0 忽略 否则 V_\sigma(x,y,z)=\left\{\begin{matrix}0&V(x,y,z)=c_0\\ 1&否则\end{matrix}\right.\\ V_s(x,y,z)=\left\{\begin{matrix}V(x,y,z)&V(x,y,z)\neq c_0\\ 忽略&否则\end{matrix}\right. Vσ(x,y,z)={01V(x,y,z)=c0否则Vs(x,y,z)={V(x,y,z)忽略V(x,y,z)=c0否则

3.4 2D渲染监督

当3D标签不可获取时,使用可微体渲染和2D标签训练。本文以可微方式渲染预测的体素 V ^ \hat V V^以获取估计的深度与语义图,并计算与2D真值之间的损失。

射线生成:给定相机 i i i的外参 E i E_i Ei和内参 K i K_i Ki,建立射线集合 R R R,其每条射线 r r r从相机原点出发指向像素。对像素 ( u , v ) i (u,v)_i (u,v)i,射线原点 o i ( u , v ) o_i(u,v) oi(u,v)和射线方向 d i ( u , v ) d_i(u,v) di(u,v)按下式获取:
o i ( u , v ) = E i , d i ( u , v ) = E i K i − 1 [ u , v , 1 ] o_i(u,v)=E_i,d_i(u,v)=E_iK_i^{-1}[u,v,1] oi(u,v)=Ei,di(u,v)=EiKi1[u,v,1]

训练时,只对有真实深度和语义的像素建立射线。从射线 r = o + t d r=o+td r=o+td上不同距离 t t t处采样,并使用体渲染计算深度 D ^ ( r ) \hat D(r) D^(r)与语义 S ^ ( r ) \hat S(r) S^(r)。本文使用从粗到细的采样方法,以决定采样距离 t t t

体采样:通过三线性插值从 V ^ σ \hat V_\sigma V^σ V ^ s \hat V_s V^s中得到采样点的占用概率 σ ( r ( t ) ) \sigma(r(t)) σ(r(t))和语义分数 s ( r ( t ) ) s(r(t)) s(r(t))

体渲染:渲染权重 w ( r ( t ) ) w(r(t)) w(r(t))可通过沿射线积累密度得到:
w ( r ( t ) ) = T ( r ( t ) ) ( 1 − exp ⁡ ( − σ ( r ( t ) ) δ t ) ) , T ( r ( t ) ) = exp ⁡ ( − ∑ j = 1 t − 1 σ ( r ( j ) ) δ j ) w(r(t))=T(r(t))(1-\exp(-\sigma(r(t))\delta_t)),\\ T(r(t))=\exp(-\sum_{j=1}^{t-1}\sigma(r(j))\delta_j) w(r(t))=T(r(t))(1exp(σ(r(t))δt)),T(r(t))=exp(j=1t1σ(r(j))δj)

其中 T ( r ( t ) ) T(r(t)) T(r(t))为沿射线的、距离 t t t处的累积透射率, δ t = r ( t + 1 ) − r ( t ) \delta_t=r(t+1)-r(t) δt=r(t+1)r(t)为采样点之间的距离。最后,可通过加权求和计算渲染深度与语义图:
D ^ ( r ) = ∑ t = 1 N w ( r ( t ) ) t S ^ ( r ) = ∑ t = 1 N w ( r ( t ) ) s ( r ( t ) ) \hat D(r)=\sum_{t=1}^Nw(r(t))t\\ \hat S(r)=\sum_{t=1}^Nw(r(t))s(r(t)) D^(r)=t=1Nw(r(t))tS^(r)=t=1Nw(r(t))s(r(t))

损失:使用均方误差作为深度损失,交叉熵损失作为语义损失。为获取真值,可将标注的激光雷达点云投影到图像平面,获取 ( u , v ) (u,v) (u,v)位置和相应的深度与语义标签。

3.5 时间渲染

为增加体素被使用的总次数并增加监督,从时间上相邻的帧(简称时间帧)生成额外的射线。训练时,从时间范围 T = { t ∣ t ∈ Z , − O ≤ t ≤ O } T=\{t|t\in\mathbb Z,-O\leq t\leq O\} T={ttZ,OtO}内读取的过去帧与未来帧,组成帧集 D t e m p = { I t ∣ t ∈ T } D_{temp}=\{I_t|t\in T\} Dtemp={IttT}。对帧 I t I_t It,其激光雷达点云 P t P_t Pt被投影到图像上以获取深度与语义真值。然后从所有时间帧中生成射线,并通过相机和自车姿态转换到当前帧下。

由于场景中存在动态物体,本文提出两种过滤技术,保证时间帧的渲染正确性;还提出损失加权以抵消类别不平衡问题。

动态射线过滤:在每个 t ≠ 0 t\neq 0 t=0的时间帧中,所有来自动态物体的激光雷达点被移除【不用于生成2D真值】,因此仅渲染与当前帧一致的静态物体。需要生成对应射线的点云集合为:
D P = { P t c ∣ t = 0 或 ( t ≠ 0 且 c ∈ C s t a t i c ) } D_P=\{P_t^c|t=0或(t\neq0且c\in C_{static})\} DP={Ptct=0(t=0cCstatic)}

其中 P t c P_t^c Ptc t t t时刻的、类别为 c c c的激光雷达点, C s t a t i c C_{static} Cstatic为静态类别标签集合。

去遮挡:由于运动的物体在未来帧可能会显露出当前帧被遮挡的部分。本文将时间帧中动态物体【动态体素】的密度设置为0,从而可为被显现的背景进行预测。

损失加权:动态物体相比静态物体在场景中更少出现,但对自动驾驶非常重要。在时间帧中过滤掉动态物体进一步加大其稀疏性。本文基于类别在数据集中的出现频率,缩放每个射线对应的损失。对属于类别 c c c的射线,其权重 w w w为:
w ( c ) = log ⁡ ( ∑ k = 0 C N k N c ) w(c)=\log(\frac{\sum_{k=0}^CN_k}{N_c}) w(c)=log(Nck=0CNk)

其中 N i N_i Ni为标签为 i i i的点在数据集中的数量。

3.6 占用流

为进一步处理动静态类别不平衡问题,本文引入占用流,基于3D边界框对每个动态体素预测场景流。根据体素流,可将动态体素移动到时间帧的正确位置,从而无需动态物体过滤而进行渲染。

训练时,将正确预测且在边界框内的体素,进行流变换以转换到时间帧的目标位置,然后使用基于距离倒数的加权插值对齐网格。具体来说,给定流变换后点的位置 x x x【对应的密度与分数为 σ ( v ) , s ( v ) \sigma(v),s(v) σ(v),s(v)】,选择其最近的8个体素 v i v_i vi(中心为 x i x_i xi),并按下式计算权重:
w i ( x ) = 1 ∣ x − x i ∣ w_i(x)=\frac1{|x-x_i|} wi(x)=xxi1

网格的语义分数 s s s会按照下式更新:
s ( v i ) = w i ( x ) ∑ p = 1 P w p ( x ) s ( v ) + ( 1 − w i ( x ) ∑ p = 1 P w p ( x ) ) s ( v i ) s(v_i)=\frac{w_i(x)}{\sum_{p=1}^Pw_p(x)}s(v)+(1-\frac{w_i(x)}{\sum_{p=1}^Pw_p(x)})s(v_i) s(vi)=p=1Pwp(x)wi(x)s(v)+(1p=1Pwp(x)wi(x))s(vi)

其中 p p p索引选择的相邻体素中心。密度概率 σ \sigma σ的更新类似。

这样,可得到 ∣ T ∣ |T| T个语义与密度场 V ˉ s ∈ R ∣ T ∣ × X × Y × Z × C , V ˉ σ ∈ [ 0 , 1 ] ∣ T ∣ × X × Y × Z \bar V_s\in\mathbb R^{|T|\times X\times Y\times Z\times C},\bar V_\sigma\in\mathbb [0,1]^{|T|\times X\times Y\times Z} VˉsRT×X×Y×Z×C,Vˉσ[0,1]T×X×Y×Z,表达时间帧上场景的状态,从而可在相应帧的占用场内进行体渲染。

4. 实验

4.1 数据集

使用Occ3D-nuScenes数据集,占用流真值由nuScenes的3D边界框标注计算。

4.3 3D占用预测结果

本文使用2D监督、不含占用流的模型能超过部分3D监督方法的性能(其余方法仅有略高的性能)。这说明2D监督对3D占用预测来说是足够的。此外,能超过所有其余2D监督方法的性能。

加入占用流时,性能能进一步提升,超过绝大部分3D监督方法的性能。性能的提升主要在动态物体上,因为时间帧的渲染会引入时间误差。虽然过滤射线和去遮挡有一定作用,但占用流能通过增加监督(避免过滤射线)进一步减小这一误差。

添加3D标签后,本文方法的性能能大幅超过现有方法。

4.4 消融研究

组件:相比仅使用语义监督,增加深度监督能大幅提高性能;进一步增加时间渲染(不进行动态物体过滤和损失加权)能进一步增加性能。最后,加入动态物体过滤和损失加权,能达到最优的性能。

时间范围:增加时间渲染的时间范围能提高性能,但进一步增加会降低性能。这可能是因为间隔太长时间的相机太远,视锥相交太少,从而使监督无效。

5. 结论

局限性:本文需要依赖激光雷达数据训练(可通过强大的基石模型获取深度与语义标签);需要依赖3D边界框标注来引入占用流(可通过网络估计占用流并通过体渲染优化)。


补充材料

B. 细节:动态射线过滤

将非当前帧中的、所属类别为动态物体的激光雷达点移除,然后为每个剩下的激光雷达点生成对应帧下的射线。

C. 细节:占用流

首先计算帧间边界框的变换,以将估计的动态占用变换到目标时刻的位置。此时无需动态射线过滤,因为时间帧内的动态物体已经位于正确的位置。这样,可以生成更多的动态物体射线,从而极大地提高其性能。

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: Faster R-CNN是一种基于区域建议网络(Region Proposal Networks,RPN)的物体检测算法,旨在实现实时物体检测。它通过预测每个区域是否含有物体来生成候选框,并使用卷积神经网络(CNN)来确定候选框中的物体类别。Faster R-CNN在提高检测精度的同时,也显著提高了检测速度。 ### 回答2: 在计算机视觉领域中,目标检测一直是热门研究的方向之一。近年来,基于深度学习的目标检测方法已经取得了显著的进展,并且在许多实际应用中得到了广泛的应用。其中,Faster R-CNN 是一种基于区域建议网络(Region Proposal Networks,RPN)的目标检测方法,在检测准确率和速度之间取得了很好的平衡,能够实现实时目标检测。 Faster R-CNN 的基本框架由两个模块组成:区域建议网络(RPN)和检测模块。RPN 主要负责生成候选目标框,而检测模块则利用这些候选框完成目标检测任务。具体来说,RPN 首先在原始图像上以多个尺度的滑动窗口为基础,使用卷积网络获取特征图。然后,在特征图上应用一个小型网络来预测每个位置是否存在目标,以及每个位置的目标边界框的坐标偏移量。最终,RPN 根据预测得分和位置偏移量来选择一部分具有潜在对象的区域,然后将这些区域作为候选框送入检测模块。 检测模块的主要任务是使用候选框来检测图像中的目标类别和位置。具体来说,该模块首先通过将每个候选框映射回原始图像并使用 RoI Pooling 算法来获取固定大小的特征向量。然后,使用全连接神经网络对这些特征向量进行分类和回归,以获得每个框的目标类别和精确位置。 相比于传统的目标检测方法,Faster R-CNN 具有以下优点:首先,通过使用 RPN 可以自动生成候选框,避免了手动设计和选择的过程;其次,通过共享卷积网络可以大大减少计算量,提高效率;最后,Faster R-CNN 在准确率和速度之间取得了很好的平衡,可以实现实时目标检测。 总之,Faster R-CNN 是一种高效、准确的目标检测方法,是深度学习计算机视觉领域中的重要应用之一。在未来,随着计算机视觉技术的进一步发展,Faster R-CNN 这类基于深度学习的目标检测方法将会得到更广泛的应用。 ### 回答3: Faster R-CNN是一种结合了深度学习和传统目标检测算法的新型目标检测方法,旨在提高目标检测速度和准确率。Faster R-CNN采用了Region Proposal Network(RPN)来生成候选区域,并通过R-CNN网络对候选区域进行分类和定位。 RPN是一种全卷积神经网络,用于在图像中生成潜在的候选区域。RPN通常在卷积特征图上滑动,对每个位置预测k个候选区域和其对应的置信度得分。这样,对于输入图像,在不同大小和宽高比的Anchor上预测候选框,可以在计算上更有效率。 R-CNN网络利用卷积特征图作为输入,对RPN生成的候选区域进行分类和精确定位。与以前的目标检测方法相比,Faster R-CNN使用了共享卷积特征,使得整个检测网络可以端到端地进行训练和优化,缩短了训练时间,同时也更便于理解和改进。 Faster R-CNN不仅具有较高的准确性,还具有较快的检测速度。在各种基准测试中,Faster R-CNN与其他目标检测算法相比,都取得了优异的性能表现。总之,Faster R-CNN将目标检测引入了一个新的阶段,为实时目标检测提供了一个良好的基础。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

byzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值