逆色调映射论文《Deep Reverse Tone Mapping》

读论文打发时间……
摘要
从一张简单的LDR图像来生成HDR图像是一个不适定[1]的问题,我们需要补偿由曝光不足/过度曝光[2]和颜色量化[3]所带来的数据损失。为了解决这一问题,本文作者第一个提出使用深度学习框架来自动进行LDR图片到HDR图片的映射。由于训练难度的原因,简单的从8位的LDR图片转化为32位的HDR图片几乎不可行,本文作者采用了一种间接的方案:通过监督学习将不同曝光度的LDR图片合成,并融合得到对应的HDR图片。通过使用3D反卷积网络了解由于曝光增加/减少引起的像素值的相对变化,本方法不仅可以在不引入可见噪声的情况下再现自然色调,还可以再现饱和像素的颜色。本文作者通过与卷积生成的图片以及ground truth图片进行比较,从而证明了本方法的有效性。
关键词:逆色调映射;HDR图片(高动态范围图像);卷积神经网络

简介
简介其实就是把摘要详细的说了一下……总结了几个QA
Q1:为什么从8位的LDR图片转化为32位的HDR图片训练难度大?
A1:原因如下:
1、即使LDR的曝光度不同,相同的HDR图片应具有输出一致性
2、HDR含有比LDR多得多的变量(3.4x1038对比[0,255]),训练数据集会多到爆炸
3、LDR数据集很多,但是HDR的数据集就很少了
4、即使loss上微小的变化也会影响输出结果,使得训练的模型不稳定

Q2:我们的方法是什么?
A2:合成bracketed images。我们找k张LDR图片融合,并通过这种方式获得HDR图片。实质是数据压缩,把32位的HDR图像压缩到 k × 2 8 k\times2^8 k×28个像素。
我们同样使用3D反卷积网络了解由于曝光增加/减少引起的像素值的相对变化。

Q3:我们的贡献有哪些?
A3:第一个通过深度学习框架获得的从LDR到HDR的方法;设计了用于通过增加/减少曝光来推断bracketed images的网络模型,以及如何生成其训练数据的说明。

Related Work日后再看吧……这都是啥
算法设计的pipeline
这个算法流程可分为学习和推理阶段:在学习阶段中,bracketed LDR图片是由HDR的数据库中形成的。之后令我们的网络模型去研究bracketed image的曝光度的变化;在推理阶段中,本文通过神经网络模型可以将原始的LDR图像生成多张曝光度不同的LDR图片。更明亮/更暗的图片分别通过不同的网络生成(上/下曝光网络)。最终的HDR图片则由这些LDR图片生成。

逆色调映射论文《Deep Reverse Tone Mapping》_第1张图片
生成训练用的Bracket Images
我们的训练数据集包括基准的HDR图像以及对应的LDR bracketed image数据集。为了解释由不同的非线性相机响应函数(CRF)引起的LDR图像的颜色变化,我们合成了一组具有不同CRF和来自HDR图像的曝光度的LDR图像。我们通过以下方法来激活相机:
Z i , j = f ( E i Δ t j ) Z_{i,j} = f(E_i\Delta t_j) Zi,j=f(EiΔtj)
其中 Z i , j Z_{i,j} Zi,j代表着像素i对应曝光时间指数j的像素值;对应的, f , E i , Δ t j f,E_i,\Delta t_j f,Ei,Δtj代表着CRF(计算相机响应曲线)、薄膜辐照度值(film irradiance value),以及曝光的持续时间。而在本文, Z i , j Z_{i,j} Zi,j E i E_i Ei代表LDR图片和HDR图片。
CRF:我们之前有一数据库[Grossberg and Neyar 2003]我们通过k means方法获得5个有代表性的曲线。在我们的实验中,我们使用这5个使用样条插值获得的CRF。如图所示,曲线已被归一化。
逆色调映射论文《Deep Reverse Tone Mapping》_第2张图片
我们之后需要定义 E i E_i Ei, Δ t j \Delta t_j Δtj的相对标准。例如如果 E i E_i Ei在[0,1000]的范围, Δ t j \Delta t_j Δtj为1,那么许多 Z i , j Z_{i,j} Zi,j上的像素点都会变成白色。这种白色的剪切区域几乎无法用于学习基于曝光的变化,因此应该避免。我们适当地调整观察信号 E i E_i Ei, Δ t j \Delta t_j Δtj的范围。 具体而言,我们将 Δ t j \Delta t_j Δtj设置为停止之间的 τ \tau τ的幂。
Δ t j = 1 τ T / 2 , . . . , 1 τ 2 , 1 τ , 1 , τ , τ 2 , . . . , τ T / 2 \Delta t_j = \frac{1}{\tau^{T/2}},...,\frac{1}{\tau^2},\frac{1}{\tau},1,\tau,\tau^2,...,\tau^{T/2} Δtj=τT/21,...,τ21,τ1,1,τ,τ2,...,τT/2
其中T是一个偶数的整数,且 j = 1 , 2 , . . . , T + 1 j =1,2,...,T+1 j=1,2,...,T+1。我们将 E i Δ t j E_i\Delta t_j EiΔtj归一化,此时 E i Δ t T / 2 + 1 E_i\Delta t_{T/2+1} EiΔtT/2+1平均像素值等于0.5。在我们的实验中,我们令T=8, τ = 2 \tau=\sqrt2 τ=2 。下图显示合成的bracketed image的样例。
逆色调映射论文《Deep Reverse Tone Mapping》_第3张图片
尽管 E i E_i Ei的归一化和 Δ t j \Delta t_j Δtj的选择确定了生成的HDR图像的动态范围,但是可以通过生成的HDR值的线性缩放来补偿 E i E_i Ei Δ t j \Delta t_j Δtjj的线性缩放(详情参见附录A[4])。 因此,如果生成的HDR图像有点太暗或太亮,则用户可以通过线性缩放像素值来调整它。

融合生成的Bracket Images
将LDR图片送入神经网络,上曝光网络会输出N张上曝光图片,下曝光网络会输出N张下曝光图片。我们由此获得了2N+1张不同曝光度的LDR图片,我们从中挑选k张来合成HDR图片。
我们需要很仔细地去选择LDR图片。过度曝光或者曝光不足的图片很有可能会含有人工像素,主要是由于缺乏训练数据。生成的LDR图片可能会因此含有在明亮区/暗区含有错误的像素。为了避免这些错误的像素,我们使用如下的启发式检索:
我们从输入图像开始,选用第 j + 1 j+1 j+1张更亮/更暗的图片,直到每个通道上每个像素值 v j + 1 v_{j+1} vj+1 v j v_j vj更大或更小,或是相对差值 ∣ v j + 1 − v j ∣ |v_{j+1} - v_j| vj+1vj< η \eta η,在本文中, η = 64 \eta=64 η=64
我们使用多种融合的方法。某种存在的方法需要对每个bracket image 提供一下曝光时间。曝光时间可以从图片的Exif数据中获得,并且通过将输入曝光持续时间乘以因子 τ \tau τ 1 τ \frac{1}{\tau} τ1可以计算上/下曝光图像的曝光持续时间。若Exif数据不可获得,可以由用户可以为设置固定值,并在稍后线性缩放对应的HDR值,如附录A所述。
我们也可以采用其他方法,在输入时不需要输入时间,从而在不需生成HDR图像的时候生成色调映射的LDR图片。

上/下曝光神经网络
同一个网络结构,不同的输出。逆色调映射论文《Deep Reverse Tone Mapping》_第4张图片
Encoder:
输入设为 W × H × c W\times{H}\times{c} W×H×c,即W,H,c为图片的宽度、高度和通道。训练时使用2562563的图片,在推理阶段时可以使用更大的图片。编码器由9层4x4卷积构成,步长为2,padding为1。 从第一层到最后一层,滤波器kernel的数量(即,输出通道的数量)分别是64,128,256,512,512,512,512,512和512。 在第二层和后续层中,将Batch Normalization应用于卷积输出,以通过标准化每个输入要素的分布来改善网络中的学习。 在我们的网络中,Batch Normalization通过在学习和推理阶段仅使用其统计数据来规范化输入批次。 每一层的激活函数都使用Leaky Relu函数。
Decoder:
在2D CNN之后,解码器使用卷积特征作为输入来生成N×W×H×c四维张量,由具有不同曝光度的N个图像组成。为了生成具有不同曝光度的图像,我们采用3D反卷积神经网络。 3D CNN是2D CNN的扩展,并且被引入以通过在时间和空间中执行卷积来获得时间相干性视频。在我们的例子中,我们在曝光度和空间中使用卷积。
具体来说,我们的解码器由九层组成。前三层是4×4×4反卷积(以曝光度,宽度和高度的顺序),步幅为(2,2,2),padding为(1,1,1)。剩余的层是3×4×4反卷积,步幅为(1,2,2),填充为(1,1,1)。也就是说,前三层使曝光和空间轴上的层输入加倍,而其余层仅在空间轴上执行相同的操作。从第一层到最后一层,过滤内核的数量分别为512,512,512,512,512,256,128,64和3.在最后一层以外的层中,应用批量标准化(Batch Normalization),激活函数是ReLU功能。最后一层通过sigmoid函数输出一个四维张量,其像素值在[0,1]中。
3D CNN通常用于视频分析和分类。对于视频预测,最近的工作产生了更多成功的结果。但是,输出视频大小很小(64×64),并且在时间轴上仍然包含不一致的噪声。这是因为网络比2D CNN更复杂,并且学习比单个图像更难。
在我们的例子中,因为我们使用更大的图像和更深的反卷积网络,这个问题变得更加严重。因此,我们使用skip connection扩展网络,如下所述。
Skip Connection:
在上述Encoder-Decoder网络中,解码器使用完全编码的矢量,这意味着整个图像的潜在特征。为了将输入图像中的局部和低级信息逐步合并到解码器中,我们在U-Net扩展后添加Skip Connection和残差模块(residual unit)。
Skip Connection:U-Net实现第i层和第n-i层的连接(n是总层数),连接两个相连层的所有通道。这种网络结构可以使得解码器利用局部信息并加速学习。
Residual Module:残差模块可以用一般形式表现为 x l + 1 = f ( h ( x l ) + F ( x l ) ) x_{l+1} = f (h(x_l ) + F(x_l )) xl+1=f(h(xl)+F(xl)),其中 x l x_l xl x l + 1 x_{l+1} xl+1代表着第l个单元的输入和输出,f代表着激活函数,F是残差函数。直观的来说,残差单元可以从输入图片中学习变化。我们假设,从输入图片中学习到曝光量的变化要比学习如何从头开始学习一张图片要简单。
U-Net曾被用于图像生成,残差单元也具有引人注目的图像分类准确度。然而由于skip connection的层上的输出的不同尺寸,它们虽然可以被用于图像的二维卷积和二维反卷积,但是无法完成二维卷积和三维反卷积。我们在encoder中扩展输入图像和中间结果的维度,具体来说,我们复制并连接输入图像和encoder feature,以使每个张量的尺寸与decoder的相应层的尺寸相匹配。举例,我们将 W × H × c W\times{H}\times{c} W×H×c大小的输入图片和 W 2 l × H 2 l × c l \frac{W}{2^l}\times\frac{H}{2^l}\times{c_l} 2lW×2lH×cl大小的encoder feature转换为 N × W × H × c N\times W\times{H}\times{c} N×W×H×c N × W 2 l × H 2 l × c l N\times \frac{W}{2^l}\times\frac{H}{2^l}\times{c_l} N×2lW×2lH×cl。对于U-Net,我们将encoder feature和输出的结果相连。
对残差单元而言, N × W × H × c N\times W\times{H}\times{c} N×W×H×c的输入图片与最后一层相连,之后再输入到激活层。在激活单元 x l + 1 = f ( h ( x l ) + F ( x l ) ) x_{l+1} = f (h(x_l ) + F(x_l )) xl+1=f(h(xl)+F(xl))中, x l x_l xl是输入图像, x l + 1 x_{l+1} xl+1是输出图像,f是sigmoid函数,h是标识映射,F是整个的网络结构。

Learning and Implementation
我们为每个场景和每个CRF函数生成了一组大小为T+1的bracketed images。令 D \mathit{D} D表示这一组T+1张bracketed images, I J ∈ D I_J \in \mathit{D} IJD代表着曝光度为j的LDR图片。
基于 I j I_j Ij,上曝光模型通过参考 D \mathit{D} D中具有更高曝光度的图像来学习由于曝光度增加引起的相对变化,即 I j + 1 , I j + 2 , . . . , I j + 1 + N I_{j + 1},I_{j + 2},...,I_{j + 1 + N} Ij+1Ij+2...Ij+1+N,作为Ground Truth。
上曝光模型的损失函数如下:
∑ D ∑ j = 1 T ∣ ∣ I j + 1 → j + 1 + N u p ⊕ O j − M j ∘ G ( I j , θ ) ∣ ∣ 1 \sum_D\sum_{j=1}^T||I_{j+1\to j+1+N}^{up} \oplus O_j - M_j \circ G(I_j,\theta)||_1 Dj=1TIj+1j+1+NupOjMjG(Ij,θ)1

下曝光模型的损失函数如下:
∑ D ∑ j = 1 T ∣ ∣ I T + 1 − j → T + 1 − j − N d o w n ⊕ O j − M j ∘ G ( I T + 2 − j , θ ) ∣ ∣ 1 \sum_D\sum_{j=1}^T||I_{T+1-j\to T+1-j-N}^{down} \oplus O_j - M_j \circ G(I_{T+2-j},\theta)||_1 Dj=1TIT+1jT+1jNdownOjMjG(IT+2j,θ)1

我们训练网络时,使用学习率为0.0002,动量为0.5的Adam优化参数随机梯度下降。将2D卷积和3D反卷积的初始参数设置为均值为0,标准偏差为0.02的高斯噪声。在解码器的batch normalization后面前三层使用50%的Dropout,从而提高对噪声的鲁棒性。大概60个周期后,L1 loss收敛。
后面的EXPERIMENTS不看了,有时间看一下Discussion。
Conclusion
本文提供了一种数据驱动的逆色调映射的方法。大多数现有方法都是有限的,因为它们要么依赖于特定的假设或启发式方法; 要么利用参考图像来处理数据丢失,但它需要用户标记和非常相似场景的参考图像。 本文与这些现有方法不同,我们的方法是监督学习的第一次尝试,其通过学习曝光率的变化自动地从单个LDR图像生成HDR图像。训练集由bracketed images构成,而这些bracketed images使用了HDR图片以及CRF曲线。我们之后使用具有skip connection的2D卷积3D反卷积网络来生成过度曝光/曝光不足的图片。

你可能感兴趣的:(LDR2HDR)