参考代码:
- 官方:S2R-DepthNet,
但是2021-0607通过该入口无法进入了,后续再观察。2021-0613恢复访问 - 未知版本:S2R-DepthNet
1. 概述
导读:这篇文章经过分析人对场景的3D感知,发现场景中的空间结构信息在深度感知中扮演了至关重要的作用。因而文章首先学习得到一个针对深度的结构表达,这个表达中抓住了深度估计中的关键信息,排除一些数据中无关的风格信息。这样使得深度网络着力关注场景的结构信息,使得即使在合成数据场景训练的模型也具有良好的泛化能力。文章方法的组成可以划分为下面的3个部分:
1)用于提取结构信息的STE(structure extraction)模块,它通过将图像进行分解得到domain-invariant的结构信息,以及与数据自身相关的domain-specific风格信息;
2)通过DSA(Depth-specific attention)模块构建一个上面STE结构图的attention map,再与之相乘从而进一步提纯STE模块得到结构图;
3)使用DP(depth prediction)模块在结构特征表达的基础上实现深度估计;
由于文章的方法使用结构信息作为深度估计的参考,因而在没有相应真实数据加入的情况下也取得了很好的效果,对深度估计任务来说是个很好的参考idea。
现有自监督和监督的深度估计方法都对深度信息的domain存在依赖,而且使用合成的数据简单进行深度回归会存在domain-transfer的问题,这就导致了其使用存在一定的局限性。而在这篇文章中抓住了图像中的结构信息,从而在此基础上进行深度估计,可以说是抓住了图像中的关键信息。
文章的方法首先会使用STE模块将输入的图像进行分解得到两个分量:stype-domain和structure-domain。这里的style-domain是不需要的,后者才是对深度估计有用的,可以见图1的第二列。但是structure-domain中也存在depth-specific和depth-irrelevant的两个分量。对此文章提出了DSA模块用于去产生一个attention map从而进一步对结构信息进行抑制和过滤,从而只剩下depth-specific的信息用于深度估计,见图1的第三列。
2. 方法设计
2.1 pipline
文章方法的整体pipeline见下图所示:
按照之前讲述的过程可以将上的pipeline划分为:STE( S \mathcal{S} S)/DSA( A \mathcal{A} A)/DP( P \mathcal{P} P)三个部分。对应的文章也将整体的训练过程划分为三个阶段:
- 1)训练STE模块中的编码器模块 ϵ s \epsilon_s ϵs,使用风格迁移网络的训练方式使得其对不同风格的图片通用化,这里涉及到的是image-to-image的迁移(参考:MUNIT: Multimodal UNsupervised Image-to-image Translation,code:MUNIT);
- 2)在训练好编码器模块 ϵ s \epsilon_s ϵs之后(之后都不再更新其中的参数)与STE中的解码器 D s D_s Ds,以及 P \mathcal{P} P进行深度估计(这里并没有使用 A \mathcal{A} A);
- 3)将 A \mathcal{A}