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}}

\mathbf{I}\odot\mathbf{\bar{L}}=\mathbf{R}+\mathbf{R}\odot(\mathbf{\hat{L}}\odot\mathbf{\bar{L}})+(\mathbf{\hat{R}}\odot(\mathbf{L}+\mathbf{\hat{L}}))\odot\mathbf{\bar{L}}

\widehat{R} \odot (L+\widehat{L} ):暗場景中的噪聲和偽影

R \odot (\widehat{L}+ \overline{L}):表示由light-up過程引起的過曝光/曝光不足和顏色失真

\mathbf{I}_{lu}=\mathbf{I}\odot\mathbf{\bar{L}}=\mathbf{R}+\mathbf{C}

ORF設計如公式(5)所示:

(\mathbf{I}_{lu},\mathbf{F}_{lu})=\mathcal{E}(\mathbf{I},\mathbf{L}_{p}),\quad\mathbf{I}_{en}=\mathcal{R}(\mathbf{I}_{lu},\mathbf{F}_{lu})

  • \varepsilon:光照估計(illumination estimator)
  • \Re:corruption restorer
  • L_{p} \in \mathbb{R}^{H \times W}:I的光照先驗圖,L_{p}=main_{c}(I)main_{c}表示沿著通道維度計算每個像素的平均值。
  • F_{lu} \in \mathbb{R}^{H \times W \times C}:light-up feature
  • I_{en} \in \mathbb{R}^{H \times W \times C}:增強后的圖

②. 光照引導Transformer(IGT)

目標:修復初步增強圖像I_{lu}中的噪聲、偽影和曝光問題,同時建模長距離依賴。

網絡結構(圖2a-ii)

IGT采用U型架構(類似U-Net),包含下采樣和上采樣分支,通過跳躍連接保留細節。

  • 輸入:初步增強圖像?I_{lu}?和光照特征?F_{lu}?。

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

? ? ? ? 降采樣分支中,經過一個步長為2的3×3的卷積、一個IGAB、一個步長為2的4×4卷積、兩個IGAB和一個步長為2的4×4的卷積層生成分層特征。經過兩個IGBA
? ? ? ? 上采樣分支是一個對稱結構,用步長為2的反卷積操作deconv2×2來升級特征。跳躍連接用來減輕下采樣分支帶來的信息損失。上采樣分支輸出一個殘差圖像,然后增強的圖像

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.pswp.cn/diannao/75837.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/75837.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/75837.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

后端——AOP異步日志

需求分析 在SpringBoot系統中,一般會對訪問系統的請求做日志記錄的需求,確保系統的安全維護以及查看接口的調用情況,可以使用AOP對controller層的接口進行增強,作日志記錄。日志保存在數據庫當中,為了避免影響接口的響…

flink廣播算子Broadcast

文章目錄 一、Broadcast二、代碼示例三.或者第二種(只讀取一個csv文件到廣播內存中)提示:以下是本篇文章正文內容,下面案例可供參考 一、Broadcast 為了關聯一個非廣播流(keyed 或者 non-keyed)與一個廣播流(BroadcastStream),我們可以調用非廣播流的方法 connect(),…

Redis 和 MySQL雙寫一致性的更新策略有哪些?常見面試題深度解答。

目錄 一. 業務數據查詢,更新順序簡要分析 二. 更新數據庫、查詢數據庫、更新緩存、查詢緩存耗時對比 2.1 更新數據庫(最慢) 2.2 查詢數據庫(較慢) 2.3 更新緩存(次快) 2.4 查詢緩存&#…

SRT協議

SRT(Secure Reliable Transport)是一種開源的視頻傳輸協議,專為高丟包、高延遲網絡環境設計,結合了UDP的低延遲和TCP的可靠性,廣泛應用于直播、遠程制作、視頻會議等場景。 定位:SRT協議的官方C/C實現庫&am…

“征服HTML引號惡魔:“完全解析手冊”!!!(quot;表示雙引號)

&#x1f6a8;&#x1f4e2; "征服HTML引號惡魔&#xff1a;“完全解析手冊” &#x1f4e2;&#x1f6a8; &#x1f3af; 博客引言&#xff1a;當引號變成"惡魔" &#x1f631; 是否遇到過這種情況&#xff1a; 寫HTML時滿心歡喜輸入<div title"他…

npm install 卡在創建項目:sill idealTree buildDeps

參考&#xff1a; https://blog.csdn.net/PengXing_Huang/article/details/136460133 或者再執行 npm install -g cnpm --registryhttps://registry.npm.taobao.org 或者換梯子

c++中cpp文件從編譯到執行的過程

C 文件從編寫到執行的過程可以分為幾個主要階段&#xff1a;編寫代碼、預處理、編譯、匯編、鏈接和運行。以下是每個階段的詳細說明&#xff1a; 1. 編寫代碼 這是整個過程的起點。程序員使用文本編輯器&#xff08;如 VSCode、Sublime Text 或其他 IDE&#xff09;編寫 C 源…

PROE 與 STL 格式轉換:開啟 3D 打印及多元應用的大門

在 3D 設計與制造的復雜生態中&#xff0c;將 PROE 格式轉換為 STL 格式絕非無端之舉&#xff0c;而是有著深厚且多元的現實需求作為支撐。 一、文件格式介紹? &#xff08;一&#xff09;PROE 格式? PROE 作為一款參數化設計軟件&#xff0c;采用基于特征的參數化建模技術…

開發中后端返回下劃線數據,要不要統一轉駝峰?

先說結論。看情況&#xff01;&#xff01;&#xff01;&#xff01; 前端 主要用 JS/TS 建議后端返回 camelCase&#xff0c;減少前端轉換成本。后端 主要是 Python/Go 建議保持 snake_case&#xff0c;前端做轉換。但是團隊統一風格最重要&#xff01;如果統一返回駝峰就駝峰…

docker pull時報錯:https://registry-1.docker.io/v2/

原文&#xff1a;https://www.cnblogs.com/sdgtxuyong/p/18647915 https://www.cnblogs.com/OneSeting/p/18532166 docker 換源&#xff0c;解決連接不上的問題。 編輯以下文件&#xff0c;不存在則創建&#xff1a; vim /etc/docker/daemon.json {"registry-mirrors&qu…

Pytorch學習筆記(十二)Learning PyTorch - NLP from Scratch

這篇博客瞄準的是 pytorch 官方教程中 Learning PyTorch 章節的 NLP from Scratch 部分。 官網鏈接&#xff1a;https://pytorch.org/tutorials/intermediate/nlp_from_scratch_index.html 完整網盤鏈接: https://pan.baidu.com/s/1L9PVZ-KRDGVER-AJnXOvlQ?pwdaa2m 提取碼: …

基礎算法02——冒泡排序(Bubble Sort)

冒泡排序&#xff08;Bubble Sort&#xff09; 冒泡排序&#xff1a;是一種簡單的排序算法&#xff0c;其基本思想是通過重復遍歷要排序的列表&#xff0c;比較相鄰的元素&#xff0c;并在必要時&#xff08;即前面的數比后面的數大的時候&#xff09;交換它們的位置&#xff…

RestTemplate遠程調用接口方式

1.Post(body空參) 也就是說需要給一個空的json 代碼: String getDeviceUrl this.MOVABLE_URL "detected-data/getMachineLists"; // 遠程調用 RestTemplate restTemplate new RestTemplate(); restTemplate.getMessageConverters().set(1,new StringHttpMessageC…

ar頭顯和眼鏡圖像特效處理

使用一個線程從攝像頭或者其他設備循環讀取圖像數據寫入鏈表&#xff0c;另一個線程從鏈表循環讀取數據并做相應的特效處理&#xff0c;由于寫入的速度比讀取的快&#xff0c;最終必然會因為寫入過快導致線程讀寫一幀而引發沖突和數據幀正常數據幀被覆蓋。最好使用共享內存&…

mysql--socket報錯

錯誤原因分析 MySQL 服務未運行&#xff08;最常見原因&#xff09; 錯誤中的 (2) 表示 “No such file or directory”&#xff0c;即 /tmp/mysql.sock 不存在這通常意味著 MySQL 服務器根本沒有啟動 socket 文件路徑不匹配 客戶端嘗試連接 /tmp/mysql.sock但 MySQL 服務器可…

labview加載matlab數據時報錯提示:對象引用句柄無效。

1. labview報錯提示 labview加載mat數據時報錯提示&#xff1a;對象引用句柄無效。返回該引用句柄的節點可能遇到錯誤&#xff0c;并沒有返回有效的引用句柄。該引用句柄所指的存儲可能在執行調用之前已關閉。報錯提示如下&#xff1a; 這是由于labview缺少matlab MathWorks導…

面試計算機操作系統解析(一中)

判斷 1. 一般來說&#xff0c;先進先出頁面置換算法比最近最少使用頁面置換算法有較少的缺頁率。&#xff08;?&#xff09; 正確答案&#xff1a;錯誤解釋&#xff1a;FIFO&#xff08;先進先出&#xff09;頁面置換算法可能導致“Belady異常”&#xff0c;即頁面數增加反而…

如何防御TCP洪泛攻擊

TCP洪泛攻擊&#xff08;TCP Flood Attack&#xff09;是一種常見的分布式拒絕服務&#xff08;DDoS&#xff09;攻擊手段&#xff0c;以下是其原理、攻擊方式和危害的詳細介紹&#xff1a; 定義與原理 TCP洪泛攻擊利用了TCP協議的三次握手過程。在正常的TCP連接建立過程中&a…

20250330 Pyflink with Paimon

1. 數據湖 2. 本地安裝Pyflink和Paimon 必須安裝Python 3.11 Pip install python -m pip install apache-flink1.20.1 需要手動加入這兩個jar 測試代碼&#xff1a; import argparse import logging import sys import timefrom pyflink.common import Row from pyflink.tab…

-PHP 應用SQL 盲注布爾回顯延時判斷報錯處理增刪改查方式

#PHP-MYSQL-SQL 操作 - 增刪改查 1 、功能&#xff1a;數據查詢(對數據感興趣&#xff09; 查詢&#xff1a; SELECT * FROM news where id$id 2 、功能&#xff1a;新增用戶&#xff0c;添加新聞等&#xff08;對操作的結果感興趣&#xff09; 增加&#xff1a; INSERT INT…