今天要介紹的MobileAI2021的圖像超分競賽的最佳方案,無論是PSNR指標還是推理速度均顯著優于其他方案,推理速度達到了手機端實時(《40ms@1080P)。
Abstract
盡管基于深度學習的圖像超分取得前所未有的進展,但實際應用要求i越來越高的性能、效率,尤其是移動端推理效率。智能手機的升級迭代、5G的盛行,用戶能感知到的圖像/視頻分辨率越來越高,從早期的480過度到720p,再到1080p,再到最近的1k、4k。高分辨率需要更高的計算量,占用更多的RAM,這就導致了端側設備的部署問題。
本文旨在設計一種8-bit量化版高效網絡并將其部署到移動端,整個設計過程如下:
首先,我們通過將輕量型超分架構分解并分析每個節點的推理延遲,進而確定可利用的算子;
然后,我們深入分析了何種類型的架構便于進行8-bit量化并提出了ABPN(Anchor-BasedPlainNetwork);
最后,我們采用量化感知訓練(Quantization-AwareTraining,QAT)策略進一步提升模型的性能。
我們所設計的模型能以2dB指標優于8-bit量化版FSRCNN,同時滿足實際速度需求。
Method
接下來,我們從節點延遲測試開始,然后引出本文方案背后的思考,最后構建所提ABPN。
Meta-nodeLatency
由于我們的目標在于構建一種實時量化模型用于真實場景(比如實時視頻超分)。我們需要做的第一件事就是構建可移植算子集并統計每個算子的耗時。
我們將當前輕量型網絡(如EDSR、CARN、IMDN、IDN、LatticeNet)進行分解構建初始算子集;
我們在SynapticsDolphin平臺(專用NPU)上測試每個算子的延遲。
上述算子可以分為四大類:張量操作、卷積算子、激活算子、resize,見上表。從上表可以得出四個發現:
近期的SOTA輕量架構使用的技術似乎難以在移動端部署。
EDSR采用了大量的ResBlock,每個ResBlock會引入元素加,該操作甚至比高速優化的卷積還要慢;
CARN采用了全局與局部特征集成,每個集成過程包含一個concat與一個卷積,僅僅帶來了0.09dB指標提升;
由于大量的特征分離與拼接,IDN與IMDN同樣存在端側部署問題;
LatticeNet的部署問題更為嚴重,它采用了16個CA模塊,每個CA模塊包含一個元素加、一個元素乘、兩個池化層,四個卷積,導致了過高的計算負擔。
另一個常見問題:它們都需要保存前面層的特征并采用控制數據流動。這種長距離依賴會導致RAM的低頻處理,這是因為端側內存非常有限。
因此,我們將不考慮特征融合、特征蒸餾、組卷積以及注意力機制。
盡管卷積的參數量是卷積的9倍,但由于并行計算的緣故,兩者的推理速度差別并不大。因此,我們采用卷積以得到更大感受野。
在激活函數方面,我們選擇ReLU。這是因為它要比LeakyReLu速度更快,而且i兩者導致的性能差異非常小;
由于HR與LR之間的坐標映射導致resize操作的推理速度過慢。
Anchor-basedResidualLearning
正如前一節所討論的,能用的算子非常有限。為得到一個好的解決方案,我們深入分析了架構設計與INT8量化之間的相關性。
據我們所知,其難度主要在于I2I(Image-to-Image,I2I)映射的高動態范圍,最直接的想法是生成低標準差權值與激活。有兩種方式可以達成該目的:
添加BN層:BN往往被集成在ResBlock中,盡管不會導致額外耗時與內存占用,但會導致0.2dB的性能下降。
殘差學習:近鄰像素往往具有相似的值,很自然的一種選擇就是學習殘差。殘差學習又可以分為以下兩種:
ISRL:圖像空間的殘差學習
FSRL:特征空間的殘差學習。
圖像空間的殘差學習在早期的工作(如VDSR,DRRN)中有得到應用,而特征空間的殘差學習則更多在近期的SOTA方案(如SRGAN、IDN、IMDN)中得到應用并取得了稍優的性能。然而,我們認為:ISRL更適合于INT8量化。
從前面Table1中可以看到:圖像空間插值存在不可接受的推理耗時,甚至僅僅一次resize都無法滿足實時需求。為解決該問題,我們提出了ABRL(Anchor-BasedResidualLearning):它直接在LR空間復制每個像素9次為HR空間的每個像素生成錨點。受益于PixelShuffle層,所提ABRL可以通過一個concat+一個元素加操作實現。
上圖給出了四種類型殘差學習的區別所在,從推理耗時角度來看:
FSRL僅需要一個元素加操作,它的耗時為5.2ms;
ABRL包含一個通道拼接與一個元素加,總結耗時15.6ms,約為最近鄰插值的四分之一。
所提ABRL有這樣兩個優點:
相比FSRL,ABRL可以顯著提升INT8量化模型的性能,提升高達0.6dB;
多分枝架構可以通過并行加速,因此ABRL與FSRL的實際推理耗時相當。ABRL與FSRL的主要耗時源自RAM的訪問速度慢。
NetworkArchitecture
上圖給出了本文所提架構示意圖,它包含四個主要模塊:
淺層特征提?。涸撨^程由卷積+ReLU構成,定義如下:
深層特征提?。涸撨^程采用多個Conv-ReLU組合構成,描述如下:
為充分利用并行推理,我們設置Conv-ReLu的數量為5以匹配上分支的開銷,這意味著當Conv-ReLU數量小于5時推理速度不變。最后,我們采用一個卷積將前述特征變換到HR圖像空間:
然后再采用本文所提ABRL得到超分特征:
重建模塊:該模塊采用PixelShuffle進對前述所得超分超分進行像素重排得到超分圖像。
后處理模塊:該模塊采用Clip操作約束超分輸出,即輸出最大值不超過255,最小值不小于0。移除該操作會導致輸出分布偏移,進而導致量化誤差。
LossFunction
在損失函數方面,我們采用了簡單的L1損失,定義如下:
Experiments
在訓練方面,圖像塊尺寸為64x64,batch=16,優化器為Adam,初始學習率0.001,每200epoch減半,合計訓練1000epoch。訓練數據為DIV2K,在RGB空間評估性能。
QAT是一種流程的提升模型性能的量化技術且無額外推理耗時。我們設置初始學習率為0.0001,每50epoch減半,合計訓練200epoch。QAT可以進一步提升0.06的B性能,此時INT8模型僅比FP32性能低0.07dB。
ResidualLearning
上表對比了殘差學習的性能、耗時。從中可以看到:
對于FP32模型而言,FSRL模型取得了最佳性能,其他模型性能相當;
對于INT8模型而言,不帶殘差的模型會出現嚴重性能下降(-1.93dB),FSRL模型會下降0.78dB,而ISRL則則僅僅下降0.13dB。因此,殘差學習可以極大緩解INT8量化過程中的高動態范圍問題,而ISRL變現優于FSRL。
TestonSnapdragon820
我們在Snapdragon820的手機平臺上,采用AIBenchmark軟件測試了所提方案的CPU、GPU以及NNAPI耗時,結果見下表。
MAI2021SISRChallenge
本文起初用于參加MAI2021圖像超分競賽,結果見下表。注:首次的提交的模型在模型尾部沒有添加Clip操作,導致量化性能非常差(小于20dB);在競賽結束后才解決了該問題并提交了校正后模型。受益于素體ABRL,所提方案取得了最佳PSNR指標,同時具有更快的推理速度。
-
深度學習
+關注
關注
73文章
5512瀏覽量
121415 -
圖像空間
+關注
關注
0文章
2瀏覽量
855
發布評論請先 登錄
相關推薦
評論