SCALING IN-THE-WILD TRAINING FOR DIFFUSION-BASED ILLUMINATION HARMONIZATION AND EDITING BY IMPOSING CONSISTENT LIGHT TRANSPORT 通过施加一致的光线传输来扩展基于扩散模型的真实场景光照协调与编辑训练
- 前言
- 摘要
- 引言
- 相关工作
- 基于学习的
- 基于扩散模型的外观和光照操纵
- 光照舞台方法
- 本质图像
- 方法
- 野外光照数据分布
- 野外图像增强
- 3D渲染数据
- 光照舞台(Light Stage)数据处理
- 引入一致性光传输
- 标准目标
- 光传输一致性
- 联合学习目标
- 实验
- 实验细节
- 消融实验
- 额外的应用
- 定量评价
- 视觉比较
- 结论
- 附录
- 光的传输一致性示例数据
- 附加实现细节数据集
- 估计环境图
- 野外图像增强
- 训练调度器的附加实现细节
- other结果
通过施加一致的光线传输来扩展基于扩散模型的真实场景光照协调与编辑训练)
前言
ICLR 2025满分论文
code:https://github.com/lllyasviel/IC-Light.git
摘要
- 技术背景:
- 基于扩散的图像生成器用于光照协调和编辑
- 现有技术面临保持图像细节和固有属性的挑战
- 创新方法:
- 提出ICLight(一致光线传输)方法
- 基于物体在不同光照条件下外观线性混合的物理原理
- 主要优势:
- 可处理大规模数据(>1000万)
- 支持多种数据类型(真实场景、渲染样本等)
- 兼容强大的模型架构(SDXL、Flux等)
- 关键成果:
- 实现稳定可扩展的光照学习
- 只改变图像光照,保持其他属性不变
- 减少不确定性和伪影(如材质不匹配)
总结:该研究通过引入基于物理原理的ICLight方法,解决了基于扩散模型的光照编辑在大规模训练中的关键问题,实现了高质量的光照处理效果。
光照协调就是让画面中的所有元素在光照效果上达到和谐一致的状态,使整体画面看起来自然且真实
引言
使用背景生成修改文本条件照明 (Flux.1-dev)。我们展示了这种方法的典型用例:用户给出对象图像和照明描述,我们的方法生成相应的对象外观和背景
编辑图像中的照明是深度学习和图像编辑的一项基本任务。经典的计算机图形方法通常使用物理照明模型对图像的外观进行建模。
基于扩散的照明编辑方法还为扩大训练和利用更强的主干提供了新的机会和考虑。
有两个挑战需要解决:
- 第一个挑战在于保持所需的模型行为以确保适当的照明操作,而不是偏离意外的随机行为。随着数据集大小和多样性的增加,学习目标的映射和分布可能会变得模棱两可和不确定。如果没有适当的约束,训练可能会产生结构引导的随机图像生成器,从而产生与所需照明编辑要求不一致的输出。
- 第二个挑战是在修改照明时保留底层图像细节和内在属性,如反照率或反射率颜色。由于扩散算法的随机性和潜在空间的编码解码过程,基于扩散的图像生成器本质上倾向于在图像内容中引入随机性,因此很难保留细粒度的细节。此外,有效的照明编辑要求模型彻底理解场景,以正确调整阴影、高光和镜面反射等元素。例如,如果原始图像包含硬阴影,模型必须在添加新光源和适当的阴影之前首先删除这些现有的阴影。因此,保留图像细节和内在属性不仅需要内容生成,还需要模型的判别和分解能力来分析图像成分,需要精心设计训练目标和约束。
在本文中,我们提出了一种基于光传输独立性的物理原理——物体在不同光照条件下的外观的线性混合与其在混合光照下的外观一致,提出了一种在训练过程中施加一致光(IC-Light)传输的方法.
我们引入了一个强有力的、基于物理原理的约束,确保模型只修改图像的光照方面,同时保持反照率和细节等其他固有特性不变。
这种方法可以在超过 1000 万个不同样本上实现稳定、可扩展的训练,包括来自光照阶段的真实照片、渲染图像和具有合成光照增强的野外图像。
这种方法使我们能够实现最大化的设置:将数据集扩展到超过 1000 万张图像,采用更强大的主干,如 SDXL 和 Flux,并利用所有可用的数据源类型,包括从灯光阶段捕获的真实照片、渲染图像和野外自然或具有合成照明增强的艺术图像。我们提供了实验证据来验证增加训练规模和多样化数据源可以提高各种光照相关下游任务的模型鲁棒性和性能。
(1)我们提出了IC-Light,一种通过施加一致的光传输来扩大基于扩散的照明编辑模型的训练的方法,确保精确的照明修改,同时保持内在的图像细节;
(2)我们提供预先训练的照明编辑模型,以促进照明编辑在不同领域的内容创建和操作中的应用;
(3)通过大量的实验验证了该方法的有效性的可扩展性和性能,显示了它与处理不同光照条件的替代方法的差异;
(4)我们提出了其他应用,如法线地图生成和艺术照明操作,进一步展示了我们的方法在现实世界、野外场景中的通用性和鲁棒性。
相关工作
基于学习的
过去十年中,基于学习的方法已成为图像重光照领域的重要基准。Sun等人(2019)利用深度神经网络从光照场景数据中学习先验知识。Nestmeyer等人(2020)通过在神经网络训练过程中建模物理先验,进一步增强了神经网络在重光照方面的能力。Pandey等人(2021)利用高动态范围(HDR)光照图(Debevec,2008)通过显式优化Phong模型先验来训练重光照模型。
为了提高光照建模的效率、性能和合理性,研究人员提出了各种基准方法(Zhou等,2019;Sengupta等,2021;Hou等,2021、2022;Wang等,2023b;Zhou等,2023)。Switchlight(Kim等,2024)是一种最新的重光照方法,通过物理协同设计的神经网络进行前景重光照训练。
3D面部建模(Shu等,2017)或本质图像分解(Barron & Malik,2014;Sengupta等,2018)也被证明在人像重光照方面非常有效。光照风格化也可以促进人像重光照(Shih等,2014)。
基于扩散模型的外观和光照操纵
近年来,得益于文本到图像扩散模型的发展(Dhariwal & Nichol, 2021; Ho等, 2020; Sohl-Dickstein等, 2015; Song等, 2021),图像处理领域的众多任务取得了显著进展(Ho & Salimans, 2021等)。
特别是在图像编辑方面(Alaluf等, 2023到Huberman-Spiegelglas等, 2023)和配对图像转换领域(Kwon & Ye, 2022等),微调预训练扩散模型被证明是操控图像外观的有效方法。
文本到图像模型在以下领域也展现出显著效果:
深度估计(Ke等, 2024)
法线估计(Fu等, 2024)
3D构建(Anciukevicius等, 2023到Xu等, 2023)
最新研究进展:
Relightful Harmonization(Ren等, 2024)提出了基于背景条件操控图像前景光照的最新方法
最近提出的新方法主要基于3D渲染、NeRF表示和合成数据:
DilightNet(Zeng等, 2024)
FlashTex(Deng等, 2024)
LightIt(Kocsis等, 2024)
NeuralGaffer(Jin等, 2024)
光照舞台方法
光照舞台(Debevec等,2000)是一种用于捕捉真实物体在不同光照条件下外观的设施。近期在光照模式效率和不同光照的神经网络表示方面取得了重要进展(Fyffe & Debevec,2015;Ghosh等,2011;Meka等,2019)。
人像处理被认为是光照舞台研究的重要方向(Hou等,2021、2022到Zhang等,2021、2020b)。Wang等(2023b)指出太阳也可以被视为一种特殊类型的光照舞台。Calian等(2018)提出了用于人脸重光照的"光探针"建模。Sengupta等(2021)讨论了某些现实世界的光源也可以视为光照舞台,例如桌面显示器设备上的不同图像。
Sevastopolsky等(2020)尝试使用智能手机相机构建更简便的设施来更有效地捕捉光照舞台。各种光照模型(Debevec等,2000;Dorsey等,1995;Wenger等,2005)也依赖于光照舞台的测量。
本质图像
本质图像和分解是图像处理领域中一个长期存在的问题。早期方法通常与图像平滑研究密切相关,例如L0(Xu等,2011)、L1(Bi等,2015)、RTV(Xu等,2012)、WLS(Farbman等,2008)、EAP(Zhang等,2020a)等。
随着本质图像数据集IIW(Bell等,2014)和MPI-Sintel(Butler等,2012)的出现,基于学习的方法开始被采用:
Narihira等(2015)训练线性分类器从局部图像块中获取上下文线索
Zhou等(2015)使用结合局部和全局输入的多流网络
Zoran等(2015)利用局部和全局上下文信息进行成对分类
Nestmeyer & Gehler(2017)通过CNN预测密集反射层
Narihira & Yu(2015)和Eigen & Fergus(2015)训练CNN直接预测反照率和阴影
Kim等(2016)使用联合模型学习深度图和本质图像
Shi等(2017)训练编码器-解码器CNN使用合成图像预测本质层
后续发展:
Barron & Malik(2012;2020)提出从形状估计环境光的计算方法
Fan等(2018)提出可以同时利用图像空间监督和稀疏监督的学习型本质分解方法
最新进展:
Kocsis等(2023)将单视图外观分解任务作为概率问题,使用扩散模型提供多种可能的分解
IntrinsicAnything(Xi等,2024)使用预训练扩散模型估计本质图像
IntrinsicDiffusion(Luo等,2024)微调扩散模型,从输入图像联合预测多个本质模态(反照率、光照和表面几何)
方法
野外光照数据分布
如图 2 所示,我们使用多种可用数据源对照明效果的分布进行建模:任意图像、3d 数据和光照阶段图像。这些分布允许捕获多样化和复杂的现实世界照明场景,例如背光、边缘光、辉光等。为简单起见,我们将所有数据处理为通用格式。
每个外观图像 I L ∈ R h × w × 3 I_L ∈ R^{h×w×3} IL∈Rh×w×3 与 32 p x 32px 32px 环境图 L ∈ R 32 × 32 × 3 L ∈ R^{32×32×3} L∈R32×32×3、前景掩码 M ∈ R h × w M ∈ R^{h×w} M∈Rh×w、可选的背景图像 B ∈ R h × w × 3 B ∈ R^{h×w×3} B∈Rh×w×3 和可选的退化图像 I d ∈ R h × w × 3 I_d ∈ R^{h×w×3} Id∈Rh×w×3 配对。
野外图像增强
- 用数据增强将任意图像转换为具有相同内在函数(如反照率)但不同光照外观的图像的成对光照训练数据。
- 每个样本包括一个输入条件的外观、另一个输出目标的外观以及环境地图等其他元数据。
- 输出目标的图像是高质量的野外图像,而输入条件的图像包含随机增强和退化,以增强扩散模型的鲁棒性和泛化能力。
具体来说,我们首先通过随机选择以下两种方法之一来为任意图像提取环境图:使用Phongthawee等人(2023)的方法,或使用补充材料中详述的自定义环境-法线方法。
处理流程如下:
-
基础处理:
- 使用Zheng等人(2024)的方法检测前景掩码
- 使用经过蒸馏加速(Luo等,2023)的Stable Diffusion修复模型生成背景图像
- 使用Xiao等人(2023)的方法检测提示词,或使用文本-图像数据集中现有的图像提示
-
外观降质处理:
- 生成与原始图像具有相同本质反照率但完全改变光照的"降质外观"
- 随机应用6种补充材料中的反照率提取方法
- 使用3种随机法线估计方法合成柔和阴影图像
- 使用随机阴影材质合成硬阴影
- 在随机区域添加随机程度的镜面反射
-
材质资源:
- 20,000张从在线图像库购买的高质量阴影材质
- 使用在这20,000张购买样本上训练的Flux LoRA生成的500,000张材质
-
数据筛选:
- 初始数据集:5000万张图像
- 筛选方法:使用CLIP Vision比较与关键词"beautiful
- lighting"、"light"和"illumination"的相似度
- 最终数据集:600万张与光照相关的图像
3D渲染数据
我们使用类似于G-buffer Objaverse(Zuo等,2024)的方法对Objaverse(Deitke等,2023)进行渲染。主要区别在于:
- 渲染方法:
使用基于PyTorch编写的图像渲染管线
目的是提高处理速度 - 环境图处理:
使用之前"野外图像增强"获得的随机环境图
使用Xiao等人(2023)的方法检测提示词 - 图像生成:
不生成降质图像
直接使用随机未配对环境图来渲染改变后的外观作为Id - 数据规模:
最终数据集包含400万张图像
光照舞台(Light Stage)数据处理
我们使用来自 Mnichelson (2006)、Liu 等人 (2024a) 的多个光阶段数据集和一个具有 20k 光舞台外观的内部数据集。我们将所有 One-Light-At-a-Time (OLAT) 数据预渲染为相同的上述格式。我们使用从以前的“野外图像增强”中获得的随机环境图,使用Xiao等人(2023)的方法来检测提示,并使用随机未配对环境映射将改变的外观渲染为 I d I_d Id。
引入一致性光传输
我们的目标是学习一个鲁棒和广义的模型来处理野外照明模式。然而,学习大规模、复杂和嘈杂的数据具有挑战性。如果没有非常适合的正则化和约束,模型可以很容易地降级为与预期照明编辑不对应的随机行为。我们的解决方案是在训练期间强加一致的光 (IC-Light) 传输,植根于物理原理,即在不同光照条件下物体外观的线性混合与其在混合光照条件下的外观一致。
标准目标
我们从一个基础的图像条件扩散模型开始,在不添加特殊约束的情况下学习光照。以典型的Stable Diffusion UNet为基础,我们对其架构进行改进,在输入卷积层增加4个通道,用于接收目标物体的随机重光照外观或降质图像(Id)。对于环境光源处理,我们将32×32×3的HDRI环境光源图像L重塑为3072个数值,并训练一个MLP网络进行处理。该网络采用3072→4096→4096→4096→2304的投影结构(使用Leaky RELU激活),将输出重塑为3×768的嵌入向量,可直接作为SD 1.5的提示词嵌入输入。在扩散过程中,目标重光照图像 I L I_L IL首先被编码为潜在图像 ε ( I L ) ε(I_L) ε(IL),然后逐步添加噪声生成噪声潜在图像 ε ( I L ) t ε(I_L)_t ε(IL)t。最终,图像扩散算法基于时间步t、光照条件L和输入降质图像 I d I_d Id等条件,学习网络 δ δ δ来预测噪声。
其中 ε 是扩散目标(eps/v 预测模型的噪声或 v 目标,或流匹配的流量目标); L v a n i l l a L_{vanilla} Lvanilla 是成本函数。学习目标允许使用扩散模型学习基本的图像重照明功能。此外,为了训练背景条件模型,我们将 B 连接到 I d I_d Id(如果数据集的某些部分没有背景,则用全零填充额外的通道)。然而,由于光照数据具有挑战性和噪声,这个单一目标往往会导致随机模型行为,例如颜色不匹配、不正确的细节等。
光传输一致性
在计算摄影中,光传输理论表明,考虑到任意外观 I L ∗ I^*_L IL∗和相关环境照明 L L L,总是存在一个矩阵 T T T,使得
I L ∗ = T L I^*_L=TL IL∗=TL
其中 T 可以看作是我们数据格式中的 T ∈ R ( h × w × 3 ) × ( 32 × 32 ) T ∈ R^{(h×w×3)×(32×32)} T∈R(h×w×3)×(32×32)。“∗”表示原始高动态范围的图像。真实世界的测量 (Debevec et al., 2000) 验证 T 总是可以用单个矩阵表示,没有任何非线性变换。由于这种线性,光传输解释了外观合并,即
I L 1 + L 2 ∗ = T ( L 1 + L 2 ) = I L 1 ∗ + I L 2 ∗ , E q . ( 3 ) \boldsymbol{I}_{\boldsymbol{L}_{1}+\boldsymbol{L}_{2}}^{*}=\boldsymbol{T}\left(\boldsymbol{L}_{1}+\boldsymbol{L}_{2}\right)=\boldsymbol{I}_{\boldsymbol{L}_{1}}^{*}+\boldsymbol{I}_{\boldsymbol{L}_{2}}^{*}, Eq.(3) IL1+L2∗=T(L1+L2)=IL1∗+IL2∗,Eq.(3)
其中 L1、L2 是两个任意环境照明图。这直观地表明,在单独的照明(例如,L1、L2)下,物体外观的混合等价于合并照明下的外观(例如, I L 1 + L 2 ∗ ) I^∗_{L1+L2}) IL1+L2∗)。这种现象也通过真实世界的测量得到验证,例如 (Haeberli, 1992),我们在补充材料中提供了相关的验证示例。
在本文中,我们观察到Eq.(3)的外观 I I I由于其线性度,可以用任意扩散目标代替。例如,考虑sigma空间步长σt、估计噪声εL(以L为条件)和噪声图像Iσt的简单k扩散epsilon目标,估计的干净外观可以写成 I ^ L = ( I σ t − ε L ) / σ t \hat I_L = (I_{σ_t} − ε_L)/σ_t I^L=(Iσt−εL)/σt。通过应用Eq.(3)作为 I ^ L 1 + L 2 = I ^ L 1 + I ^ L 2 \hat I_{L_1+L_2} = \hat I_{L_1} + \hat I_{L_2} I^L1+L2=I^L1+I^L2,我们还将有 ε L 1 + L 2 = ε L 1 + ε L 2 ε_{L1 +L2} = ε_{L1} + ε_{L2} εL1+L2=εL1+εL2。因此,只要目标本身是线性的和一阶的,Eq.(3)中的项可以被任何扩散目标所取代,例如eps-prediction、v-prediction、flow match等。
光传输一致性的核心思想是保证Eq.(3)在扩散训练过程中,约束模型在不改变其他固有属性(即保持内部光传输T不变)的情况下只修改图像照明。这可以通过最小化 ∣ ∣ I L 1 + L 2 ∗ − ( I L 1 ∗ + I L 2 ∗ ) ∣ ∣ 2 2 ||I^∗_{L_1+L_2} − (I^∗_{L_1} + I^∗_{L_2})||^2_2 ∣∣IL1+L2∗−(IL1∗+IL2∗)∣∣22 来实现(其中 ∣ ∣ ⋅ ∣ ∣ 2 2 || · ||^2_2 ∣∣⋅∣∣22 是 L2 范数)。使用上述转换,我们可以将其写成eps预测模型 ∥ ε L 1 + L 2 − ( ε L 1 + ε L 2 ) ∥ 2 2 ∥ε_{L_1 +L_2}−(ε_{L_1} + ε_{L_2})∥^2_2 ∥εL1+L2−(εL1+εL2)∥22的损失函数。
对于实际实现,考虑到大多数扩散模型不是在HDR图像上训练的像素扩散模型,潜在扩散或LDR像素扩散需要转换。我们使用一个简单的可学习多层感知器(MLP) φ(·,·),通过替换Eq. 3中的和项来学习势数据域(LDR, HDR, Latent)之间的隐式适应。以eps-prediction为例,我们得到了光传输一致性的最终形式
L consistency = ∥ M ⊙ ( ϵ L 1 + L 2 − ϕ ( ϵ L 1 , ϵ L 2 ) ) ∥ 2 2 \mathcal{L}_{\text {consistency }}=\left\|\boldsymbol{M} \odot\left(\epsilon_{\boldsymbol{L}_{1}+\boldsymbol{L}_{2}}-\phi\left(\epsilon_{\boldsymbol{L}_{1}}, \epsilon_{\boldsymbol{L}_{2}}\right)\right)\right\|_{2}^{2} Lconsistency =∥M⊙(ϵL1+L2−ϕ(ϵL1,ϵL2))∥22
其中 φ(·,·) 是一个 5 层 MLP,隐藏状态为 128,输入/输出与不同模型的潜在通道相同,⊙ 是像素级乘以前景掩码 M(大小与潜在图像大小相同)。在训练过程中,我们通过从均匀分布中生成随机的4 × 4掩码并将掩码的大小调整为与L相同的形状来合成L1、L2,然后,我们将掩码区域视为L1,将未掩码区域视为L2,确保L = L1 + L2。这个损失函数可以完全扩展为
L consistency = ∥ M ⊙ ( ϵ − ϕ ( δ ( ε ( I L 1 ) t , t , L 1 , ε ( I d ) ) ) , δ ( ε ( I L 2 ) t , t , L 2 , ε ( I d ) ) ) ∥ 2 2 \mathcal{L}_{\text {consistency }}=\left\|\boldsymbol{M} \odot\left(\epsilon-\phi\left(\boldsymbol{\delta}\left(\boldsymbol{\varepsilon}\left(\boldsymbol{I}_{\boldsymbol{L}_{1}}\right)_{t}, t, \boldsymbol{L}_{1}, \boldsymbol{\varepsilon}\left(\boldsymbol{I}_{d}\right)\right)\right), \boldsymbol{\delta}\left(\boldsymbol{\varepsilon}\left(\boldsymbol{I}_{\boldsymbol{L}_{2}}\right)_{t}, t, \boldsymbol{L}_{2}, \boldsymbol{\varepsilon}\left(\boldsymbol{I}_{d}\right)\right)\right)\right\|_{2}^{2} Lconsistency =∥M⊙(ϵ−ϕ(δ(ε(IL1)t,t,L1,ε(Id))),δ(ε(IL2)t,t,L2,ε(Id)))∥22
将光照条件 L 拆分成 L1和 L2两部分,单给定 L 生成噪声需要与分别给定 L1,L2的生成的两个噪声之和相匹配
联合学习目标
L = λ vanilla L vanilla + λ consistency L consistency \mathcal{L}=\lambda_{\text {vanilla }} \mathcal{L}_{\text {vanilla }}+\lambda_{\text {consistency }} \mathcal{L}_{\text {consistency }} L=λvanilla Lvanilla +λconsistency Lconsistency
其中 L 是合并的目标,我们使用 λ v a n i l l a = 1.0 , λ c o n s i s t e n c y = 0.1 λ_{vanilla} = 1.0,λ_{consistency} = 0.1 λvanilla=1.0,λconsistency=0.1 作为默认权重。
实验
实验细节
我们使用学习率为 1e-5 的 AdamW 优化器来训练整个框架。使用的预训练稳定扩散模型是 SD 1.5、SDXL 和 Flux.1.0-dev。训练是在 8 个 H100 80GB NVLink GPU 上进行的。我们为每个模型选择最大可能的批量大小。对于模型的 SD 1.5 版本,训练需要 100 小时。对于 SDXL 模型,我们首先以 512 分辨率训练 80 小时,然后在 1024 分辨率下进行微调 60 小时。
由于flux模型的规模较大,Flux模型的训练过程更加复杂。我们采用多阶段训练策略,我们分别训练模型的双流和单流部分,使用梯度冻结来冻结梯度图的某些部分。这使我们能够以更大的批量大小进行训练。更多的培训细节可以在补充材料中找到。我们使用预定概率来平衡多个训练数据集,在训练阶段,野外图像数据和3D渲染数据出现的概率相等。随着训练迭代的增加,每批中出现的光舞台数据的概率增加。这使我们能够利用一小部分高质量的光舞台数据来提高最终的模型性能。在训练开始时,野外数据和 3D 数据的概率均为 0.5,光照阶段为 0.0。经过 100,000 次迭代,野外数据的概率调整为 0.35,3D 数据为 0.35,光阶段数据为 0.3。这些概率在整个训练过程中线性调整。
消融实验
- 去除野外数据严重影响模型的泛化能力,特别是对于肖像等复杂图像。例如,训练数据中没有出现的肖像上的帽子通常会以不正确的颜色呈现(例如,从黄色更改为黑色)。
- 去除光传输一致性,模型能够生成一致的光照并保留反照率(反射率颜色)等固有属性的能力显著降低。例如,在一些图像中,红色和蓝色的差异消失了,输出中观察到颜色饱和的明显问题。
结合了多个数据源并强制光传输一致性的完整方法产生了一个平衡良好的模型,能够在一系列场景中进行泛化。光传输一致性保留了细粒度的图像细节和内在属性,例如反照率,同时减少输出图像中的错误。更多示例在补充材料中。
额外的应用
如图 5 所示,我们展示了额外的应用,例如使用背景条件进行照明协调。在背景条件的额外通道上进行训练,我们的模型可以仅根据背景图像执行照明生成,而不依赖于环境图。
此外,我们的模型支持不同的基础模型,例如 SD1.5、SDXL 和 Flux,并且这些模型的能力反映在生成的结果中**。我们的方法中的多个推理产生一致的外观,可以混合到法线映射中**。具体来说,对于每个对象,我们将所有重新照明外观的全局平均池视为反照率(漫反射颜色)A,并将独立的重新照明外观 I L i I_{L_i} ILi除以反照率,得到阴影图 S L i S_{L_i} SLi为
KaTeX parse error: Undefined control sequence: \face at position 9: S_{L_i}=\̲f̲a̲c̲e̲{\I_{L_i}}{A}
对两个垂直阴影图 S L u p S_{L_{up}} SLup 和 S L d o w n S_{L_{down}} SLdown 进行平均以形成法线图 N 的绿色通道,两个水平阴影图 S L l e f t S_{L_{left}} SLleft 和 S L r i g h t S_{L_{right}} SLright 被平均以形成法线贴图的红色通道为被平均以形成法线贴图的红色通道为
N green = S L u p − S L d o w n 2 , N r e d = S L left − S L i g h t 2 N_{\text {green }}=\frac{S_{\boldsymbol{L}_{\mathrm{up}}}-S_{\boldsymbol{L}_{\mathrm{down}}}}{2}, \quad N_{\mathrm{red}}=\frac{S_{\boldsymbol{L}_{\text {left }}}-S_{\boldsymbol{L}_{\mathrm{ight}}}}{2} Ngreen =2SLup−SLdown,Nred=2SLleft −SLight
最后,填充蓝色通道以确保法线贴图N是每个像素的单位向量,如下所示
N blue = 1 − N red 2 − N green 2 N_{\text {blue }}=\sqrt{1-N_{\text {red }}^{2}-N_{\text {green }}^{2}} Nblue =1−Nred 2−Ngreen 2
这个过程生成了一个可用于后续渲染的完整法线图。我们在图5-©中展示了示例,通过将每个通道乘以(N…+1)/2进行变换来实现可视化。需要指出的是,这种法线提取是一种经验性方法,因为神经网络模型并没有专门针对光照舞台真值或3D法线图进行优化。法线图的提取完全依赖于模型在不同光照条件下产生一致外观的能力。
定量评价
我们使用峰值信噪比 (PSNR)、结构相似性指数 (SSIM) 和学习感知图像块相似度 (LPIPS) 等指标进行定量比较。我们从数据集中提取了 50,000 个看不见的 3D 渲染数据样本的子集进行评估,确保模型在训练期间没有遇到这些样本。
测试的方法是 SwitchLight (Kim et al., 2024)、DiLightNet (Zeng et al., 2024) 和我们的方法的变体,没有某些组件(例如,在没有光传输一致性的情况下,没有增强数据,没有 3D 数据,没有灯光阶段数据)。如表 1 所示,我们的方法在 LPIPS 方面优于其他方法,表明感知质量优越。仅在 3D 数据上训练的模型获得了最高的 PSNR,但这可能是由于对渲染数据的评估偏差(因为此测试仅使用 3D 渲染数据)。结合多个数据源的完整方法在感知质量和性能之间取得了平衡。
视觉比较
结论
在本文中,我们提出了一种通过施加一致的光传输(IC-Light)来扩大基于扩散的照明编辑模型的训练的方法。我们的方法确保了所需的照明操作,同时保留固有的图像属性,如反照率和精细细节。这是通过光传输一致性实现的,这是一个基于物理的约束,有助于稳定跨不同数据源的训练,包括野外图像、3D渲染数据和光阶段捕获。我们通过广泛的实验和消融研究证明,这种方法减少了不确定性,防止了伪影,并提高了对各种光照条件的模型泛化。此外,我们的方法支持一系列应用,例如背景感知重新照明和正常地图生成,它可以扩展到大型数据集和强大的模型主干,如 SDXL 和 Flux。结果验证了一种非常适合于基于图像的照明编辑中的工业和创造性应用的稳健方法。
附录
光的线性混合
光的传输一致性示例数据
我们将附加示例 (OToole, 2016) 作为主要论文中“光传输一致性”原理的进一步验证和解释:对象在不同光照条件下的外观的线性混合与其在混合光照下的外观一致。如图1所示,第一行给出了两种不同光照条件下场景的两个外观(一个左侧光A,另一个右侧光B)。两个外观的线性混合产生一个计算的图像,如果打开两个灯,这与场景的真实照片外观一致。这种一致性在高动态范围颜色空间中在物理上是精确的。这种现象等价于主要论文的Eq.3。这种混合也可用于通过与通道权重(色调)合并来创建额外的外观。
附加实现细节数据集
估计环境图
为了估计环境图,我们随机选择以下两种方法。
- Phongwae (2023)【Diffusionlight: Light probes for free by painting a chrome ball】。概率为 30%。
- 来自正常环境的方法。概率为 70%。见下文部分。
野外图像增强
为了在现有图像上创建退化图像,我们首先在以下方法中使用随机方法估计反照率:
- 直接使用原始图像作为反照率。概率为 30%。
- Carenaga 等人的实现。 (2023)。概率为 20%。
- Xi 等人的实现。 (2024)。概率为 10%。
- Ye 等人的实现。 (2024) 的去光方法。概率为 10%。
- Bi等人(2015)的实现。概率为 15%。
- Xu等人(2011)的实现。概率为 15%。
然后我们创建软阴影(带有颜色),我们使用法线贴图来合成阴影。我们使用以下概率相等的方法。
- Bae & Davison (2024) 的实现。
- Fu 等人的实现。 (2024)
- Khirodkar 等人的实现。 (2024)
然后使用随机环境图(在上一节中估计)映射这些法线图以创建阴影图。然后,阴影图乘以反照率。请注意,在这一步中,我们已经有法线贴图和反照率的反射率。我们将原始图像除以反照率,得到阴影图。然后,通过像素法线方向将阴影图反向投影到法线球体上,同时保持HDR(高动态范围)。如果法线球体上的位置有多个映射值,我们取平均值。如果发现球面上没有映射到点的像素,我们使用泊松图像修复Ṕerez等人(2003)来填补发现球面上的空白像素。之后,我们将发现球体(在 HDR 中)上的方向和颜色映射到环境图。
之后,我们混合硬阴影。阴影图像是从几个online image stocks购买的 20k 高质量阴影材料,使用在这些 20k 购买的样本上训练的 Flux LoRA 生成 500k 的材料。我们使用两个随机环境映射来渲染相同的法线映射来获得两个阴影颜色,然后用阴影掩码屏蔽两个阴影映射,得到硬阴影。最后,我们将随机的一些镜面反射添加到随机区域。我们使用法线贴图和随机环境贴图来获得随机镜面反射。之后,我们随机抽取另一个硬阴影图像来掩盖一些随机区域。我们只向蒙面区域添加镜面反射。为了避免添加太多镜面反射,我们将每个镜面反射视为连接区域,并随机丢弃 70% 的此类连接区域。
训练调度器的附加实现细节
Flux.1-dev有两个部分:双流块和单流块。所有块都有助于 12 亿个参数,这些参数非常大且难以训练。
- 架构设计:
将模型分为3个相连的部分:
所有的双流块(double-stream blocks)
前50%的单流块(single-stream blocks)
后50%的单流块 - 训练策略:
采用两阶段训练方法:
第一阶段:使用较大的批量大小,单独训练各个块
第二阶段:使用较小的批量大小,联合训练多个块 - PyTorch实现细节:
对于开始部分:
with torch.no_grad:f(x) = torch.Tensor.detach(x) # 完全避免优化
对于结束部分:
with torch.no_grade(): y = x + torch.Tensor.detach(f(x) - x) # 避免梯度计算
我们首先以 512 的分辨率进行训练以“热身”训练(直到看到条件图像和结果之间的相关性),然后在分辨率 1024 上进行微调
other结果
照明退化的例子。我们展示了具有照明退化的合成数据示例。
我们展示了使用随机掩码将环境映射 L 分解为 L1 和 L2 的示例。请注意 L = L1 + L2。一个典型的完整环境图通常比例为 2:1,卷积时大小为 64×32。我们使用卷积环境图的前半(面向图像),即32 × 32。使用前半部分使基于法线的环境提取更容易(因为图像空间法线通常没有任何像素面向后半部分)。此外,DiffusionLight Phongwae等人(2023)的环境图的后半部分通常与图像内容无关,可以排除。
将重新照明混合到法线贴图中。特殊光照条件(垂直或水平光源)的重新照明结果可以混合到法线地图中。请注意,该模型不在任何正常的估计数据上进行训练。这表明该模型可以支持一系列需要一致照明的光级应用程序。