論文閱讀--Simple Baselines for Image Restoration

這篇文章是 2022 ECCV 的一篇文章,是曠視科技的一篇文章,針對圖像恢復任務各種網絡結構進行了梳理,最后總結出一種非常簡單卻高效的網絡結構,這個網絡結構甚至不需要非線性激活函數。

文章一開始就提到,雖然在圖像復原領域,可以看到非常明顯的進步和提升,但是這些算法框架的復雜性也隨之增加。這篇文章重新思考了算法框架的設計,提出了一種非常簡單的基線算法框架,這個基線算法框架不僅效果上可以超越當前的一些 SOTA 方法,而且運算效率也非常高。文章為了進一步簡化這個基線模型,甚至將其中的非線性激活函數,比如 Sigmoid,ReLU,GELU,Softmax 等都可以等效替換成簡單的線性相乘,最終文章提出了一個非常簡單高效的基線算法框架,稱為 NAFNet,全稱叫 Nonlinear Activation Free Network,這個算法框架在多個圖像復原任務上都以極低的運算代價取得與 SOTA 相當甚至超越 SOTA 的效果。如圖 1 所示:
在這里插入圖片描述

  • 圖1

圖像恢復任務就是將一張退化的圖像(比如模糊,有噪)恢復成清晰圖像,目前這類圖像恢復任務基本都是基于深度學習的方法在做了,這類方法也取得了越來越好的復原效果,指標也越刷越高,絕大多數的深度學習方法,都是基于一個經典的架構,UNet,將多個 blocks 疊加成一個 U 型,中間還會帶著 skip 的連接,在這個經典架構的基礎上,衍生出很多變體,這些變體帶來了處理效果的提升,也導致了模型的復雜度隨之增加,這篇文章將模型的復雜度分為兩種,一種是 block 之間的復雜度,一種是 block 內的復雜度。

  • Inter-block Complexity,一般都是多階段的網絡結構,后面階段的網絡結構會對前面階段的輸出進行 refine,每個階段都是一個 U 型的結構,這種多階段的設計,是想把一個困難的任務,拆分成幾個簡單的子任務。

  • Intra-block Complexity,有很多工作會聚焦在 block 之間的設計,文章作者也列舉了一些例子。比如有的工作會將 attention 機制進行簡化,用 channel attention 代替常規的 spatial attention。此外,gated liner units 和 depthwise 卷積也比較常見。還有的工作是設計了基于窗口的多頭注意力機制。不過本文作者想說明的是,提升系統復雜度不是唯一的提升性能的方法,有的時候一些簡單的設計也能取得 SOTA 的表現。

Build A Simple Baseline

接下來,文章開始介紹,如何構建一個足夠簡單的基線結構,文章作者構建的原則就是奧卡姆剃刀原則:如無必要,勿增實體,不過文章也說了,必要性的判斷依據是實驗經驗。文章將模型的運算量限制在 16GMACs,對應的輸入圖像大小為 256 x 256。然后主要評估的圖像復原任務是降噪和去模糊。文章中用到的網絡結構,是最簡單的 U 型結構,如圖 2C 所示
在這里插入圖片描述

  • 圖 2

神經網絡一般都是由 block 疊加而成的,文章用最簡單的 residual block 構成基礎模型 PlainNet,如圖 3b 所示;
在這里插入圖片描述

  • 圖 3

文章接下來對 PlainNet 中的主要模塊進行了討論,包括 Normalization, Activation 以及 Attention 機制。

Normalization

現在已經有好幾種不同的 Normalization 的方法,包括 batch Normalization, instance Normalization, layer Normalization 等,不同的任務,不同的網絡結構,這些 Normalization 的方法發揮的作用可能也不一樣。所以文章作者經過比較,最后采用了 layer Normalization 這種方法。

Activation

對于激活函數,relu 是大家經常用的一種激活函數,不過,現在也逐漸發展出來了一些其它的激活函數類型,文章提到了 GELU,實驗證明,用 GELU 比用 gelu 的效果要好:

Attention

隨著 transformer 結構在 CV 領域的逐漸盛行,attention 機制也變得越來越常用,文章中也用到了 attention 機制,不過與原始的 transformer 中的 attention 機制不同,文章中用到的是 channel attention,而且是經過進一步簡化的 channel attention,具體結構如圖 4a 所示:
在這里插入圖片描述

  • 圖 4

文章后面還會對 4a 的結構做進一步的簡化。

Nonlinear Activation Free Network

上面的 PlainNet 運算復雜度相比之前的一些結構,已經降低了很多,但是依然可以取得 SOTA 的效果,不過文章作者并沒有滿足,他們認為這個網絡結構可以進一步的簡化,甚至可以去掉非線性激活函數,首先,文章作者分析了一些方法之后,發現 Gated Linear Units (GLU) 這個激活函數被經常用到, 所以對這個函數的性質做進一步的分析。

Gated Linear Units 的形式如下所示:

G a t e ( X , f , g , σ ) = f ( X ) ⊙ σ ( g ( X ) ) (1) Gate(\mathbf{X}, f, g, \sigma) = f(\mathbf{X}) \odot \sigma(g(\mathbf{X})) \tag{1} Gate(X,f,g,σ)=f(X)σ(g(X))(1)

其中 X X X 表示 feature map, f , g f, g f,g 表示線性變換, σ \sigma σ 表示一個非線性激活函數,比如 Sigmoid, ⊙ \odot 表示元素乘積。如果把 GLU 放入網絡結構,效果可以進一步提升,但是運算復雜度也會增加,這不是文章作者想看到的,所以他們對基線網絡結構中的 activation GELU 進行了改進:

G E L U ( x ) = x ? ( x ) (2) GELU(x) = x \phi(x) \tag{2} GELU(x)=x?(x)(2)

其中 ? \phi ? 表示標準正態分布的累積分布函數,一般 GELU 可以估計成如下形式:

gelu ( x ) = 0.5 x ? ( 1 + tanh ? ( 2 / π ? ( x + 0.044715 ? x 3 ) ) ) (3) \text{gelu}(x) = 0.5 x \ast (1 + \tanh(\sqrt{2/\pi} \ast (x + 0.044715 \ast x^{3} ))) \tag{3} gelu(x)=0.5x?(1+tanh(2/π ??(x+0.044715?x3)))(3)

從公式 (1) 和公式 (2),可以注意到,GELU 是 GLU 一種特殊情況,如果 f , g f, g f,g 取恒等變換, σ \sigma σ ? \phi ?,那 GLU 就變成 GELU 了,從這種相似性,文章作者猜測 GLU 可以看成是一類廣義的激活函數,或許可以替換其它的激活函數。進一步,文章作者認為 GLU 本身就包含非線性,即使去掉 σ \sigma σ 函數, G a t e ( X ) = f ( X ) ⊙ g ( X ) Gate(\mathbf{X}) = f(\mathbf{X}) \odot g(\mathbf{X}) Gate(X)=f(X)g(X) 也包含了非線性,基于這些推論,文章作者提出了一種 GLU 的簡化版,直接將 feature map 在 channel 層面平分成兩部分,然后再直接相乘,如圖4 c 所示,這個簡化后的 GLU 稱為 SimpleGate,與 GELU 相比,SimpleGate 只需要簡單的乘法就可以實現:

S i m p l e G a t e ( X , Y ) = X ⊙ Y (4) SimpleGate(\mathbf{X}, \mathbf{Y}) = \mathbf{X} \odot \mathbf{Y} \tag{4} SimpleGate(X,Y)=XY(4)

模塊的具體結構如圖 4c 所示,通過這個替換,網絡的表現進一步有提升,到目前為止,網絡中還剩下的非線性函數就是 channel attention 中的 Sigmoid 以及 ReLU 了。

在前面的 PlainNet 中,采用了 channel attention 的機制,如圖 4a 所示,這種機制同樣可以捕獲到全局信息,同時保持運算的高效,它將空間信息在channel 維度先進行壓縮,然后利用一個 MLP 去計算 channel attention,作為每個 feature map 的權重,再與之前的 feature map 相乘:

C A ( X ) = X ? σ ( W 2 max ? ( 0 , W 1 p o o l ( X ) ) ) (5) CA(\mathbf{X}) = \mathbf{X} \ast \sigma(W_{2} \max (0, W_{1} pool(\mathbf{X}))) \tag{5} CA(X)=X?σ(W2?max(0,W1?pool(X)))(5)

其中, X \mathbf{X} X 表示 feature map,pool 表示全局平均池化操作, σ \sigma σ 表示 Sigmoid 函數, W 1 , W 2 W_1, W_2 W1?,W2? 表示全連接層,如果將 channel attention 的計算看成是一個函數,那么公式 (5) 可以寫成:

C A ( X ) = X ? Φ ( X ) (6) CA(\mathbf{X}) = \mathbf{X} \ast \Phi(\mathbf{X}) \tag{6} CA(X)=X?Φ(X)(6)

可以看到,公式 6 與公式 1 很像,受此啟發,文章作者也推測 channel attention 可能也是 GLU 的一種特殊形式,或許也可以進行類似的簡化,文章將 channel attention 最終簡化成如下所示:

S C A ( X ) = X ? W p o o l ( X ) (7) SCA(\mathbf{X}) = \mathbf{X} \ast W pool(\mathbf{X}) \tag{7} SCA(X)=X?Wpool(X)(7)

模塊的具體結構如圖 4b 所示,相比 4a 的結構,4b 去掉了 Sigmoid 以及 ReLU,全連接也減少了一層

基于 PlainNet, 文章將其中的 GELU 以及 channel attention 做了簡化,最終得到了一個不含非線性激活函數的輕量級網絡,稱為 NAFNet。

文章最后給出了很多實驗對比,說明 NAFNet 在保持低運算代價的同時,還能保持很好的效果指標,真有點大道至簡,大巧若拙的感覺了。

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

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

相關文章

VRPTW(MATLAB):常春藤算法(IVY)求解帶時間窗的車輛路徑問題VRPTW,MATLAB代碼

詳細介紹 VRPTW(MATLAB):常春藤算法(Ivy algorithm,IVY)求解帶時間窗的車輛路徑問題VRPTW(提供MATLAB代碼)-CSDN博客 ********************************求解結果******************…

EtherCAT轉Profinet網關配置說明第一講:配置軟件安裝及介紹

網關XD-ECPNS20為EtherCAT轉Profinet協議網關,使EtherCAT協議和Profinet協議兩種工業實時以太網網絡之間雙向傳輸 IO 數據。適用于具有EtherCAT協議網絡與Profinet協議網絡跨越網絡界限進行數據交換的解決方案。 本網關通過上位機來進行配置。 首先安裝上位機軟件 一…

Qt使用sqlite數據庫及項目實戰

一.sqlite使用介紹 在Qt中使用SQLite數據庫非常簡單,SQLite是一個輕量級的嵌入式數據庫,不需要單獨的數據庫服務器,完全使用本地文件來存儲數據。 當在Qt中使用SQLite數據庫時,需要涉及到一些SQL語句以及Qt中的相關函數&#xf…

【海賊王的數據航海】ST表——RMQ問題

目錄 1 -> RMQ問題 1.1 -> 定義 1.2 -> 解決策略 2 -> ST表 2.1 -> 定義 2.2 什么是可重復貢獻問題 2.3 -> 預處理ST表 2.4 -> 處理查詢 2.5 -> 實際問題 1 -> RMQ問題 1.1 -> 定義 RMQ (Range Minimum/Maximum Query)即區間最值查詢…

Go 語言多版本管理的最佳實踐 —— Linux 和 Windows 專題20240702

Go 語言多版本管理的最佳實踐 —— Linux 和 Windows 專題 引言 在軟件開發的世界里,保持開發環境的最新和兼容至關重要。特別是 Go 語言,隨著版本的更新,不同項目可能需要不同的 Go 版本。這時,如何在同一臺機器上高效管理多個…

黑馬點評DAY2|Redis基本操作

Redis客戶端 命令行客戶端 進入到redis的安裝目錄,可以看到redis-cli文件,這就是redis的命令行客戶端,在安裝redis時自帶的。 使用方式如下 redis-cli [options] [commonds]其中常見的options有: -h 127.0.0.1 :指…

電量監測與電量計基礎知識

硬件之路學習筆記 ?-----前文導讀----- ①、公眾號主頁點擊發消息 ②、點擊下方菜單獲取系列文章 -----本文簡介----- 主要內容包括: ①:簡介 ②:省成本方式-電阻分壓 ③:精確方式-電量計與阻抗跟蹤技術 ----- 正文 ----…

Hugging face Transformers(1)—— 基礎知識

Hugging Face 是一家在 NLP 和 AI 領域具有重要影響力的科技公司,他們的開源工具和社區建設為NLP研究和開發提供了強大的支持。它們擁有當前最活躍、最受關注、影響力最大的 NLP 社區,最新最強的 NLP 模型大多在這里發布和開源。該社區也提供了豐富的教程…

JavaWeb--jquery篇

概述 jQuery是一個快速、簡潔的JavaScript框架,是一個優秀的JavaScript代碼庫(框架)于2006年1月由John Resig發布。它封裝JavaScript常用的功能代碼,提供一種簡便的JavaScript設計模式,優化HTML文檔操作、事件處理、動…

2229:Sumsets

網址如下&#xff1a; OpenJudge - 2229:Sumsets 這題不是我想出來的 在這里僅做記錄 代碼如下&#xff1a; #include<iostream> using namespace std;const int N 1000000000; int dp[1000010]; int n;int main() {cin >> n;dp[0] 1;dp[1] 1;for (int i 2…

前端面試題7(單點登錄)

如何實現單點登錄 單點登錄&#xff08;Single Sign-On&#xff0c;簡稱SSO&#xff09;是一種允許用戶在多個應用系統中只需登錄一次&#xff0c;就可以訪問所有相互信任的應用系統的認證技術。實現前端單點登錄主要依賴于后端的支持和一些特定的協議&#xff0c;如OAuth、Ope…

無法下載cuda

cuda下載不了 一、臺式機電腦瀏覽器打不開cuda下載下面二、解決辦法 一、臺式機電腦瀏覽器打不開cuda下載下面 用360、chrome、Edge瀏覽器都打不開下載頁面&#xff0c;有的人說后綴com改成cn&#xff0c;都不行。知乎上說是網絡問題&#xff0c;電信換成換成移動/聯通的網絡會…

Selenium 切換 frame/iframe

環境&#xff1a; Python 3.8 selenium3.141.0 urllib31.26.19說明&#xff1a; driver.switch_to.frame() # 將當前定位的主體切換為frame/iframe表單的內嵌頁面中 driver.switch_to.default_content() # 跳回最外層的頁面# 判斷元素是否在 frame/ifame 中 # 126 郵箱為例 # …

無人機云臺類型及作用

無人機云臺主要分為三種類型&#xff1a; 單軸云臺&#xff1a;僅支持單向旋轉&#xff0c;適合拍攝平滑的延時攝影和全景照片。 雙軸云臺&#xff1a;支持水平和垂直旋轉&#xff0c;可用于拍攝流暢的視頻和運動物體。 三軸云臺&#xff1a;全面支持所有旋轉軸&#xff0c;…

醫院陪診系統開發的關鍵技術與挑戰

隨著醫療服務需求的不斷提升&#xff0c;傳統的醫院服務模式面臨著巨大的壓力和挑戰。為了提升患者的就醫體驗和醫療服務的效率&#xff0c;醫院陪診系統應運而生。本文將探討醫院陪診系統開發的關鍵技術與挑戰&#xff0c;并結合具體的技術代碼進行分析。 一、醫院陪診系統的…

什么是可定制的鋰電池?它的應用范圍有哪些?

鋰電池在新能源汽車領域已經得到了廣泛的應用。然而&#xff0c;隨著科技的不斷進步和人們對于個性化需求的日益增長&#xff0c;可定制的鋰電池逐漸成為了市場的新寵。那么&#xff0c;究竟什么是可定制的鋰電池&#xff1f;它與普通鋰電池有何不同&#xff1f;它的應用范圍又…

android——設計模式(工廠模式)

一、工廠模式 Android 設計模式中的工廠模式是一種創建型設計模式&#xff0c;它提供了一種創建對象的最佳方式&#xff0c;而不必暴露其內部的創建邏輯。在Android中&#xff0c;工廠模式通常用于管理復雜組件實例化的過程&#xff0c;比如創建各種View、Activity、Fragment等…

Docker實戰教程(二)

文章目錄 基于Docker的微服務架構案例一、準備工作二、服務定義1. 用戶服務(User Service)2. 訂單服務(Order Service)3. 前端服務(Frontend Service)三、Docker Compose文件四、啟動微服務架構五、常見問題和解決方案六、總結基于Docker的微服務架構案例 在本案例中,我…

悠律凝聲環開放式耳機強者現身:集顏值和創新技術于一體的杰作

隨著技術的飛速發展&#xff0c;藍牙耳機已經成為人們生活中不可缺少的一環&#xff0c;外觀、音質以及實用性已經成為人們在購買時最主要的考慮因素。悠律凝聲環RingBuds Pro開放式藍牙耳機&#xff0c;憑借其特有的輕奢時尚外觀&#xff0c;斬獲2024年度MUSE繆斯創意獎金獎&a…

Android SeekBar設置指示器標簽,使用PopupWindow的方式

給Android 原生的SeekBar控件添加一個指示器標簽&#xff1b;記錄一下 按下時彈出popupwindow&#xff0c;進度條更新時刷新pw&#xff0c;松開時關閉pw&#xff1b; public class SeekBarPopUtils {private static PopupWindow popWin null;private static ConstraintLayou…