当前位置: 首页 > news >正文

【LLIE专题】通过通道选择归一化提升模型光照泛化能力

在这里插入图片描述

Generalized Lightness Adaptation with Channel Selective Normalization(ICCV,2023)

  • 专题介绍
  • 一、研究背景
  • 二、CSNorm方法
    • 2.1 总体方案
    • 2.2 详细方案
      • 2.2.1CSNorm
      • 2.2.2交替训练策略
      • 2.2.3如何添加亮度扰动
  • 三、实验结果
  • 四、总结

本文将对 Generalized Lightness Adaptation with Channel Selective Normalization,这篇暗光增强算法进行讲解。参考资料如下:

[1] CSNorm文章

[2]CSNorm 代码


专题介绍

在低光照环境下,传统成像设备往往因画面昏暗、细节丢失而受限。LLIE(低照度暗光增强)技术应运而生,它通过提升图像亮度、对比度,减少噪点并恢复色彩细节,让暗夜变得清晰可见。

LLIE技术从传统方法如直方图均衡化、Retinex模型等起步,近年来借助深度学习,尤其是卷积神经网络(CNN),GAN模型,扩散模型实现了质的飞跃。这些算法能自动学习图像特征,精准处理低光照图像,效果显著优于传统技术。

本专题将聚焦LLIE技术的核心原理、应用案例及最新进展,让我们一起见证LLIE如何点亮暗夜,开启视觉新视界!欢迎一起探讨交流!

系列文章如下
【1】ZeroDCE
【2】HVI
【3】CLIP-LIT
【4】GLARE
【5】Retinexformer
【6】SG-LLIE
【7】GPP-LLIE
【8】FusionNet
【9】EnligtenGAN
【10】PTG


此论文总体框架如下:
在这里插入图片描述

一、研究背景

  1. 亮度适应对图像处理的成功至关重要,可避免意外的视觉质量下降,涵盖低光图像增强、图像修图和逆色调映射等多个方面。现有方法通常在其训练过的亮度条件下表现良好,但在未知亮度条件下由于泛化能力有限而表现不佳。
  2. 为解决这一局限,本文提出了一种新颖的广义亮度适应算法,通过通道过滤设计扩展了传统的归一化技术,称为通道选择性归一化(CSNorm)。所提出的CSNorm有针对性地归一化与亮度相关通道的统计信息,同时保持其他通道不变,以提高特征的泛化能力。为优化CSNorm,本文提出了一种交替训练策略,可有效识别与亮度相关的通道
  3. 配备CSNorm的模型只需在一种亮度条件下训练,就能很好地泛化到未知的亮度条件。在多个基准数据集上的实验结果表明,CSNorm在增强现有亮度适应方法的泛化能力方面是有效的。

二、CSNorm方法

2.1 总体方案

动机

  1. 归一化具有消除亮度相关成分和减少图像间差异的良好特性。它可以有效地减轻亮度的影响,并出色地提取与亮度无关的信息,这使得网络能够学习到稳健的表征,并提高泛化能力。
  2. 但是归一化也会带来信息损失:作者进行了一项自重建任务,以说明归一化引起的信息损失。如下所示,分别训练了两个自动编码器网络,一个插入了实例归一化(Instance Normalization, IN)操作,另一个未插入,并计算了不同图像上的相对重建精度(即峰值信噪比,PSNR)。很明显,归一化破坏了网络的重建能力,实际上,就泛化能力而言,归一化造成的信息损失带来的危害超过了其潜在的好处。这促使作者设计CSNorm,以有选择地对通道进行归一化,同时兼顾亮度自适应的泛化能力和重建精度。
    在这里插入图片描述

方案

  1. 作者设计了CSNorm用于提升网络的泛化能力,它可作为即插即用模块应用于现有的亮度自适应网络。在CSNorm中,引入了一个可微门控模块(图b),以沿通道维度高效选择原始特征和归一化特征,然后将它们合并并传递到下一层。这样的门控模块实际上起到了通道选择功能。
  2. 此外,作者提出一种交替训练策略,以迫使门控模块选择与亮度相关的通道。在训练阶段,仅使用一个具有有限亮度条件的数据集,并配备作者提出的CSNorm的模型。一旦训练完成,该模型即可直接在其他未知的亮度条件下工作。
    在这里插入图片描述

2.2 详细方案

2.2.1CSNorm

CSNorm由两部分组成:一个实例级亮度归一化模块,用于消除与光照相关的信息;以及一个可微门控模块,用于自适应选择与光照相关的通道。
实例级亮度归一化模块
实例归一化(Instance Normalization,IN):给定一个形状为H×W×CH ×W ×CH×W×C的特征,实例归一化(IN)通过减去均值μ(x)\mu(x)μ(x),再除以标准差σ(x)\sigma(x)σ(x)来对x进行归一化,其表达式为
x′=IN(x)=γx−μ(x)σ(x)+β,(1)x'=IN(x)=\gamma \frac{x-\mu(x)}{\sigma(x)}+\beta,\quad(1)x=IN(x)=γσ(x)xμ(x)+β,(1)

其中μ(x)\mu(x)μ(x)σ(x)\sigma(x)σ(x)是针对每个通道和实例在空间维度上独立计算的,而γ,β∈RC\gamma, \beta \in \mathbb{R}^{C}γ,βRC是从数据中学习得到的可缩放参数。由于实例归一化(IN)可以减少实例之间的亮度差异,归一化后的特征x′x'x具有与亮度条件无关的鲁棒表示,使网络能够适应各种亮度场景并提高其泛化能力。

可微门控模块
可微门控模块输出一系列二进制指示符,以组合归一化后的通道和原始通道,其可表示为

xn+1=(1−g)⊙xn+g⊙xn′.(2)x_{n+1}=(1-g) \odot x_{n}+g \odot x_{n}' . (2)xn+1=(1g)xn+gxn.(2)

其中g表示跨通道维度的二进制指示符,而⊙\odot是逐通道相乘。门控操作通过二进制指示符激活或停用通道,以选择性地对通道进行归一化。
具体而言,将门控模块构建为如下表示

g=G(αx)=αx2αx2+ϵ,(3)g=G\left(\alpha_{x}\right)=\frac{\alpha_{x}^{2}}{\alpha_{x}^{2}+\epsilon},\quad(3)g=G(αx)=αx2+ϵαx2,(3)

其中αx∈RC\alpha_{x} \in \mathbb{R}^{C}αxRC是由特征x生成的中间向量,而ϵ是一个小的正数。具体来说,为了得到αx\alpha_{x}αx,首先采用自适应池化将x的空间大小缩小到单个像素,随后接几个带有ReLU激活函数的全连接层(图b)。 当出现αx=0\alpha_{x}=0αx=0时,显然会出现G(0)=0G(0)=0G(0)=0;当出现αx≠0\alpha_{x} ≠0αx=0时,由于ϵ足够小,可以推断出G(αx)≈1G(\alpha_{x}) ≈1G(αx)1。该函数将αx\alpha_{x}αx转换为接近1或0的值,从而形成一个无需额外手动阈值设计的开关门。值得注意的是,由于该函数g的输出很容易为1(当αx≠0\alpha_{x} ≠0αx=0时),门控模块很容易陷入一种模式,即保持所有通道不变以保持重建精度。因此,作者让g与公式2中归一化后的通道x′x'x直接相乘,促使网络倾向于使用归一化后的通道,从而在模型的泛化能力与重建特征的判别能力之间保持良好的平衡。

2.2.2交替训练策略

该策略背后的基本原理是,通过轻微扰动输入图像的亮度,迫使CSNorm定位并滤除与亮度相关的通道,从而在原始图像和扰动图像上都实现最佳性能
为了优化网络,根据参数是否属于CSNorm将其分为两组,并使用不同的损失函数来更新它们,如图c所示。

  • 在第一步中,输入原始图像,并通过最小化损失函数来更新CSNorm之外的参数,其中o^1\hat{o}_{1}o^1是网络的输出图像,而ogto_{g t}ogt是真实图像。通过这样做,网络基本的亮度适应能力得以保持,并且所有通道都保持其自然状态。

L1=∣o^1−ogt∣2,(4)\mathcal{L}_{1}=\left|\hat{o}_{1}-o_{g t}\right|_{2}, \quad(4)L1=o^1ogt2,(4)

  • 在第二步中,对输入图像的亮度进行扰动,并固定CSNorm之外的参数。换句话说,仅通过最小化损失函数来更新CSNorm中的参数。其中o^2\hat{o}_{2}o^2是输出,A表示频域中的幅度信息。这使得CSNorm能够自适应地选择与亮度相关的通道,以保持在扰动图像上的性能。具体而言,由于亮度与频域中的幅度相关,在公式5中添加幅度损失∣A(o^2)−A(ogt)∣2|A(\hat{o}_{2})-A(o_{g t})|_{2}A(o^2)A(ogt)2,以使网络能够更多地关注亮度信息并有效地选择与亮度相关的通道。

L2=∣o^2−ogt∣2+∣A(o^2)−A(ogt)∣2,(5)\mathcal{L}_{2}=\left|\hat{o}_{2}-o_{g t}\right|_{2}+\left|\mathcal{A}\left(\hat{o}_{2}\right)-\mathcal{A}\left(o_{g t}\right)\right|_{2},\quad(5)L2=o^2ogt2+A(o^2)A(ogt)2,(5)

以上两个过程交替训练。

2.2.3如何添加亮度扰动

在这里插入图片描述
扰动应避免干扰其他图像成分,如结构信息。为实现这一点,作者提出一种基于频率的扰动方案,该方案对两幅图像的幅度进行线性插值,因为幅度信息包含更多的亮度信息,可防止增强伪影。
以低光增强任务为例,作者将低光图像和正常光图像定义为olo_{l}ol以及 onormo_{norm}onorm ,及其傅里叶表示为 OlO_{l}OlOnormO_{norm }Onorm。将 OlO_{l}OlOnormO_{norm }Onorm的幅度分量线性组合为

A(O^l)=λA(Ol)+(1−λ)A(Onorm),(7)\mathcal{A}\left(\hat{O}_{l}\right)=\lambda \mathcal{A}\left(O_{l}\right)+(1-\lambda) \mathcal{A}\left(O_{norm }\right), \quad(7)A(O^l)=λA(Ol)+(1λ)A(Onorm),(7)

其中 A 表示幅度信息,λ∈[0,1]\lambda \in[0,1]λ[0,1]是随机采样的。然后,通过逆傅里叶变换 F−1F^{-1}F1 将扰动图像 o^\hat{o}o^重建为 o^=F−1(A(O^l),P(Ol))\hat{o}=F^{-1}(A(\hat{O}_{l}), P(O_{l}))o^=F1(A(O^l),P(Ol)),其中 P 是相位信息。

三、实验结果

将SID 、DRBN 和NAFNet 作为基础网络,并将CSNorm集成到其中。使用峰值信噪比(PSNR)和结构相似性指数度量(SSIM)作为评估指标。在合成场景和真实场景中进行实验。

  1. 对于合成场景,模拟两种输入亮度条件,即interp:输入图像由原始低光照图像和真实图像插值得到(权重为0.5),以及scale:输入图像x按照x′=Λxηx'=\Lambda x^{\eta}x=Λxηη=1.1\eta=1.1η=1.1Λ=1.2\Lambda=1.2Λ=1.2)进行处理。在这里插入图片描述
    可以看出在未知亮度条件下添加了CSNorm后网络泛化能力得到增强。

  2. 对于真实场景,使用LOL 和huawei进行交叉验证。模型在一个数据集上训练,并在另一个数据集上测试。在这里插入图片描述表2展示了不同数据集上的泛化性能。可以看出,以往的方法往往会对训练数据集过拟合,泛化能力较差。CSNorm提高了所有基础网络的性能,极大地增强了它们在未知亮度条件下的泛化能力。

  3. 下图中展示了定性结果。尽管训练图像和测试图像之间存在较大差异(两个数据集是在不同亮度下分别采集的),但配备了CSNorm的基础网络在未知亮度条件下仍能产生视觉效果良好的结果。
    在这里插入图片描述

四、总结

本文围绕亮度适应的泛化问题展开研究,提出了通道选择性归一化(CSNorm)方法,旨在提升现有亮度适应模型在未知亮度条件下的泛化能力,同时保持其在已知条件下的重建准确性。


感谢阅读,欢迎留言或私信,一起探讨和交流。
如果对你有帮助的话,也希望可以给博主点一个关注,感谢。


文章转载自:
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://www.dtcms.com/a/281610.html

相关文章:

  • MySQL 8.0 OCP 1Z0-908 题目解析(25)
  • 【QT】实现应用程序启动画面
  • 笔试——Day9
  • linux kernel的错误编码指针详细介绍
  • 【深度学习新浪潮】什么是任意倍率超分?
  • 知识库信息切片,AI降本增效的利刃
  • Unity灯光面板环境设置
  • [Python] -实用技巧6-Python中with语句和上下文管理器解析
  • 身份核验自动化-姓名身份证号二要素核验接口-API实名验证
  • 计算机系统方向可发会议/期刊参考时间
  • CF1916D Mathematical Problem 题解
  • 数据结构——顺序表的相关操作
  • TypeScript之旅
  • 读取ubuntu的磁盘分区表与超级块
  • 万字长文深度解析:AI搜索范式背后的四大核心模块
  • Typescript 泛型
  • 智慧跳绳全方案:三模无线+姿态感知,低功耗高精度芯片选型指南OM6626/SI24R2E
  • 【flex布局】
  • Python实现按数字命名合并文本文件
  • 推客小程序开发全景指南:从商业模式到用户体验的完整方法论
  • 前端开发数据缓存方案详解
  • Spring Boot全局异常处理:打造坚如磐石的应用防线
  • C++ - 仿 RabbitMQ 实现消息队列--muduo快速上手
  • 【每日刷题】螺旋矩阵
  • 【Python】定时器快速实现
  • 并发编程-volatile
  • Python学习之路(十二)-开发和优化处理大数据量接口
  • git基础命令
  • Redis学习系列之——Redis Stack 拓展功能
  • 为什么市场上电池供电的LoRa DTU比较少?