这是一篇图像增强的论文,作者创建了一个数据集合,和以往的问题不同,作者的创建的see in the dark(SID)数据集合是在极其暗的光照下拍摄的,这个点可以作为一个很大的contribution
实际上我认为作者实际上是做了三个工作,以及图像去马赛克(demosaic),图像增强(enhancement)和图像去噪(denoise)

denoise

作者在introduction中回顾了以前的工作,包括图像去噪,图像去马赛克的工作,以及图像增强,在图像去噪方面,作者有提及之前的深度学习相关的方法,并且也说有些工作是图像demosaic和denoise同时做的,缺陷就是他们只在合成的数据几何上进行了实验,并没有在真实的数据集合上进行实验

low-light image enhancement

在回顾enhancement作者说,直方图均衡化是一种比较经典的方法,用于图像增强。另外一个比较经典的方法是gamma校正,gamma校正能够补偿暗区域,抑制比较亮的区域
还有一些其他的方法 用于图像增强,比如inverse暗通道,小波变换,视网膜模型,以及亮度图估计
但是现有的图像增强的方法并没有显式的建立图像的噪声模型,并且只是在后处理阶段应用一些现成的去噪算法(图像增强自己paper看的太少,给自己挖个坑)

noise image dataset

作者说,SID是第一个建立的有gt的低光数据集合,所以,contribution还是挺大的

数据集合建立

如下图,

有两种成像阵列,一个是bayer的阵列,一个是X-trans的阵列,总共5094张图片
作者在拍摄每一张暗的图片的时候,都h经过长时间曝光得到一个比较亮的图片,由此构成图片对
作者还说,长时间曝光得到的图片实际上是包含噪声的,我们的target是得到perceptual quality足够高就行,而不是得到高对比度的图片
其实我觉得这种方式采集得到的图像,肯定是包含很多噪声的,但是对于这种任务而言,应该是无关紧要,这种任务的落地场景是黑天拍到的图像想要有黑夜的感觉,这种feeling就是perceptual quality,其实也真不一定需要的是看得清,而是feeling
两个相机拍摄的到的尺寸不一样,并且还挺大的,一个是60004000,一个是42402832

method

在讲坐着的方法之前,作者回顾了之前的是那种方法,一个是traditional的方法,一个是L3的方法,还有就是Burst方法

传统的方法是有一系列的step,比如先白平衡,然后demosaicing,之后denoise,sharpening,color space conversion,gamma correction还有一些其他的东西,最后得到输出的图片,这种方法大概是不同的相机有自己的一套处理算法,isp那种
L3算法则不同,L3算法是用一种large collection of local,linear and learned filters 来近似复杂的非线性piplines
但是作者说,无论是传统的pipline或者是L3 pipline,都不能处理快速的low-light图像,以你为他们不能够处理很大的峰值信噪比
除了上面说的两种方法之外,还有一种burst imageing pipline,这种方法常用在智能手机上,尽管这种方法通过aligning 和blending多张图片,但是这个过程非常的复杂,比如需要密集匹配,可能不能获取一段视频序列,或者会用到lucky imageing

作者的method,从网络结构上来说没啥创新,如下图

输入一个原始的bayer阵列图,作者对像素进行重新排列得到channel为4的数据,
关于重新排列,bayer arrays和X-Trans array不太一样,如下图

bayer用44的blocks重排,X-Trans用66的blocks重排,channel是9因为交换了相邻的元素(不太懂)
输出都是12channel的尺寸为图像一半的image

因为处理的是全分辨率的图像(后面训练的过程貌似crop了),所以需要的网络不能太大,作者这里用了两种网络,一种是CAN,另外一种是Unet

训练

在训练的过程中,作者用了L1 loss,和adam optimizer,
输入的是short-exposed image,输出的是long-exposure的图片,这里的gt,作者用libraw已经处理过,色彩空间是sRGB空间
因为两张图片的尺寸不一样,作者在这里用了两个网络去训练,注意到在训练的时候有一个amplification ratio,作者将这个设置为输入和输出之间的曝光时间比例
同时,对于图像随机crop512*512的尺寸,以及做了一个随机的flip以及rotation
lr一开始设置为1e-4之后减为1e-5
训练4000epoch

实验结果

作者首先展现了一些质量评估的结果,

可以看出,traditional method不能handlenoise以及color bias
所以传统的图像增强方法(如果不对噪声进行建模)的话,produce的图像噪声会非常的严重,因此作者采用了
一种图像去噪的方法BM3D,BM3D是一种非blind的去噪方法,需要指定noise-level的等级,如果指定太小的噪声的话,那么可能会去不干净,如果指定太大的噪声的话,可能会over-smooth,如下图所示

两种噪声是同时存在的,所以BM3D并不能locally adapt to the data,相反,作者的方法显得整体比较和谐

作者还说,如果和BM3D以及burst processing方法比较PSNR/SSIM是不公平的,因为,这些baseline不得不需要一些处理,为了更加公平的比较不同的方法,作者对于这一部分陈述的比较复杂,如何是一个公平的比较法呢,作者用reference image的白平衡参数来减少色彩的偏差(应该是不同方法输出的图片),同时,他们逐个channel的scale图像使得不同方法输出的图像和reference image有相同的mean values

尽管这样,作者并没有用两个指标来评价校正图像的好坏,而是用A/B test
结果如下

在比较难得Sony x300 set上,作者的结果碾压BM3D,在比较简单的Sony x100 set数据集合上,作者的结果与之相当,
作者自己拍摄了一些图片,并且进行了测试,也能够得到良好的实验结果

ablation study

作者的ablation study实验结果如下,这个时候作者用了PSNR和SSIM两个指标

Unet换成CAN的话,略有下降,但是Fuji上升了不少在ssim上升了不少
同时,如果输入的色彩空间是sRGB,会香江很多店,感觉Sony对于色彩空间更加敏感,而Fuji并不是,如果将L1换成SSIMloss的话,指标会波动一些
换成L2loss的话,也差不多把
作者还对比了不同的data arrangement对于实验结果的影响,另外一种数据arrangement不是特别懂,这里就忽略了
下面一个是作者对比了一下,如果将gt进行直方图均衡化,看看会得到什么结果
如果将gt进行直方图均衡化的话,实际上是让网络学习到一种直方图均衡化的能力,实际上作者发现,好像并没有让网络学习到这种东西,而且点掉的非常厉害,因此作者通过分析实验得到的结论是,不用把直方图均衡化纳入到网络的pipline中,可以作为一个postprocess的过程

结论

在结果中,作者讨论了很多,快速低光图像增强非常具有挑战性,因为其含有很少的光子,以及很低的snr,
作者提出的方法的limitation是,必须要手动输入amplification ratio,选取一个amplification ratio是非常的有用的,同时,作者说他们的不同的ccd有不同的网络,实际上通用性不强,我感觉这个如果以后有用的话,也应该是针对不同的相机,所以问题不大
另外作者说网络跑的比较慢,基本上需要0.38-0.66s,来处理一张full-resolution的图片
以及,作者说他希望未来的工作可以集中在图像质量的改善上,以及完善和集成训练步骤

后续工作

搜了一下谷歌学术的引用,感觉引这篇文章的人并不多,而且在此工作上做的我好像一篇都没看到
相反,github上star非常多,不说了,我先下载代码跑跑,看看有没有灵感


作者说他尝试了一下gan的loss,并不能够改变实验结果,文章中有一句话提及到了这个事情(准备亲自试一试这个)
关于讨论部分,作者说了三点
第一个是,算法并没有特别好的结果,有很大提升的空间
第二个是,现有的网络需要输入iso,能够做一个不需要iso的pipline是很有必要的
第三个是,网络的速度可以继续优化

Learning to See in the Dark论文阅读笔记的更多相关文章

  1. 论文阅读笔记 Improved Word Representation Learning with Sememes

    论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...

  2. [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks

    [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks 本文结构 解决问题 主要贡献 算法 ...

  3. [论文阅读笔记] node2vec Scalable Feature Learning for Networks

    [论文阅读笔记] node2vec:Scalable Feature Learning for Networks 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 由于DeepWal ...

  4. [论文阅读笔记] Adversarial Learning on Heterogeneous Information Networks

    [论文阅读笔记] Adversarial Learning on Heterogeneous Information Networks 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问 ...

  5. [论文阅读笔记] Adversarial Mutual Information Learning for Network Embedding

    [论文阅读笔记] Adversarial Mutual Information Learning for Network Embedding 本文结构 解决问题 主要贡献 算法原理 实验结果 参考文献 ...

  6. [置顶] 人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)

    这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...

  7. Nature/Science 论文阅读笔记

    Nature/Science 论文阅读笔记 Unsupervised word embeddings capture latent knowledge from materials science l ...

  8. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  9. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

随机推荐

  1. Spark调优指南

    Spark相关问题 Spark比MR快的原因? 1) Spark的计算结果可以放入内存,支持基于内存的迭代,MR不支持. 2) Spark有DAG有向无环图,可以实现pipeline的计算模式. 3) ...

  2. Dev-C++如何创建源代码模板?

    Dev-C++如何创建源代码模板? 预览图片 按下Ctrl+N或者点击新建源代码,就会自动出现这些代码了 以下是操作步骤 编写你的模板 这里有我的样例: #include<iostream> ...

  3. 深度优先搜索DFS---求出矩阵中“块”的个数。

    题目: 给出一个 m x n 的矩阵,矩阵中的元素为0或1.如果矩阵中有若干个 1是相邻的,那么称这些1构成了一个“块”.求给定的矩阵中“块”的个数. 0 0 0 0 0 0 0 0 0 0 0 0 ...

  4. mysql引擎介绍

    mysql存储引擎介绍: 插拔式的插件方式 存储引擎是指定在表上的,即一个库中的每一个表都可以指定专用的存储引擎 不管采用什么样的存储引擎,都会在数据区产生对应的一个frm文件(表结构定义描述文件) ...

  5. MySQL在大数据、高并发场景下的SQL语句优化和"最佳实践"

    本文主要针对中小型应用或网站,重点探讨日常程序开发中SQL语句的优化问题,所谓“大数据”.“高并发”仅针对中小型应用而言,专业的数据库运维大神请无视.以下实践为个人在实际开发工作中,针对相对“大数据” ...

  6. Codeforces Round #620 (Div. 2) D

    构造一个排列,要求相邻之间的数满足给定的大小关系,然后构造出两个序列,一个序列是所有可能的序列中LIS最长的,一个所有可能的序列中LIS最短的 最短的构造方法:我们考虑所有单调递增的部分,可以发现要让 ...

  7. 遇到的错误:Mysql 报错Duplicate entry '值' for key '字段名'的解决

    ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolatio ...

  8. [AFO]离开,未尝不是一个新的开始

    2019年5月18日 我注册了洛谷,提交了我的第一份AC代码-- A+B Problem 11月16日-17日 在短短6个月的仓促学习后,我从OI零基础走到了CSP-S的考场上 同年11月26日 在与 ...

  9. 1级搭建类112-Oracle 19c SI FS(CentOS 8)

    Oracle 19c 单实例文件系统在 CentOS 8 上的静默安装

  10. H5_0012:js事件冒泡和捕获

    捕获(capture)和冒泡(bubble)是事件传播过程中的两个概念, 比如用户单击某个元素, 但由于元素处于父元素内, 该父元素又处于document对象中, document对象又处于windo ...