Exposure:A White-Box Photo Post-Processing Framework阅读札记
??论文发表于2018年的TOG。
1 Abstract
问题: ??后期修饰可以显著提高图片质量,但普通人缺乏后期修饰图像的专业知识。
现状: ??现有的自动修饰系统需要配对的训练图像进行监督学习,而配对的数据集很难获得。
本文方法: ??提出一种深度学习的方法,在未配对数据上进行训练,即一组表现出用户喜欢的修饰风格的照片,这是容易收集的。 ???通过端到端的学习框架实现非配对数据的训练,在该框架中各种修饰操作被表示为一系列独立于分辨率的可微滤波器,这些滤波器可以在卷积神经网络(CNN)中联合训练。 ???通过生成性对抗网络(GAN)引导的深度强化学习(RL)方法,为输入图像确定滤波器的序列和参数,该方法可以根据图像的当前状态,学习决定下一步采取什么行动。
贡献: ??
?
?
? 带有一组可微滤波器的端到端的照片后处理模型。 ??
?
?
? 通过使用强化学习优化模型,本文系统可以生成有意义的操作序列,为用户提供对给定艺术风格的理解,而不仅仅是输出黑盒结果。 ??
?
?
? 使用GAN结构,可以在没有图像对的情况下学习照片修饰。据本文作者了解,这是第一个随图像分辨率缩放并且不会在图像中产生失真伪影的GAN。 ??
?
?
? 本文方法不仅提供了一种有效的端到端后处理工具来帮助普通用户,还可以帮助高级用户对自动滤波器的样式进行逆向工程。
2 The Model
??给定输入的RAW照片,本文的工作目标是生成经过修饰的结果,以匹配给定的代表特定风格的照片集。本节详细阐述修饰过程的建模。
2.1 动机
??照片修饰由一系列编辑步骤完成,其中每个步骤依赖上一个步骤的输出结果来调整。这种对视觉反馈的依赖甚至存在于流程的单个步骤中,如图所示: ??反馈对于操作及其参数的选择至关重要。假设自动修饰系统也将从反馈中收益,并且可以更有效地学习如何基于反馈来选择和应用单个操作,而不是直接从输入推断最终输出。此外,将建模修饰作为一系列标准的后处理操作,有助于保持图像的真实感,且使自动过程更容易被用户理解。 ??本系统中不同操作的顺序也是要学习的,不同于前人工作的是需要更少的监督,只需要一组经过修饰的照片进行训练。
2.2 后处理作为决策序列
??基于上述动机,修饰过程可以建模为顺序决策问题,这是强化学习(RL)中常见的问题。RL是机器学习的一个子领域,与agent(这里指执行图像修饰的人)应在环境中如何行动以最大化累积奖励有关。下面简单介绍一下RL的基本概念,以及如何将图像修饰表述为RL问题。 ??在RL中,将问题表示为
P
=
(
S
,
A
)
P=(S,A)
P=(S,A),
S
S
S是状态空间,
A
A
A是动作空间。在图像修饰问题中,
S
S
S是图像空间,包括RAW输入图像和自动过程中的所有中间结果,而
A
A
A是所有滤波操作的集合。一个转换函数
p
:
S
×
A
→
S
p:S×A→S
p:S×A→S 在采取行动
a
∈
A
a∈A
a∈A后将输入状态
s
∈
S
s∈S
s∈S映射到其结果状态
s
′
∈
S
s'∈S
s′∈S。状态转换可以表示为
s
(
i
+
1
)
=
p
(
s
i
,
a
i
)
s_{(i+1)}=p(s_i,a_i)
s(i+1)?=p(si?,ai?)。将一系列滤波器应用于输入RAW图像会产生状态和动作的轨迹: ??
s
i
∈
S
s_i∈S
si?∈S:状态 ??
a
i
∈
A
a_i∈A
ai?∈A:动作 ??
N
N
N:动作数 ??
s
N
s_N
sN?:停止状态 ??具体过程如下图所示: ??RL的核心元素是奖励函数
r
:
S
×
A
→
R
r:S×A→\mathbb{R}
r:S×A→R,它用来评估在给定状态之后应进行什么动作。 ??本文目标是选择一个策略
π
π
π,使得在决策过程中获得最大的累积奖励。为此,本文使用随机策略代理,其中策略
π
:
S
→
P
(
A
)
π:S→\mathbb{P}(A)
π:S→P(A)将当前状态
s
∈
S
s∈S
s∈S映射到动作的概率密度函数集
P
(
A
)
\mathbb{P}(A)
P(A)。当agent进入一个状态时,它会根据概率密度函数对一个动作进行采样,获得奖励,然后跟随转移函数到下一个状态。 ??给定轨迹
t
=
(
s
0
,
a
0
,
s
1
,
a
1
,
.
.
.
,
s
N
)
t=(s_0,a_0,s_1,a_1,...,s_N)
t=(s0?,a0?,s1?,a1?,...,sN?),将回报
r
k
γ
r_k^γ
rkγ?定义为
s
k
s_k
sk?之后折扣回报的总和: ??
γ
∈
[
0
,
1
]
γ∈[0,1]
γ∈[0,1]是一个折扣因子,它更重视较近未知的奖励。 ??为了评估策略,本文定义了目标: ??
s
0
s_0
s0?:输入图像 ??
E
\mathbb{E}
E:期望值 ??
S
0
S_0
S0?:输入数据集 ??该目标直观地描述了策略
π
π
π引起的所有可能轨迹的预期回报。 ??agent的目标是最大化目标
J
(
π
)
J(π)
J(π),这与奖励函数r和最终图像质量有关,因为高质量的图像(状态)得到更大的奖励。 ??状态和状态-动作对的预期总折扣奖励由状态-价值函数V和动作-价值函数Q定义: ??为了使本文的问题适合这个RL框架,将动作分解为两部分:滤波器
a
1
a_1
a1?的离散选择和滤波器参数
a
2
a_2
a2?的连续决策。该策略还包括两部分:
π
=
(
π
1
,
π
2
)
π=(π_1,π_2)
π=(π1?,π2?)。
π
1
π_1
π1?是一个函数,它接受一个状态并返回滤波器上的概率分布,即
a
1
a_1
a1?的选择;而
π
2
π_2
π2?是一个取
(
s
,
a
1
)
(s,a_1)
(s,a1?)然后直接生成
a
2
a_2
a2?的函数(
π
1
π_1
π1?是随机的,需要抽样)。 ??由于对连续随机变量进行采样存在实际挑战,因此本文遵循最近的做法,确定性地处理
π
2
π_2
π2?。
3 Filter Design
??本节讨论滤波器的涉及,即模型中的动作空间
A
A
A。
3.1 设计原则
???可微分。对于基于梯度的策略
π
π
π优化问题,滤波器需要对其滤波器参数可微从而允许通过反向传播训练CNN。为了滤波器可以简单地建模为基本神经网络层,本文提出滤波器的近似方法,用分段线性函数代替光滑曲线。 ???分辨率无关。大多数编辑操作都可以在低分辨率的情况下确定,为了节约时间和空间成本,可以对RAW图像的下采样版本进行操作。即在原始图像的低分辨率(64×64)版本上确定滤波器参数,然后在原始高分辨率图像上应用相同的滤波器。为此,滤波器需要与分辨率无关。 ???可理解。滤波器应该表示具有直观意义的操作,以便用户能够理解生成的操作序列。如果他们愿意,这也将使他们能够进一步调整参数。 ??以上三个设计原则如图所示:
3.2 滤波器细节
??基于上述原则,本文开发了将输入像素值
p
I
=
(
r
I
,
g
I
,
b
I
)
p_I=(r_I,g_I,b_I)
pI?=(rI?,gI?,bI?) 映射到输出像素值
p
O
=
(
r
O
,
g
O
,
b
O
)
p_O=(r_O,g_O,b_O)
pO?=(rO?,gO?,bO?)的滤波器。曝光校正、白平衡和颜色曲线调整,可以通过这种逐像素映射函数进行建模。下表列出了系统实现的操作示例,下图是对应操作的可视化效果: ??颜色曲线调整,即与通道无关的单调映射函数,需要对其滤波器进行特殊处理以使其可微分。本文将曲线近似为单调的几个分段线性函数,如图所示: ??假设使用
L
L
L个参数表示一条曲线,表示为
{
t
0
,
t
1
,
.
.
.
,
t
L
?
1
}
\{t_0,t_1,...,t_{L-1}\}
{t0?,t1?,...,tL?1?}。将参数的前缀和定义为
T
k
=
∑
l
=
0
k
?
2
t
l
T_k=∑_{l=0}^{k-2}t_l
Tk?=∑l=0k?2?tl?,曲线上的点表示为
(
k
/
L
,
T
k
/
T
L
)
(k/L,T_k/T_L)
(k/L,Tk?/TL?)。对于这种表示,输入强度
x
∈
[
0
,
1
]
x∈[0,1]
x∈[0,1]将被映射到 ??请注意,这个映射函数现在由可微参数表示,使得函数相对于
x
x
x和参数
{
t
l
}
\{t_l\}
{tl?}都是可微的。
4 Learning
??整个训练周期如下:
4.1 使用DNN进行函数逼近
??本文工作使用CNN,CNN中有两个策略网络,它们将图像映射到动作概率
π
1
π_1
π1?(在softmax之后)或滤波器参数
π
2
π_2
π2?(在tanh之后)。对于策略
π
1
π_1
π1?和
π
2
π_2
π2?,网络参数分别表示为
θ
1
θ_1
θ1?和
θ
2
θ_2
θ2?,训练目标是优化
θ
=
(
θ
1
,
θ
2
)
θ=(θ_1,θ_2)
θ=(θ1?,θ2?)以使目标
J
(
π
θ
)
J(π_θ)
J(πθ?)最大化。此外还学习了一个价值网络和一个鉴别器网络,这有助于稍后描述的训练。 ??以上网络共享下图所示的相同架构,同时根据输出的内容具有不同数量的输出神经元。 ??对于每个CNN使用四个卷积层,每个卷积层都有大小为
4
×
4
4 × 4
4×4 和步长为2的滤波器。随后是一个全连接层,以将输出数量减少到128,然后是一个最终的全连接层,进一步回归特征转化为需要的每个网络的参数。在第一个全连接层之后,应用dropout(在训练和测试期间均为 50%)为生成器提供噪声。
4.2 策略网络训练
??策略网络使用策略梯度方法进行训练,该方法采用梯度下降来针对预期回报优化参数化策略。由于策略
π
π
π由对应于两个决策步骤(即滤波器和参数选择)的两部分
(
π
1
,
π
2
)
(π_1,π_2)
(π1?,π2?)组成,它们以交错的方式学习。 ??对于滤波器选择,对
π
1
π_1
π1?进行采样,它是一个离散概率分布函数
π
1
(
F
k
)
=
P
[
a
1
=
F
k
]
π_1 (F_k)=\mathbb{P}[a_1=F_k]
π1?(Fk?)=P[a1?=Fk?],适用于所有滤波器
F
=
{
F
1
,
F
2
,
.
.
.
,
F
n
}
F=\{F_1,F_2,...,F_n\}
F={F1?,F2?,...,Fn?}。本文通过应用策略梯度定理来解决偏导数?J(π)/?π(F_k) 不能直接计算的问题以获得
J
(
π
)
J(π)
J(π)相对于
π
1
π_1
π1?的梯度的无偏Monte Carlo估计。对于滤波器参数选择,策略
π
2
π_2
π2?是确定性的,因此更容易在连续空间中进行优化,这里使用确定性策略梯度定理。因此,策略梯度表示为 ??
Q
Q
Q是前面定义的价值函数。 ??
ρ
π
ρ^π
ρπ:定义为的折扣状态分布为 ??为了计算这些梯度,本文应用了actor-critic框架,其中参与者由策略网络表示,批评者是价值网络,它学习使用由ν参数化的CNN来逼近状态值函数
V
π
V^π
Vπ。使用critic,可以通过展开其定义价值函数并用状态值函数表示它来计算动作值函数
Q
π
Q^π
Qπ: ??通过最小化来优化价值网络: ??
δ
δ
δ:时间差(TD)误差:
δ
=
r
(
s
,
a
)
+
γ
V
(
p
(
s
,
a
)
)
?
V
(
s
)
δ=r(s,a)+γV (p(s,a))- V(s)
δ=r(s,a)+γV(p(s,a))?V(s)
δ
δ
δ还表示对优势
A
(
s
,
a
)
=
Q
(
s
,
a
)
?
V
(
s
)
A(s,a)=Q(s,a)-V(s)
A(s,a)=Q(s,a)?V(s)的Monte Carlo估计,即在状态
s
s
s下,动作
a
a
a的值超过动作的预期值多少。用于计算方程式中
π
1
π_1
π1?的梯度。
π
2
π_2
π2?的梯度不需要Monte Carlo估计,因此直接通过对
Q
Q
Q的梯度应用链式法则来计算它,而不是使用优势
A
A
A。 奖励和折扣因素: ??最终目标是在所有操作后获得最佳的最终结果。为此,本文将奖励设置为质量分数的增量改进(在4.3中由鉴别器网络建模)加上惩罚项(在第4.4节中描述)。将折扣因子设置为
γ
=
1
γ=1
γ=1,并允许agent对输入图像进行五次编辑。选择此编辑次数是为了平衡操作序列的表现力和简洁性。本文使用固定数量的步骤,因为这样做会使训练比让网络学习何时停止自己更稳定。
4.3 通过对抗学习进行质量评估
??为了生成尽可能接近目标数据集的结果,本文使用了GAN,它由两部分组成,即生成器和鉴别器。这两部分以对抗方式进行优化:训练鉴别器以判断图像是来自目标数据集还是由生成器生成;生成器旨在通过生成尽可能接近目标数据集的结果来“欺骗”判别器,从而使判别器无法区分差异。两个网络同时训练,当生成的图像接近目标时达到理想的平衡。 ??在这项工作中,本文使用了传统GAN的一种流行变体,称为 Wasserstein GAN (WGAN),它使用陆地移动距离 (EMD) 来测量两个概率分布之间的差异。它已被证明可以稳定GAN训练并避免梯度消失。鉴别器
D
D
D的损失定义为: ??鉴别器
D
D
D被建模为CNN,其参数表示为
w
w
w。生成器的“负损失”(质量分数),其增量作为本文系统中奖励的一部分,是
4.4 训练策略
??为了解决RL算法和GAN训练困难的问题,利用以下策略来稳定训练过程。 开发VS探索: ??开发和探索之间存在权衡,即投入更多精力改善现有策略,还是尝试新的行动以寻找潜在的更大未来回报。这对于本文的两阶段决策问题尤其具有挑战性,因为专注于一个滤波器可能会导致对其他滤波器的滤波器参数学习利用不足。为了避免这种局部最小值,如果它的动作提议分布过于集中,即具有低熵,将惩罚
π
1
π_1
π1?。这是通过减少奖励来完成的: ??此外,发现agent可能会在修饰过程中重复使用滤镜,例如通过应用两次连续的曝光调整,而不是将它们组合成一个步骤。对于更简洁的修饰解决方案,我们通过惩罚滤波器重用来“教导”agent避免此类行为:如果agent使用滤波器两次,第二次使用将产生-1的额外惩罚。为了实现这一点,agent需要知道在该过程的早期应用了哪些滤波器,鼓励agent充分利用每个滤波器的最大潜力也导致对不同滤波器的更多探索。 乱序训练: ??在连续步骤中沿着单个轨迹的图像可能高度相关,这种相关性对RL和GAN都是有害的。为了解决这个问题,本文提出了一种乱序训练方案,而不是顺序训练。具体来说,不是同时开始和完成少量(例如,64个作为一个批次)轨迹,而是在轨迹缓冲区中维护大量运行中的轨迹。在每次训练迭代中,从轨迹缓冲区(不一定在同一阶段)中采样一批图像,对其应用一个操作步骤,然后将编辑后的图像放回缓冲区。 ??这种机制的好处有两个: ??(1)对于RL,它部分扮演了经验回放机制的作用,可以观察到“平滑”训练数据分布; ??(2)对于GAN训练,这种方法的作用类似于“历史”缓冲区,这也有助于减少模型振荡。
5 Result
??本节介绍系统的实现细节、验证和应用。 实施细节: ??(1)用TensorFlow实现本文系统。 ??(2)为了估计修饰动作和参数,将高分辨率输入图像下采样到64×64px,实现了性能和网络规模之间的平衡。并由此产生的小网络规模可防止过度拟合,导致推理速度快,并易于将模型合并到应用程序中。随后在运行时将估计的动作和参数应用于全分辨率图像。 ??(3)所有网络都使用Adam进行优化,学习率分别是策略网络为
1.5
×
1
0
?
5
1.5×10^{-5}
1.5×10?5,鉴别器为
5
×
1
0
?
5
5×10^{-5}
5×10?5,价值网络为
5
×
1
0
?
4
5×10^{-4}
5×10?4。在训练期间,这些学习率呈指数衰减到原始值的
1
0
?
3
10^{-3}
10?3。 效率和模型大小: ??得益于与分辨率无关的滤波器设计,在NVIDIA TITAN X (Maxwell) GPU上进行推理需要30毫秒,模型体积小(< 30MB) 数据集: ??(1)MIT-Adobe FiveK数据集。将数据集随机分为三部分(三个部分彼此没有交集): ????part 1:2,000张输入RAW 图像, ????part 2:2,000张由专家C修饰的图像 ????part 3:1,000张输入RAW图像进行测试。 ??(2)500px数据集。在500px.com上抓取的两位艺术家的专业修饰照片。两组数据风格相对一致,分别由369和397张照片组成。 误差度量: ??根据图像属性的分布来评估生成图像与目标图像的相似性。在本文工作中使用亮度、对比度、饱和度作为图像风格的三个描述性特征,并使用直方图相交测量它们在输出图像和目标图像中的分布距离。
补充材料: 直方图相交的数量定义如下: ??——亮度定义为平均像素亮度。 ??——对比度定义为像素亮度方差的两倍。 ??——饱和度定义为平均像素饱和度(HSL颜色空间中的“S”值)。 ??结果在区间[0,1]内被分成32个相等的bin,即[0,1/32),[1/32,2/32)…。 ??然而,只有1,000张样本图像,平均每个bin中只会放置大约31.25张图像,从而导致显著的测量噪声。因此,通过在每张图像中裁剪16个patch来增加直方图交集的数据,并测量这16,000个图像patch上的直方图数量。
5.1 端到端的后处理和风格学习
??使用来自MIT-Adobe FiveK数据集Part 1的RAW图像作为输入进行三组实验,使用来自MIT-Adobe FiveK数据集中的专家C(Part 2)和来自500px.com的两位艺术家的图像作为目标数据集。 ??第一组实验:以专家C(Part 2)的图像为目标图像的实验,视觉结果如图所示,定量结果如表所示: ??第二组实验:对500px艺术家A的风格学习实验,视觉结果如图所示,定量结果如表所示: ??第三组实验:对500px艺术家B的风格学习实验,视觉结果如图所示,定量结果如表所示: ???(第二、三次实验中,Pix2pix无法生成比较结果,因为下载的图像通常没有配对训练数据来自网络。) 泛化: ??将网络应用到另一组RAW照片上获得了较好的结果,如图所示:
5.2 逆向工程黑盒滤波器
??本文方法不仅产生视觉上令人愉悦的效果,还揭示了这个过程是如何一步步完成的,如下图所示: ??据本文作者所知,这是第一次在基于深度学习的图像处理系统中获得这种可理解的结果。 ??在本文系统的帮助下,甚至可以根据估计的操作序列为黑盒滤波器编写显示代码,如下图所示:
6 CONCLUDING REMARKS
??受专家摄影师修图过程的启发,本文提出了一个自动照片后期处理的通用框架,主要由三部分组成: ??(1)强化学习,以揭示由常见图像操作组成的可理解的解决方案; ??(2)生成对抗性网络,允许从非配对的图像数据中进行训练; ??(3)可微分的、与分辨率无关的滤波器,使网络优化在任意分辨率的图像上的各种编辑算子成为可能。 ???像素级去噪难以建模为与分辨率无关的可微滤波器,因此需要在使用本文框架之间对输入图像进行去噪。 ??本文方法有时无法为人脸生成良好的色调,且可能无法改善内容、构图或照明条件较差的输入照片,如图所示:
|