SwinIR: Image Restoration Using Swin Transformer(ICCV 2021)含代碼復現

目錄

一、Introduction

1 Motivation

2 Contribution

二、原理分析

1 Network Architecture

1)Shallow feature extraction

2) deep feature extraction

3) image reconsruction modules

4) loss function

2 Residual Swin Transformer Block

三、實驗結果

1 經典圖像超分辨率(Classical image SR)

2 輕量級圖像超分辨率(Lightweight image SR)

3 Real-world image SR

四、小結

五、鏈接及代碼


一、Introduction

1 Motivation

在圖像超分辨率、圖像去噪、壓縮等圖像修復(Image restoration)任務中,卷積神經網絡目前仍然是主流。但卷積神經網絡有以下缺陷:

(1)圖像和卷積核之間的交互是與內容無關的;

(2)在局部處理的原則下,卷積對于長距離依賴建模是無效的。

作為卷積的一個替代操作,Transformer設計了自注意力機制來捕捉全局信息,但視覺Transformer因為需要劃分patch,因此具有以下兩個缺點:

(1)邊界像素不能利用patch之外的鄰近像素進行圖像恢復;

(2)恢復后的圖像可能會在每個patch周圍引入邊界偽影,這個問題能夠通過patch overlapping緩解,但會增加計算量。

Swin Transformer結合了卷積和Transformer的優勢,因此本文基于Swin Transformer提出了一種圖像修復模型SwinIR。

2 Contribution

和現有的模型相比,SwinIR具有更少的參數,且取得了更好的效果。

Recently, Swin Transformer [56] has shown great promise as it integrates the advantages of both CNN and Transformer. On the one hand, it has the advantage of CNN to process image with large size due to the local attention mechanism. On the other hand, it has the advantage of Transformer to model long-range dependency with the shifted window scheme.

二、原理分析

1 Network Architecture

SwinIR的整體結構如下圖所示,可以分為3個部分:shallow feature extraction、deep feature extraction、highquality (HQ) image reconstruction modules。對所有的復原任務采用相同的feature extraction modules,針對不同的任務采用不同的reconstruction modules。

1)Shallow feature extraction

首先用一個3x3卷積HSF提取淺層特征F0

將提取到的淺層特征F0,使用深層特征提取模塊HDF進一步提取特征。深層特征提取模塊由K個residual Swin Transformer blocks(RSTB)和一個3×3卷積構成。

2) deep feature extraction

每個RSTB的輸出F1,F2,FK,以及輸出的深層特征FDK如式(3)所示,式中HRSTBi表示第i個RSTB模塊,HCONV表示最終的卷積層。卷積層能夠將卷積的歸納偏置(inductive bias)引入基于Transformer的網絡,為后續淺層、深層特征的融合奠定基礎。

3) image reconsruction modules

以圖像超分辨率為例,通過融合淺層特征F0和深層特征FDK來重建高質量圖片IRHQ,式中HREC為重建模塊。

淺層特征F0主要包含低頻信息,而深層特征則專注于恢復丟失的高頻信息。SwinIR采用一個長距離連接,將低頻信息直接傳輸給重建模塊,可以幫助深度特征提取模塊專注于高頻信息,穩定訓練。在圖像超分辨率任務中,通過sub-pixel convolution layer將特征上采樣,實現重建。在其他任務中,則是采用一個帶有殘差的卷積操作,如公式(5)所示。

4) loss function

圖像超分辨率任務采用L1損失,通過優化SwinIR生成的高質量圖像IRHQ及其對應的標簽IHQ的來優化模型。

圖像去噪任務和壓縮任務采用Charbonnier loss,式中?通常設置為10-3。

2 Residual Swin Transformer Block

如下圖所示,residual Swin Transformer block (RSTB)由殘差塊、Swin Transformer layers (STL)、卷積層構成。卷積操作有利于增強平移不變性,殘差連接則有利于模型融合不同層級的特征。

Swin Transformer layer (STL)取自論文:Swin transformer: Hierarchical vision transformer using shifted windows,和原版Transformer中multi-head self-attention的不同之處主要有局部注意力(local attention)和滑動窗口機制(shifted window mechanism)。首先,將大小為H×W×C的輸入特征reshape為(HW/M2)×M2×C,即將其劃分為HW/M2個M×M的local windows,然后對每個windows計算自注意力,具體如式(10)、(12)所示。第一個式子表示Query、Key、Value的計算過程,三個權重在不同的window間共享參數;第二個式子表示multi-head self-attention以及add and norm;第三個式子表示feed forward network以及add and norm。

由于在local windows之間沒有信息交互,因此本文交替使用常規窗口劃分和滑動窗口劃分來實現window間的信息交互。

三、實驗結果

部分實驗結果如下所示(僅選取了圖像超分辨率相關的實驗結果),包括經典圖像超分辨率(Classical image SR)、輕量級圖像超分辨率(Lightweight image SR)、真實世界圖像超分辨率(Real-world image SR)。

1 經典圖像超分辨率(Classical image SR)

作者對比了基于卷積神經網絡的模型(DBPN、RCAN、RRDB、SAN、IGNN、HAN、NLSA IPT)和最新的基于transformer的模型(IPT)。得益于局部窗口自注意力機制和卷積操作的歸納偏置,SwinIR的參數量減少至11.8M,明顯少于IPT的115.5M,甚至少于部分基于卷積神經網絡的模型;模型的訓練難度也隨之減少,不再需要ImageNet那樣的大數據集來訓練模型。僅使用DIV2K數據集訓練時,SwinIR的精度就超過了卷積神經網絡模型;再加上Flickr2K數據集后,精度就超越了使用ImageNet訓練、115.5M參數的IPT模型。

2 輕量級圖像超分辨率(Lightweight image SR)

作者對比了幾個輕量級的圖像超分模型(CARN、FALSR-A、IMDN、LAPAR-A、LatticeNet),如下圖所示,在相似的計算量和參數量的前提下,SwinIR超越了諸多輕量級超分模型,顯然SwinIR更加高效。

3 Real-world image SR

圖像超分辨率的最終目的是應用于真實世界。由于真實世界圖像超分任務沒有GT圖像,因此作者對比了幾種真實世界圖像超分模型的可視化結果(ESRGAN、RealSR、BSRGAN、Real-ESRGAN)。SwinIR能夠產生銳度高的清晰圖像。

四、小結

Transformer在視覺領域魔改至今,Swin Transformer當屬其中最優、運用最多的變體。因此SwinIR進一步把Swin Transformer中的block搬到了圖像處理任務里,模型則仍然遵循目前超分網絡中head+body+tail的通用結構,改進相對比較小。

另一方面,Swin Transforme把卷積神經網絡中常用的多尺度結構用在了基于Transforme的模型中,但圖像超分辨率中一般不用多尺度結構,這或許就是SwinIR不如Swin Transforme效果好的原因。

五、鏈接及代碼

https://github.com/JingyunLiang/SwinIR?tab=readme-ov-fileicon-default.png?t=N7T8https://github.com/JingyunLiang/SwinIR?tab=readme-ov-filehttps://arxiv.org/pdf/2108.10257icon-default.png?t=N7T8https://arxiv.org/pdf/2108.10257

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39863.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39863.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39863.shtml

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

相關文章

沒有調用memcpy卻報了undefined reference to memcpy錯誤

現象 在第5行出現了,undefined reference to memcpy’ 1 static void printf_x(unsigned int val) 2{ 3 char buffer[32]; 4 const char lut[]{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}; 5 char *p buffer; 6 while (val || p buffer) { 7 *(p) …

基于循環神經網絡的一維信號降噪方法(簡單版本,Python)

代碼非常簡單。 import torch import torch.nn as nn from torch.autograd import Variable from scipy.io.wavfile import write #need install pydub module #pip install pydub import numpy as np import pydub from scipy import signal import IPython import matplot…

C語言學習記錄(十二)——指針與數組及字符串

文章目錄 前言一、指針和數組二、指針和二維數組**行指針(數組指針)** 三、 字符指針和字符串四、指針數組 前言 一個學習嵌入式的小白~ 有問題評論區或私信指出~ 提示:以下是本篇文章正文內容,下面案例可供參考 一、指針和數組 在C語言中 &#xff0…

【vscode插件】多行注釋

最近在編寫C程序的過程中,筆者發現,vscode默認的多行注釋是使用單行注釋拼起來的,對于筆者想要突出多行注釋,同時便于后續修改的需求無法滿足,隨體驗一下自己開發VSCODE插件。 可以說,整個插件的開發和上線…

軟件開發生命周期(Software Development Life Cycle, SDLC)

目錄 簡介 簡介 軟件開發生命周期(Software Development Life Cycle, SDLC)是軟件從概念到正式交付和維護的一系列階段。每個階段都有其特定的目標和活動,以下是軟件開發生命周期中常見的幾個階段: 需求收集與分析(R…

IndexError: image index out of range

IndexError: image index out of range 這個錯誤通常意味著你嘗試訪問的圖像索引超出了圖像的實際尺寸范圍。在你給出的代碼行: s_img_point_color_list.append(s_pixels[coordinate[0], coordinate[1]])你正在嘗試從 s_pixels 這個變量(很可能是一個圖…

Android系統為什么lmkd殺到adj 100就代表有低內存?

在Android系統中,lmkd(Low Memory Killer Daemon,低內存終止守護進程)負責監控系統的內存狀態,并在內存壓力較高時通過終止不必要的進程來釋放內存,以維持系統的穩定運行。關于lmkd為何在殺到adj&#xff0…

Nginx負載均衡及動靜分離

目錄 一、Nginx負載均衡【重點】 1.1 輪詢 1.2 權重 1.3 ip_hash 二、Nginx動靜分離【重點】 2.1 動態資源代理 2.2 靜態資源代理 官方文檔 nginx 一、Nginx負載均衡【重點】 Nginx為我們默認提供了三種負載均衡的策略: 輪詢:將客戶端發起的請求…

【chatgpt】pytorch中requires_grad=True

在 PyTorch 中,requires_gradTrue 是一個非常重要的標志,它指示 PyTorch 是否需要為某個張量計算梯度。這在訓練神經網絡時尤為關鍵,因為我們通常需要通過反向傳播來更新模型參數,以最小化損失函數。 requires_gradTrue 的作用 …

Perl變量作用域全解析:掌握變量的可見之旅

Perl變量作用域全解析:掌握變量的可見之旅 Perl是一種靈活的腳本語言,以其對文本處理的強大能力而聞名。在Perl編程中,變量作用域的概念至關重要,它決定了變量在代碼中的可見性和生命周期。本文將深入探討Perl中變量作用域的定義…

AI降重,不再難:降AI率的實用技巧大揭秘

如何有效降低AIGC論文的重復率,也就是我們說的aigc如何降重?AIGC疑似度過高確實是個比較愁人的問題。如果你用AI幫忙寫了論文,就一定要在交稿之前做一下AIGC降重的檢查。一般來說,如果論文的AIGC超過30%,很可能會被判定…

CAS操作

CAS 全稱:Compare and swap,能夠比較和交換某個寄存器中的值和內存中的值,看是否相等,如果相等,則把另外一個寄存器中的值和內存進行交換. (這是一個偽代碼,所以這里的&address實際上是想要表示取出address中的值) 那么我們可以看到,CAS就是這樣一個簡單的交換操作,那么…

基于SpringBoot房屋租賃管理系統設計和實現(源碼+LW+調試文檔+講解等)

💗博主介紹:?全網粉絲10W,CSDN作者、博客專家、全棧領域優質創作者,博客之星、平臺優質作者、專注于Java、小程序技術領域和畢業項目實戰?💗 Java精品實戰案例《1000套》 2025-2026年最值得選擇的Java畢業設計選題大全&#xff…

TVBox自定義配置+軟件密碼版本

apk地址 : https://gitee.com/wheat-wheat/kekeda-duck-apk 1、安裝安卓SDK Android SDK Windows 安裝及環境配置教程_sdk manager windows-CSDN博客 修改點: 基礎配置: java版本:

在系統已經存在postgres時,安裝gitlab

以下作廢,感覺直接裝gitlab太不穩定了,現在轉而使用dockers安裝gitlab https://cloud.tencent.com/developer/article/2309562 https://www.cnblogs.com/lvzhenjiang/p/14949722.html https://cloud.tencent.com/developer/article/2256871 https://blo…

新火種AI|國產大模型展開決戰,是資本游戲還是技術革命?

作者:一號 編輯:美美 資本角逐與技術革新,國產大模型的雙線戰場已然開啟。 隨著人工智能技術的不斷進步,國產大模型正迅速成為行業關注的焦點。在這個由數據驅動的時代,資本的注入和技術創新的加速,讓國…

Spring Cloud中的服務路由與過濾技術實現

Spring Cloud中的服務路由與過濾技術實現 大家好,我是微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿! 在微服務架構中,服務路由與過濾是確保服務之間通信有效性和安全性的重要技術。Spring Cloud作為…

Python28-6 隨機森林

隨機森林算法詳細介紹 1. 理論背景 隨機森林(Random Forest)是一種由Leo Breiman和Adele Cutler在2001年提出的集成學習方法。它結合了多個決策樹的預測結果,以提高模型的準確性和魯棒性。 2. 算法細節 隨機森林的構建過程可以分為以下幾…

Qt——升級系列(Level Eight):界面優化

目錄 QSS 背景介紹 基本語法 QSS設置方式 指定控件樣式設置 全局樣式設置 從文件加載樣式表 使用Qt Designer 編輯樣式 選擇器 選擇器概況 子控件選擇器 偽類選擇器 樣式屬性 盒模型 控件樣式示例 按鈕 復選框、單選框 輸入框 列表 菜單欄 登錄界面 繪圖 基本概念 繪制各種形…

[Go 微服務] Kratos 使用的簡單總結

文章目錄 1.Kratos 簡介2.傳輸協議3.日志4.錯誤處理5.配置管理6.wire 1.Kratos 簡介 Kratos并不綁定于特定的基礎設施,不限定于某種注冊中心,或數據庫ORM等,所以您可以十分輕松地將任意庫集成進項目里,與Kratos共同運作。 API -&…