EnlighenGAN 使用指南:将暗光图像点亮,焕发光彩

EnlighenGAN 使用指南

    • EnlightenGAN 网络结构 = 生成器(带自注意力机制的 U-Net)+ 判别器(两个全局-局部鉴别器)
      • 优化目标
      • 环境搭建和训练自己的数据

 


暗光图像增强:

优点在于,可以不用成对数据,一个场景的暗光/正常光的两张图。

EnlightenGAN 论文:https://arxiv.org/abs/1906.06972

EnlightenGAN 项目代码:https://github.com/VITA-Group/EnlightenGAN

EnlightenGAN 网络结构 = 生成器(带自注意力机制的 U-Net)+ 判别器(两个全局-局部鉴别器)

EnlightenGAN整体的方法和思想:

  • 全局-局部鉴别器(PatchGAN来鉴别真/假)就像是一个帮你检查画面的专家。全局鉴别器会检查整个画面的光照情况,而局部鉴别器会更关注画面中的一些细节。他们会告诉你哪些地方需要改善,比如哪些地方需要增加亮度,哪些地方需要更清晰的细节。

  • 自注意力机制,保留原始画面的特征和细节。它会非常小心地修改画面,使得画面变得更亮、更清晰,但同时也会确保不丢失原始画面的特色。

    输入是,图中第二幅灰色图:

  • 是把原图转为灰度图

  • 归一化灰度图

  • 1 - 归一化灰度图,突出暗部部分

  • 相当于注意力机制,重点关注暗部部分

EnlightenGAN 主干网络是 U-Net。

最后是,全局-局部鉴别器:

  • 全局鉴别器(上图第一个灰色块,判断生成的图像和真实图像之间的整体光照差异,改善图像的全局光照特征):对抗性损失来最小化真实图像和输出图像的光照分布的距离。但全局鉴别器,对于一些暗场景下存在明亮区域的图像,适应性不够。

  • 局部鉴别器(上图第二个灰色块,判断生成的图像和真实图像之间的局部细节差异。改善图像的细节特征):用的 PatchGAN来鉴别真/假 来鉴别真/假。从输出图像和真实图像中随机采样 5 个图像块(上图),来判断是真实图像还是模型增强出来的图像。解决全局鉴别器带来的局部曝光不足或过度的情况了。

流程:U-Net 得到特征图,和注意力图,像素相乘,加到原图上,得到增强结果。

优化目标

生成器损失-特征保持损失:最小化输入图像和生成图像在相同层和通道上特征差异,生成图像中保留的原始特征和结构。

  • L S F P ( I L ) = 1 W i , j H i , j ∑ x = 1 W i , j ∑ y = 1 H i , j ( ϕ i , j ( I L ) − ϕ i , j ( G ( I L ) ) ) 2 \mathcal{L}_{SFP}(I^L)=\frac{1}{W_{i,j}H_{i,j}}\sum_{x=1}^{W_{i,j}}\sum_{y=1}^{H_{i,j}}(\phi_{i,j}(I^L)-\phi_{i,j}(G(I^L)))^2 LSFP(IL)=Wi,jHi,j1x=1Wi,jy=1Hi,j(ϕi,j(IL)ϕi,j(G(IL)))2

I L I^L IL表示暗光图像(没有增强的图)。

G ( I L ) G(I^L) G(IL)表示增强后的图。

增强前、后只改变亮度,语义、结构、内容都不能改变,需要一种叫 特征保持的损失。

判别器损失-非饱和损失

  • 全局判别器,把增强后的图、真实图输入到全局判别器,进行真假判别
  • 局部判别器:从增强后的图、真实图随机裁剪 5 个图像块,输入局部判别器,进行真假判别

非饱和损失是:不是对真、假样本的输出强制约束一个数,而是相对约束,真样本数据大于假样本、假样本数据小于真样本。

  • D R a ( x r , x f ) = σ ( C ( x r ) − E x f ∼ P t a l [ C ( x f ) ] ) , ( 1 ) D R a ( x f , x r ) = σ ( C ( x f ) − E x r ∼ P t a l [ C ( x r ) ] ) , ( 2 ) \begin{aligned}D_{Ra}(x_{r},x_{f})&=\sigma(C(x_{r})-\mathbb{E}_{x_{f}\sim\mathbb{P}_{\mathrm{tal}}}[C(x_{f})]),\quad(1)\\\\D_{Ra}(x_{f},x_{r})&=\sigma(C(x_{f})-\mathbb{E}_{x_{r}\sim\mathbb{P}_{\mathrm{tal}}}[C(x_{r})]),\quad(2)\end{aligned} DRa(xr,xf)DRa(xf,xr)=σ(C(xr)ExfPtal[C(xf)]),(1)=σ(C(xf)ExrPtal[C(xr)]),(2)

D R a ( x r , x f ) D_{Ra}(x_{r},x_{f}) DRa(xr,xf) 表示判别器对真实图像和生成图像的输出,即判别器判断真实图像为真实样本的概率。

D R a ( x f , x r ) D_{Ra}(x_{f},x_{r}) DRa(xf,xr) 表示判别器对生成图像和真实图像的输出,即判别器判断生成图像为真实样本的概率。

x f x_f xf 是假样本、 x r x_r xr 是真样本、 C ( x f ) C(x_{f}) C(xf) 是判别器输出、 σ \sigma σ 是将判别器的输出进行映射,将其范围限制在0到1之间。

全局判别器损失:

局部判别器损失:

最后整个EnlightenGAN的loss为:

环境搭建和训练自己的数据

请猛击:EnlightenGAN的运行环境搭建和训练自己的数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/230624.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频监控管理平台/智能监测/检测系统EasyCVR设备列表显示不全是什么原因?该如何解决?

GB28181视频监控国标平台/视频云存储/安防监控EasyCVR视频汇聚平台,基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。智慧安防视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视…

依靠堡塔面板,飞速部署Java项目

依靠堡塔面板,飞速部署Java项目 环境介绍 环境介绍: 面板版本:8.0.26 操作系统版本:CentOS7.9.2009 Nginx版本:1.22 Java环境:Tomcat8,JDK:OpenJDK-1.8.0-internal MySQL版本&#…

零代码连接钉钉宜搭与用友U8,让业财数据管理简单高效

零代码连接钉钉宜搭与用友U8,让业财数据管理简单高效 如果把企业内部的业务系统比作一条条河流,那么它们的交汇点就像江河湖海。在这些交汇点上,数据的汇集、分析和共享离不开系统之间的集成。 钉钉宜搭和用友U8是两个在企业中非常重要的系统…

linux下实现Qt程序实现开机自启动

1.原理 要想实现开机自启动,首先,QT是没有这种实现的,最好是靠电脑开机的启动目录启动软件,下面这个目录 /etc/xdg/autostart 这是操作系统中用于配置启动项的目录,该目录下存放着开机自启动的启动器(.desktop)文件…

智能优化算法应用:基于鸟群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于鸟群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于鸟群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鸟群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

一文1000字彻底搞懂Web测试与App测试的区别

总结分享一些项目需要结合Web测试和App测试的工作经验给大家: 从功能测试区分,Web测试与App测试在测试用例设计和测试流程上没什么区别。 而两者的主要区别体现在如下几个方面: 1 系统结构方面 Web项目,B/S架构,基…

使用 Docker 安装和配置 MySQL 数据库简介

目录 一、使用镜像安装 1、查询镜像 2、拉取镜像 3、查看本地镜像 4、启动docker镜像 二、使用Docker Compose安装 1、安装Docker和Docker Compose 2、创建Docker Compose文件: 3、启动MySQL容器 4、验证MySQL容器是否正常运行 5、连接到MySQL容器 6、停止…

ModBus电表与RS485电表有哪些区别?

在能源计量领域,ModBus电表和RS485电表是两种常见的设备,它们都具有监测和记录电能数据的功能。然而,它们之间存在一些区别,比如通信协议、连接方式、数据格式等等参数的区别有哪些? ModBus电表和RS485电表都是用于电能…

JVM——内存溢出和内存泄漏

目录 1. 内存溢出和内存泄漏内存泄漏的常见场景解决内存溢出的思路1.发现问题 – Top命令2.发现问题 – VisualVM3.发现问题 – Arthas4.发现问题 – Prometheus Grafana5.发现问题 – 堆内存状况的对比![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/058d113715b…

JAVA - 阻塞队列

一、什么是堵塞队列 堵塞队列(Blocking Queue)是一种特殊类型的队列,它具有一些特定的行为和限制。在堵塞队列中,当队列为空时,尝试从队列中取出元素的操作将会被阻塞,直到队列中有可用元素;当…

常见的AI安全风险(数据投毒、后门攻击、对抗样本攻击、模型窃取攻击等)

文章目录 数据投毒(Data Poisoning)后门攻击(Backdoor Attacks)对抗样本攻击(Adversarial Examples)模型窃取攻击(Model Extraction Attacks)参考资料 数据投毒(Data Poi…

Python-pip配置国内镜像源,快速下载包

文章目录 国内镜像源临时使用永久配置添加环境变量Path测试关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 国内…