【LLIE专题】基于码本先验与生成式归一化流的低光照图像增强新方法
GLARE: Low Light Image Enhancement via Generative Latent Feature based Codebook Retrieval(2024,ECCV)
- 专题介绍
- 一、研究背景
- 二、GLARE方法
- 阶段一:正常光照代码本学习(Normal-Light Codebook Learning)
- 1. 训练目标
- 2. 网络结构
- 3. 公式
- 阶段二:生成潜在特征学习(Generative Latent Feature Learning)
- 1. 训练目标
- 2. 网络结构
- 3. 公式
- 阶段三:自适应特征转换与图像解码(Adaptive Feature Transformation and Image Decoding)
- 1. 训练目标
- 2. 网络结构
- 三、实验结果
- 1. 定量结果
- 2. 定性结果
- 3. 消融研究
- 四、总结
- 优势
- 局限性
- 个人思考
本文将对 GLARE: Low Light Image Enhancement via Generative Latent Feature based Codebook Retrieval,这篇暗光增强算法进行讲解。参考资料如下:
[1] GLARE 文章
[2] GLARE 代码
专题介绍
在低光照环境下,传统成像设备往往因画面昏暗、细节丢失而受限。LLIE(低照度暗光增强)技术应运而生,它通过提升图像亮度、对比度,减少噪点并恢复色彩细节,让暗夜变得清晰可见。
LLIE技术从传统方法如直方图均衡化、Retinex模型等起步,近年来借助深度学习,尤其是卷积神经网络(CNN),GAN模型,扩散模型实现了质的飞跃。这些算法能自动学习图像特征,精准处理低光照图像,效果显著优于传统技术。
本专题将聚焦LLIE技术的核心原理、应用案例及最新进展,让我们一起见证LLIE如何点亮暗夜,开启视觉新视界!欢迎一起探讨交流!
系列文章如下
【1】ZeroDCE
【2】HVI
【3】CLIP-LIT
一、研究背景
现有的基于深度学习的LLIE方法大多存在一些局限性,比如这些模型在处理具有复杂光照变化和场景差异的图像时,泛化能力不足。为了改善这类问题,作者提出了GLARE(Generative Latent Feature based Codebook Retrieval for Low Light Image Enhancement)方法,将Codebook技术引入到了LLIE任务中。GLARE 方法的核心思想是利用编码本中的潜在特征来指导低光照图像的增强过程。具体来说,该方法首先将输入的低光照图像分解为多个潜在特征,这些潜在特征能够捕捉图像的不同属性,如亮度、颜色、纹理等。然后,通过检索与之匹配的高质量潜在特征,将这些高质量潜在特征与原始低光照图像特征进行融合,从而生成增强后的图像。
二、GLARE方法
整个训练过程分为三个阶段,每个阶段都有其独特的训练目标和网络结构。
阶段一:正常光照代码本学习(Normal-Light Codebook Learning)
1. 训练目标
在第一阶段,主要目标是利用大量高质量、正常光照的图像数据,通过自监督的方式学习一个通用且全面的正常光照图像特征码本。这个码本能够捕捉正常光照图像的各种特征模式,为后续的低光照到正常光照映射提供先验知识。
2. 网络结构
阶段一使用了类似 VQGAN 的结构,包括正常光照编码器(NL Encoder)和正常光照解码器(NL Decoder,Dnl)。
- 正常光照编码器(NL Encoder) :将输入的正常光照图像 I n l {I}_{nl} Inl转化为潜在特征表示 z n l {z}_{nl} znl。其结构通常由多个卷积层、激活函数和可能的归一化层组成,用于提取图像的高级特征。
- 正常光照解码器(NL Decoder,Dnl) :将量化后的潜在特征 z q {z}_{q} zq转换回图像空间,重建正常光照图像 I n l r e c {I}_{nl}^{rec} Inlrec。解码器的结构通常是编码器的逆过程,包含反卷积层或上采样层,以逐步恢复图像的空间分辨率。
3. 公式
对于输入的正常光照图像 I n l {I}_{nl} Inl,通过正常光照编码器 E n l E_{nl} Enl得到潜在特征 z n l {z}_{nl} znl:
z n l = E n l ( I n l ) \mathbf{z}_{nl} = E_{nl}(\mathbf{I}_{nl}) znl=Enl(Inl)
其中, E n l E_{nl} Enl表示正常光照编码器, I n l {I}_{nl} Inl是输入的正常光照图像。
然后,利用最近邻匹配,将每个潜在特征向量 z n l i {z}_{nl}^{i} znli 量化到代码本 C C C 中最近的{z}_{q}^{i}:
z q i = NearestNeighbour ( z n l i , C ) \mathbf{z}_{q}^{i} = \text{NearestNeighbour}(\mathbf{z}_{nl}^{i}, C) zqi=NearestNeighbour(znli,C)
这里,代码本 C C C 是一个包含 Nc 个离散码字的集合,每个码字代表一种特定的特征模式,即
C = [ c 1 , c 2 , … , c N c ] ∈ R d × N c C = [\mathbf{c}_1, \mathbf{c}_2, \ldots, \mathbf{c}_{N_c}] \in \mathbb{R}^{d \times N_c} C=[c1,c2,…,cNc]∈Rd×Nc 。
量化后的潜在特征 z q {z}_{q} zq被送入正常光照解码器 Dnl 来生成重建图像 I n l r e c {I}_{nl}^{rec} Inlrec:
I n l r e c = D n l ( z q ) \mathbf{I}_{nl}^{rec} = D_{nl}(\mathbf{z}_{q}) Inlrec=Dnl(zq)
其中, D n l D_{nl} Dnl表示正常光照解码器。
阶段二:生成潜在特征学习(Generative Latent Feature Learning)
1. 训练目标
阶段二的目标是学习从低光照特征到正常光照特征的分布转换。通过训练条件编码器(Conditional Encoder)和可逆潜在归一化流(Invertible Latent Normalizing Flow,I-LNF)模块,使低光照特征能够更好地匹配正常光照特征的分布,从而提升图像增强效果。
2. 网络结构
在阶段二中,主要优化两个关键组件:条件编码器(Conditional Encoder)和可逆潜在归一化流(I-LNF)模块。
- 条件编码器(Conditional Encoder) :其结构与正常光照编码器相同,输入低光照图像 I l l {I}_{ll} Ill,输出条件特征 c l l {c}_{ll} cll。它用于提取低光照图像的特征,并为后续的特征转换提供条件信息。
- I-LNF 模块 :通过可逆网络实现(可逆网络是一种特殊的深度学习网络,其设计目标是使得网络的前向传播和后向传播都是可逆的。这意味着,给定网络的输出,我们可以通过逆向传播精确地恢复出网络的输入),记为 f θ f_{\theta} fθ。该模块利用条件特征 c l l {c}_{ll} cll 将复杂的正常光照特征分布 z n l {z}_{nl} znl转换为潜在特征 v = f θ ( z n l ; c l l ) \mathbf{v} = f_{\theta}(\mathbf{z}_{nl}; \mathbf{c}_{ll}) v=fθ(znl;cll)。阶段二的目标是在 v \mathbf{v} v的空间中获得一个简化的分布 p v ( v ) \mathbf{p}_{\mathbf{v}}(\mathbf{v}) pv(v),例如高斯分布。
3. 公式
阶段二的训练目标是最小化负对数似然(Negative Log-Likelihood,NLL),具体公式如下:
L ( θ ; c l l , z n l ) = − log p z n l ∣ c l l ( z n l ∣ c l l , θ ) \mathcal{L}(\theta; \mathbf{c}_{ll}, \mathbf{z}_{nl}) = -\log p_{\mathbf{z}_{nl}|\mathbf{c}_{ll}}(\mathbf{z}_{nl}|\mathbf{c}_{ll}, \theta) L(θ;cll,znl)=−logpznl∣cll(znl∣cll,θ)
进一步展开,可以表示为:
L ( θ ; c l l , z n l ) = − log p v ( v ) − ∑ i = 1 N log ∣ det ∂ f θ i ∂ h i − 1 ( h i − 1 ; c l l ) ∣ \mathcal{L}(\theta; \mathbf{c}_{ll}, \mathbf{z}_{nl}) = -\log p_{\mathbf{v}}(\mathbf{v}) - \sum_{i=1}^{N} \log \left| \det \frac{\partial f_{\theta}^i}{\partial \mathbf{h}^{i-1}}(\mathbf{h}^{i-1}; \mathbf{c}_{ll}) \right| L(θ;cll,znl)=−logpv(v)−i=1∑Nlog det∂hi−1∂fθi(hi−1;cll)
其中:
- p v ( v ) p_{\mathbf{v}}(\mathbf{v}) pv(v)是潜在特征 v \mathbf{v} v的分布,假设为高斯分布,即 v ∼ N ( 0 , I ) \mathbf{v} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) v∼N(0,I)。
- f θ i f_{\theta}^i fθi 表示可逆网络的第 i 层。
- h i − 1 \mathbf{h}^{i-1} hi−1是第 (i-1) 层的特征。
- N N N 是可逆层的总数。
通过最小化上述损失函数,可以训练条件编码器和 I-LNF 模块,使低光照特征分布与正常光照特征分布对齐。
此时可以从 中 v ∼ p v ( v ) v \sim p_v(v) v∼pv(v)采样并使用完全可逆的网络 f θ f_{\theta} fθ得到低光照输入的高质量特征 z l l = f θ − 1 ( v ; c l l ) z_{ll} = f_\theta^{-1}(v; c_{ll}) zll=fθ−1(v;cll);用低光照输入的高质量特征去匹配码本里面由正常光照图像生产的高质量特征就更加容易(相较于直接从低质量图像特征 c l l {c}_{ll} cll匹配先验的高质量特征)。
阶段三:自适应特征转换与图像解码(Adaptive Feature Transformation and Image Decoding)
1. 训练目标
阶段三的训练目标是在固定码本、正常光照解码器、条件编码器和 I-LNF 模块的基础上,通过自适应特征转换策略,进一步提升图像增强的细节和保真度,使生成的正常光照图像更加逼真、精细。
2. 网络结构
阶段三主要包括固定正常光照解码器(Dnl)、自适应特征转换模块(Adaptive Feature Transformation,AFT)。AFT 模块包含自适应混合块(Adaptive Mix-up Block,AMB)和多尺度融合解码器(Multi-scale Fusion Decoder,MFD)。
- 固定正常光照解码器(Dnl) :在阶段一中已经训练完成,用于将潜在特征转换为正常光照图像。
- 自适应混合块(AMB) :根据低光照特征和生成的正常光照特征的相似性自适应地调整它们的权重,实现特征的融合。AMB 通过学习一组可调参数,动态地确定低光照特征和生成特征在融合过程中的贡献比例。
- 多尺度融合解码器(MFD) :在多个尺度上对特征进行融合和解码,得到最终的增强图像。MFD 通常包含多个分支,每个分支处理不同尺度的特征,然后将这些特征进行融合,以充分利用不同尺度的信息。
综上所述,GLARE 通过三个阶段的训练,逐步实现了低光照图像的增强。阶段一学习正常光照图像的特征码本;阶段二学习从低光照特征到正常光照特征的分布转换;阶段三通过自适应特征转换和多尺度融合解码进一步提升图像质量。这些阶段相互配合,使得 GLARE 能够有效地处理低光照图像,生成高质量的正常光照图像。
三、实验结果
1. 定量结果
作者将 GLARE 方法与其他几种先进的低光照图像增强方法在不同的数据集上进行了比较,如下表所示
实验结果表明,GLARE 在多个评估指标上均优于或接近这些方法。
2. 定性结果
除了定量评估,作者还通过视觉效果展示了 GLARE 的增强效果。通过对比低光照输入图像、其他方法的增强结果以及 GLARE 的增强结果,可以明显看出 GLARE 在细节恢复、色彩还原和整体视觉效果上的优势。GLARE 增强后的图像不仅在亮度上得到了提升,而且在细节和色彩上也更加逼真,产生了更加令人愉悦的效果。
3. 消融研究
为了验证阶段一(正常光照代码本学习)对最终结果的影响,作者进行了消融实验。实验结果表明,当不使用阶段一学习到的代码本时,模型的性能明显下降。这说明阶段一学习到的正常光照特征代码本对低光照图像增强起到了重要的先验作用,有助于模型更好地理解和生成正常光照图像。
其他模块作者同样也做了消融研究,具体可参考论文。
四、总结
《GLARE: Low Light Image Enhancement via Generative Latent Feature based Codebook Retrieval》提出了一种新颖的低光照图像增强方法,通过生成潜在特征的码本检索来实现高质量的图像增强。
优势
- 分阶段学习策略:通过三个阶段逐步优化模型,充分利用正常光照图像的先验特征,逐步提升图像增强效果。
- 自适应特征转换:通过自适应混合块(AMB)和多尺度融合解码器(MFD),能够动态调整特征融合比例,生成更加逼真和自然的图像。
- 高质量代码本:在第一阶段学习到的高质量代码本为后续阶段提供了强大的先验知识,有助于模型更好地理解和生成正常光照图像。
局限性
- 计算资源需求:模型的训练和推理过程需要较高的计算资源,这可能限制了其在实际应用中的实时性。
个人思考
GLARE 方法通过分阶段学习和自适应特征转换,有效地解决了低光照图像增强中的关键问题。这种方法不仅在理论上具有创新性,而且在实际应用中也表现出色。基于本方案,博主认为还能做以下一些尝试和研究:
-
多模态数据融合:在低光照图像增强中,除了利用正常光照图像的先验特征,还可以考虑引入其他模态的数据,如红外图像、深度图像等。通过多模态数据融合,可以进一步提升模型的鲁棒性和性能。
-
跨领域应用:GLARE 方法不仅适用于低光照图像增强,还可以扩展到其他图像处理任务,如图像复原任务等。
总之,GLARE 方法为低光照图像增强领域提供了一种新的思路和方法。
感谢阅读,欢迎留言或私信,一起探讨和交流。
相关文章:

【LLIE专题】基于码本先验与生成式归一化流的低光照图像增强新方法
GLARE: Low Light Image Enhancement via Generative Latent Feature based Codebook Retrieval(2024,ECCV) 专题介绍一、研究背景二、GLARE方法阶段一:正常光照代码本学习(Normal-Light Codebook Learning)…...

[MySQL数据库] SQL优化
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...
AWS VPC 核心笔记(小白向)
AWS VPC 核心笔记(小白向) 一、核心组成:VPC 云上的“私有网络” 组件名类比说明VPC小区你在 AWS 上自定义的私有网络范围子网(Subnet)小区里的楼子网是 VPC 的一个切分区域,决定资源的网络分布ÿ…...
召回11:地理位置召回、作者召回、缓存召回
GeoHash 召回 属于地理位置召回,用户可能对附近发生的事情感兴趣。GeoHash 是一种对经纬度的编码,地图上每个单位矩形的 GeoHash 的前几位是相同的,GeoHash 编码截取前几位后,将相同编码发布的内容按时间顺序(先是时间…...
【AI News | 20250515】每日AI进展
AI Repos 1、helix-db 专用于RAG以及AI应用的一款高性能图向量数据库:HelixDB,比Neo4j快1000倍,比TigerGraph快100倍,向量搜索性能和Qdrant相当。原生支持图形和矢量数据类型,比较适合RAG和AI应用,像知识图…...

网络编程epoll和udp
# epoll模型核心要点## 1. epoll核心概念### 1.1 高效IO多路复用- 监视列表与激活列表分离- 内核使用红黑树存储描述符- 边缘触发模式(EPOLLET)支持### 1.2 事件触发机制- **水平触发(LT)**:- 默认模式,类似select/poll- 数据未读完持续触发事件- **边缘…...
elementUI如何动态增减表单项
设置prop的字段::prop"configs.${i}.platform" <template><el-dialogtitle"编辑配置":close-on-click-modal"false":before-close"beforeClose":visible.sync"visible"v-if"visible"class&q…...

【iOS】源码阅读(四)——isa与类关联的原理
文章目录 前言OC对象本质探索clang探索对象本质objc_setProperty源码探索 cls与类的关联原理为什么说bits与cls为互斥关系isa的类型isa_t原理探索isa与类的关联 总结 前言 本篇文章主要是笔者在学习和理解类与isa的关联关系时所写的笔记。 OC对象本质探索 在学习和理解类与isa…...
sql server 2019 将单用户状态修改为多用户状态
记录两种将单用户状态修改为多用户状态,我曾经成功过的方法,供参考 第一种方法 USE master; GO -- 终止所有活动连接 DECLARE kill_connections NVARCHAR(MAX) ; SELECT kill_connections KILL CAST(session_id AS NVARCHAR(10)) ; FROM sys.dm_ex…...
uniapp引入七鱼客服微信小程序SDK
小程序引入七鱼sdk 1.微信公众平台引入2.代码引入3.在pagesQiyu.vue初始化企业appKey4.跳转打开七鱼客服 1.微信公众平台引入 账号设置->第三方设置->添加插件->搜索 QIYUSDK ->添加 2.代码引入 在分包中引入插件 "subPackages": [{"root":…...

uniapp 常用 UI 组件库
1. uView UI 特点: 组件丰富:提供覆盖按钮、表单、图标、表格、导航、图表等场景的内置组件。跨平台支持:兼容 App、H5、小程序等多端。高度可定制:支持主题定制,组件样式灵活。实用工具类:提供时间、数组操…...

SCI写作开挂!把Grammarly语法修订嵌入word
详细分享如何把Grammarly嵌入Word,实现英文写作时的实时语法校改。 ①进入Grammarly官网 ②点击右上角的“Get Grammarly Its free”会直接跳转到注册或者登录界面,如果还没有账号先注册。 ③注册或登录后进入这个页面,点击“Support”。 ④…...
PostgreSQL 配置设置函数
PostgreSQL 配置设置函数 PostgreSQL 提供了一组配置设置函数(Configuration Settings Functions),用于查询和修改数据库服务器的运行时配置参数。这些函数为数据库管理员提供了动态管理数据库配置的能力,无需重启数据库服务。 …...

2025年5月-信息系统项目管理师高级-软考高项-成本计算题
成本计算题挣值分析、成本计算题如何学?1、PV,EV,AC需要理解,根据题目给出的一些个条件需要求得这些值;2、CV,SV,CPI,SPI公式必须记住,需要根据求得的值判断项目的进度和成本的执行情况&#x…...
力扣-236.二叉树的最近公共祖先
题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以…...
Go 中闭包的常见使用场景
在 Go 中,闭包(Closure) 是一个函数值,它引用了其定义时所在作用域中的变量。也就是说,闭包可以访问并修改外部作用域中的变量。 Go 中闭包的常见使用场景 ✅ 1. 封装状态(无须结构体) 闭包可…...

SpringBoot中的Lombok库
一)Lombok库简介 Lombok是一个Java库,通过注解的方式简化代码编写,减少样板代码。它能够自动生成getter、setter、构造函数、toString等方法,提升开发效率。Lombok只是一个编译阶段的库,因此不会影响程序的运行。 二…...
《Java 大视界——Java 大数据在智能电网分布式能源协同调度中的应用与挑战》
随着风电、光伏等分布式能源大规模接入电网,传统调度系统面临数据规模激增、响应延迟显著、多源异构数据融合困难等核心问题。本文聚焦Java生态下的大数据技术体系,深入探讨其在智能电网实时监测、负荷预测、资源优化配置等场景中的落地实践。通过分析Sp…...

AI中的MCP是什么?MCP的作用及未来方向预测 (使用go-zero 快速搭建MCP服务器)
AI是当下最热的风。在当今AI技术飞速发展的时代,AI的应用已经渗透到我们日常生活的方方面面。然而,随着AI系统的复杂性不断增加,如何让AI具备更强的自主性和灵活性成为了业界关注的焦点。这就引出了Model Context Protocol(MCP&am…...

mac安装cast
背景 pycharm本地运行脚本时提示cast没有安装 问题原因 脚本尝试调用cast命令(以太坊开发工具foundry中的子命令),但您的系统未安装该工具。 从日志可见,错误发生在通过sysutil.py执行shell命令时。 解决方案 方法1…...
conda更换清华源
1、概览 anaconda更换速度更快、更稳定的下载源,在linux环境测试通过。 2、conda源查看 在修改之前可以查看下现有conda源是什么,查看conda配置信息,如下: cat ~/.condarc 可以看到你的conda源,以我的conda源举例&am…...
[原创](现代Delphi 12指南):[macOS 64bit App开发]: 注意“回车换行“的跨平台使用.
[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…...
管理Oracle Data Guard的最佳实践
Oracle Data Guard的中文名字叫数据卫士,顾名思义,它是生产库的一道保障。所以管理Data Guard是DBA的一项重要工作之一,管理Data Guard时主要有以下几个注意点需要引起重视。 备份库的归档日志积压 一般情况下,生产库的归档日志是…...

一个简单点的js的h5页面实现地铁快跑的小游戏
以下是一个简化版的"地铁快跑"小游戏H5页面实现。这个游戏包含基本的角色跳跃、障碍物生成和计分系统,使用Canvas绘图技术实现。 完整源码 登录后复制 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-…...
作业帮Java后台开发面试题及参考答案(下)
final、finally、finalize 的区别是什么? final、finally和finalize是 Java 中三个功能完全不同的关键字,容易混淆,需从作用域、语法规则和实际用途等方面深入区分。 final的作用 final用于修饰类、方法和变量,体现 “不可变” 特性: 修饰类:表示该类不能被继承,例如 J…...

Hugging Face 中 LeRobot 使用的入门指南
相关源文件 .github/ISSUE_TEMPLATE/bug-report.yml .github/PULL_REQUEST_TEMPLATE.md README.md examples/1_load_lerobot_dataset.py examples/2_evaluate_pretrained_policy.py examples/3_train_policy.py lerobot/scripts/eval.py lerobot/scripts/train.py 本页面提供 …...

零基础入门Hadoop:IntelliJ IDEA远程连接服务器中Hadoop运行WordCount
今天我们来聊一聊大数据,作为一个Hadoop的新手,我也并不敢深入探讨复杂的底层原理。因此,这篇文章的重点更多是从实际操作和入门实践的角度出发,带领大家一起了解大数据应用的基本过程。我们将通过一个经典的案例——WordCounter&…...

HTML-3.3 表格布局(学校官网简易布局实例)
本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 系列文章目录 HTML-1.1 文本字体样式-字体设置、分割线、段落标签、段内回车以及特殊符号 HTML…...
Maven构建流程详解:如何正确管理微服务间的依赖关系-当依赖的模块更新后,我应该如何重新构建主项目
文章目录 一、前言二、Maven 常用命令一览三、典型场景说明四、正确的构建顺序正确做法是: 五、为什么不能只在 A 里执行 clean install?六、进阶推荐:使用多模块项目(Multi-module Project)七、总结 一、前言 在现代…...

遗传算法求解旅行商问题分析
目录 一、问题分析 二、实现步骤 1)初始化种群 2)计算适应度 3)选择操作 4)交叉操作 5)变异操作 三、求解结果 四、总结 本文通过一个经典的旅行商问题,详细阐述在实际问题中如何运用遗传算法来进…...