讀后:ClassSR: A General Framework to Accelerate Super-Resolution Networks by Data Characteristic 密碼保護


ClassSR: A General Framework to Accelerate Super-Resolution Networks by Data Characteristic

我們的目標是在大圖像 (2K-8K) 上加速超分辨率 (SR) 網絡。

在實際使用中,大圖像通常被分解為小的子圖像。

基於這種處理,我們發現不同的圖像區域具有不同的恢復難度,可以由不同容量的網絡進行處理。直觀地說,平滑區域比復雜紋理更容易超級求解。

為了利用這個特性,我們可以采用適當的 SR 網絡來處理分解后的不同子圖像。

在此基礎上,我們提出了一個新的解決方案管道——ClassSR,它將分類和SR結合在一個統一的框架中。

具體來說,它首先使用 Class-Module 將子圖像根據恢復難度分為不同的類,然后應用 SR-Module 對不同的類進行 SR。

Class-Module 是一個常規的分類網絡,而 SR-Module 是一個網絡容器,由待加速的 SR 網絡及其簡化版本組成。

我們進一步引入了一種具有兩個損失的新分類方法——Class-Loss 和 Average-Loss 來產生分類結果。

聯合訓練后,大部分子圖像將通過較小的網絡,因此可以顯着降低計算成本。

實驗表明,我們的 ClassSR 可以幫助大多數現有方法(例如 FSRCNN、CARN、SRResNet、RCAN)在 DIV8K 數據集上節省高達 50% 的 FLOP。這個通用框架也可以應用於其他低級視覺任務。我們進一步引入了一種新的分類方法,它有兩個損失——Class-Loss 和 Average-Loss 來產生分類結果。聯合訓練后,大部分子圖像將通過較小的網絡,因此可以顯着降低計算成本。

在本文中,我們研究如何在“大”輸入圖像上加速 SR 算法,這些圖像將被上采樣到至少 2K 分辨率(2048×1080)。而在實際使用中,智能手機和電視顯示器的圖像/視頻分辨率已經達到 4K(4096 × 2160),甚至 8K(7680 × 4320)。由於最新的 SR 算法建立在 CNN 上,因此內存和計算成本將隨輸入大小成二次方增長。因此需要將輸入分解為子圖像並不斷加速SR算法,以滿足對真實圖像實時實現的要求。

子圖像分解對大圖像尤其有益。首先,更多的區域恢復起來相對簡單。根據我們的統計,大約 60% 的 LR 子圖像 (32 × 32) 屬於 DIV8K [7] 數據集的平滑區域,而 DIV2K [1] 數據集的百分比下降到 30%。因此,對於大圖像,加速比會更高。其次,子圖像分解有助於在實際應用中節省內存空間,對於低內存處理芯片至關重要。將子圖像分發到並行處理器以進一步加速也是合理的。

為了解決上述問題並加速現有的 SR 方法,我們提出了一個新的解決方案管道,即 ClassSR,以同時執行分類和超分辨率。

該框架由兩個模塊組成——Class-Module 和 SR-Module。

Class-Module 是一個簡單的分類網絡,根據恢復難度將輸入分類為特定的類,
SR-Module 是一個網絡容器,將分類后的輸入與對應類的 SR 網絡進行處理。

他們聯系在一起,需要共同訓練。新穎之處在於分類方法和訓練策略。

具體來說,我們引入了兩個新的損失來約束分類結果。

第一個是 Class-Loss,它鼓勵為單個子圖像選擇更高概率的類。
另一個是 AverageLoss,確保整體分類結果不會偏向單個類。
這兩個損失協同工作,使分類有意義且分布良好。
還添加了 Image-Loss(L1 損失)以保證重建性能。

對於訓練策略,我們首先使用 Image-Loss 預訓練 SR-Module。
然后我們修復 SR-Module 並優化具有所有三個損失的 Class-Module。
最后,我們同時優化兩個模塊直到收斂。

該管道對於不同的 SR 網絡是通用且有效的。

對於訓練策略,我們首先使用 Image-Loss 預訓練 SR-Module。然后我們修復 SR-Module 並優化具有所有三個損失的 Class-Module。最后,我們同時優化兩個模塊直到收斂。該管道對於不同的 SR 網絡是通用且有效的。對於訓練策略,我們首先使用 Image-Loss 預訓練 SR-Module。然后我們修復 SR-Module 並優化具有所有三個損失的 Class-Module。最后,我們同時優化兩個模塊直到收斂。該管道對於不同的 SR 網絡是通用且有效的。

總的來說,我們的貢獻有三方面:
(1)我們提出了 ClassSR。它是第一個在子圖像級別將分類和超分辨率結合在一起的 SR 管道。

(2)我們通過數據的特性來解決加速度問題。它使 ClassSR 與其他加速網絡正交。壓縮到極限的網絡仍然可以通過 ClassSR 加速。
(3)我們提出了一種具有兩個新損失的分類方法。它根據子圖像的恢復難度划分子圖像,由特定分支而不是預先確定的標簽處理,因此它也可以直接應用於其他低級視覺任務。

2. Related work

1)關於加速算法
為了降低計算成本,已經提出了許多加速方法。FSRCNN [6] 和 ESPCN [18] 使用 LR 圖像作為輸入,並在網絡末端放大特征圖。LapSRN [12] 引入了一個深度拉普拉斯金字塔網絡,逐漸放大特征圖。CARN [2] 使用組卷積來設計級聯殘差網絡以進行快速處理。IMDN [9] 通過拆分操作提取層次特征,然后聚合它們以節省計算。PAN [27] 采用像素注意力來獲得有效的網絡。

所有這些方法都旨在設計一個具有可接受的重建性能的相對輕量級的網絡。相比之下,我們的 ClassSR 是一個通用框架,可以加速大多數現有的 SR 方法,即使范圍從小型網絡到大型網絡。

2)關於分類算法:

RAISR [17] 將圖像塊划分為簇,並為每個簇構建適當的過濾器。它還使用有效的散列方法來降低聚類算法的復雜性。SFTGAN [19] 引入了一種新的空間特征變換層來合並高級語義先驗,這是一種處理具有不同參數的不同區域的隱式方式。RL-Restore [23] 和 PathRestore [24] 將圖像分解為子圖像,並通過強化學習估計合適的處理路徑。與它們不同的是,我們提出了一種新的分類方法來確定每個區域的處理。

3. Methods

3.1. 觀察

我們首先說明我們對不同類型子圖像的觀察。具體來說,我們研究了 DIV2K 驗證數據集 [1] 1 中 32 × 32 LR 子圖像的統計特征。為了評估它們的恢復難度,我們通過 MSRResNet [20] 傳遞所有子圖像,並根據它們的 PSNR 值對這些子圖像進行排名。如圖 3 所示,我們用藍色曲線顯示這些值,並將它們分成具有相同子圖像數量的三類——“簡單、中等、困難”。可以觀察到,具有高 PSNR 值的子圖像通常是平滑的,而具有低 PSNR 值的子圖像包含復雜的紋理。

3.2. ClassSR 概述

單圖像SR
它由兩個模塊組成——Class-Module 和 SR-Module,如圖 4 所示。Class-Module 將輸入圖像分為 M 個類,而 SR-Module 包含 M 個分支(SR 網絡)處理不同的輸入。

具體來說,首先將大輸入LR圖像X分解為重疊的子圖像。
ClassModule 接受每個子圖像 xi 並生成一個概率向量 [P1(xi), ..., PM(xi)]。之后,我們通過選擇最大概率值 J = arg maxj Pj (xi) 的索引來確定使用哪個 SR 網絡。
然后 xi 將由 SR-Module 的第 J 個分支處理:yi = f J SR(xi)。
最后,我們結合所有輸出子圖像

3.3. 類模塊

Class-Module 的目標是通過低級特征判斷“輸入的子圖像是容易重構還是難於重構”。

如圖 4 所示,我們將 Class-Module 設計為一個簡單的分類網絡,它包含五個卷積層、一個平均池化層和一個全連接層。卷積層負責特征提取,池化層和全連接層輸出概率向量。

這個網絡非常輕量級,幾乎不會帶來額外的計算成本。

3.4. SR-模塊

SR-Module 被設計成一個容器,由幾個獨立的分支{fj SR}M j=1 組成。

一般來說,每個分支可以是任何基於學習的 SR 網絡。

采用這個 SR 網絡作為基礎網絡,並將其設置為最復雜的分支.
其他分支是通過降低fM SR的網絡復雜度獲得的。

為簡單起見,我們使用每個卷積層中的通道數來控制網絡復雜度。

那么每個SR分支需要多少通道呢?其原理是分支網絡應獲得與使用相應類中的所有數據訓練的基礎網絡相當的結果。

例如(見表1和圖4),f 1 SR、f 2 SR、f 3 SR的通道數可以是16、36、56、其中 56 是基礎網絡的通道號。請注意,我們還可以通過其他方式降低網絡復雜度,例如減少層數(參見第 4.3.4 節),只要網絡性能滿足上述原則即可。

3.5. 分類方法

在訓練期間,Class-Module 根據子圖像對特定分支的恢復難度而不是預先確定的標簽進行分類。因此,與測試不同,輸入子圖像 x 應該通過所有 M 個 SR 分支。此外,為了保證 Class-Module 能夠接受來自重建結果的梯度傳播,我們將重建的子圖像 fi SR(x) 與相應的分類概率 Pi(x) 相乘,生成最終的 SR 輸出 y 為:

我們只使用Image-Loss(L1 loss)來約束y,然后我們就可以自動獲得分類概率。但是在測試過程中,輸入只以最大概率通過 SR 分支。因此,我們提出 Lc(Class-Loss,見第 3.6.1 節)使最大概率接近 1,y 將等於概率為 1 的子圖像。 注意,如果我們只采用 Image-Loss和 Class-Loss,訓練會很容易收斂到一個極值點,所有圖像都被歸入最復雜的分支。為了避免這種有偏差的結果,我們設計了 La(Average-Loss,參見第 3.6.2 節)來約束分類結果。這是我們提出的新分類方法。

3.6. 損失函數

損失函數由三個損失組成——一個常用的 L1 損失(Image-Loss)和我們提出的兩個損失 Lc(Class-Loss)和 La(Average-Loss)。具體來說,L1 用於保證圖像重建質量,Lc 提高分類的有效性,La 確保每個 SR 分支可以被平等地選擇。損失函數表示為:

L1: 是輸出圖像和地面實況之間的 1-norm distance

Lc: Class-Loss約束Class-Module的輸出概率分布。 是同一子圖像的每個類概率之間距離和的負數。這種損失可以大大擴大不同分類結果之間的概率差距,使最大概率值接近1。

La: 平均損失
只采用Image-Loss和Class-Loss,子圖像很容易被分配到最復雜的分支。這是因為最復雜的 SR 網絡很容易得到更好的結果。

為了避免這種情況,我們應該確保每個 SR 分支都有平等的機會被選中。因此,我們設計了平均損失來約束分類結果。它被表述為:

其中 B 是批量大小。La 是一個批次中每個類的平均數量(BM)與子圖像數量之間的距離之和。我們使用概率和 PB j=1 Pi(xj ) 來計算子圖像數量,因為統計數量不傳播梯度。有了這種損失,訓練期間通過每個 SR 分支的子圖像數量將大致相同。

3.7. 培訓策略

我們建議通過三個步驟來訓練 ClassSR:
1)首先,預訓練 SR-Module,
2)然后使用建議的三個損失來訓練 Class-Module 並修復 SR-Module,
3)最后聯合微調所有網絡。
這是因為如果我們從頭開始訓練 Class-Module 和 SR-Module,性能會很不穩定,分類很容易陷入不好的局部最小值。

為了預訓練 SR-Module,我們使用按 PSNR 值分類的數據。
具體來說,所有子圖像都通過訓練有素的 MSRResNet。
然后根據它們的 PSNR 值對這些子圖像進行排序。接下來,前 1/3 的子圖像被分配到困難類,而最后 1/3 屬於簡單類,
然后我們在相應的簡單/中等/困難數據上訓練簡單/中等/復雜 SR 分支。
雖然使用 MSRResNet 獲得的 PSNR 來估計不同 SR 分支的恢復難度並不完美,但它可以為 SR 分支提供一個很好的起點。

之后,我們添加 Class-Module 並修復 SR-Module 的參數。
整個模型在所有數據上使用三個損失進行訓練。如圖 6(a) 和圖 6(b) 所示,這個過程可以給類模塊一個主要的分類能力。

之后,我們放松所有參數並微調整個模型。在聯合訓練過程中,Class-Module 根據最終的 SR 結果細化其輸出概率向量,SR-Module 根據新的分類結果進行更新。在實驗中(見圖 6),我們可以發現子圖像被分配到不同的 SR 分支,而性能和效率同時提高。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM