方金生, 張會冉
(1.閩南師范大學(xué)計算機學(xué)院,福建漳州363000;2.數(shù)據(jù)科學(xué)與智能應(yīng)用福建省高校重點實驗室,福建 漳州363000)
相位纏繞問題存在于合成孔徑雷達的圖像重建、微波遙感、醫(yī)學(xué)圖像處理等領(lǐng)域,這是由于通過上述的成像系統(tǒng)獲得的相位圖像需經(jīng)過相應(yīng)的數(shù)學(xué)運算而產(chǎn)生相位纏繞問題,即所有絕對值大于π 的相位值都會被褶卷至(-π,π]之間,這與真實圖像存在極大偏差.因此若要在此類圖像上進一步提取有用的信息,需進行相位解纏繞,獲取正確的相位值.迄今為止,國內(nèi)外已有不少研究團隊提出相關(guān)的算法,大致可分為傳統(tǒng)算法和基于深度學(xué)習(xí)的算法.傳統(tǒng)算法主要有基于路徑[1]、基于區(qū)域[2]和基于拉普拉斯函數(shù)[3]的三類解纏繞算法,但這些方法都存在求解速度慢或精度較差的問題.
深度學(xué)習(xí)是近年來計算機視覺領(lǐng)域的研究熱點,隨著各類卷積神經(jīng)網(wǎng)絡(luò)模塊的引入,其性能得到很大提高且已廣泛應(yīng)用到圖像識別、圖像分類、圖像重建和圖像分割等相關(guān)領(lǐng)域中[4-7].然而,深度神經(jīng)網(wǎng)絡(luò)模型性能的提升,往往是以增大網(wǎng)絡(luò)層數(shù)和浮點運算量為代價[8-9].為此,國內(nèi)外研究團隊提出了多種輕量化模型設(shè)計。2016 年,Iandola 等[10]提出SqueezeNet,該網(wǎng)絡(luò)通過使用引入更小卷積核、減少輸入特征維度等方法將模型規(guī)模壓縮,實現(xiàn)和AlexNet[4]相近的精度,且參數(shù)量僅為后者1/50.2017年,Chollet等[5]提出提出深度可分離卷積,有效地減少運算量.同年,Howard 等[6]提出MobileNets,該網(wǎng)絡(luò)利用深度卷積和點卷積操作,從而得到可應(yīng)用于移動端的輕量化網(wǎng)絡(luò).Zhang等提出ShuffleNet[7]網(wǎng)絡(luò),采用通道重排策略,這使得網(wǎng)絡(luò)可以在保持較好的網(wǎng)絡(luò)性能的同時有效降低網(wǎng)絡(luò)的參數(shù)規(guī)模.之后,ShuffleNetV2[11],MobileNetV2[12],Mobile‐Netv3[13]等進一步改進緊湊型設(shè)計提高網(wǎng)絡(luò)速度.雖然這些深度學(xué)習(xí)模型用較少的浮點運算量便可獲得較優(yōu)性能,但它們并未考慮圖像特征映射之間的相關(guān)性和冗余性.2020年GhostNet[14]利用通道之間的冗余信息,在原有的特征圖上通過一系列的簡單線性操作產(chǎn)生特征圖,這在減少參數(shù)量的同時也提高運行速度.
在相位解纏繞領(lǐng)域,研究人員提出了多種基于深度學(xué)習(xí)網(wǎng)絡(luò)算法,如UNet,PhaseNet等[15-17],這些算法能夠有效進行相位解纏繞且對噪聲干擾具有較強的魯棒性,但這些方法也往往以增加層數(shù)或模型復(fù)雜度為代價來提高網(wǎng)絡(luò)性能,這不利于算法的實際應(yīng)用.為此,基于輕量型網(wǎng)絡(luò)設(shè)計思想[10-14],提出一種用于相位解纏繞的輕量化神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)G-UNet(Ghost UNet),該網(wǎng)絡(luò)結(jié)構(gòu)以UNet 為骨架網(wǎng)絡(luò),由多個GhostBlock 構(gòu)建而成.與傳統(tǒng)拉普拉斯解纏繞算法及UNet相比,G-UNet不僅獲得擁有更高的評價指標和視覺效果,且極大地減少了網(wǎng)絡(luò)運算量,提高模型的運行速度.
傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)模型的各層網(wǎng)絡(luò)產(chǎn)生的特征圖中,通常會包含冗余的信息,利用這些信息,可減少參數(shù)量和計算量,且不影響網(wǎng)絡(luò)性能[14].基于此,GhostNet 在原有的特征圖上通過簡單的線性操作,利用較少的參數(shù)量生成更多的特征圖,從而緩解了在嵌入式設(shè)備上部署卷積神經(jīng)網(wǎng)絡(luò)難的問題[14].
GhostNet與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)相比,最大的不同之處就是特征圖的生成方式.如圖1(a)所示,傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)是通過常規(guī)卷積生成所有的特征圖,在不同網(wǎng)絡(luò)層間會產(chǎn)生特征冗余的現(xiàn)象.如圖1(b)所示,Ghost卷積操作可分3 個步驟:首先用常規(guī)卷積生成m個特征圖;然后利用m個特征圖經(jīng)過線性運算Φ獲得更多的特征映射,每一個固有特征圖經(jīng)過線性運算Φ生成s-1 個特征映射,則可得m*(s-1)個特征映射圖;最后,將前兩步所得的特征圖融合,共可得到n=m*s個特征圖以此作為Ghost卷積模塊的輸出數(shù)據(jù)yij,可表示為:
圖1 常規(guī)卷積和Ghost模塊運算過程Fig.1 Operation of ordinary convolution and Ghost convolution
其中,y′i表示固有特征圖中的第i個特征圖,Φi,j表示對第i個特征圖進行的第j個線性變換.
深度神經(jīng)網(wǎng)絡(luò)中常由大量的卷積組成,這通常需要消耗較多的硬件資源和時間[18-19].在一層常規(guī)卷積中,給定輸入圖像X ∈Rc×h×w,經(jīng)過n個卷積核運算產(chǎn)生n維特征圖,則輸出圖像可為Y ∈Rn×h'×w′,其中c表示輸入圖像數(shù)據(jù)通道數(shù),h和w分別代表輸入圖像的行數(shù)和列數(shù),h'和w'分別代表輸出圖像的行數(shù)和列數(shù).若卷積核的大小為k*k,則一層常規(guī)卷積的浮點計算量(Floating point of operations,FLOPs)為[14]:
在單一Ghost 卷積模塊中,對于m個固有特征需進行m*(s-1)次線性操作,若線性操作中的卷積核大小為d*d,則一層Ghost卷積的FLOPs可以表示為:
可得常規(guī)卷積和Ghost模塊FLOPs比值為:
因此,部署相同層數(shù)的Ghost卷積和標準卷積神經(jīng)網(wǎng)絡(luò),前者在計算速度上可提高近s-1倍.
2.1.1 構(gòu)建GhostBlock模塊
如圖2 所示,設(shè)計兩種GhostBlock 模塊,即無殘差學(xué)習(xí)的GhostBlock A 和有殘差學(xué)習(xí)的GhostBlock B,其中GhostBlock A由兩層的ghost卷積模塊、單層批歸一化(BN)處理及非線性激活函數(shù)ReLU構(gòu)成;Ghost‐Block B 先用Ghost 卷積進行特征提取,再用單層的1×1 卷積降維,隨后通過兩個Ghost 卷積模塊,1×1 卷積的輸出與Ghost 卷積的輸出連接構(gòu)成殘差塊,每個層卷積后均使用批歸一化進行處理[20-21].Ghost 卷積模塊中一半通道用于生成特征圖,另一半通道做線性變換,常規(guī)卷積中使用1×1 的卷積核,整個Ghost卷積使用3×3的卷積核.
2.1.2 基于GhostBlock的G-UNet網(wǎng)絡(luò)
G-UNet由多個GhostBlock 構(gòu)成,如圖2(b)所示,主要包含兩個部分:1)編碼器,由兩個卷積核大小為3×3 的Ghost卷積組成GhostBlock,每個GhostBlock 連接一個步長為2,卷積核大小為2 的平均池化層,對輸入信息進行縮減采樣的同時使得提取的特征更加平滑,在每次下采樣中,將特征通道數(shù)加倍,以獲得更多細節(jié)特征;2)解碼器,其由上采樣和短連接兩部分組成,上采樣過程中用步長2,卷積核大小為2的向上采樣代替下采樣中的平均池化層,恢復(fù)和下采樣過程中一樣的特征通道數(shù),以便進行短連接,得到更加精細的特征信息,在網(wǎng)絡(luò)的最后一層,使用1×1的卷積進行特征信息的降維輸出.由于卷積神經(jīng)網(wǎng)絡(luò)的寬度會在一定程度上影響模型的性能和參數(shù)數(shù)量[22],每個卷積層的濾波器數(shù)量太少會導(dǎo)致性能不佳,如果數(shù)量太大,模型的訓(xùn)練將變的不穩(wěn)定,模型的速度將大大降低.為了能夠滿足網(wǎng)絡(luò)的需求,在每一層GhostBlock設(shè)置一個縮放因子α[14],用來調(diào)整G-UNet的寬度以增強網(wǎng)絡(luò)性能.文中將由縮放因子α改變通道數(shù)后的網(wǎng)絡(luò)結(jié)構(gòu)記為G-UNetα×.
圖2 GhostBlock模塊與G-UNet網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 GhostBlock module and network structure of G-UNet
G-UNet 采用Adam 優(yōu)化算法[23],損失函數(shù)為均方誤差(MSE).采用的度量方法為峰值信噪比(PSNR)[24]和結(jié)構(gòu)相似度(SSIM)[25],二者表示分別如下:
其中,Q表示圖像像素灰度級,f表示真實圖像,?表示重建后的圖像,μf和分別表示真實圖像和重建圖像的平均灰度值,和分別表示真實圖像和重建圖像的方差,表示真實圖像和重建圖像的協(xié)方差;C1和C2為穩(wěn)定常數(shù),C1=(k1L)2,C1=(k2L)2,其中,k1= 0.01,k2= 0.03.
實驗所采用的的數(shù)據(jù)集為仿真的磁共振相位圖,創(chuàng)建一個128×128×60 的矩陣,于矩陣中嵌入大小不一的5個橢球分別模擬人腦以及尾狀核、蒼白球、鼻腔和血管,如3所示.根據(jù)組織的實際物理特性,將尾狀核、蒼白球、鼻腔和血管的磁化率分別設(shè)置為0.05× 10-6,0.1× 10-6,9.4 × 10-6,0.35× 10-6,除此之外,人腦的其他區(qū)域磁化率為0.根據(jù)磁化率與偶極場的物理關(guān)系式可得場圖的分布情況,得到相位圖根據(jù)磁共振設(shè)備的成像原理,相位圖需經(jīng)過四象限反正切函數(shù)求得,由于反正切函數(shù)具有周期性,其取值范圍為(-π,π].隨著回波時間的增加,相位值大于該范圍的將被卷褶回該范圍內(nèi),即產(chǎn)生纏繞現(xiàn)象,隨著回波時間增加,相位纏繞的程度則愈加明顯,如圖3所示,同一個三維矩陣(人腦)中,不同區(qū)域的相位纏繞程度也因磁化率值的變化而不同.
圖3 仿真人腦組織結(jié)構(gòu)的磁化率圖及不同回波時間的相位纏繞圖與相應(yīng)的真實相位圖Fig.3 The simulated susceptibility map of brain tissue structure,the phase winding map of different echo time and the corre‐sponding real phase map
實驗數(shù)據(jù)集將每一個128×128×60三維數(shù)據(jù)生成為60張128×128的二維數(shù)據(jù)作為網(wǎng)絡(luò)的訓(xùn)練集和測試集,同時舍去部分無實際意義的數(shù)據(jù),最終得到8 000 張二維數(shù)據(jù),其中,訓(xùn)練集7 840 張,測試集160 張實驗的標簽數(shù)據(jù)均采用前向運算運算得到的真實相位圖.實驗的硬件環(huán)境為Intel(R) Core(TM) i7-4790 CPU, 16GB RAM, AMD Radeon(TM) R7 250.軟件環(huán)境為Windows 10 的操作系統(tǒng)下的pycharm2019.2.3x64,網(wǎng)絡(luò)模型采用TensorFlow+Keras框架構(gòu)成.
實驗采用mini-batch 的訓(xùn)練方式,mini-batch 大小設(shè)置為16,訓(xùn)練所有實驗達到200 輪次后停止學(xué)習(xí).在UNet 和G-UNet 網(wǎng)絡(luò)上將初始學(xué)習(xí)率設(shè)為10-5,以10 倍為步長增長,結(jié)果如圖4 所示.對于UNet 來說,學(xué)習(xí)率為10-4,網(wǎng)絡(luò)具有最好的收斂結(jié)果;當學(xué)習(xí)率為10-3時,由于學(xué)習(xí)步長過大,無法找到損失函數(shù)的最小值,進而無法收斂;當學(xué)習(xí)率為10-5時,網(wǎng)絡(luò)在訓(xùn)練時收斂速度較慢,權(quán)重在更新時并沒有達到最好的收斂情況.對于G-UNet 來說,學(xué)習(xí)率為10-3,網(wǎng)絡(luò)的收斂情況最好;當學(xué)習(xí)率為10-2時,從圖中可以發(fā)現(xiàn),它的收斂情況與學(xué)習(xí)率為10-3很是接近,均在輪次為30時開始收斂,但它的前期的損失值波動較大;當學(xué)習(xí)率為10-2時,由于學(xué)習(xí)率過大,收斂時間長.因此,UNet 和G-UNet 的學(xué)習(xí)率分別為10-4和10-3.二者學(xué)習(xí)率的不同,是由于G-UNet采用Ghostblock模塊,其網(wǎng)絡(luò)層數(shù)多于UNet,同時G-UNet在特征的提取時所采用的策略與只用卷積的UNet也不同,也就是網(wǎng)絡(luò)中的權(quán)重參數(shù)也有所區(qū)別,故造成差異.
圖4 兩種網(wǎng)絡(luò)學(xué)習(xí)率收斂情況Fig.4 Convergence of two network learning rates
利用無殘差GhostBlock A 和有殘差模塊GhostBlock B分別構(gòu)建G-UNet網(wǎng)絡(luò),并在相位解纏繞上進行性能驗證.表1 列舉了分別由GhostBlock A 和GhostBlock B 構(gòu)成、受縮放因子α調(diào)制的G-UNet 的浮點計算量和SSIM 值,由表1可看出由GhostBlock A 構(gòu)成的網(wǎng)絡(luò)的浮點計算量是GhostBlock B 的0.7倍,但后者具有更優(yōu)的SSIM值.
表1 殘差學(xué)習(xí)實驗結(jié)果Tab.1 Experimental results of residual learning
G-UNet、Laplace法以及UNet算法在測試集的PSNR 及SSIM 比較結(jié)果如圖5所示,G-UNet和UNet的PSNR 及SSIM 值均高于Laplace 法,同時G-UNet 和UNet 對于測試集具有相似的預(yù)測趨勢.表2 中列出了三者的平均PSNR 值、SSIM 值及其參數(shù)量,由表2 可知,G-UNet 與Laplace 法相比,PSNR 提升了近1.5 dB,SSIM 提升約為0.1;與UNet 相比,PSNR 提升了0.2,在與UNet 相同的SSIM 值情況下,G-UNet 的參數(shù)量比UNet的參數(shù)量少80%.由此看來,本文方法在取得更優(yōu)的相位解纏繞結(jié)果的同時大幅地減少了參數(shù)量,節(jié)省網(wǎng)絡(luò)訓(xùn)練時間.
圖5 不同方法每張測試集圖片的PSNR和SSIMFig.5 PSNR and SSIM of each test set image by different method
表2 各個方法的平均PSNR和SSIMTab.2 Average PSNR and SSIM of each method
圖6顯示了三種算法在測試集上的相位解纏繞結(jié)果.圖6(a)為真實相位圖像(Ground truth),圖6(b)~(e)為三種算法的預(yù)測結(jié)果,圖6(f)~(i)為三種算法的預(yù)測結(jié)果分別與真實圖像相減后的差值圖.由差值圖的顏色可以看出,本文提出的G-UNet 算法結(jié)果具有更多的像素點接近于0 值,即預(yù)測結(jié)果更接近于真實圖像,性能優(yōu)于其他兩種比較算法.
圖6 不同方法相位解纏繞結(jié)果圖浮點計算量與性能比較Fig.6 Comparison of floating point computation and performance of different phase unwrapping methods
圖7 顯示了幾種算法的SSIM 與FLOPs 關(guān)系.當縮放因子較小時,G-UNet 的FLOPs 遠小于UNet,但SSIM 值也略低于UNet;隨著縮放因子的增加,G-UNet 的SSIM 值逐漸提高,直至縮放因子為4 時,G-UNet達到和UNet相似的SSIM值,而FLOPs僅為UNet的1/6.
圖7 不同模型FLOPs和SSIM值的比較Fig.7 Comparison of FLOPs and SSIM values in different models
綜上所述,提出的G-UNet網(wǎng)絡(luò)性能不僅優(yōu)于當前主流Laplace 算法和UNet,且較UNet具有較少的參數(shù)量,對于相位解纏繞領(lǐng)域具有重要意義.
提出了一種用于相位解纏繞的輕量化網(wǎng)絡(luò)模型.實驗結(jié)果表明,該模型在相位解纏繞中取得了與UNet相近的PSNR、SSIM 值,且大幅度減少了參數(shù)數(shù)量及浮點計算量,可實現(xiàn)快速相位解纏繞.當然,存在不足之處,所有的實驗均只用于數(shù)值仿真,未進行真實人腦數(shù)據(jù)實驗以及其它領(lǐng)域的相位解纏繞運算.