NTIRE2022各大競賽結果已定,您上榜了嗎?
今天介紹一篇NTIRE2022 Efficient Super Resolution競賽方案,該方案取得了最低記憶體占用、第二快的推理速度。推理耗時與記憶體占用是EISR(Efficient Image Super Resolution)的兩個重要考量因素。在該方向上比較知名的方案當屬IMDN與RFDN,兩者均采用split與concat對蒸餾與聚合的政策進行了探索。相反,序貫式(Sequential)結構避免了頻繁的通路前置狀态與額外節點,對降低記憶體占用與推理耗時更有益。
延續該設計理念,本文設計了一種輕量型方案FMEN,它主要由高度優化的卷積與激活層堆疊而成,盡可能降低的特征融合子產品的使用。本文提出了一種新穎的序貫式注意力分支,每個pixel根據局部與全局上下文被賦予不同的重要性因子以增強高頻細節學習能力。此外,作者在EISR常用的殘差子產品基礎上提出了ERB(Enhanced Residual Block)以加速模型推理速度。
組合上述設計理念記得到了本文所提FMEN與FMEN-S。相比AIM2020-EISR冠軍方案E-RFDN,所提FMEN-S推理速度快33%,記憶體占用降低74%(可參考下圖);在NTIRE2022-EISR競賽中,FMEN-S取得了記憶體占用最低、推理速度第二的成績。
1Method
Memory Analysis
記憶體占用是EISR方案部署時非常重要的因素之一。對一個節點而言,其記憶體占用M包含四部分:輸入特征M_{input} 、輸出特征M_{output} 、kept特征M_{kept} (之前節點計算并在未來節點使用的特征)以及網絡參數M_{net} (相對而言,該部分可忽略)。總體的記憶體占用可以表示如下:
M = M_{input} + M_{output} + M_{kept} + M_{net}
本文以上述兩種典型結構為參考進行記憶體分析(假設輸入所占記憶體為1x):
- 對于上圖a所示結構,其峰值記憶體占用為:
M_{input} + M_{output} \approx 2\times C \times H \times W
- 對于上圖b所示結構,其峰值存在占用為:
2 \times N \times C \times H \times W
(N表示參與特征融合的特征數量,上圖中N=3).
也就是說,相比Plain結構,Fusion結構會占用更高的峰值記憶體。
Network Architecture
直接将序貫式結構用于EISR并不是那麼容易的:相比先進的Fusion結構,無論是直接式方案還是重參數機制輔助方案均存在性能下降問題。除了記憶體占用外,推理耗時是EISR方案的另一個重要因素。
為解決上述問題,基于序貫式結構,本文提出ERB與HFAB分别用于深層特征學習與特征增強,不僅可降低記憶體占用,同時可加速推理效率。本文最終所得結構FMEN見上圖,FMEN的峰值記憶體占用位于HFAN内部:包含全局殘差特征、輸入特征、注意力以及輸出特征,約4 \times C \times H \times W
Enhanced Residual Block
自EDSR之外,ResBlock(見下圖a)成為SISR中最常用子產品。然而,ResBlock中的跳過連接配接會引入額外的記憶體占用并降低推理速度(實驗表明:移除EDSR中的跳過連接配接,推理耗時将減少10%)。
為繼承殘差學習的優點且避免上述問題,作者設計了一種ERB子產品(見上圖b):它由兩個RRRB與一個LReLU構成。RRRB受RepVGG與RCAN而來,在推理時可以折疊一個單個卷積。
High-frequency Attention Block
注意力機制已在SR領域得到廣泛研究,可劃分為Channel Attention、Spatial Attention、Pixel Attention以及Layer Attention。考慮到額外的記憶體占用與推理速度問題,我們設計了上圖所示的HFAB:首先采用3\times 3 卷積進行降維,然後采用ERB捕獲局部縣慣性,其次采用3\times 3 卷積進行升維,最後sigmoid激活并與輸入相乘。
注:在attention分支,作者引入了BN層。盡管已有研究(如EDSR)表明:BN會導緻僞影問題。自此之後,BN不适用于SR已成為了常識。BN真的不能用于SISR嗎?年前曾有一篇paper對此進行了思考,可參考:AdaDM: 讓超分網絡不僅可以用BN,性能還可以更優。
回歸正題,卷積的感受野比較有限,而在attention分支引入BN不僅有益于注入全局互動資訊,同時有益于sigmoid的非飽和區域。在推理階段,BN可以與後接或前接卷積合并。是以,在推理階段,HFAB僅包含四個高度優化的算子:3\times 3 卷積、LReLU、Sigmoid以及點乘。
2Experiments
上圖對比了基于ResBlock、PlainBlock以及ERB的EDSR與FMEN性能,可以看到:相比ResBlock,ERB具有與其相當的性能,而PlainBloc則出現了嚴重性能下降。而在推理階段,ERB可以折疊而PlainBlock形式并享受其高推理效率特征。
上表對比了ResBlock與ERB在不同超分模型的推理效率對比,可以看到:相比ResBlock,ERB子產品的推理效率平均快10%左右。
上圖從頻域角度對HFAB進行了分析,可以看到:
- 經HFAB處理後,輸入特征的低頻信号被抑制、高頻信号被增強;
- HFAB的輸入會緩慢朝高頻信号聚焦,而HFAB可以臨時校正感興趣區域;
- 頻域分離特征可以通過後續HFAB子產品進一步增強。
上表對IMDN的CCA、RFDN的ESA以及本文的Attention進行了對比,可以看到:
- 相比Baseline,無論CCA還是ESA均可以提升模型性能,但均低于本文的Attention方案;
- 此外,由于多分支結構與低效算子導緻CCA與ESA需要更多的計算耗時,而本文所設計Attention機制對于模型推理更友好,耗時幾乎可忽略不計。
上表&圖給出了不同方案的性能與效果對比,可以看到:FMEN取得了與LatticeNet相當的性能,同時具有更快推理速度(46ms vs 68ms)、更低記憶體占用(68M vs 225M)。
上表給出了NTIRE2022EISR競賽中不同方案的性能對比,可以看到:
- 相比AIM2020冠軍方案E-RFDN,FMEN-S參數量減少21.2%、FLOPs減少17.8%、推理耗時減少33.1%、峰值記憶體占用減少74%、Activation減少35.7%,而PSNR僅降低0.04dB;
- 相比NTIRE2022競賽其他方案,FMEN-S取得了記憶體占用最低、Activation最低、卷積數最少、推理耗時第二的性能。
3點滴反思
看完paper與code後,有這麼幾點反思分享給大家:
- 以往方案的設計理念:attention部分使用盡可能少的參數量與計算量,盡可能提升主分支的計算量與參數量。而FMEN反其道而行:加大了attention部分的卷積數,減少主幹部分卷積的數量。這是不是意味着Attention分支的作用被其“精簡結構”限制了?進一步加大其結構到與主幹部分相當的水準是否能夠進一步提升性能呢?Attention與主幹的互相作用又是怎樣的?如果移除了Attention分支的Sigmoid,那麼何為主、何為attention呢?
- BN用于Attention竟然可以提升性能!已有SISR中的attention部分往往是将從架構設計那裡“借鑒”并移除BN後使用。但是,FMEN與AdaDM則反其道而行之,将BN又一次進行了“引進”并提升性能。
- 無論是BN-Conv合并還是Conv-BN合并,大家應該都不陌生。當然,大家更熟悉的是Conv-BN這種順序關系,BN-Conv反而用的更少一些。一直認為:無論BN-Conv還是Conv-BN折疊前後是否等價與padding無關。被FMEN的實作打臉了,要想保證BN-Conv折疊前後的等價性,在折疊前需要在BN-Conv中間插入一個padding,且padding的數值與BN的參數資訊有關。