边界感知的分治方法:一种基于扩散的无监督去阴影方法
Lanqing Guo¹, Chong Wang¹, Wenhan Yang², Yufei Wang¹, Bihan Wen¹
¹南洋理工大学,新加坡
²鹏城实验室,中国
{lanqing001, wang1711, yufei001, bihan.wen}@ntu.edu.sg, yangwh@pcl.ac.cn
摘要
最近的深度学习方法在去阴影任务中取得了优异的成果。然而,大多数有监督的方法依赖于大量带阴影和无阴影图像对进行训练,这需要繁琐的标注工作,并且可能导致模型的泛化能力较差。事实上,阴影只是在图像中造成部分退化,而其非阴影区域提供了丰富的结构信息,这些信息可能有助于无监督学习。在本文中,我们提出了一种基于扩散的新型无监督去阴影方法,分别建模阴影、非阴影及其边界区域。我们采用一个预训练的无条件扩散模型,并融合无损坏的信息来生成自然的无阴影图像。虽然扩散模型能够利用其相邻的无损坏上下文信息恢复边界区域的清晰结构,但由于非损坏上下文的隔离,它无法处理内部的阴影区域。因此,我们进一步提出了一个阴影不变内在分解模块,利用阴影区域中潜在的反射信息,在扩散采样过程中保持结构的一致性。通过在公开的去阴影数据集上进行大量实验,结果表明,所提方法相较于现有的无监督方法有显著提高,甚至与一些现有的有监督方法相当。
解释:
这段摘要主要介绍了一种新的去阴影方法,该方法不需要人工标注的阴影和无阴影图像对,因此可以进行无监督学习。
- 现有问题:目前大多数去阴影的深度学习方法需要大量的图像对,这些图像需要人工标注是否有阴影,这样的标注既费时又可能导致模型过于依赖这些标注,进而影响模型在其他未标注数据上的表现。
- 方法改进:本文提出了一种新的方法,使用了一种叫做“扩散模型”的技术,这个模型在不需要标签数据的情况下,能够通过非阴影区域的信息恢复阴影区域的细节。扩散模型能够通过“扩散”周围未损坏区域的结构信息来去除阴影,特别是在图像的边界部分。
- 问题与解决方案:尽管扩散模型能处理边界区域,但对于完全被阴影遮挡的区域,由于缺少足够的上下文信息,它的效果不好。为了解决这个问题,作者引入了一个新的模块,叫做阴影不变内在分解模块,这个模块通过分析阴影区域中的反射信息,在去阴影过程中保持图像结构的一致性。
- 实验结果:在公开的去阴影数据集上进行的实验表明,这种方法相比现有的无监督方法有了显著的提升,甚至与一些有监督的方法也能媲美。
简而言之,这篇文章提出了一种新方法,通过结合扩散模型和阴影区域反射信息,能够更有效地去除图像中的阴影,且不依赖于人工标注数据。
翻译:
1. 引言
阴影是由于遮挡物部分遮挡光线而产生的普遍现象。去除阴影是至关重要的,因为阴影对视觉模型,如物体检测和跟踪,具有不利影响 [23, 35, 46]。不幸的是,由于阴影形状和背景结构的多样性,从单张图像中去除阴影仍然是一个开放问题,这使得找到通用的解决方案变得具有挑战性。传统的去阴影方法 [9, 45] 主要依赖于精心设计的手工统计特征,如光照、梯度和区域一致性,来构造去除阴影区域的优化函数。然而,它们完全忽视了自然图像先验,并且优化函数的基础假设往往过于理想化,导致在真实世界场景中产生不自然的结果和伪影。最近,基于深度学习的图像去阴影方法 [12, 25, 4, 7, 16, 28, 20] 通过在完全监督的方式下学习阴影图像与真实无阴影图像之间的逐像素映射,取得了显著进展。然而,这些方法需要大量的标注,并且容易导致对训练数据集的过拟合,进而造成泛化能力差。更重要的是,去阴影是一个具有丰富上下文和结构先验的区域性退化问题。这些信息实际上为仅基于单张输入图像推断阴影区域提供了丰富的线索,展示了使用无监督学习方法解决该问题的巨大潜力。一些工作 [16, 28, 20] 已经开始探索无监督的去阴影方法,主要依赖于使用未配对的阴影图像和无阴影图像的生成对抗网络(GAN)。不幸的是,由于缺乏逐像素的训练对和真实标注,判别器只能依赖于未配对的无阴影图像,这可能导致生成器产生不真实的输出。换句话说,生成器的学习面临着分散的空间,并且很容易产生虚假的内容和伪影。
解释:
这一段介绍了去阴影问题的背景和挑战:
- 阴影问题的意义:阴影对许多计算机视觉任务(如物体检测和跟踪)有负面影响,因此需要有效去除。
- 传统方法的局限:传统的去阴影方法通常依赖人工设计的特征(例如光照、梯度等),来通过优化函数去除阴影。但这些方法往往忽略了图像的自然规律,且优化假设过于理想化,导致结果看起来不自然,尤其是在实际场景中。
- 深度学习方法的进展:近年来,基于深度学习的方法在去阴影方面取得了显著进展,它们通过学习阴影图像和无阴影图像之间的逐像素映射来去除阴影。但这些方法需要大量的标注数据,且容易导致对训练数据的过拟合,导致泛化能力差。
- 无监督学习的潜力:去阴影问题实际上是一个局部的退化问题,图像中的非阴影部分包含了丰富的结构信息,这些信息可以帮助我们推断阴影区域,显示出无监督学习方法的巨大潜力。
- 生成对抗网络的挑战:一些研究已经开始探索无监督的去阴影方法,尤其是通过生成对抗网络(GAN),利用未配对的阴影和无阴影图像进行训练。然而,由于缺乏准确的逐像素标注数据,生成器容易产生不真实的图像输出,可能会生成伪影或者虚假的内容。
总的来说,这段话介绍了去阴影问题的挑战和传统方法的不足,并强调了深度学习尤其是无监督学习在解决这个问题上的潜力。
翻译:
在本文中,我们提出了一种新的无监督基于扩散的解决方案,仅使用阴影图像而无需任何参考图像。根据我们的分析,阴影图像中的退化区域可以分为两种不同的类型:1)阴影区域,这些区域由于光照不足而掩盖了细微的结构信息;2)边界区域,这些区域包含噪声结构,并且展示了丰富的相邻无损坏上下文信息。我们的工作通过结合扩散模型的生成能力和内在分解的细节保持能力,以全面的方式统一了阴影和边界区域的恢复,从而使两者相互受益。更具体地,我们采用了一个预训练的无条件扩散模型,并注入非损坏区域信息的指导,将其作为基线生成自然的无阴影图像并抑制伪影。虽然扩散模型可以通过利用相邻无损坏上下文信息有效恢复边界区域的清晰结构和标准光照,但它在处理内部阴影区域时存在不足,因为这些区域被与外部上下文隔离。为了克服这一局限性,我们提出了一个阴影不变内在分解模型,确保在扩散采样过程中,所有中间结果的反射一致性。通过这种方式,我们能够揭示这些内部阴影区域中存在的结构细节。实验结果表明,所提方法在现有广泛使用的去阴影数据集上表现出色,明显超过了现有的无监督方法,在某些情况下,甚至与一些有监督方法的性能相当。本文的主要贡献如下:
- 我们提出了一种新的基于扩散的无监督去阴影方法,其中我们将退化区域分为阴影区域和边界区域。受到这种分类的启发,我们通过将扩散和内在分解相结合,实现了阴影和边界区域恢复的统一,并使其相互受益。
- 我们进一步提出了一个阴影不变内在分解模型,确保在扩散采样的每个阶段,反射值的一致性。这种方法使我们能够有效地揭示内部阴影区域中的结构细节。
- 我们在公开数据集上进行了大量实验,并证明所提方法在现有最先进的无监督方法中取得了显著的改进,甚至在某些情况下与一些有监督方法的性能相当。
解释:
这段话介绍了论文的核心贡献和方法:
- 提出的新方法:本文提出了一种新的无监督去阴影方法,直接从阴影图像出发,不依赖任何参考图像。通过分析,阴影图像中的问题区域可以分为两类:一是阴影区域,光照不足导致细节丢失;二是边界区域,这些地方有噪声和与非阴影区域相邻的清晰结构。
- 方法创新:作者将扩散模型和内在分解结合起来,恢复这两种区域。扩散模型能够利用周围非阴影区域的信息,恢复边界区域的清晰结构。而对于被阴影完全覆盖的区域,内在分解模型帮助保持反射一致性,从而揭示这些区域中的细节。
- 阴影不变内在分解模型:为了克服扩散模型在处理内部阴影区域时的不足,作者提出了一个新模型,确保在扩散过程中的每一步,反射信息的一致性,这样可以更好地恢复阴影区域的结构。
- 实验结果:在多个公开的去阴影数据集上,实验结果表明该方法明显超越了现有的无监督方法,在某些情况下,甚至与一些有监督方法的效果相当。
总体来说,本文提出了一种通过结合扩散模型和内在分解的新方法,有效地解决了去除阴影的问题,并在实验中展现了显著的优势。
翻译:
3. 初步介绍
在本文中,我们遵循了[13]中定义的扩散模型。基本思想是将一个干净的数据样本 x 0 ∼ q ( x ) x_0 \sim q(x) x0∼q(x) 通过在 T T T 步中迭代地加入小的高斯噪声,从而生成一个噪声序列 { x t } t = 1 T \{x_t\}_{t=1}^T {xt}t=1T,并在正向过程中产生相应的噪声尺度步长 { β t } t = 1 T \{\beta_t\}_{t=1}^T {βt}t=1T,可以通过高斯过渡来描述:
q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) . q(x_t | x_{t-1}) = \mathcal{N} \left( x_t; \sqrt{1 - \beta_t} \, x_{t-1}, \beta_t I \right). q(xt∣xt−1)=N(xt;1−βtxt−1,βtI).
正向过程的一个优良性质是,可以通过重参数化方法从 x 0 x_0 x0 以闭式形式采样出噪声数据 x t x_t xt:
q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) , q(x_t | x_0) = \mathcal{N} \left( x_t; \sqrt{\bar{\alpha}_t} \, x_0, (1 - \bar{\alpha}_t) I \right), q(xt∣x0)=N(xt;αˉtx0,(1−αˉt)I),
其中 α t = 1 − β t \alpha_t = 1 - \beta_t αt=1−βt 且 α ˉ t = ∏ i = 1 t α i \bar{\alpha}_t = \prod_{i=1}^t \alpha_i αˉt=∏i=1tαi。
扩散模型被训练来近似正向过程的逆过程,从纯高斯噪声 x T ∼ N ( 0 , I ) x_T \sim \mathcal{N}(0, I) xT∼N(0,I) 到一个干净的样本 x 0 x_0 x0。前一状态 x t − 1 x_{t-1} xt−1 的估计可以通过后验分布 p ( x t − 1 ∣ x t , x 0 ) p(x_{t-1}|x_t, x_0) p(xt−1∣xt,x0) 得到,如下所示:
p ( x t − 1 ∣ x t , x 0 ) = N ( x t − 1 ; μ t ( x t , x 0 ) , σ 2 I ) . p(x_{t-1} | x_t, x_0) = \mathcal{N} \left( x_{t-1}; \mu_t(x_t, x_0), \sigma^2 I \right). p(xt−1∣xt,x0)=N(xt−1;μt(xt,x0),σ2I).
具体来说,一个噪声预测器 ϵ θ \epsilon_\theta ϵθ 被训练来估计逆高斯分布的参数 μ θ ( x t , t ) \mu_\theta(x_t, t) μθ(xt,t) 和 Σ θ ( x t , t ) \Sigma_\theta(x_t, t) Σθ(xt,t),即:
p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) , p_\theta(x_{t-1} | x_t) = \mathcal{N} \left( x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t) \right), pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t)),
其中,预测的均值 μ θ ( x t , t ) \mu_\theta(x_t, t) μθ(xt,t) 可以通过噪声预测器 ϵ θ \epsilon_\theta ϵθ 参数化为:
μ θ ( x t , t ) = 1 α t x t − β t 1 − α ˉ t ϵ θ ( x t , t ) . \mu_\theta(x_t, t) = \sqrt{\frac{1}{\alpha_t}} x_t - \beta_t \sqrt{1 - \bar{\alpha}_t} \epsilon_\theta(x_t, t). μθ(xt,t)=αt1xt−βt1−αˉtϵθ(xt,t).
Ho et al. [13] 设定固定方差 Σ θ ( x t , t ) = β t 2 \Sigma_\theta(x_t, t) = \beta_t^2 Σθ(xt,t)=βt2 来简化训练目标,而 Nichol et al. [31] 在逆过程 (4) 中采用学习得到的方差 Σ θ ( x t , t ) \Sigma_\theta(x_t, t) Σθ(xt,t),以减少采样步骤数。
解释:
这段话介绍了扩散模型的基本原理和训练过程:
-
正向过程(从干净图像到噪声图像):我们从一个干净的图像 x 0 x_0 x0 开始,逐步在每个时间步加入小的高斯噪声,直到最终变成纯噪声 x T x_T xT。每次噪声的加入是通过一个高斯过渡公式来描述的,这个过程是可以通过公式计算的。
-
重参数化(从干净图像到噪声图像的推导):为了能够在训练中进行高效采样,我们可以通过一个公式,直接从干净图像 x 0 x_0 x0 推导出每个时间步的噪声图像 x t x_t xt,这一步骤不需要复杂的计算。
-
逆向过程(从噪声图像恢复干净图像):扩散模型的目标是训练一个逆过程,将噪声图像 x T x_T xT 恢复回干净图像 x 0 x_0 x0。这个过程的核心在于从当前的噪声图像 x t x_t xt 和目标干净图像 x 0 x_0 x0 中推算出上一时间步的状态 x t − 1 x_{t-1} xt−1。
-
噪声预测器:在逆向过程的训练中,我们使用一个噪声预测器(神经网络)来预测噪声的均值 μ θ ( x t , t ) \mu_\theta(x_t, t) μθ(xt,t) 和方差 Σ θ ( x t , t ) \Sigma_\theta(x_t, t) Σθ(xt,t),这有助于我们从噪声图像逐步恢复清晰的图像。具体来说,模型会预测图像中某一时刻的噪声和结构,帮助恢复原始图像。
-
固定方差与学习方差:为了简化训练过程,Ho等人采用了固定方差 Σ θ ( x t , t ) = β t 2 \Sigma_\theta(x_t, t) = \beta_t^2 Σθ(xt,t)=βt2;而为了解决训练中的一些问题,Nichol等人提出了采用学习方差的方法,这可以减少采样时的步骤数,提高效率。
总的来说,这段话详细介绍了扩散模型的正向过程和逆向过程的原理,并提出了如何通过噪声预测器来逐步恢复图像。
翻译:
4. 方法论
4.1. 动机
在这里,我们阐述了我们设计阴影去除算法的动机。我们将阴影图像表示为 x x x,对应的阴影掩膜为 m m m,无阴影图像为 y y y。我们定义了一个边界提取器 B ( ⋅ ) B(\cdot) B(⋅) 来提取晕影(边界)区域,作为膨胀和腐蚀掩膜的差异,从而获得边界掩膜 m b = B ( m ) m_b = B(m) mb=B(m)。阴影图像可以分为三个区域:阴影(本影)区域 x s x_s xs,边界(晕影)区域 x b x_b xb,和非阴影区域 x n s x_{ns} xns,如图 2 所示。阴影去除是一个面临区域依赖性腐蚀问题的恢复问题。它可以通过条件性区域基础的修复问题来解决。首先,对于不同的区域,阴影去除所需的信息有所不同。尽管阴影区域的背景非阴影区域和潜在结构信息有助于改善对腐蚀区域(即 x b + x s x_b + x_s xb+xs)的预测,但不同区域的信息贡献在阴影去除中是不同的。边界区域由于具有丰富的相邻信息,其预测不确定性较低,而内部阴影区域由于远离有效区域,其预测不确定性较高。也就是说,应该引入更多的信息和约束来促进内部阴影区域的恢复。其次,Retinex 模型可以很好地解构阴影的照明变化,同时保持固有结构的一致性。基于 Retinex 理论 [24],输入图像可以分解为反射图像和照明图像的乘积。如图 2 所示,阴影到无阴影图像的照明变化在阴影区域是一个简单的线性过程,但在边界区域建模阴影边界周围的复杂和剧烈变化是困难的。与此同时,理想情况下,阴影退化仅影响照明图,而反射图则在不同阴影中始终保持一致。换句话说,反射图为推断采样动态中的结构细节提供了可靠的线索。
解释:
这一段讨论了阴影去除算法设计的动机和思路:
-
图像区域划分:阴影图像可以分为三个区域:阴影区域(本影)、边界区域(晕影)和非阴影区域。每个区域在去除阴影时使用的信息不同。阴影去除的任务是恢复这些受损区域的原始信息,因此我们需要根据不同的区域采用不同的方法。
-
边界与内部阴影区域的差异:边界区域(阴影与非阴影之间的过渡区域)通常有更多的有效信息可供恢复,因此预测的不确定性较低。相比之下,阴影的内部区域缺少有效的上下文信息,预测的不确定性较高,因此需要更多的帮助来恢复这些区域的结构。
-
Retinex模型:Retinex模型可以帮助我们将阴影去除问题转化为两个独立的任务:一是恢复图像的反射率(即不受光照影响的结构信息),二是恢复图像的照明(即由阴影引起的光照变化)。在阴影区域,照明的变化是线性的,但在边界区域,光照变化较为复杂。因此,反射率图提供了一个稳定的线索,可以帮助我们恢复内部阴影区域的结构细节。
总的来说,设计这个阴影去除算法时,我们不仅要关注如何去除阴影,还要考虑如何处理图像中不同区域的特点,尤其是边界和阴影区域的不同需求。
图 2:分析从阴影图像
x
x
x 到真实无阴影图像
y
y
y 的照明变化,分别针对三个区域:1)通过
m
b
m_b
mb 截取的边界区域,2)通过
m
s
m_s
ms 截取的阴影区域,3)通过
m
n
s
m_{ns}
mns 截取的非阴影区域。符号
⊙
\odot
⊙ 和
⊗
\otimes
⊗ 分别表示逐元素除法和乘法。我们为每个区域随机采样 1000 个像素,并在最后一列展示照明映射。结果表明,阴影区域和非阴影区域的照明变化可以通过简单的线性变换来近似,而边界区域的照明变化复杂且难以建模。受到这一观察的启发,我们的工作采用了基于边界感知的分而治之方法,分别处理阴影区域和边界区域。
解释:
这段话介绍了图 2 中的内容和分析:
-
三个区域的照明变化:在图像中,我们将其分为三个区域:边界区域、阴影区域和非阴影区域。每个区域的照明变化情况是不同的。通过分析这些区域的照明变化,研究者发现阴影区域和非阴影区域的照明变化可以通过简单的线性变化来处理,而边界区域的变化则更复杂,难以直接建模。
-
照明变化的建模:为了分析这些变化,研究者对每个区域随机采样了1000个像素,并展示了这些区域的照明映射。通过这种方式,研究者发现边界区域的光照变化相对更复杂,因此需要专门的处理方法。
-
分而治之的启发:基于这种观察,作者提出了一种“基于边界感知的分而治之”方法,这意味着他们在处理阴影图像时,采用分别处理阴影区域和边界区域的策略。这样可以更好地解决这些区域的不同问题。
翻译:
4.2 边界感知条件扩散
我们提出了一种无监督的边界感知条件扩散(BCDiff)方法用于阴影去除,方法如图 3 所示,并在算法 1 中进行了总结。阴影去除可以重新表述为条件性区域基础的修复问题,其中阴影区域和边界区域的恢复是以互利的方式统一进行的,通过集成预训练的无条件去噪扩散概率模型(4)和内在分解,引入更多的信息和约束来恢复内阴影区域。
上下文条件生成
直观地,非阴影区域是未受损的,因此我们可以使用公式(2)在任意时间步
t
t
t 上采样中间图像
x
t
n
s
x_{tns}
xtns,如下所示:
x
n
s
t
−
1
∼
N
(
α
ˉ
t
x
,
(
1
−
α
ˉ
t
)
I
)
.
x_{ns}^{t-1} \sim \mathcal{N} \left( \sqrt{\bar{\alpha}_t} x, (1 - \bar{\alpha}_t) I \right) \, \text{.}
xnst−1∼N(αˉtx,(1−αˉt)I).
而受损区域,即边界和阴影区域(记为
x
b
+
s
x_{b+s}
xb+s),可以使用公式(4)进行采样,如下所示:
x
b
+
s
t
−
1
∼
N
(
μ
θ
(
x
t
,
t
)
,
Σ
θ
(
x
t
,
t
)
)
.
x_{b+s}^{t-1} \sim \mathcal{N} \left( \mu_\theta(x_t, t), \Sigma_\theta(x_t, t) \right) \, \text{.}
xb+st−1∼N(μθ(xt,t),Σθ(xt,t)).
到此,我们通过空间结合受损区域和非受损区域,利用掩膜得到完整的中间图像
x
t
−
1
′
x'_{t-1}
xt−1′:
x
t
−
1
′
=
m
b
+
s
∘
x
b
+
s
t
−
1
+
(
1
−
m
b
+
s
)
∘
x
n
s
t
−
1
,
x'_{t-1} = m_{b+s} \circ x_{b+s}^{t-1} + (1 - m_{b+s}) \circ x_{ns}^{t-1} \, \text{,}
xt−1′=mb+s∘xb+st−1+(1−mb+s)∘xnst−1,
其中
m
b
+
s
m_{b+s}
mb+s 表示受损区域。
光照一致性约束
在扩散采样的过程中,我们约束阴影和非阴影区域之间的光照一致性。为了追求光照一致性,我们计算
x
t
x_t
xt 中阴影区域和非阴影区域的均值,以近似它们的光照。受到[5]的启发,在该文中通过分类器的梯度来调节扩散生成,我们引入了一个损失梯度,用来度量阴影和非阴影区域均值之间的差异,并扩展公式(6),如下所示:
ε
^
=
ε
θ
(
x
t
,
t
)
−
1
−
α
ˉ
t
∇
x
t
∣
u
s
t
−
u
n
s
t
∣
.
\hat{\varepsilon} = \varepsilon_\theta(x_t, t) - \sqrt{1 - \bar{\alpha}_t} \nabla_{x_t} | u_{s_t} - u_{ns_t} | \, \text{.}
ε^=εθ(xt,t)−1−αˉt∇xt∣ust−unst∣.
x
b
+
s
t
−
1
=
1
α
ˉ
t
(
x
t
−
β
t
α
ˉ
t
−
1
ε
^
+
σ
t
z
)
,
z
∼
N
(
0
,
I
)
.
x_{b+s}^{t-1} = \sqrt{\frac{1}{\bar{\alpha}_t}} \left( x_t - \beta_t \sqrt{\bar{\alpha}_{t-1}} \hat{\varepsilon} + \sigma_t z \right), \quad z \sim \mathcal{N}(0, I) \, \text{.}
xb+st−1=αˉt1(xt−βtαˉt−1ε^+σtz),z∼N(0,I).
其中
u
s
t
u_{s_t}
ust 和
u
n
s
t
u_{ns_t}
unst 分别计算
x
t
x_t
xt 中阴影区域和非阴影区域的均值。通过在采样过程中利用梯度,我们可以控制预训练扩散模型的生成结果,以实现光照的一致性。
迭代反射率保持
阴影去除的另一个关键点是在生成过程中保持阴影图像的结构信息。与边界区域有丰富的邻接非受损信息不同,内部阴影区域总是与非受损区域隔离开。因此,我们利用阴影区域中的结构信息作为辅助,进一步约束生成结果的保真度。这里我们引入了一个 阴影不变内在分解(SIID)模型
D
D
D(具体细节见 4.3 节),用于分解原始阴影图像
x
x
x 和中间图像
x
t
−
1
′
x'_{t-1}
xt−1′ 的反射率和光照图
{
r
,
l
}
\{r, l\}
{r,l} 和
{
r
t
−
1
,
l
t
−
1
}
\{r_{t-1}, l_{t-1}\}
{rt−1,lt−1}。为了减小
x
t
x_t
xt 中噪声的影响,我们首先通过逆向过程(2)估计其中间的干净图像
x
0
∣
t
−
1
′
x'_{0|t-1}
x0∣t−1′。迭代反射率保持的整个过程可以表示为:
x
0
∣
t
−
1
′
=
1
α
ˉ
t
x
t
−
1
′
−
ε
^
1
−
α
ˉ
t
.
x'_{0|t-1} = \sqrt{\frac{1}{\bar{\alpha}_t}} x'_{t-1} - \hat{\varepsilon} \sqrt{1 - \bar{\alpha}_t} \, \text{.}
x0∣t−1′=αˉt1xt−1′−ε^1−αˉt.
r
,
l
=
D
(
x
)
,
r
t
−
1
,
l
t
−
1
=
D
(
x
0
∣
t
−
1
′
)
.
r, l = D(x), \quad r_{t-1}, l_{t-1} = D(x'_{0|t-1}) \, \text{.}
r,l=D(x),rt−1,lt−1=D(x0∣t−1′).
在扩散采样的迭代过程中,
x
t
−
1
x_{t-1}
xt−1 中的反射率应该与原始阴影图像
x
x
x 在阴影区域内保持一致,因为阴影理想情况下仅会影响光照图。我们根据边界掩膜
m
b
m_b
mb 空间整合每个时间步的反射率图
r
t
−
1
r_{t-1}
rt−1 和原始阴影图像
r
r
r,分别恢复边界和阴影区域:
x
^
0
∣
t
−
1
=
m
b
∘
r
t
−
1
∘
l
t
−
1
+
(
1
−
m
b
)
∘
r
∘
l
t
−
1
.
\hat{x}_{0|t-1} = m_b \circ r_{t-1} \circ l_{t-1} + (1 - m_b) \circ r \circ l_{t-1} \, \text{.}
x^0∣t−1=mb∘rt−1∘lt−1+(1−mb)∘r∘lt−1.
然后通过从
p
(
x
t
−
1
∣
x
t
,
x
^
0
∣
t
−
1
)
p(x_{t-1}|x_t, \hat{x}_{0|t-1})
p(xt−1∣xt,x^0∣t−1) 进行采样,得到最终的
x
t
−
1
x_{t-1}
xt−1。
解释:
这部分介绍了BCDiff方法的关键内容,特别是如何通过条件扩散和迭代反射率保持来高效去除阴影。
-
上下文条件生成:BCDiff的第一步是通过同时处理未受损和受损的区域(阴影和边界),生成一个中间图像。未受损区域直接处理,而受损区域通过扩散模型进行采样,从而将两者合成在一起,得到中间结果。
-
光照一致性约束:为了确保去除阴影后的图像光照一致,我们计算阴影区域和非阴影区域的光照均值,并根据两者之间的差异调整扩散模型的生成过程。这确保了阴影去除过程中光照的连贯性。
-
迭代反射率保持:一个重要的挑战是在生成过程中保持阴影图像的结构信息。BCDiff通过引入一个内在分解模型(SIID),将阴影图像分解为反射率和光照图,并利用这些信息来保持图像的结构细节。迭代过程确保阴影区域的反射率与原始阴影图像一致,从而精确恢复边界和阴影区域。
总结来说,BCDiff通过将阴影和边界区域分开处理,并结合扩散模型与反射率保持技术,能高效地去除图像中的阴影,同时保持图像的结构和光照一致性。
图 3:我们的边界感知条件扩散(BCDiff)方法概述
对于状态 x t x_t xt,BCDiff 包含两个步骤:
- CCG:上下文条件生成:我们首先根据公式 (5) 和公式 (6) 同时采样非受损区域和受损区域,从而得到中间图像 x t − 1 ′ x'_{t-1} xt−1′;
- IRM:迭代反射率保持:然后通过边界感知加权整合 x 0 ∣ t − 1 ′ x'_{0|t-1} x0∣t−1′( x t − 1 ′ x'_{t-1} xt−1′ 的“干净”版本)和原始阴影图像 x x x 的反射率,保持结构信息的一致性。
解释:
图 3 展示了BCDiff方法的总体框架,分为两个主要步骤:
-
上下文条件生成(CCG):这个步骤通过从非阴影区域和阴影区域分别采样,得到一个中间图像。这是通过两个公式(公式 (5) 和公式 (6))完成的,分别处理未受损区域和受损区域,目的是为后续的修复准备数据。
-
迭代反射率保持(IRM):这个步骤通过加权整合操作,确保生成图像的结构信息与原始阴影图像保持一致。我们将“清洁版本”的图像( x 0 ∣ t − 1 ′ x'_{0|t-1} x0∣t−1′)和原始阴影图像的反射率进行结合,从而保持图像的细节和真实感。
这个方法的关键是将阴影区域和非阴影区域分别处理,并且通过不断迭代保持图像结构的一致性,最终达到高质量的阴影去除效果。
算法 1 边界感知条件扩散
输入:阴影图像 x x x,阴影掩膜 m m m,预训练的无条件扩散模型 ε θ \varepsilon_\theta εθ,预训练的分解模型 D D D,隐式采样迭代次数 T T T。
-
x T ∼ N ( 0 , I ) x_T \sim \mathcal{N}(0, I) xT∼N(0,I)
-
r , l = D ( x ) r, l = D(x) r,l=D(x)
-
对于 t = T , … , 1 t = T, \dots, 1 t=T,…,1:
-
x n s t − 1 ∼ N ( α ˉ t x , ( 1 − α ˉ t ) I ) x_{ns}^{t-1} \sim \mathcal{N} \left( \sqrt{\bar{\alpha}_t} x, (1 - \bar{\alpha}_t) I \right) xnst−1∼N(αˉtx,(1−αˉt)I)
-
ε ^ = ε θ ( x t , t ) − 1 − α ˉ t ∇ x t ∣ u t s − u t n s ∣ \hat{\varepsilon} = \varepsilon_\theta(x_t, t) - \sqrt{1 - \bar{\alpha}_t} \nabla_{x_t} | u_{ts} - u_{tns} | ε^=εθ(xt,t)−1−αˉt∇xt∣uts−utns∣
-
如果 t > 1 t > 1 t>1,则 z ∼ N ( 0 , I ) z \sim \mathcal{N}(0, I) z∼N(0,I),否则 z = 0 z = 0 z=0
-
x b + s t − 1 = 1 α ˉ t x t − β t α ˉ t − 1 ε ^ + σ t z x_{b+s}^{t-1} = \sqrt{\frac{1}{\bar{\alpha}_t}} x_t - \beta_t \sqrt{\bar{\alpha}_{t-1}} \hat{\varepsilon} + \sigma_t z xb+st−1=αˉt1xt−βtαˉt−1ε^+σtz
-
x t − 1 ′ = m ∘ x b + s t − 1 + ( 1 − m ) ∘ x n s t − 1 x'_{t-1} = m \circ x_{b+s}^{t-1} + (1 - m) \circ x_{ns}^{t-1} xt−1′=m∘xb+st−1+(1−m)∘xnst−1
-
x 0 ∣ t − 1 ′ = 1 α ˉ t x t − 1 ′ − ε ^ 1 − α ˉ t x'_{0|t-1} = \sqrt{\frac{1}{\bar{\alpha}_t}} x'_{t-1} - \hat{\varepsilon} \sqrt{1 - \bar{\alpha}_t} x0∣t−1′=αˉt1xt−1′−ε^1−αˉt
-
r t − 1 , l t − 1 = D ( x 0 ∣ t − 1 ′ ) r_{t-1}, l_{t-1} = D(x'_{0|t-1}) rt−1,lt−1=D(x0∣t−1′)
-
x ^ 0 ∣ t − 1 = m b ∘ r t − 1 ∘ l t − 1 + ( 1 − m b ) ∘ r ∘ l t − 1 \hat{x}_{0|t-1} = m_b \circ r_{t-1} \circ l_{t-1} + (1 - m_b) \circ r \circ l_{t-1} x^0∣t−1=mb∘rt−1∘lt−1+(1−mb)∘r∘lt−1
-
x t − 1 ∼ p ( x t − 1 ∣ x t , x ^ 0 ∣ t − 1 ) x_{t-1} \sim p(x_{t-1}|x_t, \hat{x}_{0|t-1}) xt−1∼p(xt−1∣xt,x^0∣t−1)
-
结束
-
返回 x 0 x_0 x0
解释:
算法 1:边界感知条件扩散 主要是一个阴影去除的过程,其中模型在每个时间步上通过迭代地修复图像,逐渐去除阴影,并保持图像的结构和光照一致性。
- 初始化:开始时,生成一个随机的高斯噪声图像 x T x_T xT。
- 反射率和光照分解:使用预训练的分解模型 D D D 对阴影图像 x x x 进行反射率和光照分解,得到反射率 r r r 和光照 l l l。
- 迭代过程:对于每个时间步 t t t,从高斯分布中采样非阴影区域 x n s t − 1 x_{ns}^{t-1} xnst−1,并计算阴影区域和非阴影区域之间的差异。通过梯度调整生成过程,以确保阴影区域与非阴影区域的光照一致性。
- 生成和修复:生成新的图像 x b + s t − 1 x_{b+s}^{t-1} xb+st−1 和 x n s t − 1 x_{ns}^{t-1} xnst−1,然后将这两个区域按掩膜 m m m 结合,得到中间图像 x t − 1 ′ x'_{t-1} xt−1′。
- 反射率维护:通过反向过程估算出干净的反射率和光照图,再将其与原始图像进行融合,得到改进后的反射率和光照信息。
- 生成最终图像:根据更新后的图像信息,通过采样过程生成新的图像 x t − 1 x_{t-1} xt−1,直到迭代完成,最终返回去除阴影后的图像 x 0 x_0 x0。
总结来说,这个算法通过逐步生成图像、分解反射率与光照,并在每个步骤维护阴影区域的结构与光照一致性,从而有效地去除阴影并恢复清晰的图像。
翻译:
4.3 阴影不变内在分解(SIID)
内在图像分解(Intrinsic image decomposition)[24, 1] 将输入图像 v v v 分解为反射率图像和光照图像的乘积: v = r ∘ l v = r \circ l v=r∘l。引入了阴影不变内在分解(Shadow-Invariant Intrinsic Decomposition, SIID)模型,用于揭示扩散采样过程中内部阴影区域的结构,具体过程如图 4 所示。
阴影图像集模拟
因此,我们提出在非阴影区域合成阴影,以构建具有相同场景但不同阴影条件的图像集
X
X
X。具体来说,给定一张阴影图像
x
x
x 和相应的阴影掩膜
m
m
m,我们在非阴影背景中模拟
n
n
n 种不同的阴影,记作
x
(
0
)
=
(
1
−
m
)
∘
x
x^{(0)} = (1 - m) \circ x
x(0)=(1−m)∘x,如图 4 所示。阴影合成可以表示为:
x
(
i
)
=
ϕ
(
x
(
0
)
,
m
(
i
)
,
θ
(
i
)
)
x^{(i)} = \phi(x^{(0)}, m^{(i)}, \theta^{(i)})
x(i)=ϕ(x(0),m(i),θ(i)),其中
i
∈
{
1
,
2
,
…
,
n
}
i \in \{1, 2, \dots, n\}
i∈{1,2,…,n},
ϕ
(
⋅
)
\phi(\cdot)
ϕ(⋅) 表示阴影合成算法 [17],
θ
(
i
)
\theta^{(i)}
θ(i) 表示用于模拟不同阴影的随机预定义参数,
m
(
i
)
m^{(i)}
m(i) 表示来自外部掩膜集
M
M
M 的索引化二值化模式。然后,我们使用合成的图像集
{
x
(
i
)
}
i
=
0
n
\{x^{(i)}\}_{i=0}^n
{x(i)}i=0n 来训练 SIID 模型。根据 SIID 模型,我们得到合成图像集的分解反射率集
{
r
(
i
)
}
i
=
0
n
\{r^{(i)}\}_{i=0}^n
{r(i)}i=0n 和光照集
{
l
(
i
)
}
i
=
0
n
\{l^{(i)}\}_{i=0}^n
{l(i)}i=0n。分解架构和阴影模拟过程的详细信息见补充材料。
损失函数
由于反射率在不同阴影条件下是恒定的,因此我们应该能够使用任何图像
x
(
i
)
∈
X
x^{(i)} \in X
x(i)∈X 预测的反射率
r
(
i
)
r^{(i)}
r(i) 来重建
x
(
j
)
x^{(j)}
x(j),当与
l
(
j
)
l^{(j)}
l(j) 配对时,重建公式如下:
L
recon
=
∑
i
=
1
n
∑
j
=
1
n
∥
r
(
i
)
∘
l
(
j
)
−
x
(
j
)
∥
1
(
13
)
L_{\text{recon}} = \sum_{i=1}^n \sum_{j=1}^n \left\| r^{(i)} \circ l^{(j)} - x^{(j)} \right\|_1 \quad (13)
Lrecon=i=1∑nj=1∑n
r(i)∘l(j)−x(j)
1(13)
此外,我们将具有正常光照的非阴影背景视为真实的反射率图。因此,我们还包括一个反射率一致性损失,约束预测的反射率应当一致:
L
cons
=
∑
i
=
1
n
∥
r
(
i
)
−
r
(
0
)
∥
1
(
14
)
L_{\text{cons}} = \sum_{i=1}^n \left\| r^{(i)} - r^{(0)} \right\|_1 \quad (14)
Lcons=i=1∑n
r(i)−r(0)
1(14)
光照图在场景中每个物体表面应当是局部一致的 [1],因此我们利用全变差最小化(TV)来最小化预测光照图的梯度,排除边界区域。同时,我们还采用边界平滑损失来“挤压”反射率图中的边界痕迹,如下所示:
L
smo
=
∑
i
=
1
n
∥
∇
l
(
i
)
∘
(
1
−
B
(
m
(
i
)
)
)
∥
1
(
15
)
L_{\text{smo}} = \sum_{i=1}^n \left\| \nabla l^{(i)} \circ (1 - B(m^{(i)})) \right\|_1 \quad (15)
Lsmo=i=1∑n
∇l(i)∘(1−B(m(i)))
1(15)
L
boun
=
∑
i
=
1
n
∥
∇
r
(
i
)
∘
B
(
m
(
i
)
)
∥
1
(
16
)
L_{\text{boun}} = \sum_{i=1}^n \left\| \nabla r^{(i)} \circ B(m^{(i)}) \right\|_1 \quad (16)
Lboun=i=1∑n
∇r(i)∘B(m(i))
1(16)
其中
∇
\nabla
∇ 表示包括水平梯度
∇
h
\nabla_h
∇h 和垂直梯度
∇
v
\nabla_v
∇v。最终的混合目标函数
L
total
L_{\text{total}}
Ltotal 是通过结合上述损失得到的,用于指导分解模型
D
D
D 的训练,公式如下:
L
total
=
L
recon
+
λ
1
L
cons
+
λ
2
L
smo
+
λ
3
L
boun
(
17
)
L_{\text{total}} = L_{\text{recon}} + \lambda_1 L_{\text{cons}} + \lambda_2 L_{\text{smo}} + \lambda_3 L_{\text{boun}} \quad (17)
Ltotal=Lrecon+λ1Lcons+λ2Lsmo+λ3Lboun(17)
其中
λ
1
,
λ
2
,
λ
3
\lambda_1, \lambda_2, \lambda_3
λ1,λ2,λ3 是用于平衡各项损失影响的加权系数。
解释:
阴影不变内在分解(SIID) 主要是为了处理图像中的阴影区域,揭示这些区域的反射率和光照信息。
-
阴影图像合成:我们首先在原始的阴影图像 x x x 上进行处理,合成多个不同阴影条件下的图像集。这些图像中,阴影区域根据不同的参数进行模拟,生成一组具有相同场景但阴影不同的图像。
-
训练 SIID 模型:然后,我们使用这些合成图像来训练一个模型,这个模型能分解图像中的反射率和光照信息。
-
损失函数设计:
- 重建损失:反射率在不同的阴影条件下应该是恒定的,所以我们希望通过已知的反射率来重建阴影图像。通过计算反射率和光照的乘积与原始图像的差异来优化模型。
- 一致性损失:由于在非阴影区域反射率不应该变化,我们使用反射率一致性损失来确保所有阴影条件下的反射率保持一致。
- 光照一致性:光照应当在同一物体表面保持一致,所以我们通过全变差最小化(TV)来保证光照图的平滑性。
- 边界损失:为了避免在阴影区域和非阴影区域之间出现不自然的过渡,我们还设计了边界平滑损失,确保边界过渡自然。
-
混合目标函数:最终,通过将这些损失结合起来,我们得到了一个混合目标函数,用于训练 SIID 模型,从而更准确地分解图像中的反射率和光照信息。
这个过程有助于去除阴影,并使图像恢复出真实的反射率和光照信息。
图 4:阴影不变内在分解模型
D
D
D 的概述
在训练阶段,输入是从阴影图像
x
(
0
)
x^{(0)}
x(0) 合成的图像集
{
x
(
i
)
}
i
=
0
n
\{x^{(i)}\}_{i=0}^n
{x(i)}i=0n。模型
D
D
D 包括一个解码器
E
E
E,以及两个分别用于分解反射率
{
r
(
i
)
}
i
=
0
n
\{r^{(i)}\}_{i=0}^n
{r(i)}i=0n 和光照
{
l
(
i
)
}
i
=
0
n
\{l^{(i)}\}_{i=0}^n
{l(i)}i=0n 的解码器
D
r
D_r
Dr 和
D
l
D_l
Dl。
解释:
图 4 介绍了阴影不变内在分解模型 D D D 的结构。
- 在训练过程中,我们首先使用合成的图像集 { x ( i ) } i = 0 n \{x^{(i)}\}_{i=0}^n {x(i)}i=0n,这些图像是从原始阴影图像 x ( 0 ) x^{(0)} x(0) 中通过模拟不同阴影条件生成的。
- 模型 D D D 包括一个主解码器 E E E,用于整体图像的处理。
- 同时,模型还包含两个专门的解码器,分别是 D r D_r Dr 和 D l D_l Dl,用于提取图像中的反射率集 { r ( i ) } i = 0 n \{r^{(i)}\}_{i=0}^n {r(i)}i=0n 和光照集 { l ( i ) } i = 0 n \{l^{(i)}\}_{i=0}^n {l(i)}i=0n。
简单来说,模型的任务是从阴影图像中分离出图像的反射率(物体的本身属性)和光照(环境因素)。这个过程通过训练模型使其能够在不同阴影条件下生成精确的反射率和光照图。