王辰北, 張海軍, 王浩然
(1.中國航空工業(yè)集團公司洛陽電光設(shè)備研究所,河南 洛陽 471000;2.光電控制技術(shù)重點實驗室,河南 洛陽 471000)
近年來,隨著顯示技術(shù)的發(fā)展,高分辨率數(shù)字化顯示器廣泛應用于機載座艙中。然而,受限于特定波段圖像傳感器的性能以及視頻傳輸鏈路等因素,存在顯示器與視頻源分辨率不匹配的問題,例如某視景增強系統(tǒng)(EVS)中平視顯示器(HUD)的顯示分辨率為1280×1024(單位為像素,下同),而紅外傳感器的分辨率僅有640×480,直接使用插值法匹配二者分辨率,會損失大量圖像細節(jié),導致圖像顯示模糊。因此,有必要在顯示模塊之前引入超分辨率處理模塊。
基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的超分辨率(SRCNN)算法,憑借優(yōu)秀的超分辨率效果(PSNR及SSIM)成為目前最先進的超分辨率算法。SRCNN算法的問題在于計算量(FLOPs)巨大,處理單幅圖像的計算量往往是吉次或太次量級的。
目前最先進的國產(chǎn)AI加速芯片,如海思Hi3796 CV300以及寒武紀Cambricon-1H等,其算力效率均為2 Tops/W(1012·s-1·W-1)左右,在機載嵌入式環(huán)境下,由于資源有限,用于卷積神經(jīng)網(wǎng)絡(luò)加速的芯片功耗應控制在5 W以內(nèi),因此,最大算力為10 Tops(AI計算通常將浮點數(shù)計算轉(zhuǎn)換為INT8定點數(shù)計算,本文中FLOPs與Tops等價)左右;另一方面,機載環(huán)境對圖像處理的實時性要求較高,至少應達到60 幀/s。目前,先進的EDSR和RDN等超分辨率算法單幅圖像的計算量均在400吉次以上,因此硬件暫時無法滿足計算量要求。
為解決這個問題,本文在EDSR算法的基礎(chǔ)上,分析計算量和各個參數(shù)的關(guān)系。通過引入前級分類器,提出了一種輕量化的超分辨率算法C-EDSR,有效減少了EDSR算法的計算量。仿真實驗結(jié)果顯示,本文提出的C-EDSR與EDSR相比,在PSNR平均損失0.026 dB、SSIM平均損失0.000 176的條件下,計算量減少61.1%。
DONG等[1]提出的SRCNN是首個基于CNN的超分辨率算法。該算法首先將低分辨率小圖像進行雙立方卷積插值(Bicubic)的預處理,將圖像尺寸放大,得到低分辨率大圖像;再將低分辨率大圖像輸入超分辨率網(wǎng)絡(luò),經(jīng)過3層網(wǎng)絡(luò)處理,得到高分辨圖像。SRCNN網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 SRCNN網(wǎng)絡(luò)結(jié)構(gòu)
隨著SRCNN的提出,KIM等[2]提出了VDSR,LEDIG等[3]提出了SRResNet,LIM等[4]提出了EDSR,ZHANG等[5]提出了RDN。在主流的超分辨率算法中,EDSR在加深網(wǎng)絡(luò)層數(shù)的同時,降低了計算的復雜度;對比幾種先進的超分辨率算法,由于EDSR移除了BN層,使得計算大大簡化,也為硬件實現(xiàn)打下了良好基礎(chǔ)。圖2為EDSR模型網(wǎng)絡(luò)結(jié)構(gòu)。
圖2 EDSR模型網(wǎng)絡(luò)結(jié)構(gòu)
關(guān)于減少超分辨率算法計算量,已經(jīng)有學者做了一些研究,F(xiàn)SRCNN[6],ESPCN[7]和LapSRN[8]分別用反卷積、亞像素(shuffle)以及拉普拉斯金字塔的方式減少了算法計算量。
通常CNN的計算量90%以上來源于卷積操作。在卷積操作中有幾個關(guān)鍵的參數(shù):卷積核的尺寸n,輸入通道數(shù)cin,輸出通道數(shù)cout,步長s。根據(jù)卷積操作的原理可以得到乘法計算量的表達式為
(1)
加法計算量的表達式為
(2)
由式(1)可以看到,卷積操作主要的計算量來源為:卷積核大小n,輸入、輸出通道數(shù)cin和cout,步長s。
EDSR算法的流程為:1) 圖像通過卷積層進行特征提??;2) 圖像特征通過數(shù)個殘差塊進行非線性映射;3) 圖像特征進行上采樣,放大圖像尺寸;4) 圖像特征通過卷積層恢復出超分辨率重建圖像。
假設(shè)模型放大倍數(shù)為2,輸入的低分辨率圖像為X,輸出的高分辨率圖像為Y。首先是X作為輸入,經(jīng)過一層卷積W1(該卷積層的參數(shù),下同)有
F1=W1*X
(3)
經(jīng)過16個殘差塊,殘差塊的輸入Bn-1和輸出Bn的關(guān)系為
Bn=Bn-1+Wn-1,2*max(Wn-1,1*Bn-1,0)
(4)
將F1作為B0輸入,經(jīng)過16個殘差塊后,得到輸出為B16,再經(jīng)過一層卷積有
F2=W2*B16
(5)
F1和F2相加有
F3=F1+F2
(6)
F3作為輸入經(jīng)過上采樣(Upsample)處理有
F4=shuffle(W3*F3)
(7)
式中,shuffle(·)表示上采樣處理。
F4作為輸入,經(jīng)過一層卷積得到高分辨率Y為
Y=W4*F4。
(8)
上述公式對應的計算量如表1所示。
表1 EDSR模型計算量
對于640×480的輸入圖像,邊長各放大2倍,總計算量為428.04吉次;可以得到EDSR算法處理60 幀/s下實現(xiàn)640×480轉(zhuǎn)1280×1024每秒需要的計算量為25.68太次,此計算量已經(jīng)超出了目前航空機載環(huán)境下處理芯片理論上的最大算力。
為了解決EDSR算法計算量大、難以在目前航空機載環(huán)境下實現(xiàn)的問題,本文在EDSR算法基礎(chǔ)上,通過引入前級分類器,提出了一種輕量化超分辨率算法C-EDSR。
本文提出的輕量化超分辨率算法C-EDSR網(wǎng)絡(luò)模型如圖3所示。
圖3 C-EDSR網(wǎng)絡(luò)模型
算法主要分為4步:1) 將低分辨率圖像進行分割,得到N幅尺寸相同的子圖像;2) 將N幅子圖像分別輸入分類器,分為易、中、難3類;3) 將3類圖像分別輸入維度為34,52和64的3個EDSR模型;4) 經(jīng)過超分辨率重建處理的N幅子圖像再重新組合成原尺寸的高分辨率圖像。
本文引入的分類器是一個簡單的分類網(wǎng)絡(luò),目的是依據(jù)復雜度對輸入的子圖像進行分類。通過引入分類器,本文算法C-EDSR與EDSR相比,在不降低效果的同時,大幅減少了計算量。接下來分別介紹引入分類器對算法效果的影響,以及對算法計算量的影響。
C-EDSR之所以能夠在基本不降低效果的條件下大幅減少計算量,本質(zhì)上是因為對于某種復雜度的圖像來說,隨著算法維度的增加,超分辨率效果會達到飽和,類似于神經(jīng)網(wǎng)絡(luò)訓練過程中的收斂狀態(tài);對于簡單類型的圖像來說,維數(shù)34的模型就可以達到理想的效果,用維數(shù)52或維數(shù)64的模型處理簡單類型的圖像,效果不僅不會上升,甚至可能有所下降。
本文選取文獻[9]中預先分類好的3類子圖像作為測試集,對上述分析進行驗證,實驗結(jié)果如表2所示。其中,圖像分為簡單、中等、復雜3組,每組子圖像均為6000幅。
表2 EDSR(34/52/64)處理不同復雜度圖像結(jié)果
根據(jù)表2結(jié)果,選擇EDSR(34)處理簡單圖像,EDSR(52)處理中等圖像,EDSR(64)處理復雜圖像,基本不會影響算法的效果。
分類器模型的流程見圖3,具體為:1) 通過1層卷積層進行特征提取,同時縮小特征圖的尺寸;2) 經(jīng)過3層卷積層進行非線性變換;3) 經(jīng)過1層卷積層進行特征維數(shù)壓縮;4) 經(jīng)過池化層進一步減少特征維數(shù);5) 最后通過全連接層輸出分類標志。
上述流程中卷積部分的計算量如表3所示。
表3 分類器卷積部分計算量
后續(xù)的池化層和全連接層計算量與卷積計算量不在一個數(shù)量級,忽略不計,因此分類器的計算量為3.5兆次,加上這個計算量之后,與EDSR原算法的1.43吉次相比,只增加了0.24%,而34維的EDSR模型的計算量僅為64維的模型計算量的28%,假設(shè)有20%的子圖像的類型為簡單,則可以減少14.4%的計算量。
由上述分析可知,分類器的引入對于超分辨率算法來說,可以大大減少計算量。
本文C-EDSR算法訓練分為兩步:1) 使用預先分類好的訓練集分別訓練濾波器維數(shù)為34,52和64的3個EDSR模型;2) 引入分類器,并將3個模型聯(lián)合起來訓練,優(yōu)化模型參數(shù)的同時提高分類器的分類能力。
訓練過程中要用到3種損失函數(shù)。首先給出總損失函數(shù)表達式為
L=w1×L1+w2×Lc+w3×La
(9)
式中:L1為像素誤差;Lc為分類器誤差;La為平均誤差;w1,w2和w3分別為L1,Lc和La的系數(shù)。
其次是預訓練EDSR的損失函數(shù),本文選用L1函數(shù),該損失函數(shù)衡量高分辨率原圖x和超分辨率重建圖y像素間的誤差,表達式為
(10)
再次是訓練分類器的Class-loss,該損失函數(shù)衡量分類誤差,表達式為
(11)
式中:M為類別組數(shù);Lc為在同一幅子圖像中,各組出現(xiàn)概率Pi(x)的差值和,所有概率Pi(x)的和為1。
最后是聯(lián)合訓練使用的Average-loss,該損失函數(shù)的表達式為
(12)
式中:B為輸入圖像數(shù);La為輸入圖像分類到每組的期望與平均值(B/M)的差值和。
訓練過程曲線如圖4所示。
圖4 PSNR和FLOPs曲線
圖4中:PSNR曲線體現(xiàn)了模型的效果隨訓練次數(shù)增加不斷上升;FLOPs曲線體現(xiàn)了模型計算量隨訓練次數(shù)增加不斷下降;epoch代表將整個訓練集遍歷一次的訓練量,即一個循環(huán)。
本文首先訓練了維數(shù)為34,52和64的3組EDSR模型,模型維數(shù)依據(jù)文獻[9]確定。其中,34維的模型參數(shù)量為64維的模型參數(shù)量的30%,52維的模型參數(shù)量為64維的模型參數(shù)量的66%,這與文獻[9]的參數(shù)選取方法一致,文獻[9]的實驗也表明此方法選取參數(shù)可以得到較好的結(jié)果。
EDSR(34)模型訓練過程如PSNR曲線所示,其余類似。用3組模型聯(lián)合訓練得到C-EDSR模型,訓練過程如FLOPs曲線所示。
本文所有實驗均在Python3.7,PyTorch-GPU和CUDA 11.3軟件環(huán)境以及Quadro M4000顯卡硬件環(huán)境下進行。
經(jīng)過以下仿真實驗,對比了本文的C-EDSR算法與幾種典型的超分辨率算法。
實驗結(jié)果中的PSNR表示峰值信噪比,通過信噪比衡量超分辨率圖像和原圖像之間的差異;SSIM表示結(jié)構(gòu)相似性,從亮度、對比度、結(jié)構(gòu)等方面衡量2幅圖像的差異;PSNR值和SSIM值越大,代表超分辨率效果越好。
為了使測試集盡可能貼近機載環(huán)境下拍攝到的圖像,本文選擇公開的航拍測試集,包括衛(wèi)星遙感采集的測試集DOTA-v1.5 和無人機采集的測試集VisDrone。其中,DOTA-v1.5測試集選取40幅圖像構(gòu)成本文的測試集,VisDrone選取100幅圖像構(gòu)成本文的測試集。本實驗計算FLOPs時按輸入32×32圖像計算。結(jié)果如表4、表5所示。
表4 DOTA-v1.5測試集實驗結(jié)果
表5 VisDrone測試集實驗結(jié)果
根據(jù)以上數(shù)據(jù)可知,本文C-EDSR算法的效果(PSNR及SSIM)優(yōu)于BICUBIC,SRCNN和FSRCNN,效果與EDSR相當(PSNR下降少于0.03 dB,SSIM下降少于0.000 2),效果低于RDN;從計算量方面考慮,根據(jù)前文的理論推導,EDSR算法在60幀/s下實現(xiàn)640×480轉(zhuǎn)1280×1024每秒需要的計算量為25.68太次,已經(jīng)超出現(xiàn)有機載環(huán)境下處理芯片的最大算力,而本文算法的計算量為EDSR的40%左右,即每秒10太次左右,目前的處理芯片理論上可以滿足本文算法的需求,而RDN又比EDSR的計算量高一個數(shù)量級。綜上,本文C-EDSR算法是目前航空機載環(huán)境下超分辨率效果最優(yōu)的算法。
VisDrone測試集的100幅測試圖像中包含黑夜、日間普通光照條件以及日間強光條件等各種光照條件下拍攝的圖像,因此上述數(shù)據(jù)還表明本文算法對光照條件有一定的魯棒性,而光照條件也是機載環(huán)境下的一個重要考慮因素。
從DOTA-v1.5數(shù)據(jù)集中選取10幅高分辨率圖像構(gòu)成測試集,對EDSR與C-EDSR進行測試,并進一步詳細對比,結(jié)果如表6所示。
表6 EDSR與C-EDSR結(jié)果對比
根據(jù)上述所有共計150幅測試圖像的實驗結(jié)果可知,C-EDSR與EDSR相比,PSNR平均下降0.026,SSIM平均下降0.000 176,結(jié)合表2、表3,與各種算法對比的實驗結(jié)果中,PSNR和SSIM的下降基本可以忽略不計;因此,本文C-EDSR與EDSR相比,在重建效果基本不降低的條件下,計算量減少61.1%。
圖5是各種算法對測試集DOTA編號為P0217的圖像的處理效果,所有圖像的處理方式均為先將原圖縮小為原來的1/4,再用相應算法放大4倍得到超分辨率重建圖。
圖5 各種算法效果對比
本文以EDSR為基礎(chǔ),分析了模型的網(wǎng)絡(luò)結(jié)構(gòu)和算法計算量。本文在EDSR的基礎(chǔ)上,通過引入前級分類器,提出了輕量化超分辨率算法C-EDSR;經(jīng)過仿真實驗驗證,本文C-EDSR算法與EDSR算法相比,在PSNR及SSIM基本不降低的條件下,計算量減小61.1%。結(jié)合國產(chǎn)AI芯片的性能參數(shù)可知,目前機載嵌入式平臺硬件算力理論上能滿足C-EDSR算法60 幀/s的實現(xiàn)需求,為進一步在機載平臺上實現(xiàn)實時超分辨率圖像重建奠定了基礎(chǔ)。