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 得到特征图,和注意力图,像素相乘,加到原图上,得到增强结果。
优化目标
生成器损失-特征保持损失:最小化输入图像和生成图像在相同层和通道上特征差异,生成图像中保留的原始特征和结构。
表示暗光图像(没有增强的图)。
表示增强后的图。
增强前、后只改变亮度,语义、结构、内容都不能改变,需要一种叫 特征保持的损失。
判别器损失-非饱和损失:
- 全局判别器,把增强后的图、真实图输入到全局判别器,进行真假判别
- 局部判别器:从增强后的图、真实图随机裁剪 5 个图像块,输入局部判别器,进行真假判别
非饱和损失是:不是对真、假样本的输出强制约束一个数,而是相对约束,真样本数据大于假样本、假样本数据小于真样本。
是假样本、 是真样本、 是判别器输出、
全局判别器损失:
局部判别器损失:
最后整个EnlightenGAN的loss为:
环境搭建和训练自己的数据
请猛击:EnlightenGAN的运行环境搭建和训练自己的数据