【前言】

上次整了个google的纯传统算法的暗光成像的超复杂pipeline的paper,那个确实挺难的,这次我找到了个简单移动的用CNN的暗光成像的模型,复现难度应该会低很多。

以下解读与见解均为我的个人理解,要是我有哪里曲解了,造成了不必要的麻烦,可以联系我删除文章,也可以在评论区留言,我进行修改。也欢迎大家在评论区进行交流,要是有什么有意思的paper也可以留言,我抽空看一下也可以写一些。正文内容中的“作者”二字,均是指paper的作者,我的个人观点会显式的“我”注明。而文中的图基本都是从paper上cv过来的,我也没本事重做这么多的图,况且作者的图弄得还挺好看的。

Paper基本信息

题目:Learning to See in the Dark

作者:Chen Chen, Qifeng Chen, Jia Xu, Vladlen Koltun, 是来自intel lab的工作,这是18年的CVPR,到了现在21年,一作的Chen Chen进了工业界去了苹果,二作的Qifeng Chen留在了学术界去了港科大。

链接:https://cchen156.github.io/paper/18CVPR_SID.pdf

Github:https://github.com/cchen156/Learning-to-See-in-the-Dark

总结:暗光成像的真实环境数据集+基于CNN的暗光成像端到端模型

Paper内容介绍

【Introduction】

拍过照的都知道,暗光成像是一件很难搞的事。一般有两种做法:

  • 拉高ISO提升亮度,但是噪点也会放大,就算做了缩放、直方图拉伸等后处理,由于原本数据信噪比低,效果还是很一般
  • 打开光圈、延长曝光时间、开闪光灯等物理手段,这种各有各的缺点,增加曝光时间会严重受到相机抖动和物体运动的影响,开闪光灯则会改变环境色调等。

暗光下的快速成像是一个很有挑战性的工作。虽然现在也有一些暗光成像的算法,但一般都是在中等噪声水平的昏暗环境下做的。这里作者们就拓展到极暗光环境(比如月光)和短曝光(比如拍视频)领域的成像问题上。这里有一点需要注意的是,在这样的亮度下,相机的ISP基本没用了,因此要用sensor直出的raw数据来展开工作才行。

作者们提出了一种新的图像处理pipeline,端到端直接做了颜色变换、去马赛克、降噪、图像增强。同时考虑到这个领域缺少真实数据,以前的数据都是合成出来的,他们还收集并放出来了一批数据,包含暗光条件下快速曝光拍摄的原始图像,和该图像对应的长曝光高质量参考图像。

【相关工作】

图像去噪:

  • 经典算法工作:基于平滑度、稀疏度、低秩、自相似性这些先验知识的全变分、小波处理、稀疏编码、核范数最小化、3D变化域滤波(BM3D)等。
  • 深度网络工作:堆叠稀疏去噪自动编码器(SSDA)、可训练的非线性反应扩散(TNRD)、MLP、基于深度学习的自动编码器、CNN等。

这些工作有个共同的毛病,都是在加了高斯噪声或者椒盐噪声这样的合成数据集上做的,缺少真实数据的锻炼。还有一些工作是用多帧合成来做的,但这些工作pipeline都非常的复杂,而且需要选定参考帧这种玄学的东西。

暗光图像增强:

  • 经典工作:直方图均衡化、伽马矫正
  • 高级工作:逆暗通道先验、小波变换、Retinex模型、光照图估计

这些已有的技术在极暗光下都不太work。

噪声图像数据集:

现有数据集很多都是合成数据,但也有一些真实数据集的:

  • RENOIR:这个数据集最大的问题是他的图像对有错位,要做对齐
  • Google HDR+:这个数据集不针对极暗光成像,大部分都是白天拍的
  • DND:同样是白天拍的

作者找了一圈发现都没有合适用的包含原始暗光图像和对应ground truth的公开数据集,他们就自己收集了一个并公开了。(这个其实挺好整的,我也尝试用手机自己收集过,手机接到电脑,写个脚本adb控制手机摄像头拍照就好了,就是最好尽量不要拍运动物体,因为拍两个不同iso的照片有时间差,运动物体容易有运动错位)

【数据集】

数据集包含有5094张短曝光图像,每张短曝光图都有唯一对应的长曝光图,但是一张长曝光图可能对应多张短曝光图,作者考虑到了做多真合成的需求,顺带做了短曝光序列对应长曝光这种数据。

数据包含室内和室外图像,室外场景照度一般在0.2~5lux,室内照度一般在0.03~0.3lux。

短曝光图像曝光时间在1/30~1/10之间,长曝光图是100~300倍,即10~30秒。下面是一部分的参考图像示例:

这些图像用了两个不同的相机来拍,一个是Bayer传感器的相机,一个是X-Trans传感器的相机,如下表所示:

这个Bayer就是那种RGGB,有两个绿的那种排列,这个X-Trans我就不太清楚了。

数据集的下载地址在官方的Github主页上面就提供了,有谷歌云盘和百度云盘两个途径,sony和fuji的是分开下的,两个加起来77G左右,下面我贴一下百度网盘下载的链接吧:

https://pan.baidu.com/s/1fk8EibhBe_M1qG0ax9LQZA#list/path=/

这个下下来之后,只要"cat SonyPart* > Sony.zip" and "cat FujiPart* > Fuji.zip",把它拼起来就能解压使用了。

【模型】

pipeline

上图是三种已有的成像流程,传统的pipeline就是现在ISP做的那一套东西,中间的L3是指local、linear、learned这三个L的pipeline,最下面的burst是基于多帧合成的做法。这些方法都比较复杂,而且在极暗光条件下效果都不太好。

上图是作者们提出的端到端的pipeline,输入是Bayer Raw格式的数据,先pack成RGGB的格式,然后减去暗电压,就可以喂进去网络,这个中间的ConvNet是个U-Net,网络的输出直接就是sRGB空间的图像。这里用U-Net作者们是研究过的,带残差连接的没有明显性能贡献,在FCN和U-Net之间,综合考虑显存的消耗,选了个轻量化的U-Net。

这个pipeline除了raw数据输入之外,还需要输入一个放大率,就是控制这个输出的结果要放大到多亮,下面是不同放大率的输出结果示意图:

训练

  • loss:L1
  • 优化器:Adam
  • 放大率:输入和参考图像的曝光差异
  • 训练patch:crop一个512×512的
  • 数据增强:随机翻转和旋转
  • epoch:4k个,在2k时lr从1e-4降低到1e-5

【实验结果】

上图是一个简单的示意结果,可以看一看。下面是一组在手机测试的图,左图是iphone 6s相机直出的,右边是用作者的这个模型处理的:

下面是作者的这个模型结果跟传统pipeline以及传统pipeline基础上又做了BM3D去噪的对比:

【Pipeline的控制实验】

网络结构:作者这里比较用CAN和U-Net两个网络的结果,U-Net的PSNR更高,而CAN的SSIM更高,但是CAN有时候会丢失颜色,对比图如下所示:

输入的颜色空间:现有的大部分去噪方法都是对传统pipeline输出的sRGB图像的操作,但是极暗光条件下,对RAW数据进行操作更加的有效。上表第三行展示了将输入从RAW换成sRGB的结果,可以看到有明显的下降。

Loss:上表的第四、第五行展示了将loss从L1换成L2和SSIM的结果,这些loss都没有明显的准确率提升,而且添加GAN loss的话,反而还会降低。

【后话】

这个工作其实很简单,就是收集了一个数据集,然后用了一个U-Net来做图像增强,输入是摄像头的RAW数据,输出是sRGB图,直接开炼,出来的结果就是吊捶一切了,不得不说,很暴力,但结果也十分的awesome,而且这个模型的pipeline简单,复现极其方便,就是不清楚部署到移动端之后性能表现怎么样。

超简单但又超有效的基于CNN的暗光成像模型相关推荐

  1. LSF-SCNN:一种基于 CNN 的短文本表达模型及相似度计算的全新优化模型

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 本篇文章是我在读期间,对自然语言处理中的文本相似度问题研究取得的一点小成果.如果你对自然语言处理 (natural language proc ...

  2. LSF-SCNN:一种基于CNN的短文本表达模型及相似度计算的全新优化模型

    本篇文章是我在读期间,对自然语言处理中的文本相似度问题研究取得的一点小成果.如果你对自然语言处理 (natural language processing, NLP) 和卷积神经网络(convolut ...

  3. 开源自制的6通道航模遥控器(一) 超简单不超过100行代码

    前言 前段时间跟着LOLI大神的教程制作了LOLI三代控,效果很好.但是,由于LOLI三代控的接收机带有数据回传功能,也就是接收机的无线模块也承担了发射数据功能,所以接收机也要使用带有功率放大芯片的N ...

  4. 批处理 操作mysql_超简单使用批处理(batch)操作数据库

    超简单使用批处理(batch)操作数据库 批处理(batch)是什么 批处理的执行就好比快递员的工作: 未使用批处理的时候,快递员一次从分发点将一件快递发给客户: 使用批处理,则是快递员将所有要派送的 ...

  5. 【模型复现 】超简单复现轻量架构网络模型 <Shufflenet—v2>

    [模型复现 ]超简单复现轻量架构网络模型<Shufflenet-v2> 极链AI云 关注极链AI云公众号,学习更多知识! 文章目录 [模型复现 ]超简单复现轻量架构网络模型<Shuf ...

  6. 压缩感知及应用 源代码_【DMD应用】基于压缩感知超分辨鬼成像

    [概述] 分辨率是成像系统的一个重要参数, 获得高分辨率图像一直是鬼成像系统的一个目标. 本文提出了以成 像系统点扩散函数作为先验知识, 基于稀疏测量的超分辨压缩感知鬼成像重建模型. 搭建了一套计算鬼 ...

  7. Transformer也能生成图像,新型ViTGAN性能比肩基于CNN的GAN

    ©作者 | Panda 来源 | 机器之心 Transformer 已经为多种自然语言任务带来了突飞猛进的进步,并且最近也已经开始向计算机视觉领域渗透,开始在一些之前由 CNN 主导的任务上暂露头角. ...

  8. 语音论文阅读(Conformer:基于卷积增强的Transformer语音识别模型)

    论文:         Conformer: Convolution-augmented Transformer for Speech Recognition 摘要:        讲了基于CNN和T ...

  9. 基于vue-cli、elementUI的Vue超简单入门小例子

    基于vue-cli.elementUI的Vue超简单入门小例子 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. 开始写例子之前,先对环境的部署做点简单 ...

最新文章

  1. Swift编程语言学习10—— 枚举属性监视器
  2. android悬浮窗按钮在哪,android——悬浮窗控件Toast
  3. Neo4j-Cypher语言语法
  4. [ARM异常]-ARMV8-aarch32的异常向量表介绍
  5. Javascript代码优化的8个知识点
  6. 前端学习(1736):前端系列javascript之创建webpack与loader使用
  7. win10雷电3接口驱动_技嘉推出B550 主板首发雷电3接口:40Gbps速率、Intel主控
  8. 腾讯音乐娱乐集团宣布管理层调整,着眼长远战略发展与行业生态布局
  9. Java instanceof用法
  10. element-ui可编辑行增加行或删除行
  11. python获取月份 pos_python – 如何从POS标记单词列表中提取模式? NLTK
  12. paip.提升用户体验=----c++ qt 字体切换功能缺少的总结..
  13. S5P4418 Android实时时钟框架介绍
  14. 金三银四,作为Java程序员的你为什么面试总拿不到高薪?
  15. python 最速曲线
  16. golang的ECB加密代码文件下载
  17. 软件工程 in MSRA 第一周博客作业
  18. 小米平板2 win10 MIUI互刷教程
  19. 视频文件服务器加速,视频CDN,视频点播加速,视频点播CDN加速,CDN流媒体点播加速_速网云计算CDN服务商·卓越的互联网业务平台提供商...
  20. [正则表达式]可以为空值,不为空则要验证格式

热门文章

  1. 软件开发众包 个人接单_如何将研究与开发众包
  2. 能被2、3、4、5、6、7、8、9、10等数整除的数的特征
  3. JavaScript的window.onload事件的理解
  4. i7 13650hx和i7 13700hx差距 酷睿i713650hx和13700hx对比
  5. Excel 单元格中增加下拉菜单并且填充不同的颜色
  6. python 球的表面积和体积_用公式法求简单几何体的表面积和体积
  7. 2023年跨境电商发展的六大趋势,如何把握?
  8. 订单管理html页面,跟单王的特色之一就是网页版订单管理系统
  9. 分享一些好用的插件(大佬看了都说好)
  10. 离散余弦变换滤波算法(DCT)