SUDS: Scalable Urban Dynamic Scenes:可扩展的城市动态场景
创新点
1.将场景分解为三个单独的哈希表数据结构,以高效地编码静态、动态和远场辐射场
2.利用无标签的目标信号,包括RGB图像、稀疏LiDAR、现成的自监督2D描述符,以及最重要的2D光流
通过光度、几何和特征度量重建损失对这些输入进行操作,使得SUDS能够将动态场景分解为静态背景、单个对象和它们的运动。
方法
Inputs
监督:(1)对齐的稀疏LiDAR深度测量,(2)2D自监督像素(DINO [10])描述符来实现语义操作,以及(3)2D光流预测来建模场景动态。
以N个视频的有序RGB图像(在不同的天气和光照条件下拍摄)及其关联的相机姿态作为输入。
Representation
Scene composition
SUDS将场景分解为三个分支:(a)静态分支,包含在视频中一致的非移动地形,(b)动态分支,用于分解视频特定对象(移动或其他),(c)远场环境地图,用于表示远处对象和天空
受Instant-NGP的启发,论文使用F维特征向量的多分辨率哈希表实现每个分支,然后是一个小的MLP,沿着哈希函数来索引视频
Hash tables
如图所示,对于给定的输入坐标(x,d,t,vid), x ∈ R 3 \mathbf{x}\in\mathbb{R}^{3} x∈R3表示位置, d ∈ R 3 \mathbf{d}\in\mathbb{R}^3 d∈R3表示视角方向, t ∈ { 1 , . . . , T } t\in\{1,...,T\} t∈{1,...,T}表示帧的编号, v i d ∈ { 1 , . . . , N } \mathbf{vid}\in\{1,...,N\} vid∈{1,...,N}表示视频编号,类似于instant-ngp,在不同分辨率级别(l∈L)的每个哈希表中搜索周围的体素,并对这些网格的顶点进行哈希处理。
instant-ngp博客学习链接
静态分支(vl,s): 使用3D空间体素(vl,s)。
动态分支(vl,d): 使用4D时空体素(vl,d)。
远场分支(vl,e): 使用3D体素(vl,e),通过规范化的3D方向向量实现。这些体素用于索引环境地图。哈希函数如下
i l , s = static_hash ( s p a c e ( v l , s ) ) i l , d = dynamic.hash ( s p a c e ( v l , d ) , t i m e ( v l , d ) , v i d ) i l , e = env _ hash ( d i r ( v l , e ) , v i d ) \begin{aligned} &\mathbf{i}_{l,s} =\text{static\_hash}(space(\mathbf{v}_{l,s})) \\ &\mathbf{i}_{l,d} =\text{dynamic.hash}(space(\mathbf{v}_{l,d}),time(\mathbf{v}_{l,d}),\mathbf{vid}) \\ &\mathbf{i}_{l,e} =\text{env}\_\text{hash}(dir(\mathbf{v}_{l,e}),\mathbf{vid}) \end{aligned} il,s=static_hash(space(vl,s))il,d=dynamic.hash(space(vl,d),time(vl,d),vid)il,e=env_hash(dir(vl,e),vid)
论文通过插值将特征值映射到最近的体素顶点,并使用梯度平均处理哈希冲突。为了处理不同视频中可能存在的移动物体和照明条件的变化,论文使用视频编号作为哈希的辅助输入,但不参与插值。这样,可以有效地索引每个视频的插值函数,而不会线性增加内存。将每个级别的结果连接成特征向量,并通过 MLP 获取每个分支的输出。
Static branch
静态分支将从哈希表获得的特征向量映射为视图相关颜色cs和视图无关密度σs。通过视频特定矩阵Avid和傅立叶编码的时间索引F(t)的乘积作为潜在嵌入输入:
σ s ( x ) ∈ R c s ( x , d , A v i d F ( t ) ) ∈ R 3 . \begin{aligned}&\sigma_s(\mathbf{x})\in\mathbb{R}\\&\mathbf{c}_s(\mathbf{x},\mathbf{d},A_{vid}\mathcal{F}(t))\in\mathbb{R}^3.\end{aligned} σs(x)∈Rcs(x,d,AvidF(t))∈R3.
使其能够考虑跨视频的显著变化以及单个视频内的平滑过渡
Dynamic branch
而在动态分支中,cd,σd可以随时间变化。在计算动态辐射度时,论文省略了潜在的代码。论文发现阴影在城市场景的外观中起着至关重要的作用,所以显式地对标量值ρd∈[0,1]的阴影场进行建模,用于调整静态颜色cs
σ d ( x , t , v i d ) ∈ R ρ d ( x , t , v i d ) ∈ [ 0 , 1 ] c d ( x , t , v i d , d ) ∈ R 3 \begin{aligned} &\sigma_{d}(\mathbf{x},\mathbf{t},\mathbf{vid})\in\mathbb{R} \\ &\rho_{d}(\mathbf{x},\mathbf{t},\mathbf{vid})\in[0,1] \\ &\mathbf{c}_d(\mathbf{x},\mathbf{t},\mathbf{vid},\mathbf{d})\in\mathbb{R}^3 \end{aligned} σd(x,t,vid)∈Rρd(x,t,vid)∈[0,1]cd(x,t,vid,d)∈R3
如上图,论文中学习了一个显式的阴影场(a)作为静态颜色的逐点减少,与(b)相比,能够实现更好的深度重建和静态/动态因子分解。
Far-field branch
因为天空需要考虑到远场辐射,并且在不同的视频中可能发生巨大的变化,论文使用一个依赖于观察方向d,和视频id vid的环境图 c e ( d , v i d ) ∈ R 3 \mathbf{c}_e(\mathbf{d},\mathbf{vid})\in\mathbb{R}^3 ce(d,vid)∈R3 对远处进行建模
Rendering
通过计算静态和动态分量的加权和,结合逐点阴影减少,得到任意位置的单个密度和辐射值
σ ( x , t , v i d ) = σ s ( x ) + σ d ( x , t , v i d ) c ( x , t , v i d , d ) = σ s σ ( 1 − ρ d ) c s ( x , d , A v i d F ( t ) ) + σ d σ c d ( x , t , v i d , d ) \begin{aligned} \sigma(\mathbf{x},\mathbf{t},\mathbf{vid})& =\sigma_{s}(\mathbf{x})+\sigma_{d}(\mathbf{x},\mathbf{t},\mathbf{vid}) \\ \mathbf{c}(\mathbf{x},\mathbf{t},\mathbf{vid},\mathbf{d})& =\frac{\sigma_{s}}{\sigma}(1-\rho_{d})\mathbf{c}_{s}(\mathbf{x},\mathbf{d},A_{vid}\mathcal{F}(t)) \\ &+\frac{\sigma_{d}}{\sigma}\mathbf{c}_{d}(\mathbf{x},\mathbf{t},\mathbf{vid},\mathbf{d}) \end{aligned} σ(x,t,vid)c(x,t,vid,d)=σs(x)+σd(x,t,vid)=σσs(1−ρd)cs(x,d,AvidF(t))+σσdcd(x,t,vid,d)
通过沿光线在采样点处累积透射率,并强制光线与远场环境贴图相交,以获得相机光线在给定帧和视频中的颜色:
C ^ ( r , t , v i d ) = ∫ 0 + ∞ T ( t ) σ ( r ( t ) , t , v i d ) c ( r ( t ) , t , v i d , d ) d t + T ( + ∞ ) c e ( d , v i d ) , w h e r e T ( t ) = exp ( − ∫ 0 t σ ( r ( s ) , t , v i d ) d s ) . \begin{aligned} &\hat{C}(\mathbf{r},\mathbf{t},\mathbf{vid}) =\int_{0}^{+\infty}T(t)\sigma(\mathbf{r}(t),\mathbf{t},\mathbf{vid})\mathbf{c}(\mathbf{r}(t),\mathbf{t},\mathbf{vid},\mathbf{d})dt +T(+\infty)\mathbf{c}_{e}(\mathbf{d},\mathbf{vid}), \\ &\mathrm{where}T(t) =\exp\left(-\int_0^t\sigma(\mathbf{r}(s),\mathbf{t},\mathbf{vid})ds\right). & \end{aligned} C^(r,t,vid)=∫0+∞T(t)σ(r(t),t,vid)c(r(t),t,vid,d)dt+T(+∞)ce(d,vid),whereT(t)=exp(−∫0tσ(r(s),t,vid)ds).
Feature distillation(特征蒸馏)
对于如何将语义识别集成到SUDS系统中,论文将自监督的2D特征提取器(DINO)的输出作为教师模型蒸馏到SUDS网络中。类似于达到语义分割的目的
DINO:把自监督学习下的vision transformer的自注意力图拿出来可视化,会发现他可以抓到每个物体的轮廓,甚至匹配语义分割的效果。
对于将图像转换为密集的RH×W×C特征网格的特征提取器,其中H和W分别为特征网格的高度和宽度,C是通道数,系统在每个分支上都添加了一个C维输出头。这些输出头分别表示为:
论文通过在N个输入视频中随机采样射线批次,并最小化以下损失函数来联合优化所提的三个模型分支和每个视频的权重矩阵Avid
Reconstruction losses
论文最小化L2光度损失函数(与原始NeRF相同): L c ( r ) = ∥ C ( r ) − C ^ ( r ) ∥ 2 \mathcal{L}_{c}(\mathbf{r})=\left\|C(\mathbf{r})-\hat{C}(\mathbf{r})\right\|^{2} Lc(r)= C(r)−C^(r) 2
同样地,论文最小化教师模型和我们的网络的特征输出之间的L1差异(DINO网络损失): L f ( r ) = ∥ F ( r ) − F ^ ( r ) ∥ 1 \mathcal{L}_{f}(\mathbf{r})=\left\|F(\mathbf{r})-\hat{F}(\mathbf{r})\right\|_{1} Lf(r)= F(r)−F^(r) 1
为了利用深度测量结果,将LiDAR扫描投影到相机平面上,并将预期深度 D ^ ( r ) \hat{D}(r) D^(r)与测量深度进行比较
L d ( r ) = ∥ D ( r ) − D ^ ( r ) ∥ 2 where D ^ ( r ) = ∫ 0 + ∞ T ( s ) σ ( r ( s ) ) d s \begin{aligned}\mathcal{L}_d(\mathbf{r})&=\left\|D(\mathbf{r})- \hat{D}(\mathbf{r})\right\|^2 \\\text{where}\hat{D}(\mathbf{r})&=\int_0^{+\infty}T(s)\sigma(\mathbf{r}(s))ds\end{aligned} Ld(r)whereD^(r)= D(r)−D^(r) 2=∫0+∞T(s)σ(r(s))ds
Flow
论文使用2D光流来监督3D场景流的预测。对于每个相机光线,论文生成一个2D位移向量,首先通过将光线上的场景流邻居进行加权求和来预测其在3D空间中的位置
3D warping
论文还发现强制保持3D颜色(和特征)的一致性非常有用;即颜色在移动时保持不变。为了实现这一点,论文使用预测的正向和反向3D流场st+1和st-1将每个样本沿着光线迁移至下一帧/上一帧
变形后的颜色和体密度被渲染成了变形后的颜色和特征: C ^ w ( r ) \hat{C}^{w}\left(\mathbf{r}\right) C^w(r) , F w ~ ( r ) \tilde{F^{w}}(\mathbf{r}) Fw~(r)
添加损失以确保扭曲的颜色(和特征)与当前帧的地面实况输入匹配,使用动态几何和变形后的动态几何之间的差异来降低损失
Flow regularization
使用3D场景流循环项来鼓励前向和后向场景流预测之间的一致性,降低由于遮挡而导致的模糊区域的损失
还通过Lsm(r)鼓励空间和时间平滑,通过 L s l o ( r ) = ∑ t ′ ∈ [ t − 1 , t + 1 ] ∑ x ∥ s t ′ ( x , t ) ∥ 1 . \mathcal{L}_{slo}(\mathbf{r})=\sum_{t^{\prime}\in[\mathbf{t}-1,\mathbf{t}+1]}\sum_{\mathbf{x}}\left\|s_{t^{\prime}}(\mathbf{x},\mathbf{t})\right\|_{1}. Lslo(r)=∑t′∈[t−1,t+1]∑x∥st′(x,t)∥1. 则化预测场景流向量的大小,以鼓励场景保持静态。
Static-dynamic factorization(静动态分解)
空间中的任意点都应该被静态或动态对象占据,论文通过偏向静态场景的偏斜二进制熵损失来鼓励静态和动态密度的空间比例接近于0或1
Shadow loss
论文对每条光线沿着光线路径对阴影比率的平方幅值进行惩罚,以防止其对暗区域进行过度解释。具体而言,论文使用以下损失函数进行惩罚:
L ρ ( r ) = ∫ 0 + ∞ ρ d ( r ( t ) ) 2 \mathcal{L}_{\rho}(\mathbf{r})=\int_{0}^{+\infty}\rho_{d}(\mathbf{r}(t))^{2} Lρ(r)=∫0+∞ρd(r(t))2
论文提出了一种模块化的方法,用于以前未开发的规模构建动态神经表示。论文的多分支哈希表结构使论文方法能够将静态几何和短暂对象高效地分离和编码,跨越成千上万的视频。SUDS利用未标记的输入来学习语义感知和场景流,使其能够执行多个下游任务,同时超越依赖人工标注的最先进方法。尽管论文提出了构建城市规模动态环境的初步尝试,但在构建真正逼真的表示之前仍然存在许多挑战。