腾讯优图&港科大提出一种基于深度学习的非光流 HDR 成像方法
目前最好的高动态范围(HDR)成像方法通常是先利用光流将输入图像对齐,随后再合成 HDR 图像。然而由于输入图像存在遮挡和较大运动,这种方法生成的图像仍然有很多缺陷。最近,腾讯优图和香港科技大学的研究者提出了一种基于深度学习的非光流 HDR 成像方法,能够克服动态场景下的大范围前景运动。
论文:Deep High Dynamic Range Imaging with Large Foreground Motions
论文链接:https://arxiv.org/abs/1711.08937
摘要:本文章基于深度学习,提出了一种非光流的高动态范围(HDR)成像方法,能够克服动态场景下的大范围前景运动。目前最好的 HDR 成像方法,例如 Kalantari 在 2017 年提出的方法,通常是先利用光流将输入图像对齐,随后再合成 HDR 图像。然而由于输入图像存在遮挡和较大运动,这种方法生成的图像仍然有很多缺陷。与此相反,我们避免了光流,直接将 HDR 成像视为图像转换的问题,这为 HDR 成像提供了重要启示。而且,即使出现了完全遮挡、过曝、曝光不足等问题,简单的翻译网络也能够生成逼真的细节,这也是传统优化方法所做不到的。此外,这种方法还能根据不同的指定参照图生成 HDR 图像。我们通过足量定性和定量的对比,展示了这种方法能够生成高质量的 HDR 图像,与现有技术相比,生成结果的颜色缺陷和形状畸变都大幅减少了,而且对于不同输入具有鲁棒性,甚至是未进行辐射校正过的图像。
贡献: 现有的数码相机一般都不足以记录整个场景的动态范围,而一些用于拍摄 HDR 图像的特制设备通常都过于昂贵或沉重,因此,合并多张在不同曝光拍摄的低动态范围(LDR)图像是另一种比较现实的方法。如果这些 LDR 图像是完美对齐的,也就是说拍摄时相机以及物体都没有移动,合并的问题已经基本被解决。但是在大范围前景位移与轻度相机位移存在的情况下,前景与后景的错位是不可避免的。后者很大程度上可以用单应性变换来解决,然而前景位移会让合并过程变得困难。很多已有的方法很容易在最终生成的高动态图中引入鬼影等缺陷。本文提出了一种用简易的端到端的卷积神经网络,即使有较大范围的前景位移的情况下也能学习如何把多张低动态图合并成没有鬼影的高动态图。不像 Kalantari 的方法,我们的神经网络是在没有光流对齐的情况下进行端到端的训练,从而在本质上避免了错误光流造成扭曲等问题。而且,通常由于饱和以及阻挡,一些内容在所有的 LDR 图像中都没有被拍摄到,神经网络同样可以幻化出合理的细节,这是在处理大范围的前景位移时是非常实用的。
网络结构:
我们利用翻译网络去学习多张 LDR 到 HDR 图像的映射。网络主体是对称的编码器解码器架构加以 Unet 与 ResNet 变化。Unet 是映射学习的常用工具。它主要是一个具有跳跃连接的编码器解码器的架构,编码器的输出的特征图直接与相应层的解码器的输入拼接。除了简单的 Unet, 我们也尝试了 ResNet,用残差模块取代中间层。整体来看,网络结构可以分为 3 个部分,编码器,合并器,解码器,对于每个不同的曝光输入,编码器的前两层是分立的,其余层共享参数。在抽取特征之后,合并器学习如何去合并他们,而解码器则负责生成 HDR 图像。
定性比较:
在没有物体位移的区域,所有的方法都生成了不错的结果,但是当过曝区域出现较大的物体位移时,其他的方法会出现较明显的颜色缺陷或几何畸变。相比之下,我们提出的两种网络都生成了很好的结果,ResNet 结构表现通常好于 Unet 结构。
定量比较:
我们用生成的图像与真实图像的 PSNR 和 SSIM 来比较。我们同时也计算了衡量 HDR 图像视觉效果的度量 HDR-VDP-2。尽管 Kalantari 的 PSNR 分数略微偏高,但我们的方法得到了相近的 SSIM 分数以及略微高一点的 HDR-VDP-2 分数。
幻化:
我们的方法能够幻化出缺失的细节,这些细节对于传统的优化方法是不可能恢复的。在 Fig.5 中,只输入中等曝光的图片,我们的网络可以合理地幻化出饱和区域里草地的纹理。
如 Fig.6 所示,在过度曝光或者低度曝光的区域里,有些细节通常会在所有的 LDR 图像中都缺失,因此这种幻化效果在动态范围成像中显得十分有用。
手机拍摄:
为了验证实用性,我们在手机图片上测试了我们的模型。值得注意的是,这些输入图像都没有经过辐射校正,这也验证了我们模型的鲁棒性。
运行时间:
由于传统的优化方法是用 CPU 进行的,公平起见,我们在相同的 CPU 环境测试所有方法的运行时间。若在 GPU 环境下运行,我们的方法处理 896×1408 的图像则只需要 0.23 秒。
腾讯优图&港科大提出一种基于深度学习的非光流 HDR 成像方法的更多相关文章
- 重磅!刷新两项世界纪录的腾讯优图人脸检测算法DSFD开源了!
近日,知名开源社区Github上有个名为DSFD(Dual Shot Face Detector)的算法引起了业内关注,它正是来自于腾讯优图.目前,该算法已经被计算机视觉顶级会议CVPR 2019接收 ...
- 腾讯优图及知脸(ZKface)人脸比对接口测试(python)
一.腾讯优图 1.开发者地址:http://open.youtu.qq.com/welcome/developer 2.接入流程:按照开发者页面的接入流程接入之后,创建应用即可获得所需的AppID.S ...
- 腾讯优图联手Science发布主题报告:计算机视觉的研发和应用
近日,腾讯优图与<科学>(Science)杂志共同发布<Seeing is believing: R&D applications of computer vision> ...
- 【腾讯Bugly干货分享】人人都可以做深度学习应用:入门篇
导语 2016年,继虚拟现实(VR)之后,人工智能(AI)的概念全面进入大众的视野.谷歌,微软,IBM等科技巨头纷纷重点布局,AI 貌似将成为互联网的下一个风口. 很多开发同学,对人工智能非常感兴趣, ...
- 一张图看懂AI、机器学习和深度学习的区别
AI(人工智能)是未来,是科幻小说,是我们日常生活的一部分.所有论断都是正确的,只是要看你所谈到的AI到底是什么. 例如,当谷歌DeepMind开发的AlphaGo程序打败韩国职业围棋高手Lee Se ...
- 微软&中科大提出新型自动神经架构设计方法NAO
近期,来自微软和中国科学技术大学的刘铁岩等人发表论文,介绍了一种新型自动神经架构设计方法 NAO,该方法由三个部分组成:编码器.预测器和解码器.实验证明,该方法所发现的架构在 CIFAR-10 上的图 ...
- 【腾讯Bugly干货分享】深度学习在OCR中的应用
本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5809bb47cc5e52161640c5c8 Dev Club 是一个交流移动 ...
- 旷视等Oral论文提出GeoNet:基于测地距离的点云分析深度网络
基于网格曲面的几何拓扑信息可以为物体语义分析和几何建模提供较强的线索,但是,如此重要的连接性信息在点云中是缺失的.为此,旷视西雅图研究院首次提出一种全新的深度学习网络,称之为 GeoNet,可建模点云 ...
- 2020国防科大综述:3D点云深度学习——综述(3D点云分割部分)
目录 摘要 1.引言: 2.背景 2.1 数据集 2.2评价指标 3.3D点云分割 3.1 3D语义分割 3.1.1 基于投影的方法 多视图表示 球形表示 3.1.2 基于离散的方法 稠密离散表示 稀 ...
随机推荐
- magento 如何制作模板
我个人认为Magento模板制作的难点在于不了解Magento的架构,不会调动block.Magento的block调动几乎都是靠xml.在下面的内容会提及如何操作. 制作Magento模板的前提是: ...
- android_serialport_api hacking
/************************************************************************************ * * android_se ...
- 从 0 到 1 合理高效使用 GitHub 的资料
来自:https://github.com/xirong/my-git/blob/master/how-to-use-github.md 说明 作为一名开发者,Github上面有很多东西值得关注学习, ...
- CodeForces - 325E:The Red Button (哈密尔顿 转 欧拉回路)
Piegirl found the red button. You have one last chance to change the inevitable end. The circuit und ...
- 20155316 2016-2017-2 《Java程序设计》第5周学习总结
教材学习内容总结 这周总结 try catch语法 异常继承结构 throw finally AutoCloseable接口 Collection Map Lambda表达式 上周总结 三个关键 类与 ...
- JavaScript中实现最高效的数组乱序方法
数组乱序的意思是,把数组内的所有元素排列顺序打乱. 常用的办法是给数组原生的sort方法传入一个函数,此函数随机返回1或-1,达到随机排列数组元素的目的. 复制代码代码如下: arr.sort(fun ...
- C#浮点数保留位数
C#浮点数保留位数 这里用String.Forma("{0:F}",x);来解决. 下面是试验和截图 using System; using System.Collections. ...
- Python之进程(multiprocessing)
一.multiprocessing模块简介——进程基于“threading”的接口 multiprocessing模块支持创建进程——使用threading模块相似的API.multiprocessi ...
- Oracle:Decode在时间范围中的使用
做查询的时候需要下一个sql,需要select test_time出来,如果test_Time的HH24:Mi:SS在7:00:00和19:00:00返回白班,否则返回夜班 select case w ...
- Web Js推断键盘出发事件
window.document.onkeydown = disableRefresh; function disableRefresh(evt){ evt = (evt) ? evt : wind ...