论文地址:Cost Volume Pyramid Based Depth Inference for Multi-View Stereo
这篇文章采用了代价体金字塔,由粗糙到精细逐级生成深度图;在第一次深度估计时直接生成固定大小的代价体,在后面的深度估计中,基于上一层预测的深度图来构建自适应的代价体来预测深度的残差图。
记 I 0 ∈ R H × W I_{0}\in R^{H\times W} I0∈RH×W为参考图像, { I i } i = 1 N \{I_{i} \}_{i=1}^{N} {Ii}i=1N 为源图像, { K i , R i , t i } i = 0 N \{K_{i}, R_{i}, t_{i} \}_{i=0}^{N} {Ki,Ri,ti}i=0N 为对应的相机内参,旋转矩阵和平移矩阵,目标是预测参考图像 I 0 I_{0} I0 对应的深度图 D D D;
使用卷积神经网络来对参考图像 I 0 I_{0} I0 与 N − 1 N-1 N−1 张源图像进行特征提取得到特征图 { f i l } i = 0 N \left\{\mathrm{f}_{i}^{l}\right\}_{i=0}^{N} {fil}i=0N,其中 f i l ∈ R H / 2 l × W / 2 l × F \mathrm{f}_{i}^{l} \in \mathbb{R}^{H / 2^{l} \times W / 2^{l} \times F} fil∈RH/2l×W/2l×F, F F F为16。在特征提取网络中,使用Conv + LeakyReLu来代替一般的 Conv + BN + ReLu结构。
在传统的MVSNet中,根据方差来构建单个尺度下的匹配代价体,这篇文章提出了构建多尺度的自适应代价体金字塔,由上一个尺度的深度预测图自适应生成当前的自适应代价体;
初始深度图预测:参照MVSNet的方法,将源视图的特征体经过相机参数warp到参考视图中,基于方差构建代价体,然后经过3D U-Net生成低分辨率的初始深度图(可参照MVSNet论文阅读);
参考视图到源视图的投影关系如式1所示:
H i ( d ) = K i L R i ( I − ( t 0 − t i ) n 0 T d ) R 0 − 1 ( K 0 L ) − 1 (1) \mathbf{H}_{i}(d)=\mathbf{K}_{i}^{L} \mathbf{R}_{i}\left(\mathbf{I}-\frac{\left(\mathbf{t}_{0}-\mathbf{t}_{i}\right) \mathbf{n}_{0}^{T}}{d}\right) \mathbf{R}_{0}^{-1}\left(\mathbf{K}_{0}^{L}\right)^{-1}\tag{1} Hi(d)=KiLRi(I−d(t0−ti)n0T)R0−1(K0L)−1(1)
其中, I I I 为单位矩阵, K i L K_{i}^{L} KiL和 K 0 L K_{0}^{L} K0L为第 L L L level的内参矩阵;两个视图时间的关系为: λ i x ~ i = H i ( d ) x \lambda_{i} \tilde{\mathbf{x}}_{i}=\mathbf{H}_{i}(d) \mathbf{x} λix~i=Hi(d)x, λ i \lambda_{i} λi 为第 i i i 个源视图对应像素点的深度;
基于方差建立代价体如式2所示:
C d L = 1 ( N + 1 ) ∑ i = 0 N ( f ~ i , d L − f ‾ d L ) 2 (2) \mathbf{C}_{d}^{L}=\frac{1}{(N+1)} \sum_{i=0}^{N}\left(\tilde{\mathbf{f}}_{i, d}^{L}-\overline{\mathrm{f}}_{d}^{L}\right)^{2}\tag{2} CdL=(N+1)1i=0∑N(f~i,dL−fdL)2(2)
其中: i i i 表示第 i i i 个视图, N N N 表示总的视图数, L L L 表示第 L L L个level, d d d 表示求将源视图投影到参考视图深度为 d d d的代价, f ‾ d L \overline{\mathrm{f}}_{d}^{L} fdL 表示所有视图的特征warp到参考视图深度为d时的平均值, C L ∈ R W / 2 L × H / 2 L × M × F \mathbf{C}^{L} \in \mathbb{R}^{W / 2^{L} \times H / 2^{L} \times M \times F} CL∈RW/2L×H/2L×M×F, M M M 为假设的深度层的总数目,其中 M M M 是自适应参数(在2.4介绍),该度量方法使得每个视图的像素都以相同的贡献值参与计算,鼓励每个像素的正确深度具有最小的特征方差,即满足光度一致性约束。
模型的目标是预测参考视图 I 0 I_{0} I0 的深度图 D 0 D_{0} D0 ,已求得level为 l l l 时的深度图 D l D_{l} Dl ,现在需沿着金字塔方向估计下一层的深度图 D l D_{l} Dl ,首先将上一层预测的深度图 D l + 1 D_{l+1} Dl+1 基于双线性差值上采样得 D ↑ l + 1 \mathrm{D}_{\uparrow}^{l+1} D↑l+1,接下来,通过构建自适应代价体来回归深度残差图 Δ D l \Delta \mathrm{D}^{l} ΔDl,上下两个level的深度图的关系如下: D l = D ↑ l + 1 + Δ D l (3) \mathrm{D}^{l}=\mathrm{D}_{\uparrow}^{l+1}+\Delta \mathrm{D}^{l}\tag{3} Dl=D↑l+1+ΔDl(3)
具体的做法如下:
假设当前level的代价体的深度分辨率为 Δ d p = s p / M \Delta d_{\mathrm{p}}=s_{\mathrm{p}} / M Δdp=sp/M,其中 s p s_{p} sp 表示深度搜索范围,而 M M M 表示在深度范围内采样的个数,参考视图与源视图的对应点的映射关系如式4所示:
λ i x i ′ = K i l ( R i R 0 − 1 ( ( K 0 l ) − 1 ( u , v , 1 ) T ( d p + m Δ d p ) − t 0 ) + t i ) (4) \lambda_{i} \mathbf{x}_{i}^{\prime}=\mathbf{K}_{i}^{l}\left(\mathbf{R}_{i} \mathbf{R}_{0}^{-1}\left(\left(\mathbf{K}_{0}^{l}\right)^{-1}(u, v, 1)^{T}\left(d_{\mathbf{p}}+m \Delta d_{\mathbf{p}}\right)-\mathbf{t}_{0}\right)+\mathbf{t}_{i}\right)\tag{4} λixi′=Kil(RiR0−1((K0l)−1(u,v,1)T(dp+mΔdp)−t0)+ti)(4)
其中: λ i \lambda_{i} λi 表示源视图 i i i 中对应像素点的深度, m ∈ { − M / 2 , ⋯ , M / 2 − 1 } m \in\{-M / 2, \cdots, M / 2-1\} m∈{−M/2,⋯,M/2−1} ,式4的含义为:当参考视图的像素点在深度搜索范围 s p s_{p} sp 内沿着分辨率 Δ d p \Delta d_{\mathrm{p}} Δdp 采样时,对应源视图的像素点的关系,根据式2可以计算出每一层的代价体 C l ∈ R H / 2 l × W / 2 l × M × F \mathrm{C}^{l} \in \mathbb{R}^{H / 2^{l} \times W / 2^{l} \times M \times F} Cl∈RH/2l×W/2l×M×F,由当前视差图构建下一层自适应代价体时,最重要的是自适应代价体的搜索范围和采样间隔的确定。
注意到,代价体的深度采样间隔与深度图的分辨率有关,采样太密集时,得到的深度信息都是相似的,采样间隔大时能提供更丰富的信息;在实验中,采用了0.5个像素距离对应的深度间隔信息;下面介绍如何计算深度采样间隔 Δ d p l \Delta d_{\mathrm{p}}^{l} Δdpl :
遍历上阶段预测的参考视图的深度图的点,首先将参考视图中的点 P 0 = ( u , v ) P_{0}=(u, v) P0=(u,v) 反投影到三维空间中,得到 P w 0 P_{w_{0}} Pw0,然后将 P w 0 P_{w_{0}} Pw0投影到源视图 i i i 中得到 P i P_{i} Pi,在源视图 i i i 的极线方向上取距离其0.5个像素距离的点 P i ′ P_{i}^{\prime} Pi′,将其投影回源视图与 P 0 P_{0} P0 的射线方向上得 P w 0 ′ P_{w_{0}}^{\prime} Pw0′,即: Δ d p \Delta d_{\mathrm{p}} Δdp = P w 0 ′ − P w 0 P_{w_{0}}^{\prime} - P_{w_{0}} Pw0′−Pw0 ,最后在上一层预测的深度图的上采样图上沿着 Δ d p \Delta d_{\mathrm{p}} Δdp间隔上下采样m个深度作为深度假设空间即: D ↑ l + 1 ( p ) + ∑ m = − M / 2 ( M − 2 ) / 2 m Δ d p l \mathbf{D}_{\uparrow}^{l+1}(\mathbf{p})+\sum_{m=-M / 2}^{(M-2) / 2}m\Delta d_{\mathrm{p}}^{l} D↑l+1(p)+∑m=−M/2(M−2)/2mΔdpl;
使用3D U-Net对该层的代价体进行正则化得到概率体 P P l P_{P}^{l} PPl ,基于假设深度空间与概率体,基于期望求预测残差值如式 5 所示:
D l ( p ) = D ↑ l + 1 ( p ) + ∑ m = − M / 2 ( M − 2 ) / 2 r p P P l ( r p ) (5) \mathbf{D}^{l}(\mathbf{p})=\mathbf{D}_{\uparrow}^{l+1}(\mathbf{p})+\sum_{m=-M / 2}^{(M-2) / 2}r_{p}P_{P}^{l}(r_{p})\tag{5} Dl(p)=D↑l+1(p)+m=−M/2∑(M−2)/2rpPPl(rp)(5)
其中 r p = m Δ d p l r_{p}=m\Delta d_{\mathrm{p}}^{l} rp=mΔdpl, l ∈ { L − 1 , L − 1 , . . . , 0 } l\in\{L-1, L-1, ...,0\} l∈{L−1,L−1,...,0}
损失函数如式 6 所示:
L o s s = ∑ l = 0 L ∑ p ∈ Ω ∥ D G T l ( p ) − D l ( p ) ∥ 1 (6) L o s s=\sum_{l=0}^{L} \sum_{\mathbf{p} \in \Omega}\left\|\mathbf{D}_{\mathrm{G} T}^{l}(\mathbf{p})-\mathbf{D}^{l}(\mathbf{p})\right\|_{1}\tag{6} Loss=l=0∑Lp∈Ω∑∥∥DGTl(p)−Dl(p)∥∥1(6)
其中 Ω \Omega Ω 表示Ground True中的有效像素集合;