《边界感知的分而治之方法:基于扩散模型的无监督阴影去除解决方案》学习笔记

paper:Boundary-Aware Divide and Conquer: A Diffusion-Based Solution for Unsupervised Shadow Removal

目录

摘要

1、介绍

2、相关工作

[2.1 阴影去除](#2.1 阴影去除)

[2.2 去噪扩散概率模型(Denoising Diffusion Probabilistic Models, DDPM)](#2.2 去噪扩散概率模型(Denoising Diffusion Probabilistic Models, DDPM))

3、方法

[3.1 动机](#3.1 动机)

[3.2 边界感知条件扩散方法](#3.2 边界感知条件扩散方法)

[3.2.1 上下文条件生成 (Context Conditioned Generation)](#3.2.1 上下文条件生成 (Context Conditioned Generation))

[3.2.2 光照一致性约束 (Illumination-Consistency Constraint)](#3.2.2 光照一致性约束 (Illumination-Consistency Constraint))

[3.2.3 迭代反射率保持 (Iterative Reflectance Maintenance)](#3.2.3 迭代反射率保持 (Iterative Reflectance Maintenance))

[3.3 影子不变的内在分解(SIID)](#3.3 影子不变的内在分解(SIID))

[3.4 损失函数](#3.4 损失函数)

[4. 实验](#4. 实验)

[4.1 数据集与评估指标](#4.1 数据集与评估指标)

[4.2 实验设置](#4.2 实验设置)

[4.3 对比实验](#4.3 对比实验)

[4.4 消融实验](#4.4 消融实验)

扩散模型的效果

迭代反射率维护的效果

模拟图像集合的效果

光照一致性约束的效果


摘要

近年来,深度学习方法在阴影去除任务中取得了卓越的成果。然而,大多数这些有监督方法依赖于在大量阴影与无阴影的成对图像上进行训练,这需要繁重的标注工作,并可能导致模型泛化性能较差。实际上,阴影只会对图像形成部分退化,而非阴影区域提供了丰富的结构信息,潜在地适合用于无监督学习 。在本文中,我们提出了一种基于扩散模型的无监督阴影去除新方法,该方法分别对阴影区域、非阴影区域及其边界区域进行建模 。我们使用一个预训练的无条件扩散模型,并融合非受损区域的信息以生成自然的无阴影图像。尽管扩散模型可以通过利用相邻的未受损上下文信息恢复边界区域的清晰结构,但由于缺乏未受损上下文,它无法处理阴影内部区域。为此,我们进一步提出了一个阴影不变的内在分解模块,以利用阴影区域中的潜在反射率,从而在扩散采样过程中保持结构一致性。在多个公开阴影去除数据集上的广泛实验表明,所提方法相比现有无监督方法取得了显著改进,甚至在某些情况下可与现有的有监督方法媲美。

1、介绍

问题背景与挑战

阴影是由于光被部分遮挡而形成的一种普遍现象。移除阴影对于许多计算机视觉任务(如目标检测和跟踪)至关重要。然而,从单张图像中移除阴影仍然是一个开放的问题,主要原因是阴影形状和背景结构的多样性,使得难以找到通用的解决方案。传统方法通常依赖手工设计的统计特征(如光照、梯度和区域一致性)来构建优化函数,用于移除阴影区域。然而,这些方法忽略了自然图像的先验知识,其假设往往过于理想化,导致在现实场景中生成的结果不自然,并且容易产生伪影。

现有深度学习方法的局限性

近年来,基于深度学习的阴影移除方法取得了显著进展。这些方法通过监督学习,在阴影图像与无阴影图像的像素级对应关系上进行训练。然而,这类方法需要大量标注数据,并且容易导致过拟合,从而在测试集上泛化能力较差。此外,**阴影移除是一个区域性退化的问题,存在丰富的上下文和结构先验。**这些信息为基于无监督学习的方法提供了强大的潜力。然而,当前的一些无监督方法(如基于GAN的工作)依赖无配对的阴影和无阴影图像进行训练,由于缺乏像素级的标注,生成器可能会产生虚假的内容和伪影。

方法概述

本文提出了一种新颖的基于扩散模型的无监督阴影移除方法,仅使用带阴影的图像,而无需参考图像。我们将阴影图像中的退化区域分为两类:

  1. 阴影区域:结构信息被低光照模糊。
  2. 边界区域:包含噪声结构,但具有丰富的相邻无退化上下文信息。

我们的方法通过整合扩散模型的生成能力和内在分解的细节保留能力,对两种区域进行统一恢复,从而实现互补。具体而言,我们利用一个预训练的无条件扩散模型,以非退化区域信息为指导,生成自然的无阴影图像,并抑制伪影 。虽然扩散模型可以利用相邻的非退化上下文信息,有效恢复边界区域的清晰结构和标准光照,但对孤立的阴影区域却表现不佳。为了解决这一问题,我们提出了一种阴影不变内在分解模型,确保扩散采样过程中所有中间结果的反射率一致性,从而揭示阴影区域中的结构细节。实验表明,该方法在多个广泛使用的阴影移除数据集上性能优越,不仅显著超过现有无监督方法,还在某些情况下与监督方法的性能相当。

主要贡献

  1. 提出了基于扩散模型的无监督阴影移除新方法,将退化区域分为阴影区域和边界区域,通过扩散和内在分解的结合,实现两者的统一恢复。
  2. 提出了阴影不变内在分解模型,保证扩散采样过程中反射率的一致性,有效恢复阴影区域的结构细节。
  3. 在多个公开数据集上进行了广泛的实验,证明了该方法在无监督方法中具有显著优势,并在部分场景下与监督方法相当。

2、相关工作

2.1 阴影去除

传统阴影去除方法依赖于先验信息,例如梯度、光照以及区域一致性等。这些方法基于理想条件假设构建,但在实际应用中会导致明显的阴影边界伪影。

近年来,基于深度学习的阴影去除方法通过大规模成对数据集(阴影图像与无阴影图像)提升了去除性能。然而,这些方法面临标注难度大且模型容易过拟合的问题。

受无监督或弱监督图像转换方法启发,部分研究开始利用生成对抗网络(GAN)在无配对的阴影和无阴影图像上生成无阴影图像。例如:

  • Hu 等人提出基于掩码的循环一致性约束,学习同时生成阴影和去除阴影的能力。
  • Jin 等人提出 DC-ShadowNet,利用无监督域分类器处理软阴影和硬阴影的去除问题。
  • Liu 等人设计了一种方法,通过生成配对的阴影和无阴影图像,训练去阴影子网络。

然而,这些技术通常会面临颜色失真和伪造内容(如伪影)的风险。

2.2 去噪扩散概率模型(Denoising Diffusion Probabilistic Models, DDPM)

生成模型已经广泛应用于图像超分辨率、图像修复、低光增强和去模糊等任务。最近,扩散概率模型通过建模从标准正态分布到数据分布的过程,在生成高质量图像方面表现优异。然而,直接从头训练特定任务的条件扩散模型需要大量的计算资源和时间。

为解决该问题,另一种研究方向是通过引导预训练的无条件扩散模型的采样过程来生成具有特定语义的图像。例如:

  • Choi 等人通过参考图像的低频分量控制扩散模型的采样过程,生成高质量图像。
  • Wang 等人采用一种范围-零空间分解技术,在采样过程中保持数据一致性,并迭代优化零空间内容。
  • Chung 等人引入流形约束项,通过交替投影的方法指导采样路径,在多种逆问题中表现优异。

现有工作主要集中于特定退化场景的图像修复任务,而本文探索了在退化不确定情况下的扩散模型应用于阴影去除问题的潜力。

3、方法

3.1 动机

我们设计阴影去除算法的动机如下所述。假设阴影图像为 ,对应的阴影掩码为,而无阴影图像为 。我们定义一个边界提取器,用以通过膨胀和腐蚀操作的残差提取阴影边界区域(半影),从而得到边界掩码 。阴影图像可以被分为三个区域:阴影区域(全影)、边界区域(半影)和无阴影区域 ,如图所示。

阴影去除作为区域依赖的修复问题

阴影去除是一个修复任务,其面临区域依赖的退化问题,可将其视为一个条件区域化的图像修复问题:

区域间信息的差异性利用:

对于不同的区域,阴影去除所依赖的信息有所不同。非阴影区域 的上下文信息和阴影区域​ 的潜在结构信息可以提高对退化区域(即)的预测能力。

不同区域对阴影去除贡献的信息量不同。例如,边界区域由于邻近丰富的信息具有较低的预测不确定性,而内层阴影区域由于距离有效区域较远,具有较高的不确定性。因此,在恢复内层阴影区域时需要引入更多的信息和约束。

Retinex 模型的启发:

Retinex 理论能够很好地分离阴影区域的光照变化,同时保持图像的内在结构不变。根据 Retinex 理论,一幅输入图像可以分解为反射图(reflectance image)和光照图(illumination image)的乘积。

如上图所示,在阴影区域中,从阴影图像到无阴影图像的光照变换是一个简单的线性过程,而在边界区域,建模阴影边界的复杂且快速变化则更加困难。

理想情况下,阴影退化只影响光照图,而反射图在不同阴影区域保持恒定。因此,反射图为推断采样动态中的结构细节提供了可靠的线索。

3.2 边界感知条件扩散方法

我们提出了一种无监督边界感知条件扩散方法 (BCDiff) 来解决阴影去除问题,其流程如图所示。本方法将阴影去除重新表述为一种基于条件的区域修复问题,通过将预训练的无条件去噪扩散概率模型与内在分解相结合,引入更多信息和约束以更好地恢复阴影内部区域。

3.2.1 上下文条件生成 (Context Conditioned Generation)

直观上,非阴影区域 (​) 是未受污染的,因此可以在任意时间步下直接采样其中间图像

而对于受污染区域(即边界和阴影区域,记作 ),可以通过进行采样:

为了得到整体的中间图像 ,我们利用掩码将受污染区域和未受污染区域空间组合起来:

其中, 表示受污染区域的掩码。

3.2.2 光照一致性约束 (Illumination-Consistency Constraint)

在扩散采样过程中,我们约束阴影和非阴影区域之间的光照一致性。为了实现这一点,我们计算 中阴影区域和非阴影区域的均值,作为光照近似值。

通过分类器梯度调节扩散生成,我们引入用于计算阴影和非阴影区域光照均值差异的损失梯度,并扩展:

其中,分别表示 中阴影和非阴影区域的光照均值。通过采样过程中引入梯度,我们可以使预训练扩散模型生成的结果具有一致的光照。

3.2.3 迭代反射率保持 (Iterative Reflectance Maintenance)

阴影去除的另一个关键点是生成过程中保留阴影图像的结构信息。与边界区域丰富的邻近非污染信息不同,阴影内部区域往往孤立。因此,我们利用隐藏在阴影区域中的结构信息作为辅助,以进一步约束保真度。

如图所示,我们引入一个阴影不变内在分解模型 (SIID) ,将原始阴影图像和中间图像 分解为反射率和光照图

由于阴影理想情况下仅影响光照图,因此在扩散采样的迭代过程中,我们要求的反射率与原始阴影图像 在阴影区域内保持一致。基于边界掩码 ,我们通过以下公式分别恢复边界和阴影区域:

最终,通过从 中采样得到

3.3 影子不变的内在分解(SIID)

内在图像分解任务

内在图像分解(Intrinsic Image Decomposition)是将输入图像分解为反射率图 (reflectance map, rrr)和光照图(illumination map, lll)的乘积:

影子不变内在分解(SIID)模型的核心思想是,借助该分解来揭示影子区域的内部结构,从而在扩散采样过程中更好地还原影子区域的真实信息。

影子图像集的模拟

为了构造具有相同场景但不同影子条件的图像数据集 ,本文采用了一种基于影子模拟的方法:

给定一张影子图像 和对应的影子掩码 ,首先得到没有影子的背景图像

使用随机预定义参数和外部掩码集中的二值化模式 生成带有不同影子条件的图像: 其中, 是影子合成算法。

最终生成的数据集包含张图像:

然后,SIID 模型在合成图像集上进行训练,得到反射率集 和光照集​。

3.4 损失函数

(1)重建损失(Reconstruction Loss, LreconL_{\text{recon}}Lrecon​)

根据反射率的影子不变性 ,当图像 的反射率 与另一图像 的光照配对时,应能够重建

(2)一致性损失(Consistency Loss, LconsL_{\text{cons}}Lcons​)

假设无影区域的反射率为真实值(即)。模型预测的所有反射率 应接近于

平滑损失(Smoothness Loss, LsmoL_{\text{smo}}Lsmo​)

假设光照图的变化在物体表面是局部连续的,因此通过全变分正则化(TV)约束其梯度(边界区域除外):

其中,表示边界掩码。

边界平滑损失(Boundary Smoothness Loss, LbounL_{\text{boun}}Lboun​)

约束反射率图在边界区域应尽量保持平滑:

4. 实验

4.1 数据集与评估指标

数据集

ISTD数据集包含1,870组三元组,分别由阴影图像、阴影掩码和无阴影图像组成,分辨率为480×640。其中,1,330组三元组用于训练,540组用于测试。由于无监督方法无法从真实的无阴影样本中学习标准光照,我们使用调整后的测试集,以减少原始数据集中阴影和无阴影图像之间非阴影区域的光照差异。

评估指标

按照之前的工作,我们使用均方根误差 (RMSE)、峰值信噪比 (PSNR)和结构相似性(SSIM)作为评估指标。RMSE在LAB颜色空间计算,而PSNR和SSIM在RGB颜色空间计算。更低的RMSE值表示恢复输出与真实值之间的重建误差更小,而更高的PSNR和SSIM值表示结果更优。

4.2 实验设置

我们的方法使用PyTorch实现,并在一块NVIDIA RTX A5000 GPU上运行。

我们的阴影去除方法无需训练,依赖于一个预训练的无条件扩散模型。

在所有实验中,我们设置扩散步数 T=250。

采样批量大小为3。

中的膨胀和腐蚀操作核为半径为8像素的圆盘。

分解模型基于最新的Transformer架构图生图模型进行修改。

我们的分解模型训练中的损失权重 经经验设置为

模拟阴影图像的数量设置为 n=4。

4.3 对比实验

我们将提出的无监督方法与多种最新的方法进行了比较,包括:

传统方法:Gong et al.、Yang et al. 和 Guo et al.;

有监督方法(使用配对的阴影和无阴影图像进行训练):DSC、DHAN、SP+M-Net 、Fu et al. 、BMNet 和 SG-ShadowNet ;

无监督方法(不使用配对的阴影和无阴影图像进行训练):MaskShadow-GAN 、LG-ShadowNet 、DC-ShadowNet 、Le et al. 和 G2R 。

所有对比方法的阴影去除结果均引用自原论文或使用其官方实现复现。我们按照大多数先前研究 ,以 256 × 256 的分辨率进行评估。

表展示了 ISTD 数据集测试集的定量结果。Gong et al.通过一系列预定义先验来处理任务,然而这些先验过于严格,难以扩展到现实场景。对于有监督方法,它们共享相同类型的训练数据,包括阴影和无阴影图像对,通过训练数据学习从阴影图像到无阴影图像的映射。但在扩展到某些未见场景时,它们的性能可能会大幅下降。相比之下,我们提出的无监督方法利用了上下文的非阴影区域,并将分解模型适配于测试数据,即使在训练阶段没有使用真实数据(GT),也能取得比部分有监督方法更好的结果。此外,一些无监督方法(如 MaskShadow-GAN 、LG-ShadowNet 和 DC-ShadowNet )使用未配对的阴影和无阴影图像进行训练,而我们的模型仅通过阴影图像学习,仍能优于这些方法。Le et al.和 G2R 的设置与我们一致,均不需要无阴影图像。在与最新的无监督方法 G2R [29] 的对比中,我们在阴影区域的 PSNR 上提高了约 2.5dB。此外,我们验证了使用检测得到的阴影掩膜作为输入时的性能,结果标注为"w/ detected mask"。使用检测掩膜时,我们的方法性能会略微下降。

图展示了我们方法和其他最新方法在 ISTD 数据集上的定性结果。在第一行的小阴影区域示例中,由于阴影图像中丰富的上下文信息,无监督方法表现更好。我们的方法在保持结构信息和抑制边界伪影方面优于 SP+M-Net(有监督方法)。此外,与其他方法相比,我们的方法恢复的结果更加自然。例如,SP+M-Net 、Le et al. 和 G2R 的结果虽然变亮了,但与周围颜色和光照不一致,而我们的方法则能够获得更高一致性的结果。

4.4 消融实验

为了验证所提方法中每个关键组件的有效性,我们在ISTD数据集上针对几个模型变体进行了实验。同时,我们还在补充材料中提供了分解模型中损失函数的消融研究结果。

扩散模型的效果

我们提出使用扩散模型(采样过程)作为一种自然图像先验,来抑制生成结果中的伪影,并根据上下文信息校正阴影区域的光照。我们在ISTD数据集上进行了实验以验证扩散模型的效果。在表中,我们提供了没有扩散模型时的阴影去除性能,其中我们仅保留分解模型,并将分解得到的反射率图视为恢复后的无阴影结果。我们发现,所有指标的性能均有所下降,特别是SSIM指标从0.962降至0.952。

迭代反射率维护的效果

为了生成包含阴影区域隐藏的结构信息的无阴影图像,我们提出在扩散采样过程中进行迭代反射率维护。我们进行了实验,将每次迭代中的反射率替换去除,即在采样阶段丢弃。我们发现所有指标的性能明显下降,这表明生成的无阴影图像失去了大量的真实性。

模拟图像集合的效果

我们探索了用于同一场景的模拟图像集合是否能相比于单一模拟阴影图像提高分解性能。具体来说,我们将模拟阴影图像的数量设置为n=1(在表2中表示为"w/o simulated set"),性能会有所下降,特别是在阴影区域。在训练阶段未学习到各种光照条件时,由于模拟和真实阴影图像之间的域间差异,分解模型容易错误地将某些结构和颜色组件排除在反射率之外,从而导致结果中出现严重的伪影。

光照一致性约束的效果

我们还进行了实验,以验证扩散采样过程中光照一致性约束的有效性(在表2中表示为"w/o illumination constraint")。具体而言,我们用DDPM中的原始去噪步骤替换公式(8)和(9):

其中 。性能在没有光照约束的情况下会下降,这表明光照约束能够进一步增强恢复结果的光照一致性。

相关推荐
索然无味io1 分钟前
组件框架漏洞
前端·笔记·学习·安全·web安全·网络安全·前端框架
珊瑚里的鱼16 分钟前
【单链表算法实战】解锁数据结构核心谜题——环形链表
数据结构·学习·程序人生·算法·leetcode·链表·visual studio
林涧泣17 分钟前
图的矩阵表示
学习·线性代数·矩阵
chimchim6625 分钟前
【starrocks学习】之catalog
学习
刀客12333 分钟前
python3+TensorFlow 2.x(四)反向传播
人工智能·python·tensorflow
SpikeKing39 分钟前
LLM - 大模型 ScallingLaws 的设计 100B 预训练方案(PLM) 教程(5)
人工智能·llm·预训练·scalinglaws·100b·deepnorm·egs
时间很奇妙!1 小时前
decison tree 决策树
算法·决策树·机器学习
小枫@码1 小时前
免费GPU算力,不花钱部署DeepSeek-R1
人工智能·语言模型
liruiqiang051 小时前
机器学习 - 初学者需要弄懂的一些线性代数的概念
人工智能·线性代数·机器学习·线性回归
Icomi_1 小时前
【外文原版书阅读】《机器学习前置知识》1.线性代数的重要性,初识向量以及向量加法
c语言·c++·人工智能·深度学习·神经网络·机器学习·计算机视觉