Retinexformer:基于 Retinex 的单阶段 Transformer 低光照图像增强方法

        开头发点牢骚:本来做的好好都都要中期了,导师怎么突然给我换题目啊。真是绷不住了......又要从头开始学了,唉!

原论文链接:Retinexformer: One-stage Retinex-based Transformer for Low-light Image Enhancement

       低光照图像增强算法多基于Retinex理论,但传统模型忽略暗区噪声和光照过程中引入的失真,且现有方法依赖多阶段CNN训练,难以建模长距离依赖,效率低下。文章搭建了①单阶段Retinex框架(ORF),可以通过光照估计即直接预测光照提升图(而非传统光照图),避免数值不稳定问题。同时,还能做到噪声修复,端到端联合优化光照增强与失真修复。②光照引导Transformer(IGT):IG-MSA自注意力:利用光照特征动态引导不同亮度区域的交互,降低计算复杂度(线性复杂度)。

现有技术分析:

  • 传统Retinex方法:

 Retinex理论认为图像可分解为 反射分量(物体固有属性,如颜色和纹理)和 光照分量(环境光照)。增强时,通过调整光照分量(如提升暗区亮度)来改善视觉效果。

具体步骤为:①估计光照分量(通常通过高斯滤波或优化方法)。

                      ②计算反射分量:R=I/L(图像除以光照图)。

                      ③对反射分量进行对比度增强或直方图拉伸。

缺点:假设图像无噪声且光照均匀,导致增强后出现噪声放大或颜色失真。

  • 基于CNN的方法

利用卷积神经网络(CNN)建模Retinex分解过程,通常分阶段处理光照和反射分量。依赖多阶段训练流程,难以捕捉长距离依赖关系。

具体步骤:①分解网络:输入低光图像,输出反射图 R 和光照图 L。

                  ②反射去噪网络:对 R 进行去噪(如使用U-Net)。

                  ③光照调整网络:调整 L 以生成增强后的光照图。

                  ④融合阶段:将调整后的 R 和 L 融合为最终图像。

  • Transformer方法

Transformer通过自注意力机制捕捉全局依赖,理论上适合建模图像中的长距离关系。

步骤:①将图像分割为块(Patch),展平为序列。

           ②计算每个块之间的注意力权重(Query-Key-Value)。

           ③加权聚合Value生成输出特征。

全局自注意力计算复杂度高(与图像尺寸平方成正比),难以直接应用于高分辨率图像。

论文方案创新点:

技术方案与创新点

单阶段Retinex框架(ORF)

  • 修正Retinex模型:引入扰动项(\hat{\mathbf{R}}\tilde{\mathbf{L}})建模噪声和失真,更贴合真实场景。
  • 光照估计与增强:直接预测“光照提升图” \tilde{\mathbf{L}}(而非传统光照图L),避免除法操作带来的数值不稳定问题。
  • 端到端训练:将光照估计和图像修复整合到单阶段流程,简化训练过程。

光照引导Transformer(IGT)

  • IG-MSA自注意力机制:利用光照特征引导不同光照区域的交互,降低计算复杂度。
  • 复杂度优化:将自注意力计算复杂度从 O(HW^2) 降至 O(HW) ,支持多尺度特征处理。
  • U型架构设计:结合下采样和上采样分支,通过跳跃连接保留细节信息。

方法

① 单阶段Retinex框架(ORF)

a. 修正Retinex模型
  • 传统模型:\mathbf{I}=\mathbf{R}\odot\mathbf{L}(图像=反射分量×光照分量)。

  • 引入扰动项:                          \mathbf{I}=(\mathbf{R}+\hat{\mathbf{R}})\odot(\mathbf{L}+\tilde{\mathbf{L}})

  • 其中:

                 \hat{\mathbf{R}}:暗区噪声和伪影(如高ISO噪声)。

                 \tilde{\mathbf{L}}:光照估计误差(如过曝光或颜色失真)。

在Retinex理论中,符号  表示 逐元素乘法(Element-wise Multiplication),即两个矩阵(或张量)中对应位置的元素相乘。
例如,若图像大小为 H×W×3,则每个像素点 (i,j) 的RGB值由反射分量R(i,j) 和光照分量 L(i,j) 的乘积决定。

传统Retinex模型:I = R ⊙ L 

Retinex理论认为,人眼感知的图像(I)由两部分组成:

  1. 反射分量  Reflectance

    • 表示物体的固有属性,如颜色、纹理、材质(如红色苹果的红色是反射属性)。

    • 特点:与光照无关,是“理想”的无光照影响的图像。

  2. 光照分量  Illumination

    • 表示环境光照的分布(如阳光、灯光的方向和强度)。

    • 特点:通常假设是平滑的(低频分量),且取值范围在 [0,1]。

数学表达式:                               \mathbf{I}(i,j,c)=\mathbf{R}(i,j,c)\cdot\mathbf{L}(i,j)

  • 图像生成过程:每个像素点 (i,j) 的RGB值(通道 c)等于反射分量 R(i,j,c) 乘以光照分量 L(i,j)。

  • 物理意义:在光照强(L 值大)的区域,反射分量被“照亮”,反之在暗区(L 值小)则显得暗淡。

b. 光照估计与初步增强
  • 输入:低光图像 I 和光照先验图 L_p(通道均值)。

  • 网络结构(图2a-i):

    1. 特征融合:将 I 和 L_p​ 拼接后通过1×1 卷积融合。

    2. 区域交互建模:使用深度可分离 9×9 卷积,捕捉不同光照区域的上下文信息,生成光照特征 F_{lu}

    3. 光照提升图生成:通过 1×1 卷积从 Flu​ 生成三通道光照提升图 \tilde{\mathbf{L}}(RGB通道独立建模非线性光照变化)。

    4. 初步增强:\mathbf{I}_{lu}=\mathbf{I}\odot\tilde{\mathbf{L}}

关键改进

  • 直接预测\tilde{\mathbf{L}}而非传统光照图 L,避免除法操作(如 I/L)导致的数值不稳定。

  • 三通道 \tilde{\mathbf{L}} 提升颜色增强能力(传统方法多为单通道)。

②. 光照引导Transformer(IGT)

目标:修复初步增强图像I_{lu}中的噪声、伪影和曝光问题,同时建模长距离依赖。

网络结构(图2a-ii)

IGT采用U型架构(类似U-Net),包含下采样和上采样分支,通过跳跃连接保留细节。

  • 输入:初步增强图像 I_{lu} 和光照特征 F_{lu}​。

  • 核心模块:Illumination-Guided Attention Block (IGAB)。

IGAB块详解(图2b)

每个IGAB块包含:

  1. 层归一化(LayerNorm):稳定训练。

  2. 光照引导自注意力(IG-MSA):核心创新模块。

  3. 前馈网络(FFN):增强非线性表达能力。

IG-MSA机制(图2c)

a. 传统自注意力问题
全局计算所有像素对的注意力权重,复杂度为 O(HW\times ×HW),无法处理高分辨率图像。

b. IG-MSA的改进

  • Token化:将输入特征图 \mathbf{F}_{in}\in\mathbb{R}^{H\times W\times C} 展平为 HW\times ×C 的序列。

  • 多头拆分:将序列按通道分为 k 个头。\mathbf{X}=[\mathbf{X}_{1},\mathbf{X}_{2},\cdots,\mathbf{X}_{k}]

  • 光照特征引导:

    1. 将光照特征 F_{lu} 同样展平并拆分为 k 个头。\mathbf{Y}=[\mathbf{Y}_1,\mathbf{Y}_2,\cdots,\mathbf{Y}_k]

    2. 注意力计算:

      \mathrm{Attention}(\mathbf{Q}_i,\mathbf{K}_i,\mathbf{V}_i,\mathbf{Y}_i)=(\mathbf{Y}_i\odot\mathbf{V}_i)\mathrm{softmax}\left(\frac{\mathbf{K}_i^T\mathbf{Q}_i}{\alpha_i}\right)

      其中 Y_i是光照特征的第 i 个头,用于调制注意力权重。

c. 复杂度优化

  • 传统全局自注意力:复杂度 O(HW^2)

  • IG-MSA:复杂度O(HW)(公式10),支持多尺度特征处理。

                    \begin{aligned} \mathcal{O}(\mathrm{IG-MSA}) & =k\cdot[d_{k}\cdot(d_{k}\cdot HW)+HW\cdot(d_{k}\cdot d_{k})], \\ & =2HWkd_{k}^{2}=2HWk(\frac{C}{k})^{2}=\frac{2HWC^{2}}{k}. \end{aligned}

核心流程

  1. 光照估计(E模块)

    • 输入低光图像II和光照先验图L_p(通道均值)。

    • 通过深度可分离卷积建模不同光照区域的交互,生成光照提升图\tilde{\mathbf{L}}和初步增强图像I_{lu}

  2. 图像修复(R模块,即IGT)

    • 输入I_{lu}​和光照特征F_{lu}

    • 通过光照引导的自注意力(IG-MSA)修复噪声、伪影、曝光问题,输出残差图Ire​。

    • 最终增强图像:\mathbf{I}_{en}=\mathbf{I}_{lu}+\mathbf{I}_{re}

实验结果

 略

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

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

相关文章

游戏引擎学习第182天

回顾和今天的计划 昨天的进展令人惊喜,原本的调试系统已经被一个新的系统完全替换,新系统不仅能完成原有的所有功能,还能捕获完整的调试信息,包括时间戳等关键数据。这次的替换非常顺利,效果很好。 今天的重点是在此基…

关于我对接了deepseek之后部署到本地将数据存储到mysql的过程

写在前面 今天写一下使用nodejs作为服务端,vue作为客户端,mysql的数据库,对接deepseek的全过程,要实现一个很简单的效果就是,可以自由的询问,然后可以将询问的过程存储到mysql的数据库中。 文档对接 deeps…

Git 提示 “LF will be replaced by CRLF“ 的原因及解决方案

遇到的问题: warning: in the working copy of build/build.js, LF will be replaced by CRLF the next time Git touches it warning: in the working copy of build/check-versions.js, LF will be replaced by CRLF the next time Git touches it warning: in the worki…

Axure设计之中继器表格——拖动列调整位置教程(中继器)

一、原理介绍 实现表格列的拖动排序,主要依赖Axure的动态面板和中继器两大核心功能: 动态面板交互控制 将表格的列标题封装在动态面板中,通过拖拽事件(开始、移动、结束)捕捉用户操作 在拖拽过程中实时计算鼠标位置&…

IDEA工具使用之启动项目失败且无日志打印

IDEA工具使用之启动项目失败且无日志打印 问题描述原因分析解决方案方案一:使用类路径缩短方案(推荐)方案二:修改启动配置 总结 问题描述 概述 新拉取的项目,基于IDEA本地调试启动失败,控制台也没有跳转打…

GC overhead limit exceeded---Java 虚拟机 (JVM) 在进行垃圾回收内存量非常少解决

背景: 我正在跑一个数据处理较为复杂的程序。然后调试了很多遍,出现了GC问题,如下图bug. GC overhead limit exceeded-这个bug错误通常表示 Java 虚拟机 (JVM) 在进行垃圾回收时花费了过多的时间,并且回收的内存量非常少。…

SAP GUI Script for C# SAP脚本开发快速指南与默认主题问题

SAP GUI Script for C# 快速指南 SAP 脚本的快速使用与设置. 解决使用SAP脚本执行后,默认打开的SAP是经典主题的问题 1. 解决默认主题问题 如果您使用的是SAP GUI 740,并遇到无法打开对话框的问题,请先将主题设置为经典主题(Classic Theme),应用更改后重新打开SAP GUI …

测试用例`

1.什么是测试用例 测试⽤例(Test Case)是为了实施测试⽽向被测试的系统提供的⼀组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素. 2.测试用例的万能公式(重点) 设计测试⽤例的万能公式: 功能测试界…

【深度学习】【目标检测】【OnnxRuntime】【C++】YOLOV5模型部署

【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV5模型部署 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV5模型部署前言Windows平台搭建依赖环境模型转换--pytorch转onnxONNXRuntime推…

Qt:QWebEngineView显示网页失败

今天在新电脑搭建qt开发环境,在运行程序时发现通过QWebEngineView显示的html失败,同样的代码在旧电脑上没有这个问题 分析过程 (1)qt出现如下信息提示 [21296:12076:0325/161831.084:ERROR:platform_handle_in_transit.cc(34)] …

第十六届蓝桥杯模拟二(串口通信)

由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹,code中添加fun.…

uni-app页面怎么设计更美观

顶部 页面最顶部要获取到手机设备状态栏的高度&#xff0c;避免与状态栏重叠或者被状态栏挡住 // 这是最顶部的父级容器 <view :style"{ paddingTop: ${statusBarHeight extraPadding}px }">.... </view> export default {data() {return {statusBarH…

uniapp超简单ios截屏和上传app store构建版本方法

​ 假如使用windows开发ios的应用&#xff0c;上架的时候&#xff0c;你会发现&#xff0c;上架需要ios应用多种尺寸的ios设备的截图&#xff0c;和需要xcode等工具将打包好的ipa文件上传到app store的构建版本。 大部分情况下&#xff0c;我们的公司都没有这么多款ios设备来…

搜广推校招面经六十

soul推荐算法 一、word2vec原理 参考一篇文章入门Word2Vec 二、word2vec正负采样怎么做的、word2vec采用的loss和原理 见【搜广推校招面经四、搜广推校招面经五十二、搜广推校招面经五十七】 不太理解为啥问这么多word2vec&#xff0c;索性直接整理一遍。 三、多路召回融合…

R语言——循环

参考资料&#xff1a;学习R 在R中有三种循环&#xff1a;repeat、while和for。虽然向量化意味着我们可能并不需要大量使用它们&#xff0c;但在需要重复执行代码时&#xff0c;它们是非常有用的。 1、重复循环 R中最容易掌握的循环是repeat。它所做的事情就是反复地执行代码&a…

nginx代理前端请求

一&#xff0c;项目配置 我在 ip 为 192.168.31.177 的机器上使用 vue3 开发前端项目&#xff0c;项目中使用 axios 调用后端接口。 这是 axios 的配置&#xff1a; import axios from axios;const request axios.create({baseURL: http://192.168.31.177:8001,// 设置请求…

老外讲解用Delphi 12.3作web

老外Delphi WebStencils系列教程&#xff0c;从项目入门到发布部署&#xff0c;讲的非常详细&#xff0c;欢迎观看https://www.bilibili.com/video/BV16LZVYpETK

2.Excel :快速填充和拆分重组

一 案例1&#xff1a;快速填充 电子邮件中包含每个人的人名&#xff0c;现在要提取电子邮件中的姓名到名字列。 方法1&#xff1a;将 Nancy 复制到单元格后&#xff0c;邮件会高亮&#xff0c;然后输入A的时候系统就会知道提取名字了。 补充&#xff1a;如果第三个位置输入错误…

股票App开发第一步:如何免费快速的获取股票数据(如何免费获取金融数据)

文章目录 🌱 入坑指南:Python 如何免费获取股市数据!🌴 演示环境 🌴📒 Python 炒股数据,免费午餐,快来尝尝!📒💡 全面又亲民:数据界的“瑞士军刀”!🕰️ 专注历史:老股民的“时光机”!🌟 真正免费:开源社区的“宝藏”!🎣 实在不行,咱就自己捞!⚠…

联核防爆无人叉车:高危环境中的安全搬运守护者

联核防爆AGV无人叉车是专为易燃易爆环境设计的智能搬运设备&#xff0c;其特点、功能与应用场景均围绕“安全”与“智能”核心展开&#xff1a;联核科技官网-AGV叉车十大品牌-无人叉车厂家-自动化叉车-智能搬运码垛机器人-智能叉车系统解决方案专家 一、核心特点 防爆设计电气…