【前言】

前几天吃了一下ICCV21的瓜,吃的有点饱,就去刷了一下arxiv,看到了一篇微软的工作,很有意思,是Mobilenet和Transformer的拼一起的网络架构,具体说就是这两个网络主干就类似梯子的两条腿,腿之间的踏板是Mobilenet跟Transformer的数据同步的子模块设计。按照他写的Mobilenet那里不知道用的是V几的,Tranformer用的是ViT的,给的性能是,Flops比Mobilenet V3和LeVit都小,但是分类Top-1都要更高,原本觉得很有意思,想要读一读跑一下的,但好像因为文章比较新,才贴了几天,没给github开源,而我本人对Transformer不太懂,自己实现好像也不太好做,那就算了,等后面他开源了这个网络我再看。这次看个比较老的工作的,自监督的图像增强网络,只需要用暗光图像训练就可以了。这个Paper有个问题,好像是因为他没做去噪的工作,被拒了,作者们后面重写了一版带去噪的才中稿,但这里我们还是继续看这个没中稿的吧,这个比较有意思。

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

Paper基本信息

题目:Self-supervised Image Enhancement Network: Training with Low Light Images Only

作者:Yu Zhang, Xiaoguang Di, Bin Zhang, Chunhui Wang, 是来自HIT的研究团队

链接:https://arxiv.org/abs/2002.11300​arxiv.org/abs/2002.11300

Github:https://github.com/hitzhangyu/Self-supervised-Image-Enhancement-Network-Training-With-Low-Light-Images-Only

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

Paper内容介绍

【Introduction】

这几年CV里分类、检测、分割这些工作一大堆人做,疯狂SOTA,都快刷爆了,但是这种快速的发展,其实很大一部分原因是这些工作的数据集质量非常好。但是在CV的一些下游工作:暗光增强、去雾去雨等,由于这些工作的数据集不好获取,所以很难做,做的人也少。

(PS:这里我举个例子,暗光增强的数据集要怎么做,需要用一个相机,先后用两种曝光时间拍一张图片,这个要求被拍摄物体不运动,一对数据拍下来就要快10s了,这个也有另一种做数据的方法,就是用两个曝光时间不一样的相机拍,但这个需要做对齐,也很难。去雾去雨这个就更难了,甚至很多数据集都是合成出来的。)

作者们认为,暗光增强做的是“更直观的显示图像中包含的信息”,而不是“创造新的信息”。(感觉有鞭尸GAN的嫌疑(手动狗头))。信息熵理论告诉我们,图像的直方图均匀分布时图像熵最大,信息最丰富。提出了一个假设:“增强后图像最大值通道的直方图分布”符合“增强前暗光图像最大值通道的直方图分布”。听着有点绕,其实就干了三件事:

  1. 提出了基于最大熵的Retinex模型,并给出了理论解释
  2. 提出了一种自监督的低光图像增强网络,只有一张图也能训练
  3. 提出的方法只要分钟级的训练,并具有良好的实时性能

【相关工作】

  • 直方图均衡化 yyds

    • 优点:简单、常用,让增强图像的直方图均匀分布以获得最大熵
    • 缺点:细节消失(过度增强、增强不足)、色彩还原不佳、噪声放大
    • 改进:自适应直方图均衡化(AHE)、限制对比度自适应直方图均衡化(CLAHE)、基于色调不变的彩色图像增强、保持亮度的双直方图均衡化(BBHE)、双子图像直方图均衡化(DSIHE)等。
  • 基于模型,有两种,基于去雾模型和基于Retinex理论
    • 基于去雾模型

      • 原理:基于暗光图像与翻转后的带雾图像相似
      • 缺点:缺乏物理模型
    • 基于Retinex理论
      • 原理:图像可以分解为光照和反射
      • 改进:
        • 单尺度Retinex、多尺度Retinex:增强后图像存在过度增强和白化等
        • 保留自然特征的Bright-Pass滤波器
        • 对估计光照图做全局光照调整和局部对比度增强
        • 引入考虑结构特征的滤波器
        • 变分Retinex模型+L2正则化
        • 在变分前引入亮度通道抑制光晕
        • 加权L2正则化约束反射图像
      • 缺点:基于变分方法计算复杂,且集中在约束光照图,对反射路的对比度没有约束,作者们的工作就是关注于反射率图像的
  • 基于学习
    • 现有工作:

      • LLNET:提出分别用合成噪声和按图像训练网络
      • 对自然图像应用伽马变换生成用于训练的暗光图像
      • MSRnet:人工选择+Photoshop获得的高质量图像,然后做随机亮度、对比度降低、噶玛变换获得暗光图像
      • Retinex-net用了真实图像,但是图像曝光时间是手动的,不一定最佳
    • 缺点:都需要成对的训练图像,数据成本高

【模型】

A. 基于最大熵的Retinex模型

Retinex模型:一个图像  可以分解为反射率  和亮度  的乘积。但这是个不适定问题,需要先验,按照贝叶斯公式,可以表示为:

其中  是后验概率,  是类别条件概率,  和  是反射率和光照的先验概率。现有的方法一般都是将先验概率  和  加起来,求最大的后验概率来估计反射率和亮度。

问题分解:计算上式的负对数,可以将图像增强问题转成三个距离项问题:

第一个距离项是重建loss,第二个是反射loss,最后一个是光照loss。这里用L1范数来约束loss。

重建loss表示为:

反射loss:这里作者提出了一种不同于现有方法的新的基于反射损耗的距离测量方法,满足下面的几个条件:

  • 对图像增强任务,处理后图像要有足够的信息
  • 处理后的图像要符合原始图像信息
  • 直方图均衡化可以提高图像信息熵

基于此,提出了反射loss: 

式子里的  是图像  的直方图均衡算子。从  就可以看出来他所谓的最大值通道是个什么东西,就是取像素点的  ,作者给了三个原因为啥要选这个:

  • 对于暗光图像,最大值的通道对视觉效果影响最大
  • 如果选其他通道的话,根据最大值的通道必须大于其他两个通道的先验的条件,会发生饱和
  • 如果选其他一个颜色通道,R、G或B,这样不符合自然图像

光照loss:用了一个现有的结构感知平滑度loss: 

到这,基于最大熵的Retinex模型就出来了:

用上面这个方程做loss来训网络,就可以实现只用暗光图像的自监督了。

B. 自监督网络

这个网络超简单的,结构如下图所示:

【实验】

看看跟其他算法对比效果:

【讨论】

这篇paper,他说效果好,看起来确实是那么回事,但是它里面这个最大值通道图就很奇怪,这个东西可能大家看不懂,我贴一下它的代码,大家一看就懂了:

max_channel_image = numpy.max(image, axis=2, keepdims=True)

就是每个像素位置,取R、G、B的最大值,他这个算出来的东西,不知道是什么含义,看paper的意思,单纯是因为这样用,能符合公式的约束,以及实际效果比较好,但为啥好,也不知道。

这篇paper他开源了代码,我从头训练了一遍,体验不错,因为我环境没装上,用纯CPU训练,半个小时就练完了,模型看样子比较简单。后来我不死心,觉得他这个最大值通道有点扯,我给他换成了亮度值,重新训练了一遍。果不其然,没练出来,loss只涨不降,看paper的说法,这里面参很多,稍微动一动结果会变得很厉害,我认输了。

【总结】

这是第一个做自监督的暗光图像增强的工作,效果上中规中矩,但是考虑到他自监督,这个效果已经很好了,但就是他这个最大值通道图像,看不懂,也不知道为啥效果好,但确实靠这个自监督做出来了,就很magic。

自监督的暗光图像增强相关推荐

  1. Low-light Enhancement暗光图像增强论文整理2019-2021

    Low-light Enhancement暗光图像增强论文整理2019-2021 github代码都放后面了,没有就是找不到代码 近年论文 Guo, Xiaojie et al. "LIME ...

  2. 暗光图像增强—opencv(C++)

    暗光图像增强-opencv(C++) code1 // An highlighted block #include <opencv2/core/core.hpp> #include < ...

  3. 基于零参考深度曲线估计的暗光图像增强

    天下事以难而废者十之一,以惰而废者十之九.--<严氏家训·议兵篇> 摘要: 本文提出了一种新的基于零参考深度曲线估计(Zero-DCE)的方法,该方法将光照增强描述为一种基于深度网络的特定 ...

  4. 【图像增强】基于matlab双边滤波retinex算法暗光图像增强【含Matlab源码 2305期】

    ⛄一.简介 1 Retinex 1.1 理论 Retinex理论始于Land和McCann于20世纪60年代作出的一系列贡献,其基本思想是人感知到某点的颜色和亮度并不仅仅取决于该点进入人眼的绝对光线, ...

  5. 【图像增强】双边滤波retinex算法暗光图像增强【含Matlab源码 2305期】

    ⛄一.简介 1 Retinex 1.1 理论 Retinex理论始于Land和McCann于20世纪60年代作出的一系列贡献,其基本思想是人感知到某点的颜色和亮度并不仅仅取决于该点进入人眼的绝对光线, ...

  6. Low-light images enhancement/暗光/低光/微光增强系列:Attention-guided Low-light Image Enhancement(详解)

    以下文字为博主翻译并添加了自己的理解,斜体为博主自己的想法,若有出错请指出. 摘要 暗光图像增强需要同时有效地处理颜色.亮度.对比度.伪影和噪声等多种因素.本文提出了一种新颖的注意力引导增强方案,并在 ...

  7. 超简单但又超有效的基于CNN的暗光成像模型

    [前言] 上次整了个google的纯传统算法的暗光成像的超复杂pipeline的paper,那个确实挺难的,这次我找到了个简单移动的用CNN的暗光成像的模型,复现难度应该会低很多. 以下解读与见解均为 ...

  8. 腾讯优图CVPR中标论文:不靠硬件靠算法,暗光拍照也清晰

    雷刚 发自 凹非寺  量子位 报道 | 公众号 QbitAI 暗光拍照也清晰,这是手机厂商目前激烈竞争的新拍照目标. 但除了堆摄像头和硬件,AI科学家带来算法方面的新突破. 他们提出基于深度学习优化光 ...

  9. IAT:实时完成暗光增强, 曝光矫正的超轻量级Transformer网络

    作者丨信息门下奶狗@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/535695807 编辑丨极市平台 导读 本工作提出了一种超轻量级的快速照明自适应Transform ...

最新文章

  1. python 笔记:读取mat文件
  2. 直播马上开始│走进腾讯云物联网
  3. 正则实现二代身份证号码验证详解
  4. 人物和背景分离的快速方法
  5. 10个JavaScript常见BUG及修复方法 1
  6. Mongodb在windows下通过配置文件配置和访问
  7. C++的基础知识有哪些?
  8. python类中函数_如何在Python类中使用模块函数
  9. PG-FP6烧录机1拖16上位机项目
  10. SOS关于组建星际物质研究自愿者协会的倡议
  11. CPU VS GPU
  12. Enable Geolocation in a WebView (Android)
  13. 加勒比海盗船(最优装载问题)
  14. QGIS添加常用的数据源
  15. 【收藏夹】人工智能领域的一些博客/论文/资讯 2017
  16. 微信小程序dialog使用
  17. CFArrayRef和NSArray
  18. 超高频大功率宽带功率放大器(频率:500kHz-10MHz 功率:200W-1000W)
  19. 在调试器里看百度云管家
  20. 免费的PDF转PPT网站分享

热门文章

  1. 五分钟解决圆排列问题
  2. Python环境下使用MATLAB
  3. 【Java基础】Java基础题
  4. ChinaSoft 论坛巡礼 | 泛在计算时代的智能化运维
  5. cglib之Enhancer
  6. 边写边学Python(8)乘法口诀表(对齐)
  7. 算法概述——四大算法总结
  8. 哈尔滨理工大学第五届ACM程序设计竞赛(热身)
  9. 运营商大数据如何应用?优势有哪些?
  10. php 8进制,PHP中的进制转换