EnlightenGAN论文阅读笔记

EnlightenGAN论文阅读笔记

论文是2019年IEEE的EnlightenGAN: Deep Light Enhancement without Paired Supervision.这篇论文是低光增强领域无监督学习的开山之作。

论文链接如下:arxiv.org/pdf/1906.06972.pdf

文章目录

  • EnlightenGAN论文阅读笔记
    • 出发点
      • **出发点1**:从监督学习的缺点入手。
      • **出发点2**:从拍摄所得低光图片的特点入手。
    • 创新点
      • **创新点1**:在低光增强中第一次引入双重判别器。
      • **创新点2**:引入一个自特征保留损失。
      • **创新点3**:开发原始低光输入的Attention Map引导生成。
    • 模型
    • 设计及其损失
      • 1.双重判别器(Dual Discriminator)及其损失
      • 2.自特征保留损失(Self Feature Preserving Loss)
      • 总损失
      • 自正则Attention Map

出发点

出发点1:从监督学习的缺点入手。

it is very difficult or even impractical to simultaneously capture corrupted and ground truth images of the same visual scene.

​ 指出在低光增强领域,监督学习的第一个不足之处——在同一个场景下同时获得亮度正常的图片和低光图片是很难而且不现实的。

synthesizing corrupted images from clean images could sometimes help, but such synthesized results are usually not photo-realistic enough.

​ 监督学习有时候会使用合成的低光图片进行训练,也就是拍摄正常光照的图片后,经过模糊、加噪音等,合成低光图片,作为一对数据进行训练。作者指出这种方式并不足够真实。算是第二个不足之处。

​ 我的理解是低光图片的合成是人为控制的,因此合成的低光程度不一样得到的效果也不同。

specifically for the low-light enhancement problem, there may be no unique or well-defined high-light ground truth given a low-light image.

​ 作者指出低光领域监督学习的第三个不足之处,在于低光图片的ground-truth并不唯一。某个场景晚上的图片,它的ground-truth可以是该场景在白天的任何时候。也就是说,为一张低光图片配对一个绝对的正常光照图片是没有必要的。

出发点2:从拍摄所得低光图片的特点入手。

Taking into account the above issues, our overarching goal is to enhance a low-light photo with spatially varying light conditions and over/under-exposure artifacts, while the paired training data is unavailable.

​ 作者认为,低光图片的增强需要考虑到图片光照条件的空间变化。也就是说,一张图片拍摄后,不同地方的光照不同,那么进行低光增强时,不同位置的增强的程度也不同,如果一张图片给所有地方增强程度相同,就有可能出现过度曝光而失真的情况。

创新点

创新点1:在低光增强中第一次引入双重判别器。

We first propose a dual- discriminator to balance global and local low-light enhancement.

创新点2:引入一个自特征保留损失。

Further, owing to the absence of ground-truth supervision, a self-regularized perceptual loss is proposed to constrain the feature distance between the low-light input image and its enhanced version, which is subsequently adopted both locally and globally together with the adversarial loss for training EnlightenGAN.

创新点3:开发原始低光输入的Attention Map引导生成。

We also propose to exploit the illumination information of the low-light input as a self-regularized attentional map in each level of deep features to regularize the unsupervised learning.

模型

在这里插入图片描述

框架:作者使用U-Net作为Generator,在其中对每层加入了注意力map以引导生成。使用了两个Discriminator,均为PatchGAN设计。一个是Global Discriminator,一个是Local Discriminator。

By extracting multi-level features from different depth layers, U-Net pre- serves rich texture information and synthesizes high quality images using multi-scale context information.

PatchGAN是一种设计,最早出现于CircleGAN模型的判别器中。它是原来GAN的一种延申与升级。PatchGAN与感受野有关,具体在Patch GAN的理解_patchgan判别器-CSDN博客这篇博客中有详述。

Generator详解:输入的低光RGB图片取出其照明通道I,然后归一化为[0, 1],然后利用1-I(元素差异)作为该层的attention map。然后这层的低光RGB图片经过卷积与最大值汇聚得到下一层的RGB图片。然后此RGB图片取出其照明通道I,这个照明通道同样地归一化为[0, 1],利用1-I(元素差异)作为该层的attention map。这一层的RGB图像继续通过卷积与最大值汇聚得到下一层的RGB图片,以此类推。直到RGB图片只经过卷积得到最后一层的RGB图片,然后经过该层的attention map(元素乘法),然后通过上采样层Upsampling Layer和卷积层得到上一层的RGB图片,以此类推,最顶层的RGB图片经过上采样与卷积,与最顶层的attention map元素乘法,再与残差连接的原始低光图片相加,得到增强光亮后的输出。

​ 值得一提的是,模型中的Upsampling Layer并非简单的一个转置卷积,而是一个双线性上采样层,以减轻伪影。

Discriminator详解:我的理解是,Global Discriminator对整张输出图片和原始低光图片判别,Local Discriminator在正常低光图片和增强图片分别随机地裁剪局部块进行判别。两个Discriminator都进行判断输出图片来自真实图片还是增强图片。

设计及其损失

1.双重判别器(Dual Discriminator)及其损失

we observe that an image-level vanilla discriminator often fails on spatially-varying light images; if the input image has some local area that needs to be enhanced differently from other parts, e.g., a small bright region in an overall dark background, the global image discriminator alone is often unable to provide the desired adaptivity.

​ 拍摄的图片的光照是存在空间变化的,如果有一些部位需要特别地增强,而有一些部位相对于其他部位又很亮,那么单纯用一个全局的判别器总是做的很失败。所以作者引入全局-局部判别器,以解决局部过度增强以及局部增强不足的情况。

​ 对于全局判别器的损失,首先基于Relativistic discriminator的损失结构,标准的判别器损失为:
D R a ( x r , x f ) = σ ( C ( x r ) − R x f ∼ P f a k e [ C ( x f ) ] ) , (1) D_{Ra}(x_r, x_f) = \sigma(C(x_r) - \mathbb{R}_{x_f \sim \mathbb{P}_{fake}}[C(x_f)]),\tag{1} DRa(xr,xf)=σ(C(xr)RxfPfake[C(xf)]),(1)

D R a ( x f , x r ) = σ ( C ( x f ) − E x r ∼ P r e a l [ C ( x r ) ] ) , (2) D_{Ra}(x_f, x_r) = \sigma(C(x_f) - \mathbb{E}_{x_r \sim \mathbb{P}_{real}}[C(x_r)]),\tag{2} DRa(xf,xr)=σ(C(xf)ExrPreal[C(xr)]),(2)

然后将 σ \sigma σ换为LSGAN中的损失函数,最后得到全局判别器D和全局生成器G的损失:
L D G l o b a l = E x r ∼ P r e a l [ ( D R a ( x r , x f ) − 1 ) 2 ] + E x f ∼ P f a k e [ D R a ( x f , x r ) 2 ] , (3) L^{Global}_D = \mathbb{E}_{x_r \sim \mathbb{P}_{real}}[(D_{Ra}(x_r, x_f) - 1)^2] + \mathbb{E}_{x_f \sim \mathbb{P}_{fake}}[D_{Ra}(x_f, x_r)^2],\tag{3} LDGlobal=ExrPreal[(DRa(xr,xf)1)2]+ExfPfake[DRa(xf,xr)2],(3)

L G G l o b a l = E x f ∼ P f a k e [ ( D R a ( x f , x r ) − 1 ) 2 ] + E x r ∼ P r e a l [ D R a ( x r , x f ) 2 ] , (4) L_G^{Global} = \mathbb{E}_{x_f \sim \mathbb{P}_{fake}}[(D_{Ra}(x_f, x_r) - 1)^2] + \mathbb{E}_{x_r \sim \mathbb{P}_{real}}[D_{Ra}(x_r, x_f)^2],\tag{4} LGGlobal=ExfPfake[(DRa(xf,xr)1)2]+ExrPreal[DRa(xr,xf)2],(4)

​ 对于局部判别器的损失,直接引用LSGAN的对抗性损失:
L D L o c a l = E x r ∼ P r e a l − p a t c h e s [ ( D ( x r ) − 1 ) 2 ] + E x f ∼ P f a k e − p a t c h e s [ ( D ( x f ) − 0 ) 2 ] , (5) L_D^{Local} = \mathbb{E}_{x_r \sim \mathbb{P}_{real-patches}}[(D(x_r) - 1)^2] + \mathbb{E}_{x_f \sim \mathbb{P}_{fake-patches}}[(D(x_f) - 0)^2],\tag{5} LDLocal=ExrPrealpatches[(D(xr)1)2]+ExfPfakepatches[(D(xf)0)2],(5)

L G L o c a l = E x r ∼ P f a k e − p a t c h e s [ ( D ( x f ) − 1 ) 2 ] , (6) L_G^{Local} = \mathbb{E}_{x_r \sim \mathbb{P}_{fake-patches}}[(D(x_f) - 1)^2],\tag{6} LGLocal=ExrPfakepatches[(D(xf)1)2],(6)

2.自特征保留损失(Self Feature Preserving Loss)

感知损失:Johnson等人提出感知损失,通常的做法是通过预训练的VGG去抽取输出图片和真实标签图片的特征,然后限制这两组特征的距离。

​ 基于感知损失,作者提供了无监督学习版的感知损失:并非限制输出与真实标签特征的距离,而是限制输入与输出特征的距离。

In our unpaired setting, we propose to instead constrain the VGG-feature distance between the input low-light and its enhanced normal-light output.

损失函数如下:
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 , (7) 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}}, \tag{7} LSFP(IL)=Wi,jHi,j1x=1Wi,jy=1Hi,j(ϕi,j(IL)ϕi,j(G(IL)))2,(7)
符号描述如下:

where I L \large{I^L} ILdenotes the input low-light image and G ( I L ) \large{G(I^L)} G(IL) denotes the generator’s enhanced output. ϕ i , j \phi_{i, j} ϕi,jdenotes the feature map extracted from a VGG-16 model pre-trained on ImageNet. i represents its i-th max pooling, and j represents its j-th convolutional layer after i-th max pooling layer. W i , j \large{W_{i,j}} Wi,jand H i , j \large{H_{i,j}} Hi,j are the dimensions of the extracted feature maps. By default we choose i = 5, j = 1.

下面这段话说明,自特征保留损失作用于全局判别器,也作用于局部判别器:

For our local discriminator, the cropped local patches from input and output images are also regularized by a similarly defined self feature preserving loss.

总损失

L o s s = L S F P G l o b a l + L S F P L o c a l + L G G l o b a l + L G L o c a l , (8) Loss = L_{SFP}^{Global} + L_{SFP}^{Local} + L_G^{Global} + L_G^{Local}, \tag{8} Loss=LSFPGlobal+LSFPLocal+LGGlobal+LGLocal,(8)

自正则Attention Map

在前面的模型中,已经解释了Attention Map的机理:

We take the illumination channel I of the input RGB image, normalize it to [0,1], and then use 1−I (element-wise difference) as our self-regularized attention map. We then resize the attention map to fit each feature map and multiply it with all intermediate feature maps as well as the output image.

每一层的Attention Map要Resize为与该层RGB特征图片形状一致,这样才能进行元素乘法。

作者指出,Attention Map也是一个自正则化的手段,而且是该工作中非常关键的一步。

本文毕

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

竞赛保研 python图像检索系统设计与实现

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 python图像检索系统设计与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖&#xff0c…

【LeetCode刷题笔记(5)】【Python】【盛最多水的容器】【双指针】【中等】

文章目录 盛最多水的容器算法题描述示例示例 1示例 2 提示题意拆解 解决方案:【双指针】运行结果复杂度分析 结束语 盛最多水的容器 盛最多水的容器 算法题描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (…

《深入理解 Android ART 虚拟机》笔记

Dex文件格式、指令码 一个Class文件对应一个Java源码文件,而一个Dex文件可对应多个Java源码文件。开发者开发一个Java模块(不管是Jar包还是Apk)时: 在PC平台上,该模块包含的每一个Java源码文件都会对应生成一个同文件…

点赋网络科技:为什么喝咖啡的人更易获得成功?

喝咖啡的人更易获得成功,这一说法并非空穴来风。事实上,许多成功的人士会坦诚地告诉你,他们每天都会饮用咖啡以激发思维和提高工作效率。下面,湖北点赋网络科技将从咖啡的作用、研究数据和成功人士的经验,三个方面来阐…

鸿蒙HarmonyOS开发用什么语言

1.网上流行一句有中国底蕴的话:鸿蒙系统方舟框架盘古大模型。都方舟框架了肯定主推的是ArkUI框架。其实还能使用C、Java和Js开发。 2.从API8开始,Java语言已经从鸿蒙开发剔除了,而官方推荐的是ArkTs.下图是ArkTS与TS、JS的关系。 ArkTs 是TS的…

物联网AI 物联网平台学习之概述

学物联网,来万物简单IoT物联网!! 万物简单IOT是一个集物联网教育、企业SaaS私有化部署的物联网服务平台,它集成了设备管理、数据安全通信、消息订阅、规则引擎等一系列物联网核心能力,支持设备数据上云以及海量设备数…

RK3568/RV1126/RV1109/RV1106 ISP调试方案

最近一直在做瑞芯微rv1126的开发,由于项目性质,与camera打的交道比较多,包括图像的采集,ISP处理,图像处理,H.264/H.265编解码等各个方面吧。学到了不少,在学习的过程中,也得到了不少…

Linux的权限(二)

目录 前言 文件类型和访问权限(事物属性) 补充知识 文件类型 文件操作权限 修改文件权限 chmod指令 文件权限值的表示方法 字符表示方法 8进制数值表示方法 权限有无带来的影响 修改文件角色 chown与chgrp指令 目录的rwx权限 补充知识 …

Linux的重定向

Linux中的重定向是将程序的输入流或输出流从默认的位置改变到指定的位置。可以使用特殊的符号来实现重定向操作。(文中command代表命令) (1)重定向命令列表 命令 说明 command > file …

DevEco Studio中配置代码片段

进入设置(快捷键CtrlAltS) 选择Editor > Live Templates 添加片段 其中 $END$ 代表光标首次出现位置 一定要选择适用语言!!! 最后Apply > OK 即可,输入快捷命令回车即可快速生成代码片段。

【Anaconda】Ubuntu anaconda使用(新建环境、最小化安装Tensorflow, CUDA对应关系)

Ubuntu anaconda使用(新建环境、最小化安装Tensorflow) 文章目录 Ubuntu anaconda使用(新建环境、最小化安装Tensorflow)使用conda打包虚拟环境查看已创建的环境删除虚拟环境命令下运行.ipynb文件 清华源地址: https:…

解决ES伪慢查询

一、问题现象 服务现象 服务接口的TP99性能降低 ES现象 YGC:耗时极其不正常, 峰值200次,耗时7sFULL GC:不正常,次数为1但是频繁,STW 5s慢查询:存在慢查询5 二 解决过程 1、去除干扰因素 从现象上看应用是由于某种…

小红书商品详情API:电商助力

一、引言 随着互联网的普及和电商行业的快速发展,消费者对于商品信息的获取方式也在不断变化。小红书作为一款以内容分享为主的社交电商平台,吸引了大量用户。为了满足用户对商品信息的快速获取需求,小红书提供了商品详情API接口。本文将探讨…

Linux 基本语句_15_Tcp并发服务器

原理&#xff1a; 利用父子进程。父进程接收客户端的连接请求&#xff0c;子进程处理客户端的数据处理操作&#xff0c;两者各施其职。最终实现能够多个客户端连接一个服务端的操作。 代码&#xff1a; 服务端代码&#xff1a; #include <stdio.h> #include <sys/…

初级数据结构(五)——树和二叉树的概念

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 初级数据结构&#xff08;四&#xff09;——队列 | NULL 下一篇-> 1、树结构&#xff08;Tree&#xff09; 1.1、树结构的特点 自然界中的树由根部开始向上生长&#xff0c;随机长出分支&…

聊天系统UDP TCP

服务端 package work; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.util.ArrayList; import java.util.List; public class UDPServer { private static final int PORT 9876; private static List<ClientInfo> clients …

极简Excel公式拆分合并单元格并自动填充

例如这个表格&#xff1a; 我们希望拆分合并单元格&#xff0c;并填充到E列。结果如&#xff1a; 步骤 1&#xff09;在E2输入公式如下&#xff1a; LOOKUP(2,1/($B$2:B2<>""),$B$2:B2) 2&#xff09;下拉E2至E9将公式填充即可 注意&#xff1a;公式中的$…

分布式事务--初识Seata和TC部署

1.Seata介绍 Seata是 2019 年 1 月份蚂蚁金服和阿里巴巴共同开源的分布式事务解决方案。致力于提供高性能和简单易用的分布式事务服务&#xff0c;为用户打造一站式的分布式解决方案。 官网地址&#xff1a;Seata | Seata&#xff0c;其中的文档、播客中提供了大量的使用说明…

Hudi 在 vivo 湖仓一体的落地实践

作者&#xff1a;vivo 互联网大数据团队 - Xu Yu 在增效降本的大背景下&#xff0c;vivo大数据基础团队引入Hudi组件为公司业务部门湖仓加速的场景进行赋能。主要应用在流批同源、实时链路优化及宽表拼接等业务场景。 一、Hudi 基础能力及相关概念介绍 1.1 流批同源能力 与H…

Windows系统下载安装并连接Redis

首先 我们访问地址 https://github.com/tporadowski/redis/releases 这里 我们根据自己的系统选择下载 我是 Windows msi安装包 下载下来之后 我们双击它运行 然后下一步 然后这里要同意它的条款 反正不同意不给用嘛 就这么简单 勾选之后 选择下一步 这里 我们要选一下他的安装…