草庐IT

【论文笔记】—低照度图像增强—ZeroShot—RUAS网络—2021-CVPR

chaiky 2023-04-05 原文

论文介绍 

​题目:Retinex-Inspired Unrolling With Cooperative Prior Architecture Search for Low-Light Image Enhancement

DOI:10.1109/CVPR46437.2021.01042

时间:2020年12月10号上传于arxiv
会议:2021-CVPR
机构:大连理工大学

论文网址: https://arxiv.org/abs/2012.05609
代码网址: https://github.com/dut-media-lab/RUAS

下图表示LOL数据集上近些年各经典CNN模型的平均定量性能(PSNR)和模型大小(图a)、FLOPs(图b)的关系。
RUASi只需要非常小的模型大小、浮点计算次数次数和时间。

提出问题 

已经建立的深度学习模型大多依赖于重要的体系结构工程,并且承受着很高的计算负担。

解决方案 

本文提出了一个新的原则性框架,通过注入弱光图像的知识和搜索轻量级的优先架构,为现实场景中的微光图像构建轻量级但有效的增强网络,命名为RUAS。

首先,设计了基于Retinex规则的优化模型,来描述微光图像固有的曝光不足结构。
然后,通过展开相应的优化过程,建立增强网络的整体传播结构。
最后,设计了一种合作的无参考双层学习策略,用于合作搜索先验结构,从紧凑的搜索空间中发现特定的体系结构,以获得照明图和所需图像。

创新点 

1、零样本,不需要训练。
2、使用了结构搜索的方法,得到一个高效的网络结构。

RUAS网络结构 

首先,通过展开Retinex-inspired 模型的优化过程来建立增强网络。
然后,引入了一个基于蒸馏池的先验模块搜索空间。
最后,提出了一种合作的双层搜索策略,以发现所需的光照估计和噪声去除架构。

(a)照明估计模块IEM——用于估计照明映射 t
(b)噪声去除模块NRM——用于微光场景中抑制噪声,NRM是基于IRM的输出定义的。
(c)热启动操作
(d)CIEM和CNRM的搜索空间
(e)element-wise subtraction—逐元素减法、element-wise division—逐元素除法

实验原理 

1、Retinex-Inspired 优化展开

RUAS增强网络基于Retinex规则:

y-捕获图像、x-期望的恢复图像、t-光照图像、⊗ 按元素的乘法

Retinex原理S = R ⊗ L    (S-捕获图像   R-反射图像    L-光照图像)

核心:从S图像中估测L分量,并去除L分量,得到原始反射分量R 。

1.1 照明估计模块IEM

1、定义一个中间图像u。在IEM的第k阶段,首先估计(热启动初始照明图^tk

Ω(z) 是以像素z为中心的区域,,c是该区域内的位置索引(对于三个颜色通道)。残差rk:rk = uk – y (惩罚参数0 < γ ≤ 1)

 原理:照明至少是某个位置的最大值,可以用来处理非均匀照明。

引入残差,是为了在传播过程中自适应地抑制  的一些过度曝光像素。

2、进一步优化^tk ,其中  φ(·)表示 t 的正则化项:

不同于直接和前一项作用的经典迭代优化方法,本文只需一步:

在这里,将 CIEM(tk)写为 ∂tφ(tk) 的参数化(即 CNN 架构)。将每次迭代参数化为单独的 CNN 的选择提供了极大的灵活性。 

^tk的优化受LIME的启发,[9] LIME: Low-light image enhancement via illumination map estimation.  paper

【论文阅读】LIME:(笔记最全篇)_Florrie Zhu的博客-CSDN博客

 3、输出uk

tk是最后阶段的估计照度图, ⊘表示按元素除法。

1.2 噪声去除模块NRM

动机:抑制现实世界低光场景中的噪声,不能简单地通过预/后处理去除曝光不足图像中的强噪声。

定义了一个正则化模型:

其中ψ表示x上的先验正则化。采用IEM中使用的相同展开策略:

在这里,将 CNRM(xn) 写为 ∂xψ(xn) 的参数化(即 CNN 架构),并将 NRM(具有 N 个阶段)的输出并行表示为 xN。

2、协同架构搜索

作用:用于合作发现IEM和NRM的体系结构。

2.1 为弱光先验提供紧凑的搜索空间

首先定义弱光先验模块(CIEM和CNRM)的搜索空间。通过使用特征蒸馏技术[17],我们将搜索空间定义为一个蒸馏单元,它是一个有向无环图,有五个节点,每个节点连接到下一个和最后一个节点(如图2(d))。与最后一个节点的连接只是实现了特征信息的提取。

知识蒸馏

2014年Hinton等人发表的《Distilling the Knowledge in a Neural Network》首次提出了蒸馏学习的概念。蒸馏学习即教师模型(大参数,深网络)蒸馏出一个学生模型(小参数,浅网络),使学生模型具有接近教师模型的效果,以达到模型压缩的目的。

深度学习中的知识蒸馏技术(上)深度学习中的知识蒸馏技术(下)

残差卷积

深度残差网络ResNet:【论文笔记】—深度残差网络—ResNet—2015-CVPR_chaikeya的博客-CSDN博客

空洞卷积

Dilated Convolution(空洞卷积/膨胀卷积)是在标准的 convolution map 里注入空洞(在kernel各个像素点之间加入0值像素点),以此来扩大感受野。膨胀卷积与普通的卷积相比:除了卷积核的大小以外,还有一个扩张率(dilation rate)参数,指的是卷积核的点的间隔数量,主要用来表示膨胀的大小。在普通卷积中,可以认为它的dilated rate = 1。

(a)扩张率为1的3×3卷积核。
(b)扩张率为2的3×3卷积核,感受野与5×5的卷积核相同,而且仅需要9个参数。
(c)扩张率为4的3×3卷积核.

 

 注意:空洞的地方填充为0.

Dilated Convolution 论文出处:《MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS》paper

 通过采用differentiable NAS[16,39,15] 中使用的连续松弛技术,我们引入向量化形式 α = {αt, αn} 来分别对 CIEM 和 CNRM 的搜索空间(表示为 A)中的架构进行编码。 用 ω = {ωt, ωn} 表示与架构 α 相关的权重参数。搜索任务简化为在所有混合运算中联合学习α和ω。

自动化机器学习(AutoML) 领域一个重要的方向就是神经网络结构搜索。目前比较主要的有两个分支:基于强化学习的方法(比如 NAS)和基于可微分神经网络结构搜索的方法(比如 DARTS)。从效果上来看,前者效果上较好;但是从计算资源上来看,前者一般需要较大规模的计算资源。

Neural Architecture Search基本遵循这样一个循环:首先,基于一些策略规则创造简单的网络,然后对它训练并在一些验证集上进行测试,最后根据网络性能的反馈来优化这些策略规则,基于这些优化后的策略来对网络不断进行迭代更新。

1、NAS

2017年《Neural Architecture Search with Reinforcement Learning》提出,NAS 的目标是找到一个合适的神经网络结构,用于在某个或者某类任务上有更好的泛化性能。如下图所示,这篇文章使用了一个 RNN 的控制器,用该控制器采样得到某一个神经网络结构 A,在该神经网络结构下训练数据并且得到相应的验证集上的准确率 R,使用该准确率来表征本次搜索得到的神经网络结构的好坏,进而将此作为信号来训练 RNN 控制器。大致结构如下图所示。

2、DARTS

NAS方法搜索空间都是离散的,而可微分方法将搜索空间松弛化使其变成连续的,则可以使用梯度的方法来解决。

《DARTS+: Improved Differentiable Architecture Search with Early Stopping》论文笔记

《DARTS: Differentiable Architecture Search》论文笔记

2.2 可微分合作搜索

传统:基于梯度的NAS方法——只能以端到端的方式学习ω和α,完全忽略了重要的光增强因素(照明和噪声)

本文:我们解决此问题的主要思想是发现能够在现实世界的嘈杂场景中正确揭示曝光不足图像的弱光先验信息的体系结构。

通过合作搜索IEM和NRM的体系结构。
将这两个模块的搜索过程描述为一个合作博弈,旨在解决以下关于αt(IEM)和αn(NRM)的模型:

验证数据集上的合作损失Lval =  IEM损失 + β NRM损失 ,即:

其中, 分别表示IEM和NRM的损失,β ≥ 0是一个权衡参数。由于NRM是基于IEM的输出定义的(参见图2),因此在这里我们还应该考虑αt作为Lval^n中αn的参数。

事实上,通过类比生成性对抗性学习任务[7],应该理解等式(4)中的优化问题实际上考虑的是合作(“min-min”),而不是对抗性(“min-max”)目标。

[7]Generative Adversarial Nets. 【论文笔记】—生成对抗网络—GAN—2014-NIPS_chaikeya的博客-CSDN博客

至于(和),我们假设它们只与体系结构αt(和αn)相关, 可通过最小化以下模型获得:

其中,分别是IEM和NRM的训练损失。

因此,我们的搜索策略意味着一个两层优化问题,等式(4)和等式(6)分别作为上层和下层子问题。此外,在搜索过程中,等式(4)中的上层子问题应进一步分离为两个合作任务。

2.3 无参考双层学习

首先根据一系列无参考损失确定训练和验证目标。

对于IEM,定义了一个损失

在训练和验证数据集上分别为,其中,第一项是保真度,第二项中RTV(·)表示相对总变化项[38](参数ηt>0)。

这种损失鼓励IEM输出照明,可以同时保持整体结构和平滑纹理细节。

对于NRM,引入了类似的损耗

在训练和验证数据集上分别为,其中我们使用标准总变化TV(·)作为正则化[25](参数ηn>0)。

整个搜索过程总结: IEM和NRM是交替同时搜索的。

也就是说,为IEM(步骤4-7)更新αt(使用当前的αn),为NRM(步骤9-12)更新αn(基于更新的αt)。对于每个模块,仅采用广泛使用的一步有限差分技术[5]来近似计算上层变量的梯度(步骤5和10)。

有限差分:利用网格节点逼近导数,并建立有限个未知数的代数方程组来求解各个网格上节点的值。 

定量分析 

表1定量结果评价(PSNR、SSIM、LPIPS)。No.1红色,No.2蓝色。
其中LOL数据集包含阻碍增强的敏感噪声。

评价指标

  1. 峰值信噪比 (Peak Signal-to-Noise Ratio, PSNR):值越大,就代表失真越少。
  2. 结构相似度指数 (Structural Similarity Index, SSIM):范围为0到1。当两张图像一模一样时,SSIM的值等于1。
  3. 学习感知图像块相似度 (Learned Perceptual Image Patch Similarity, LPIPS): 值越低表示两张图像越相似。

学习感知图像块相似度(Learned Perceptual Image Patch Similarity, LPIPS):也称为“感知损失”(perceptual loss),用于度量两张图像之间的差别。来源于CVPR2018《The Unreasonable Effectiveness of Deep Features as a Perceptual Metric》,该度量标准学习生成图像到Ground Truth的反向映射强制生成器学习从假图像中重构真实图像的反向映射,并优先处理它们之间的感知相似度。LPIPS 比传统方法(比如L2/PSNR, SSIM, FSIM)更符合人类的感知情况。LPIPS的值越低表示两张图像越相似,反之,则差异越大。

d为 x0与x之间的距离。从L层提取特征堆(feature stack)并在通道维度中进行单位规格化(unit-normalize)。利用向量WL 来放缩激活通道数,最终计算L2距离。最后在空间上平均,在通道上求和。
————————————————
版权声明:本文为CSDN博主「江南酷哥lazy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43466026/article/details/119898304 

数据集

【LOL】:包含低光/正常光图像对的低光数据集 2018

【MIT-Adobe FiveK】:使用输入/输出图像对数据库学习摄影全局色调调整(具有约4%的低光图像)2011

定性分析 

图3 DarkFace数据集上展示了黑暗面数据集上的三组视觉比较[41]。
虽然有些方法能够成功地增强亮度,但它们无法恢复清晰的图像纹理。

Dark Face(低光照条件下的人脸检测数据集):DARK FACE: Face Detection in Low Light Condition 

DARK FACE数据集提供了6,000张在夜间,在教学楼,街道,桥梁,立交桥,公园等拍摄的真实世界低光图像,所有这些都标有人脸的边界框,作为主要的训练和/或验证集。我们还提供从相同设置收集的 9,000 张未标记的低光图像。此外,我们还提供了一组独特的789对低光/正常光图像,这些图像是在可控的真实照明条件下捕获的(但不必要地包含人脸),这些图像可以用作参与者离散化时训练数据的一部分。将有一个由4,000张低光图像组成的保持测试集,并带有人脸边界框的注释。

图4 LOL数据集上所有比较的方法都没有呈现出生动真实的颜色。
KinD和DRBN确实消除了噪声,但引入了一些未知的伪影。
本文RUAS呈现了生动的颜色,并消除了不必要的噪音。

图5 ExtremelyDarkFace数据集上一些深层网络确实改善了亮度,但许多不利的人工制品变得明显可见。
FIDE和DRBN甚至破坏了颜色系统,例如外套应该是红色的。
本文RUAS改善了亮度,在细节恢复和噪声消除方面都有很大优势。

验证内存和计算效率

表2 和一些最近提出的基于CNN的方法比较模型大小、触发器和运行时间。
选取LOL数据集中的100个大小为600×400的测试图像。No.1红色,No.2蓝色。

RUASi+n是带有噪音消除模块的完整版本。尽管其耗时略高于EnGAN,但这是因为EnGAN忽略了引入显式噪声消除模块。

下图表示LOL数据集上最先进模型的平均定量性能(PSNR)、模型大小(图a)、FLOPs(图b)。
结论:RUASi只需要非常小的模型大小、浮点计算次数和时间。

一、FLOPS
FLOPS:全称:FLoating point Operations Per Second的缩写,即每秒浮点运算次数,或表示为计算速度。是一个衡量硬件性能的指标。通俗点讲 显卡算力,对应英伟达官网的那些:GPU算力排行榜。

二、FLOPs
FLOPs:FLoating point OPerationS 即 浮点计算次数,包含乘法和加法,只和模型有关,可以用来衡量其复杂度。多提一嘴,论文里面的FLOPs有的计算也并不明确,包括很多 Github 开源代码里面采用的 MACs,也就是考虑一次乘+加法运算为一次 MAC,粗略换算的话:FLOPs = 2 × MAC。建议发表的论文还是按照 FLOPs 来给出,因为我看的大部分文章都是用的这个,而不是 MACs。
————————————————
版权声明:本文为CSDN博主「乄洛尘」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38929105/article/details/123847385

消融实验

图6 消融研究不同热启动策略的效果。
子图(b)-(d)不同设置的增强结果和相应的估计照明图。
(c)引入w/o剩余校正的更新策略确实提供了正的过度曝光抑制。
(d)引入残余校正机制,暴露更舒适(灯罩)
结论:本论文设计的热启动策略确实抑制了传播过程中的过度曝光。

图7 噪声场景下NRM对微光图像贡献的消融研究。
在执行RUASi后,图像细节得到了增强。然而,也出现了可见的噪声,对图像质量造成了有害的损害。通过引入NRM,本文的 RUASi+n成功地去除了不需要的噪声,从而提高了视觉质量和数值分数。
结论:该实验充分验证了在一些复杂的现实场景中引入NRM的必要性。

图8 在MIT Adobe 5K数据集上使用不同的启发式设计架构分析性能。

结论:本论文的搜索架构实现了最高的峰值信噪比(PSNR)和更少的推理时间。

图9 对不同的搜索策略进行了评估。
(a)单独的搜索策略——逐个搜索这两个部分。在搜索NRM时,IEM的搜索过程已经结束。
(b)简单的联合搜索——将IEM和NRM视为整个架构的一部分,只需搜索一次所有架构。
(c)本文的搜索策略——将光照估计和去噪连接起来,以实现有价值的合作。
结论:本文搜索到的NRM包含更多的剩余卷积和跳连接。

有关【论文笔记】—低照度图像增强—ZeroShot—RUAS网络—2021-CVPR的更多相关文章

  1. ruby-on-rails - 添加回形针新样式不影响旧上传的图像 - 2

    我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司

  2. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  3. ruby-on-rails - 在 Ruby (on Rails) 中使用 imgur API 获取图像 - 2

    我正在尝试使用Ruby2.0.0和Rails4.0.0提供的API从imgur中提取图像。我已尝试按照Ruby2.0.0文档中列出的各种方式构建http请求,但均无济于事。代码如下:require'net/http'require'net/https'defimgurheaders={"Authorization"=>"Client-ID"+my_client_id}path="/3/gallery/image/#{img_id}.json"uri=URI("https://api.imgur.com"+path)request,data=Net::HTTP::Get.new(path

  4. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

  5. ruby - 是否有将图像文件转换为 ASCII 艺术的命令行程序或库? - 2

    有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/

  6. ruby-on-rails - 使用 Dragonfly 从 URL 分配图像 - 2

    我正在使用Dragonfly在Rails3.1应用程序上处理图像。我正在努力通过url将图像分配给模型。我有一个很好的表格:{:multipart=>true}do|f|%>RemovePicture?Dragonfly的文档指出:Dragonfly提供了一个直接从url分配的访问器:@album.cover_image_url='http://some.url/file.jpg'但是当我在控制台中尝试时:=>#ruby-1.9.2-p290>picture.image_url="http://i.imgur.com/QQiMz.jpg"=>"http://i.imgur.com/QQ

  7. Ruby-vips 图像处理库。有什么好的使用示例吗? - 2

    我对图像处理完全陌生。我对JPEG内部是什么以及它是如何工作一无所知。我想知道,是否可以在某处找到执行以下简单操作的ruby​​代码:打开jpeg文件。遍历每个像素并将其颜色设置为fx绿色。将结果写入另一个文件。我对如何使用ruby​​-vips库实现这一点特别感兴趣https://github.com/ender672/ruby-vips我的目标-学习如何使用ruby​​-vips执行基本的图像处理操作(Gamma校正、亮度、色调……)任何指向比“helloworld”更复杂的工作示例的链接——比如ruby​​-vips的github页面上的链接,我们将不胜感激!如果有ruby​​-

  8. ruby-on-rails - 如何播种图像的路径? - 2

    Organization和Image具有一对一的关系。Image有一个名为filename的列,它存储文件的路径。我在Assets管道中包含这样一个文件:app/assets/other/image.jpg。播种时如何包含此文件的路径?我已经在我的种子文件中尝试过:@organization=...@organization.image.create!(filename:File.open('app/assets/other/image.jpg'))#Ialsotried:#@organization.image.create!(filename:'app/assets/other/i

  9. ruby-on-rails - 安全地显示使用回形针 gem 上传的图像 - 2

    默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同

  10. ruby - Paperclip:以编程方式分配图像并设置其名称 - 2

    使用Paperclip,我想从这样的URL抓取图像:require'open-uri'user.photo=open(url)问题是我最后得到一个像“open-uri20110915-4852-1o7k5uw”这样的文件名。有什么方法可以更改user.photo上的文件名?作为一个额外的变化,Paperclip将我的文件存储在S3上,所以如果我可以在初始分配中设置我想要的文件名就更好了,这样图像就会上传到正确的S3key。像这样:user.photo=open(url),:filename=>URI.parse(url).path 最佳答案

随机推荐