深度学习白平衡编辑
摘要
在本文中,我们介绍了一种用于用户引导的白平衡编辑的新颖深度学习方法。我们的方法允许用户将给定的 sRGB 图像的白平衡调整到任何期望的照明条件。这与传统方法不同,传统方法设计用于仅校正白平衡至中性照明(即日光)。为了实现这一点,我们提出了使用卷积神经网络(CNN)从输入-输出图像对中学习映射函数。我们的网络在一个新的大规模数据集上进行训练,该数据集包含超过65,000张使用不同相机设置渲染的图像。我们展示了我们的方法在定量和定性结果方面均优于最先进的方法。此外,我们展示了我们的方法在编辑给定图像的白平衡至不同照明条件方面的灵活性,这在多个应用中非常有用,如照片编辑和图像合成。
- 简介及相关工作
白平衡(WB)是应用于所有相机图像的基础低层次计算机视觉任务。执行白平衡是为了确保场景中的对象在不同照明条件下拍摄时颜色保持一致。从概念上讲,白平衡旨在规范化捕捉场景的照明效果,使所有对象看起来就像是在理想的“白光”下拍摄的。白平衡是对相机板载集成信号处理器(ISP)处理的传感器未处理的原始RGB图像应用的第一个颜色操作步骤之一。在执行白平衡之后,ISP会应用许多其他颜色渲染步骤,进一步处理原始RGB图像至其最终的标准RGB(sRGB)编码。虽然白平衡的目标是规范化场景照明的效果,但ISP在其颜色渲染中通常会根据摄影偏好纳入美学考量。这些偏好并不总是符合白光假设,并且可以基于不同因素变化,例如文化偏好和场景内容。
大多数数码相机在拍摄图像时提供调整白平衡(WB)设置的选项。然而,一旦选择了白平衡设置并且图像被ISP完全处理成最终的sRGB编码,不访问原始未处理的raw-RGB图像就变得难以进行白平衡编辑[3]。如果白平衡设置错误,这个问题就变得更加困难,这会在最终的sRGB图像中产生强烈的色彩偏移。编辑sRGB图像的白平衡能力不仅在摄影方面有用,而且还可以对计算机视觉应用带来好处,例如物体识别、场景理解和颜色增强[2,6,19]。最近在[2]中的一项研究表明,使用错误的白平衡设置拍摄的图像产生了类似于对深度神经网络(DNN)模型的非针对性对抗性攻击的效果。
相机内白平衡程序 为了理解在sRGB图像中编辑白平衡的挑战,回顾一下相机是如何执行白平衡的会很有帮助。白平衡由ISP串行执行的两个步骤组成:(1) 以raw-RGB向量的形式估计相机传感器对场景照明的响应;(2) 用raw-RGB向量中相应通道的响应除以raw-RGB图像中的每个R/G/B颜色通道。估计照明向量的第一步构成了相机的自动白平衡(AWB)程序。照明估计是计算机视觉中一个研究得很好的话题——代表性的作品包括[1, 7–10, 14, 17, 18, 23, 28, 33]。除了AWB,大多数相机允许用户在预设的白平衡中手动选择,其中每个预设的raw-RGB向量由相机制造商确定。这些预设对应于常见的场景照明(例如,日光、阴影、白炽灯)。一旦定义了场景的照明raw-RGB向量,就会对每个颜色通道独立地应用简单的线性缩放来规范化照明。这种缩放操作是使用3x3对角矩阵进行的。然后,经过白平衡的raw-RGB图像会进一步通过相机特定的ISP步骤处理,这些步骤大多是非线性的,以渲染最终图像到一个输出引用的颜色空间——即sRGB颜色空间。这些非线性操作使得使用传统的对角校正来纠正由相机白平衡错误引起的强色偏的渲染图像变得困难[3]。
sRGB中的白平衡编辑 为了进行准确的拍摄后白平衡编辑,渲染的sRGB值应该被适当地逆转以获得相应的未处理的raw-RGB值,然后重新渲染。这只能通过精确的辐射度校准方法(例如,[12, 24, 34])来实现,这些方法计算出进行此类色彩去渲染所需的元数据。最近,Afifi等人[3]提出了一种直接校正拍摄时白平衡设置错误的sRGB图像的方法。这项工作提出了一个基于示例的框架,使用了一个包含超过65,000张由带有错误白平衡设置的软件相机流程渲染的sRGB图像的大型数据集。这些sRGB图像中的每一张都有一个用正确的白平衡设置渲染的相应sRGB图像。给定一个输入图像,他们的方法使用了KNN策略在他们的数据集中找到类似的图像,并计算了一个映射函数到相应的正确白平衡图像。[3]中的工作显示,从示例构建的这种计算的颜色映射在校正输入图像方面是有效的。后来,Afifi和Brown[2]扩展了他们的KNN思想,将一个正确的白平衡图像映射成看起来不正确,以此用于图像增强,用于训练深度神经网络。我们的工作受到[2,3]在直接编辑sRGB图像中的白平衡的努力的启发。然而,与[2, 3]中的KNN框架不同,我们将问题放在一个单一的深度学习框架中,可以完成两个任务——即白平衡校正和白平衡操控,如图1所示。
图1:上排:(A)-(C)是由相机的ISP在不同白平衡设置下生成的sRGB图像。 (A) 代表失败的自动白平衡的错误白平衡。 (B) 场景的正确自动白平衡。 (C) 相机手动预设的结果。 下排:(D)-(F) 是对sRGB图像 (A) 的白平衡进行拍摄后编辑的结果。 (D) 最近的KNN-WB校正方法的结果[3]。 (E) 我们对 (A) 中白平衡的校正结果。 (F) 我们的结果,产生与相机预设相对应的不同输出。
贡献 我们提出了一种新颖的深度学习框架,允许对sRGB图像进行逼真的拍摄后白平衡编辑。我们的框架包括一个单一的编码器网络,与三个针对以下白平衡设置的解码器相结合:(1) “正确”的自动白平衡设置;(2) 室内白平衡设置;(3) 室外白平衡设置。第一个解码器允许将错误白平衡的sRGB图像编辑为具有正确白平衡的图像。这对拍摄后白平衡校正任务很有用。额外的室内和室外解码器为用户提供了通过在两个输出之间混合来产生各种不同白平衡外观的能力。这支持摄影编辑任务来调整图像的审美白平衡属性。我们提供了广泛的实验来展示我们的方法对训练数据之外的图像具有良好的泛化能力,并且在两个任务上都达到了最先进的结果。
- 深度学习白平衡编辑
2.1. 问题表述
给定一个通过未知相机ISP以任意白平衡设置WB(in)渲染的sRGB图像IWB(in),我们的目标是编辑其颜色,使其看起来像是用目标白平衡设置WB(t)重新渲染的。正如第1节中提到的,如果原始未处理的raw-RGB图像可用,我们的任务可以准确完成。如果我们能够恢复未处理的raw-RGB值,我们可以将白平衡设置WB(in)更改为WB(t),然后使用基于软件的ISP将图像重新渲染回sRGB颜色空间。这个理想过程可以用以下方程描述:
其中 F : IWB(in) → DWB(in) 是一个未知的重构函数,它将相机渲染的sRGB图像I反转回其对应的应用了当前WB(in)设置的原始raw-RGB图像D,而 G : DWB(in) → IWB(t) 是一个未知的相机渲染函数,负责编辑白平衡设置并重新渲染最终图像。
这个公式 IWB(t) = G(F(IWB(in))) 描述了一个理想的白平衡编辑过程。在这个过程中,我们希望将一个给定的sRGB图像(以不正确的白平衡设置拍摄)转换成看起来像是用目标白平衡设置拍摄的图像。这个过程涉及两个主要步骤,由两个函数 F 和 G 表示:
F 函数: F 是一个重构函数,它的作用是将相机渲染的sRGB图像 IWB(in) 反转回其对应的原始raw-RGB图像 DWB(in)。这里的 IWB(in) 表示输入的sRGB图像,它是在当前的白平衡设置 WB(in) 下被相机渲染的。F 函数的目的是去除相机ISP(图像信号处理器)加入的渲染效果,以回到更原始、更接近场景实际捕捉内容的状态。
G 函数: 一旦获得了反转后的raw-RGB图像,G 函数接手操作。G 是一个相机渲染函数,负责将 DWB(in) 图像转换成目标白平衡设置 WB(t) 下的图像 IWB(t)。这一步骤实质上是重新渲染图像,但这次使用正确的或者期望的白平衡设置。
简而言之,这个公式描述的是一个两阶段过程:首先去除图像的原始白平衡设置(通过F),然后应用新的白平衡设置并重新渲染图像(通过 G)。这种方法在理论上可以允许我们对已经拍摄的图像进行准确的白平衡调整,即使原始raw-RGB图像不可用。
2.2 方法概述
我们的目标是建模 G (F (·)) 的功能,以生成 IWB(t)。我们首先分析 G 和 F 函数如何合作以产生 IWB(t)。从等式1中,我们看到函数 F 将输入图像 IWB(in) 转换成一个中间表示(即,捕获的白平衡设置下的原始RGB图像),而函数 G 接受这个中间表示并用目标白平衡设置渲染它,转换成sRGB颜色空间编码。由于ISP的渲染链应用的非线性,我们可以将 G 视为一个混合函数,它由一组子函数组成,每个子函数负责用特定的白平衡设置渲染中间表示。
我们的终极目标不是重构/重新渲染原始的 raw-RGB 值,而是生成具有目标白平衡设置 WB(t) 的最终 sRGB 图像。因此,我们可以将 G (F (·)) 的功能建模为一个编码器/解码器方案。我们的编码器 f 将输入图像转换成一个潜在表示,而我们的每个解码器 (g1, g2, ...) 生成具有不同白平衡设置的最终图像。类似于等式 1,我们可以将我们的框架表述如下:
其中 f : IWB(in) → Z,gt : Z → ˆIWB(t),Z 是原始输入图像 IWB(in) 的中间表示(即潜在表示)。我们的目标是使函数 f 和 gt 独立&#x