论文地址:http://openaccess.thecvf.com/content/ICCV2023/papers/Zhou_Two-in-One_Depth_Bridging_the_Gap_Between_Monocular_and_Binocular_Self-Supervised_ICCV_2023_paper.pdf
源码地址:code
概述
现有的单目和双目自监督深度估计方法是独立的,忽略了两种任务之间的相似性和互补性。为此,本文提出一种TiO-Depth的自监督深度估计算法,通过采用孪生架构,每个子网络都可以作为单目深度估计模型,从而实现单目和双目任务的兼容处理。此外,设计了双路径解码器和单目特征匹配模块 (MFM)。双路径解码器能够逐步聚合提取的图像特征,分别用于单目和双目深度估计。而单目特征匹配模块利用交叉注意力机制生成左(或右)视图的代价积,并将其集成到相应的特征中,从而有效地融合两个子网络的特征,处理双目深度估计。最后,文中提出了一种多阶段联合训练策略,该策略分为三个步骤:单目约束训练、双目约束训练和蒸馏训练。每个步骤利用前一步的结果来提高性能,结合单目和双目任务的相对优势,提高预测精度。在 KITTI、Cityscapes 和 DDAD 数据集上的实验结果表明,TiO-Depth 在大多数情况下优于现有的单目和双目深度估计方法。
方法
TiO-Depth使用参数共享的孪生结构(包含编码器和解码器)作为单目的深度估计网络来预测单个视图的深度信息。此外,使用双路径解码器作为子网络的解码器,并使用MFM模块来学习双目之间的几何特征,并将其融入到输入特征中用于预测双目深度。文中使用Swin-transformer作为特征提取器来提取输入视图的多尺度的特征图。
双路解码器
双路解码器用于逐步聚合双目图像的特征来预测深度图,其中包括了自蒸馏特征聚合块(SDFA)、一个解码器块、三个单目特征匹配块和两层卷积核为3的卷积层作为输出层。在单目和双目任务重,特征可以通过不同路径进入不同的模块。
在单目深度估计分支,多尺度特征在SDFA和解码器模块中逐步聚合。SDFA模块可以在聚合不同尺度的特征时保留特征之间的上下文一致性。解码器块包含两个3x3的卷积层(使用ELU作为激活函数),并使用一个上采样操作来得到高分辨率的特征图,用于输入到output layer。然后由output layer生成离散的视差体V。
在双目分支中,MFM模块使用SDFA块输出的解码特征 { F i l , F i r } i = 2 4 \{F_i^l,F_i^r\}_{i=2}^4 {
Fil,Fir}i=24来生成对应的立体特征 { F i l ′ , F i r ′ } i = 2 4 \{F_i^{l'},F_i^{r'}\}_{i=2}^4 {
Fil′,Fir′}i=24,最后由解码特征 { F 1 l , F 1 r } \{F_1^l,F_1^r\} {
F1l,F1r} 生成左右立体离散视差体 { F s l , V s r } \{F_s^l, V_s^r\} {
Fsl,Vsr}。
得到了离散视差体V后,使用softmax将其转换成概率体P,基于期望回归得到其视差值:
d = ∑ n = 0 N − 1 P n ⊙ b n (1) d = \sum_{n=0}^{N-1} P_n \odot b_n\tag{1} d=n=0∑N−1Pn⊙bn(1)
最后基于基线B与焦距来将视差图转换成深度图 D = B f x d D=\frac{Bf_{x}}{d} D=dBfx。
单目特征匹配模块(MFM)
给定特征 { F l , F t } ∈ R C × H ′ × W ′ \{ F^l, F^t \} \in \mathbb{R}^{C \times H' \times W'} {
Fl,Ft}∈RC×H′×W′, MFM使用交叉注意力来计算左右视图的匹配代价体。先各自使用一个1x1的卷积来生成左视图的 Q l Q^l Ql和右视图的 K r K^r Kr并计算注意力
S n l = ∑ ( Q l ⊙ K n r ) C , (2) S_n^l = \frac{\sum (Q^l \odot K_n^r)}{\sqrt{C}},\tag{2} Snl=C