Layered Depth Refinement with Mask Guidance
CVPR 2022
7 Jun 2022
https://arxiv.org/abs/2206.03048
https://sooyekim.github.io/MaskDepth/
深度图被广泛应用于从3D渲染到2D图像效果(如Bokeh)的各种应用中。然而,那些由单一图像深度估计(SIDE)模型预测的模型通常无法捕获对象中的孤立孔洞和/或具有不准确的边界区域。同时,使用商用自动mask工具或现成的分割和抠图方法,甚至通过手动编辑,更容易获得高质量的mask。因此,在本文中,我们提出了一个新的mask引导深度细化问题,该问题利用一个通用mask来细化SIDE模型的深度预测。我们的框架执行分层细化和 inpainting/outpainting,根据mask和1-mask将深度图分解为两个单独的层。由于同时具有深度标注和mask标注的数据集较少,我们提出了一种使用任意mask和RGB-D数据集的自监督学习方案。我们的经验表明,我们的方法对不同类型的mask和初始深度预测具有鲁棒性,可以精确地细化mask边界内外区域的深度值。我们通过烧蚀研究进一步分析了我们的模型,并在实际应用中展示了结果。有关更多信息,请访问https://sooyekim.github.io/MaskDepth/
Depth maps are used in a wide range of applications from 3D rendering to 2D image effects such as Bokeh. However, those predicted by single image depth estimation (SIDE) models often fail to capture isolated holes in objects and/or have inaccurate boundary regions. Meanwhile, high-quality masks are much easier to obtain, using commercial auto-masking tools or off-the-shelf methods of segmentation and matting or even by manual editing. Hence, in this paper, we formulate a novel problem of mask-guided depth map refinement that utilizes a generic mask to refine the depth prediction of SIDE models. Our framework performs layered refinement and inpainting/outpainting, decomposing the depth map into two separate layers signified by the mask and the inverse mask. As datasets with both depth and mask annotations are scarce, we propose a self-supervised learning scheme that uses arbitrary masks and RGB-D datasets. We empirically show that our method is robust to different types of masks and initial depth predictions, accurately refining depth values in inner and outer mask boundary regions. We further analyze our model with an ablation study and demonstrate results on real applications.
1、简介
深度学习的最新进展使我们能够从单个RGB图像中预测出相当可靠的深度图[20、31、32、47]。然而,尽管在单幅图像深度估计(SIDE)模型中有专门的网络结构[11,29,31]和训练策略[32,46],但估计的深度图在以下方面仍然不足:(i)深度边界趋于模糊和不准确;(ii)杆和电线等薄结构经常缺失;(iii)狭窄或孤立背景区域(例如人体各部分之间)的深度值通常不精确,如图1中的初始深度估计所示。由于模型容量有限且缺乏高质量的RGB-D数据集,在SIDE模型中解决这些问题可能非常具有挑战性。
图1。我们的分层深度细化结果基于DPT的初始预测[31]。借助于使用自动遮罩工具生成的高质量遮罩M[33],我们的方法能够精确地细化mask边界,并更正身体部位之间孤立孔区域的深度值。我们的分层方法分别对M和1-M中的区域进行优化和inpainted/outpainted。Figure 1. Our layered depth refinement result on an initial prediction by DPT [31]. Aided by a high-quality mask M generated with an auto-masking tool [33], our method is able to accurately refine mask boundaries and correct depth values in isolated hole regions between body parts. Regions in M and 1 − M are refined and inpainted/outpainted separately with our layered approach.因此,我们采取了一种新的方法,利用高质量mask的额外线索来细化SIDE方法预测的深度图。所提供的mask可以是硬的(二进制)或软的(例如,来自matting),并且可以是对象或图像的其他部分,例如天空。由于高质量的自动mask工具现在非常容易获得,因此可以使用商业工具(例如removebg[33]或Photoshop)或现成的分割模型[14、30、52、57]轻松获得此类mask。分割mask也可以由人类注释[7,41,49],准确的数据集比RGB-D数据更容易获得,这有利于自动mask模型的训练。
然而,即使有如此精确的mask,如何有效地训练深度细化模型仍然是一个悬而未决的问题。如图2(c)所示,直接将mask作为输入通道添加到细化模型仍然会导致比给定mask更模糊的边界。因此,我们提出了一种分层细化策略:mask(M)和逆mask(1−M) 区别会被单独处理,以插值或外推mask边界以外的深度值,从而生成两层深度图。如图2(e)所示,优化输出是使用mask M来合成两个层深度图,这样完全保留mask的边界细节,并填充孤立背景区域的正确深度值。as well as filling in the correct depth values for theisolated background regions
图2。在高质量Mask的指导下优化深度贴图。(b)边界模糊的初始深度预测[31],遗漏了人体各部位之间的孤立孔洞区域。(c) 成对数据集上的训练进行直接优化[34]可以提高初始深度,但仍有模糊的边界。分层细化由于最终合成步骤使用到mask,因此会有锐利的边缘,尽管(d)中naive in/outpainting会导致背景的伪影。(e)我们的方法在mask的引导下对每个区域进行in/outpainting时,成功地纠正了不准确的深度值。分层模型的中间分层输出显示在右上角。Figure 2. Refined depth maps with the guidance of a high-quality mask. (b) The initial depth prediction [31] has blurry boundaries andmisses isolated hole regions between human body parts. (c) Direct refinement by training on a paired dataset [34] improves the initial depthbut still has blurry boundaries. Layered refinement results in sharp edges due to the final compositing step using the mask, although (d)naive in/outpainting [36] generates artifacts in the background. (e) Our method successfully corrects the inaccurate depth values whilein/outpainting each region with the guidance of the mask. Intermediate layered outputs are shown on the top right for the layered models.分层深度优化的一个简单基线是使用现成的修复方法(inpainting)来生成M和1−M的深度图层。不幸的是,如图2(d)所示,一般的inpainting可能无法很好地填充深度图中的大孔。此外,在基于mask的不完美初始深度预测的基础上,推导合适的孔洞填充区域是一个非常重要的问题。
孔洞填充区域通常需要沿mask边界扩展以覆盖不确定区域,否则,错误的深度值可能会在孔中传播。但是,过多的扩展将使孔洞填充任务更具挑战性,因为它可能会覆盖场景中的原始深度结构(请参见图2(d)中的1-M层)。
为了应对这一挑战,我们提出了一个基于退化感知的分层深度完成和细化框架(degradation-aware layered depth completion and refinement),该框架学习根据mask和图像的上下文来识别和纠正不准确的区域。我们的框架不需要额外的输入或启发式来扩展空洞填充区域。此外,我们还设计了一种自监督学习方案,该方案使用RGB-D训练数据,无需成对的mask注释。通过在合成数据集和in the wild真实图像上的经验验证,我们证明了我们的方法在各种条件下都是鲁棒的。我们还提供了实际下游应用的结果。
我们的贡献有三个方面:
• 我们提出了一种新的mask引导深度细化框架,该框架细化了由通用高质量mask引导的SIDE模型的深度估计。
• 我们提出了一种新的分层细化方法,在没有额外输入或启发式的情况下,在具有挑战性的领域生成清晰而准确的结果。
• 我们设计了一种自监督学习方案,该方案使用RGB-D训练数据,无需成对的mask注释。
2 相关工作
单图像深度估计
单图像深度估计(SIDE),也称为单目深度估计,旨在从RGB图像预测深度图。一种常见的方法是在RGB-D数据集上训练深度神经网络,以学习从RGB到深度的非线性映射[20、31、32、47]。至于模型结构,卷积神经网络(CNN)是一种流行的选择[32,47],最近提出了一种基于Transformer的模型[31],以克服CNN有限的感受野大小。Transformer模型[10,37]利用自注意[39],将感受野扩展到各个层面的整个图像。我们的模型架构也基于Transformer,以受益于扩大的感受野。
对于训练SIDE模型,数据集通常会增加合成数据集[4、27、43、44、50]和从立体图像计算的相对深度[20、40、46]。已经提出了许多监督方案[1、5、12、13、24、26、45、53、55、56]和损失函数[17、19、20、47],以优化SIDE的模型训练。有几种方法[26、42、56]试图利用图像分割和SIDE边之间的关系,朱等人[56]提出用损失函数中的分割图边界来正则化深度边界,以在生成的深度图中增强更锐利的边缘。然而,即使使用复杂的框架设计,由于问题的不适定性和缺乏像素完美的真值深度数据,获得高度精确的深度边界仍然是一个挑战。
Depth Inpainting
在3D摄影的新视图合成中,inpainting depth maps通常是必要的,以自然地填充混乱的区域[16、27、35]。这些方法在对象边缘附近的背景区域应用联合RGB和深度修复。另一个研究方向是depth completion,其目的是稀疏的已知注释中填充未知的深度值。Imran等人[15]提出了一种分层方法,将前景和背景区域与激光雷达数据分开进行外推。在我们的深度细化方法中,mask和1-mask区域都在校正不准确的深度值的同时进行inpainted/ outpainted,然后进行合并以获得准确的边界。
In our depth refinement method, both the mask and inverse mask regions are inpainted/outpainted while correcting inaccurate depth values and merged afterward to obtain accurate boundaries.
Depth Refinement
在一项鼓舞人心的工作[25]中,Miangoleh等人提出,通过在不同分辨率下合并多个深度预测,利用CNN有限的感受野大小,提高SIDE结果中的高频细节。然而,它们的合并算法倾向于在前景对象中生成不一致的深度值,并且由于其基于与CNN相关的基本假设,其细化程度随着最近的transformer架构而降低。此外,捕获非常薄的边界并在孔区域中生成精确的深度值仍然是一项挑战。
在本文中,我们探索了一个新的方向,即使用通用mask作为深度细化的指导。与以前在整个深度图中放大或增强细节的方法不同,我们专注于沿mask的边界和孔区域精细细化。处理这些区域通常在Bokeh效应合成等下游应用中很重要。我们的方法是通用的,只要提供的mask包含比初始深度图更好的边界,就可以优化由任何SIDE模型生成的深度图,而不管模型架构如何。请注意,尽管我们继续使用“深度”一词,但我们的方法在inverse depth space中的操作,与之前的许多工作一样[25、31、32]。
3 拟定方法
我们提出了一个分层的深度细化框架,利用准精确mask和RGB图像的引导来增强SIDE模型的初始深度预测。
3.1. 数据生成
随机合成
使用包含RGB图像及其深度图的RGB-D数据集,对于由RGB图像I及其深度图D组成的RGB-D数据集,可以通过在D上应用随机扰动以自监督的方式(反向模拟初始深度预测,inversely simulate initial depth predictions)优化通用的深度细化模型。然后可以训练神经网络,用适当的损失函数预测精确的深度图。
然而,由于包含mask和RGB-D信息的数据集很少,所以收集用于训练mask引导的深度细化模型的数据集很有挑战性。因此,我们设计了一种不需要成对深度和mask注释的数据生成方案。具体而言,合成深度图是从两个任意的深度图和用任意的二值mask()随机合成来的:。同样,通过计算相应的合成RGB图像,其中和分别是对应于和的RGB图像。和的示例如图3(a)所示。对施加扰动会导致,然后可以用训练mask引导的精化模型,其中。
通过这种方式,我们可以从任何RGBD数据集和任意mask中获得与对齐的合成深度图和RGB图像。可以混合使用各种类型的mask,包括来自分割数据集的object mask和stuff mask[21,54]。此外,我们可以毫不费力地获得inpainting/outpainting的真值(和),这对于我们的分层细化方法至关重要,将在下一节中详细解释。
扰动
如图3(b)所示,我们在D′上应用三种类型的扰动来模拟SIDE模型预测中的典型误差。首先,以随机顺序应用随机膨胀和侵蚀,使受扰动的深度图缺少薄结构,其深度边界不总是与RGB图像或mask对齐。在图3(b)中,可以观察到,在随机膨胀和侵蚀后,薄结构(人的手)消失,孤立区域被覆盖(手臂和椅子主框架之间,between the arm and the main frame of the chair)。其次,我们在深度图上应用随机数量的高斯模糊,因为估计的深度图往往有模糊的边界。最后,我们设计了一种人体孔洞扰动方案,该方案检测孤立区域,并在孔洞周围和原始孔洞内部的平均深度值之间分配一个随机值,模拟估计深度图中人体内经常缺失的孤立区域。附录中提供了扰动方案的更多细节。Lastly, we design a human hole perturbation scheme that detects isolated regions and assigns a random value between the mean depth values surrounding the hole and inside the original hole, simulating the often-missing isolated regions inside human bodies in estimated depth maps. More details of the perturbation scheme are provided in the appendix.
图3。数据生成方案。使用任意二值掩码随机合成RGB-D patches。扰动用于模拟深度估计,导致孤立区域被覆盖,薄结构丢失3.2. 训练策略
分层细化的两阶段训练
虽然在使用建议的数据生成方案获得数据对后,使用精确mask进行深度细化看起来很简单,但直接从拼接的RGB-D和mask输入预测细化的深度图会导致次优结果,如图2所示。为了明确受益于精确mask,我们提出了一种分层细化方法,分别细化由和指定的区域,并通过将连个独立的结果合并起来。这样,模型可以集中于校正每个区域中的深度值,并且在合并阶段后可以完全保留mask边界。
图4。两阶段训练策略概述。在第一阶段,根据给定的mask,训练网络从为1的区域补全为0的区域。mask随机翻转,对应的深度(或)会被提供作为真值。在第二阶段,我们运行两次网络以获得和,并基于mask将它们合并,以产生精细的输出。网络学习在修复/外涂深度时移除扰动。在推理过程中,在第二阶段之后获得精确的输出。我们分两个阶段训练模型,如图4所示。在第一阶段,模型被训练完图像补全,通过随机提供的和,并且优化或。请注意,单个模型要同时被训练为对输入深度的inpainting和 outpainting,这样就一直根据给定mask或所指示的为1的区域去补全为0的区域。在第二阶段,我们添加扰动,使用和将网络运行两次,以获得两个输出和:
(1)
(2)
We train our model in two stages shown in Figure~\ref{fig:train_strat}. In the first stage, the model $\mathcal{R}_m$ is trained for image completion by randomly providing $M$ or $1-M$ and optimizing either $\mathcal{L}(\mathcal{R}_m(D', I', M), D_1)$ or $\mathcal{L}(\mathcal{R}_m(D', I', 1-M), D_2)$. Note that a single model is trained for both inpainting \textit{and} outpainting the depth input to always complete regions with $0$ based on regions with $1$ signified by the given mask $M$ or $1-M$. Then in the second stage, we add perturbations $\mathcal{P}$ and run the network twice with $M$ and $1-M$ to obtain two outputs $\hat{D}_1$ and $\hat{D}_2$, given by
由于模型已在第一阶段进行修补/外涂(inpainting/outpainting)预训练,因此从第二阶段开始生成合理的和。最后,将和合并,以产生细化输出:
(3)
这一阶段使用3个损失:、和。因此,网络在统一框架下生成完整的深度图的同时,学会消除干扰。虽然我们只在训练期间使用合成深度图作为输入,但合成中的随机性(用随机的mask去合成随机的深度图)和随机扰动导致了一个鲁棒模型,该模型可以很好地推广到实际深度估计和各种mask。
损失函数
损失函数由三个不同的损失项加权求和组成,三项的权重都为1:L1损失、L2损失和具有四个尺度级别的多尺度梯度损失[20]。采用梯度损失来强化锐利的深度边缘。
The loss $\mathcal{L}$ is comprised of three different loss terms summed with unit scale: L1 loss, L2 loss, and a multi-scale gradient loss with four scale levels \cite{Li_CVPR_2018}. The gradient loss is adopted to enforce sharp depth boundaries.
3.3 模型架构
我们的模型架构基于密集预测Transformer(DPT)[31],具有四个Transformer编码器level[10]和四个融合解码器level。在每个编码器level,提取重叠patch并将其嵌入到维度并馈入Transformer层,每个层都有自注意、LayerNormam[3]和MLP层。在每个level,空间分辨率以的比例缩小。这解码器这一边,在每个融合level,使用残差卷积单元融合特征,然后在末端使用单目深度估计头,和[31]一样。
We base our model architecture on the dense prediction transformer (DPT) \cite{Ranftl_ICCV_2021} with four transformer encoder levels \cite{Dosovitskiy_ICLR_2021} $l\in\{1, 2, 3, 4\}$ and four fusion decoder levels. At each encoder level, overlapping patches are extracted and embedded to dimensions $d_l\in\{64, 128, 320, 512\}$ and fed into $t_l\in\{3, 4, 18, 3\}$ transformer layers each with self-attention, LayerNorm \cite{Ba_ARXIV_2016} and MLP layers. The spatial resolution is decreased by a scale factor of $s_l\in\{4, 2, 2, 2\}$ at each level. On the decoder side, features are fused with residual convolutional units at each fusion level, followed by a monocular depth estimation head at the end as in \cite{Ranftl_ICCV_2021}.
如图5所示,我们在原始主干中插入一个额外的编码器分支,该分支具有单个Transformer level,因此(或),以及(或)被拼接并馈入主分支,与(或)拼接,并被馈入额外分支。输出是第一个transformer level之后的简单求和。输出仅在第一个Transformer电平后求和。此外,还引入了一个轻量级的low-level编码器来对输入深度图的low-level特征进行编码。这些特征与来自主解码器分支的特征拼接并输入头部,确保网络不会忘记初始深度值。
图5。我们的网络架构以DPT[31]为主干模型。我们为RGB输入添加一个low-level编码器和一个分支。4 实验
4.1 实施细节
我们按照第3.2节所述的训练策略,第一阶段500K迭代,第二阶段500K迭代。训练patch size为320×320,批量大小为32。优化器是AdamW[22]。初始学习率是,在,在总迭代数的60%和80%时,以1/10的比例缩小。我们的模型使用PyTorch实现,并在4个NVIDIA V100 GPU上进行训练。
对于数据增强,我们对输入的深度图和RGB图像应用随机水平翻转和调整大小。RGB图像通过随机对比度、饱和度、亮度、JPEG压缩和灰度转换进一步增强,使我们的模型对各种类型的输入更加鲁棒。我们的模型在不同的室内和室外自然RGB-D图像上进行训练,和[51]一样,深度图缩放到[0,10],RGB图像使用ImageNet[9]平均值和标准偏差进行归一化。此外,为了受益于所提出的支持mask类型多样化的自监督学习方案,我们的mask采样占比为:50%的mask是不同物体,20%的mask是天空,30%的mask是人体。在训练阶段,带有孔洞的人体mask以占人体总mask的50%的概率被选中(所有mask的15%)。
4.2 评估数据集
对于定量评估,需要同时具有深度和mask注释的数据集,以排除由不准确的mask引起的潜在错误。此外,真值深度应准确,以便对精细边界和目标孔进行可靠评估。因此,我们使用Hypersim(CC-BY SA 3.0许可证)[34]和TartanAir(3-Clause BSD许可证)[44],这些是最近发布的合成数据集,包含密集和准确的深度值,还具有实例分割图。我们选择Hypersim的每个场景的每个摄影机轨迹中的第一帧和TartanAir的每个环境中的易难度的每个轨迹中的第100帧作为测试集,这分别为Hypersim和TartanAir生成456幅图像和206幅图像。其他数据集,如城市景观(Cityscapes)[8]不合适,因为真值深度很嘈杂,边缘往往不准确,并且遗漏了薄结构。此外,我们还使用自动mask工具定性地评估了我们的细化方法在来自web的各种免费许可图像[28,38]的效果。
Zero-shot跨数据集迁移 我们按照[32]中的实验方案进行评估。在训练过程中,对比的方法或我们的方法都没有在Hypersim(34)或TartanAir(44)中看到RGB-D图像。使用最小化对预测进行缩放和移位,以匹配真值深度。
使用分割图进行推理 为了在mask引导框架中使用分割图,我们采取以下步骤:(i)使用实例分割图中总像素数的1%以上计算每个实例的二进制mask,(ii)使用运行模型次,以及(iii)通过合并每个像素的细化输出,其中是初始深度。
4.3. 评估指标
我们在10K随机采样点对上使用RMSE和Weighted Human Disagreement Rate(WHDR) [6]来评估输出深度图的总体误差。为了评估边界质量,我们用准确度和完整性报告了深度边界误差[18]。此外,我们还提出了两个度量,mask边界误差(MBE)和相对细化比()。所有度量都在反向深度空间(inverse depth space)中测量。
MBE计算N个实例上mask边界像素的平均RMSE。mask边界是通过从中减去腐蚀并用5×5核对其进行膨胀而得到的(Mask boundary $M_i^b$ is obtained by subtracting the eroded $M_i$ from $M_i$ and dilating it with a $5\times 5$ kernel)。然后,MBE由:
(4)
其中,是每个实例的边界像素数。使用、和MBE,我们可以全面测量精细深度图的边界精度:和聚焦于深度边界,MBE聚焦于深度图的mask边界。此外,根据绝对误差,我们将(相对细化比)定义为提高超过阈值的像素数与恶化超过的像素数之比。我们设置t=0.05,并通过细化结果相对于基本模型[31,32]的初始结果来计算。是评估细化性能的一个有意义的指标。
4.4. 比较的方法
为了评估细化性能,我们将我们的方法应用于两个SIDE模型的初始深度预测:基于CNN的MiDaS v2.1[32]和基于SOTA transformer的DPT Large[31]。由于没有执行mask引导深度细化的现有方法,我们设置以下使用mask基线进行比较:
• Direct composite在不分层的情况下生成细化输出,并在与我们相同的数据集上进行训练(使用合成图像和mask)。
• Direct-paired也在不分层的情况下进行细化,但在Hypersim中使用配对RGB-D和mask进行训练[34]。因此,对于这种方法,我们仅对 TartanAir[44]进行评估。
• Layered models(Layered-propagation和Layered-ours)要么应用基于传播的图像补全算法[36],要么使用第一阶段训练中的模型,第一次使用扩张的mask进行inpainting,第二次使用腐蚀的mask进行outpainting。然后将inpainted/outpainted的结果使用mask合并,类似于我们提出的方法。
用于直接合成和直接配对的网络架构与图5中的encoder-decoder-style transformer model模型相同。对于分层模型,我们将膨胀和侵蚀核设置为5×5,以便使用分割图进行评估。对于in the wild,我们手动调整每个图像的核大小以获得最佳结果。
此外,我们还比较了双边中值滤波方法(BMF),在BMF中用[35]中的参数(之前在[23,35]中用于细化深度图),我们还比较了Miangoleh等人最近的深度细化方法[25]。这些方法不使用mask作为指导。对于所有比较的方法,我们使用官方发布的代码和权重。
4.5. 分析
在表1中,我们提供了mask引导细化方法的定量结果。我们的方法在所有边缘相关指标(、和MBE)上超过了MiDaS v2.1[32]和DPT Large[31],并且值很高,最高达16.569。WHDR和RMSE值在mask引导的细化方法之间差别不大,因为它们测量所有像素的平均误差,而mask引导的细化方法旨在沿mask边界进行细化,并保留大部分内部区域不变。我们方法的R3和MBE优于所有基线,证明了我们分层细化方法的有效。
在表2中,我们比较了无mask引导的自动深度细化方法。传统的图像滤波无法增强边缘相关指标。Miangoleh等人的方法[25]有时在全局边缘度量(εacc和εcomp)上更好,因为它增强了深度图中的所有边缘。然而,由于它也具有扭曲原始值的风险,因此值往往比我们的值低,因为我们的值主要沿mask边界细化,并保留其他区域不变。此外,由于[25]严重依赖于基础模型的行为,其泛化能力对于其他架构类型(如Transformer[31])是有限的。无论基础模型体系结构如何,我们的方法都能很好地工作,并能很好地推广到这两个数据集,当与[31]结合时,会得到最佳的度量值。
在图6中,我们展示了Hypersim的定性结果[34]。我们还可视化了相对改善图,显示了与基础模型MiDaS v2.1[32]或DPT[31]相比,绝对误差下降的位置。我们的方法SIDE重于细化边缘和孔洞区域,并保留大多数其他区域不变,而Miangoleh等人的方法[25]通常会恶化同质区域(homogeneous regions)。与其他基线相比,我们在统一框架内的分层细化方法有助于有效纠正低级细节。
In the wild图像
我们在in the wild的真实图像上进一步评估了我们的模型,以评估其泛化能力和鲁棒性。与基线的比较如图2所示,更多结果如图1、7和8所示。我们的方法能够为各种真实图像生成与mask一致的锐利深度图。所有肖像图像都是unsplash[38]和pixabay[28]提供的免费许可图像,并且使用removebg[33]生成mask。天空图像由Adobe Stock[2]授权,其mask使用商业照片编辑工具进行注释。
烧蚀研究
我们通过移除框架中的不同组件,在表3中对我们的模型进行了烧蚀研究。第一阶段有助于从更好的初始化参数开始,第二阶段是在统一框架下训练我们的模型进行分层细化所必需的。烧蚀其中任何一种都会导致性能下降。尽管有无孔洞扰动的定量结果相似,但孔洞扰动对改善人体孔洞至关重要。
下游应用结果
更精确的深度图可以改善下游应用的结果。在图8(a)的新视图点云表示任务中,使用我们细化的深度图改进了边缘和孔洞。在图8(b)中,我们使用初始深度图和细化深度图应用Bokeh效应[48]。初始预测中不准确的深度值会导致不自然的尖锐背景区域。使用我们优化的深度图,它会得到纠正和模糊。
mask质量分析
我们在附录中提供了使用不同mask与相同图像进行的视觉比较,以及使用退化mask进行的数值分析。我们表明,只要给定的mask包含比原始深度图更精确的细节,我们的方法就可以提高深度质量。
5 结论
虽然深度图在许多实际应用中得到了广泛的应用,但从单个RGB图像中获取清晰而准确的深度是一项极具挑战性的任务。在本文中,我们提出了一种新的mask引导深度精化问题,并提出了一种分层精化方法,该方法可以以自监督的方式进行训练。我们的方法可以在定量和定性上显著增强初始深度图。通过与mask引导深度细化基线和现有自动细化方法的比较,我们广泛验证了我们的方法。此外,我们还验证了我们的方法在具有各种mask的真实图像上运行良好,并改进了下游应用的结果。我们相信,我们的方法可以潜在地扩展到其他类型的密集预测,如法线和光流。更多结果见附录。
局限性
由于我们的方法依赖于高质量的mask进行细化,因此其细化性能受mask质量的限制。尽管有许多自动mask工具可用,但捕获极细粒度的细节可能需要手动操作。此外,当我们的方法沿mask边界细化时,对象内部最初错误的深度值可能会保持不变。
附录
A 潜在的负面社会影响
由于我们提出的方法细化了SIDE模型预测的深度图,我们预计它不会产生任何直接的负面社会影响。然而,它可能被用来生成更精确的人的三维重建,如果以恶意方式使用,它们可能会以unwanted的方式精确重建。
B 图像版权
图6和图14中的比较图像是Hypersim数据集(CC-BY SA 3.0许可证)上的结果[34]。图1、2、8、9和15中的人体图像(可识别和不可识别)来自unsplash[38]或pixabay[28],这是一个具有免费许可图像的网站,可用于商业和非商业目的。图7中的顶部图像由Adobe Stock[2](来自eranda-Stock.Adobe.com)正式授权。其他通用图像来自内部RGB-D数据集。
C 训练数据生成详细信息
扰动 在训练期间,我们在合成深度图上应用随机膨胀和侵蚀操作。首先,每个腐蚀和每个膨胀的迭代次数是在中随机选取的。然后使用3x3核迭代或次的膨胀和腐蚀:按照以下顺序:(1)50%的时间下是膨胀→腐蚀→腐蚀→膨胀,(2)剩余的是腐蚀→膨胀→膨胀→腐蚀。对于高斯模糊,50%的时间,我们使用表示少量模糊,其余时间使用表示较大的模糊量。对于人体孔洞扰动,使用cv2计算的层次结构检测mask中的孔洞,cv2.findContours(),对于每个孔,在原始孔内的平均深度值和10像素外邻域的平均深度值之间分配一个随机值。
人体孔洞扰动效应 我们比较了在没有人孔扰动的情况下训练的模型和在人孔扰动的情况下训练的最终模型(表3最后两行中的模型)生成的精细深度结果。如图9所示,初始深度预测人类孔洞(孤立背景区域)的错误值。如果没有人体孔扰动,该模型能够细化较小的孔(手臂和身体之间),但无法纠正较大的孔(腿部之间),因为在训练期间没有看到此类具有挑战性的情况。孔扰动方案旨在通过指定一个随机值来模拟这些情况。这种简单的策略使细化模型能够修正较大的孔,如图9所示。
裁剪 在裁剪用于训练的mask时,我们通过在实例分割图中随机拾取至少由总像素的1%组成的对象来过滤掉小对象。此外,我们根据对象大小自适应地在对象周围裁剪,以确保mask区域足够大,如图11所示。如果对象大小小于训练patch大小(320×320),我们将根据patch大小在整个对象位于patch内的位置随机裁剪。如果对象大小(H×W)大于patch大小,则按p×p裁剪,其中p∼ U(s,2s),s是max(H,W),在整个对象位于patch内的随机位置。然后,将裁剪的patch大小调整为训练patch大小,以便它可以用于随机合成RGB和深度图patch。如果没有这种裁剪方案,mask区域通常只包含对象的一部分,或者根本不包含对象(如果只是在随机位置裁剪)。对于stuff类(例如sky),我们使用p∼ U(H/2,H)位于随机位置。
D 基线模型的详细信息
在主要论文中,我们比较了四种执行mask引导深度细化的基线模型:Direct-composite、Direct-paired、Layered propagation和Layered-ours,如第4.4节所述。图10中显示了这些基线的图示。在图10(a)中,Direct-composite对合成的RGB-D输入进行训练,在不分层的情况下预测精细输出。Direct-paired也在不分层的情况下进行细化,但在成对的mask和RGB-D数据集上进行训练,如图10(b)所示。对于Direct-composite和Direct paired,我们使用与图5所示网络相同的模型架构。
对于Layered-propagation,我们运行两次基于传播的图像补全算法[36]以获得分层输出,一次使用膨胀的mask进行修复,第二次使用腐蚀的mask进行输出,如图10(c)所示。然后,这两个输出通过mask被合并,类似于我们提出的2-layer方法。对于Layered-ours,采用与图10(c)相同的程序,但我们在第一阶段训练后使用我们的模型,而不是[36]进行inpainting/outpainting。对于分层基线,膨胀和腐蚀对于纠正初始错误的值是必要的,它们的核大小应该针对每个输入深度进行启发式设置(heuristically),以获得最佳结果,这与我们提出的方法不同,我们提出的方法能够自动计算出要inpaint/outpaint的区域,同时在没有任何启发式的情况下细化不准确的区域。
图10。我们实验中基线模型的示意图。E Mask质量分析
由于该方法基于输入mask对初始深度图进行细化,其细化性能必然取决于mask质量。为了分析使用不同类型mask的效果,在图12中,我们显示了使用商用mask工具生成的三种不同mask的优化输出:(i)从removebg自动生成的mask,(ii)使用Photoshop自动生成的mask,以及(iii)使用Photoshop手动编辑的mask。如图12所示,使用自动生成的mask已经产生显著增强的结果。通过额外的手动编辑(图12(d)),可以进一步细化深度图。在实际应用场景中,用户可以编辑mask,以编辑深度图,这将更简单、更直观。
图12。自动和手动mask的消融为了对mask质量进行数值分析,我们在Hypersim的真值实例分割图上[34]采用核大小为k∈ {3、5、7、9}的形态学开闭运算,并在基于DPT Large和mask生成的细化的深度图上测量MBE和RMSE[31]。结果绘制在图13中,其中k=0表示使用原始真值分割图的情况,虚线表示初始深度图的平均度量值。如图13所示,误差值随着预期的更严重退化而增加。然而,它们仍然比初始深度好。
图13:退化mask的定量结果F 推断时间
对于推断,初始深度预测需要16毫秒[31,32],我们使用NVIDIA TITAN RTX GPU的细化方法需要78毫秒。请注意,对于所有方法,输入图像的大小都调整为在进入网络之前的训练中使用的空间分辨率,对于[31,32],为384×384,对于我们的方法,为320×320。
Note that input images are resized to the spatial resolution used during training prior to entering the network for all methods, 384×384 for [31,32]and 320×320 for ours.
G 更多视觉效果
配对数据集的更多结果 在图14中,我们提供了有关Hypersim的更多示例[34],以及相对改进图,显示了改进方法在绝对误差方面改进和恶化了初始深度估计。Miangoleh等人的方法[25]通常会恶化同质区域,而我们的方法主要是沿着mask边界(边和孔)细化,并保留其他区域不变。
使用点云的更多结果
在图15中,我们使用点云表示来可视化场景的正面、侧面和顶视图。通过我们优化的深度,可以更清晰、更精确地切割边缘和孔区域周围的对象,从而显著减少飞行像素。这可能有利于3D摄影等应用[27,35]。
更多in the wild成果
我们在项目页面https://sooyekim.github.io/MaskDepth/上以html图库的形式提供真实图像的其他结果,以便在初始深度[31]、Miangoleh等人的细化方法[25]和我们的方法之间进行更容易的视觉比较。
网友评论