逆色调映射论文《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×28k\times2^8k×28个像素。
我们同样使用3D反卷积网络了解由于曝光增加/减少引起的像素值的相对变化。
Q3:我们的贡献有哪些?
A3:第一个通过深度学习框架获得的从LDR到HDR的方法;设计了用于通过增加/减少曝光来推断bracketed images的网络模型,以及如何生成其训练数据的说明。
Related Work日后再看吧……这都是啥
算法设计的pipeline
这个算法流程可分为学习和推理阶段:在学习阶段中,bracketed LDR图片是由HDR的数据库中形成的。之后令我们的网络模型去研究bracketed image的曝光度的变化;在推理阶段中,本文通过神经网络模型可以将原始的LDR图像生成多张曝光度不同的LDR图片。更明亮/更暗的图片分别通过不同的网络生成(上/下曝光网络)。最终的HDR图片则由这些LDR图片生成。
生成训练用的Bracket Images
我们的训练数据集包括基准的HDR图像以及对应的LDR bracketed image数据集。为了解释由不同的非线性相机响应函数(CRF)引起的LDR图像的颜色变化,我们合成了一组具有不同CRF和来自HDR图像的曝光度的LDR图像。我们通过以下方法来激活相机:
Zi,j=f(EiΔtj)Z_{i,j} = f(E_i\Delta t_j)Zi,j=f(EiΔtj)
其中Zi,jZ_{i,j}Zi,j代表着像素i对应曝光时间指数j的像素值;对应的,f,Ei,Δtjf,E_i,\Delta t_jf,Ei,Δtj代表着CRF(计算相机响应曲线)、薄膜辐照度值(film irradiance value),以及曝光的持续时间。而在本文,Zi,jZ_{i,j}Zi,j和EiE_iEi代表LDR图片和HDR图片。
CRF:我们之前有一数据库[Grossberg and Neyar 2003]我们通过k means方法获得5个有代表性的曲线。在我们的实验中,我们使用这5个使用样条插值获得的CRF。如图所示,曲线已被归一化。
我们之后需要定义EiE_iEi,Δtj\Delta t_jΔtj的相对标准。例如如果EiE_iEi在[0,1000]的范围,Δtj\Delta t_jΔtj为1,那么许多Zi,jZ_{i,j}Zi,j上的像素点都会变成白色。这种白色的剪切区域几乎无法用于学习基于曝光的变化,因此应该避免。我们适当地调整观察信号EiE_iEi,Δtj\Delta t_jΔtj的范围。 具体而言,我们将Δtj\Delta t_jΔtj设置为停止之间的τ\tauτ的幂。
Δtj=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+1j =1,2,...,T+1j=1,2,...,T+1。我们将EiΔtjE_i\Delta t_jEiΔtj归一化,此时EiΔtT/2+1E_i\Delta t_{T/2+1}EiΔtT/2+1平均像素值等于0.5。在我们的实验中,我们令T=8,τ=2\tau=\sqrt2τ=2。下图显示合成的bracketed image的样例。
尽管EiE_iEi的归一化和Δtj\Delta t_jΔtj的选择确定了生成的HDR图像的动态范围,但是可以通过生成的HDR值的线性缩放来补偿EiE_iEi或Δtj\Delta t_jΔtjj的线性缩放(详情参见附录A[4])。 因此,如果生成的HDR图像有点太暗或太亮,则用户可以通过线性缩放像素值来调整它。
融合生成的Bracket Images
将LDR图片送入神经网络,上曝光网络会输出N张上曝光图片,下曝光网络会输出N张下曝光图片。我们由此获得了2N+1张不同曝光度的LDR图片,我们从中挑选k张来合成HDR图片。
我们需要很仔细地去选择LDR图片。过度曝光或者曝光不足的图片很有可能会含有人工像素,主要是由于缺乏训练数据。生成的LDR图片可能会因此含有在明亮区/暗区含有错误的像素。为了避免这些错误的像素,我们使用如下的启发式检索:
我们从输入图像开始,选用第j+1j+1j+1张更亮/更暗的图片,直到每个通道上每个像素值vj+1v_{j+1}vj+1比vjv_jvj更大或更小,或是相对差值∣vj+1−vj∣|v_{j+1} - v_j|∣vj+1−vj∣< η\etaη,在本文中,η=64\eta=64η=64。
我们使用多种融合的方法。某种存在的方法需要对每个bracket image 提供一下曝光时间。曝光时间可以从图片的Exif数据中获得,并且通过将输入曝光持续时间乘以因子τ\tauτ或1τ\frac{1}{\tau}τ1可以计算上/下曝光图像的曝光持续时间。若Exif数据不可获得,可以由用户可以为设置固定值,并在稍后线性缩放对应的HDR值,如附录A所述。
我们也可以采用其他方法,在输入时不需要输入时间,从而在不需生成HDR图像的时候生成色调映射的LDR图片。
上/下曝光神经网络
同一个网络结构,不同的输出。
Encoder:
输入设为W×H×cW\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:残差模块可以用一般形式表现为xl+1=f(h(xl)+F(xl))x_{l+1} = f (h(x_l ) + F(x_l ))xl+1=f(h(xl)+F(xl)),其中xlx_lxl和xl+1x_{l+1}xl+1代表着第l个单元的输入和输出,f代表着激活函数,F是残差函数。直观的来说,残差单元可以从输入图片中学习变化。我们假设,从输入图片中学习到曝光量的变化要比学习如何从头开始学习一张图片要简单。
U-Net曾被用于图像生成,残差单元也具有引人注目的图像分类准确度。然而由于skip connection的层上的输出的不同尺寸,它们虽然可以被用于图像的二维卷积和二维反卷积,但是无法完成二维卷积和三维反卷积。我们在encoder中扩展输入图像和中间结果的维度,具体来说,我们复制并连接输入图像和encoder feature,以使每个张量的尺寸与decoder的相应层的尺寸相匹配。举例,我们将W×H×cW\times{H}\times{c}W×H×c大小的输入图片和W2l×H2l×cl\frac{W}{2^l}\times\frac{H}{2^l}\times{c_l}2lW×2lH×cl大小的encoder feature转换为N×W×H×cN\times W\times{H}\times{c}N×W×H×c和N×W2l×H2l×clN\times \frac{W}{2^l}\times\frac{H}{2^l}\times{c_l}N×2lW×2lH×cl。对于U-Net,我们将encoder feature和输出的结果相连。
对残差单元而言,N×W×H×cN\times W\times{H}\times{c}N×W×H×c的输入图片与最后一层相连,之后再输入到激活层。在激活单元xl+1=f(h(xl)+F(xl))x_{l+1} = f (h(x_l ) + F(x_l ))xl+1=f(h(xl)+F(xl))中,xlx_lxl是输入图像,xl+1x_{l+1}xl+1是输出图像,f是sigmoid函数,h是标识映射,F是整个的网络结构。
Learning and Implementation
我们为每个场景和每个CRF函数生成了一组大小为T+1的bracketed images。令D\mathit{D}D表示这一组T+1张bracketed images,IJ∈DI_J \in \mathit{D}IJ∈D代表着曝光度为j的LDR图片。
基于IjI_jIj,上曝光模型通过参考D\mathit{D}D中具有更高曝光度的图像来学习由于曝光度增加引起的相对变化,即Ij+1,Ij+2,...,Ij+1+NI_{j + 1},I_{j + 2},...,I_{j + 1 + N}Ij+1,Ij+2,...,Ij+1+N,作为Ground Truth。
上曝光模型的损失函数如下:
∑D∑j=1T∣∣Ij+1→j+1+Nup⊕Oj−Mj∘G(Ij,θ)∣∣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)||_1D∑j=1∑T∣∣Ij+1→j+1+Nup⊕Oj−Mj∘G(Ij,θ)∣∣1
下曝光模型的损失函数如下:
∑D∑j=1T∣∣IT+1−j→T+1−j−Ndown⊕Oj−Mj∘G(IT+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)||_1D∑j=1∑T∣∣IT+1−j→T+1−j−Ndown⊕Oj−Mj∘G(IT+2−j,θ)∣∣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反卷积网络来生成过度曝光/曝光不足的图片。
逆色调映射论文《Deep Reverse Tone Mapping》相关推荐
- SR-ITM--融合超分辨率和逆色调映射(二)
本次接着上次的解读围绕逆色调映射技术HDR展开,HDR技术近年来发展迅猛,在未来将会成为图像与视频领域的主流.首先欣赏一下Google Camera的HDR+技术所呈现的照片. 以HDR技术所处理的照 ...
- 论文阅读笔记------iTM-Net: Deep Inverse Tone Mapping Using Novel Loss Function Considering TMO
Kinoshita Y, Kiya H. iTM-Net: Deep Inverse Tone Mapping Using Novel Loss Function Considering Tone M ...
- Inverse Tone Mapping
逆色调映射方法(inverse Tone Mapping Operator, iTMO或reverse Tone Mapping Operator, rTMO) SDR转化HDR过程的算法称为扩展算子 ...
- HDR tone mapping介绍
文章目录 HDR and tone mapping 1.什么是HDR? 2.为什么需要HDR? 3.hdr文件格式 4.tone mapping 4.1 aces tone mapping 4.2 F ...
- Real-time noise-aware tone mapping阅读笔记
<Real-time noise-aware tone mapping> G Eilertsen, RK Mantiuk, J Unger - ACM Transactions on Gr ...
- 实时渲染:Tone Mapping 色调映射
詹令 lealzhan@126.com 2017.12.28 文章目录 Tone Mapping 色调映射 全局色调映射 局部色调映射 基于分离压缩思想 Durand02 Reference 书籍 论 ...
- 色调映射(Tone Mapping)
一.概述 虽然HDR 图像有较大的动态范围,能更细致地反映真实场景,但他的缺点也很明显.一是同尺寸的数据比低动态范围图像大,需要更大的存储空间与传输带宽.二是难以输出,目前大多数显示器.打印机等图形输 ...
- Tone Mapping(色调映射) 认识
转自:https://www.cnblogs.com/cjhd/p/7530440.html Tone Mapping(色调映射) 认识 目录 [背景 - 高动态图像] [起源] [定 ...
- 局部色调映射(Local Tone Mapping)
重建视觉外观是色调映射的终极目标.色调映射算法在降低高动态图像(HDR)范围的同时着力保护捕捉到的原始图像的外观.色调映射算子分两种策略,一种是全局的,另一种是局部的. 1. 全局映射算子 每一个像素 ...
最新文章
- 算法 求和为n的连续正整数序列 C
- linux查询引脚功能复用,Linux:使用pinctrl子系统动态切换复用pin脚的功能
- hdu4267线段树段更新,点查找,55棵线段树.
- 移动端弹出遮罩层禁止页面滚动,遮罩里面的框允许滚动如何实现。
- win10 解决升级 WordPress 时提示”另一更新正在进行”
- JEECG社区第六期架构培训班报名
- {Azure} 常用链接
- vscode中控制台不能输入_vscode调试时如何在控制台输入
- QQ 可注销版本上线;拼多多成立技术顾问委员会;董明珠:建议偷手机判 10 年 | 极客头条...
- 一步一步使用 DialogFragment 封装链式调用 Dialog
- 打开客户端出现 sorry this application cannot run under a virtual machine错误
- 中台能力是什么?PaaS是什么?微服务是什么?
- C# 获取微信二维码
- 嘉信给你介绍新加坡10大特色美食
- JavaScript 测试题 (2021-6-21)
- android 带刻度的滑动条_Android自定义控件尺子 滚动刻度尺
- libco源码解析(2) 创建协程,co_create
- effector - 必应词典
- 29家骗子购物网站被曝光
- 特此郑重声明!我的文章全部是原创作品!转载请注明出处!
热门文章
- sql语句中不等于的使用(‘=‘ 、‘!=‘、‘<>‘、‘is null‘....)
- linux go服务器吗,Linux之CentOS上部署安装goproxy服务端
- 【服务器数据恢复】reiserfs文件系统下RAID5数据恢复案例
- 按照要求设计一个Student类,并按照要求进行测试(含可运行代码)
- python 全部缩进一行_和你学Python之Python基础
- 企业网页设计制作:打造品牌形象的突破口
- oracle环境变量配置教程,oracle_window中oracle环境变量设置方法分享,window server中Oracle的环境变量设 - phpStudy...
- 企业的内部文档太杂乱,有什么好用的文档管理软件?
- 多迪技术总监揭秘:网络营销需要学习哪些技能?
- 电子器件系列42:小型中功率继电器