李 靜 卯福啟,2
(1.北方工業(yè)大學,北京 100144;2.中國地質大學(北京),北京 100083)
晶界屬于晶體缺陷的面缺陷之一,它是結構相同而取向不同的晶粒之間的界面,晶界面上的原子排列處于2個取向之間的過渡狀態(tài)。晶界的存在會嚴重影響晶體材料的強度、塑性和抗拉程度等性能指標。高分辨率電子顯微鏡(High Resolution Transmission Electron Microscope,HRTEM)的出現(xiàn)為晶界提供了納米級別下原子排布的清晰圖像,也為晶體缺陷的智能化檢測奠定了基礎。隨著計算機視覺的發(fā)展,基于圖像處理的深度學習技術推動了晶體缺陷高分辨率圖像的研究。目標檢測網(wǎng)絡EfficientDet模型[1]5在通用大型目標檢測數(shù)據(jù)集上獲得了優(yōu)異的檢測精度和速度性能,筆者將其作為晶界缺陷檢測的基礎模型,但由于EfficientDet網(wǎng)絡結構具有模型縮放等特征,導致模型結構存在冗余、參數(shù)量大等問題,若通過神經(jīng)網(wǎng)絡芯片對專用硬件加速,則會帶來高昂費用的應用成本負擔。模型壓縮技術能夠通過對原有模型進行參數(shù)壓縮、維度縮減和重新設計簡單網(wǎng)絡結構等操作來加快網(wǎng)絡訓練和推理時間,有效降低結構和參數(shù)冗余,從而減少空間存儲占用和計算復雜度,有助于深度學習技術的應用和部署。這種技術不僅應用成本低,而且可以與硬件加速方法相互加成。
目前,在模型壓縮和加速方面大致分為剪枝與量化、低秩因子分解、遷移或壓縮卷積濾波器、蒸餾學習等4類方法[2]。其中,網(wǎng)絡剪枝主要指在網(wǎng)絡訓練過程中尋求一種評判重要性的機制,剔除不重要的連接、節(jié)點甚至是卷積核,達到精簡網(wǎng)絡結構的目的。相比于其他模型壓縮的方法,網(wǎng)絡剪枝算法不僅原理簡單且操作方便,還可以在不影響性能的前提下,通過設定恰當?shù)募糁蕜t去除網(wǎng)絡中對輸出特征貢獻小的無用部分。筆者旨在通過尋找合適的剪枝策略機制對晶界檢測EfficientDet網(wǎng)絡進行模型壓縮,采用權重剪枝和BN層通道剪枝的方法,使網(wǎng)絡模型結構更加精簡,參數(shù)量減少,加快運行速度,達到實時應用的標準。
隨著搜索算法中剪枝策略的廣泛應用,剪枝算法也逐步應用到深度神經(jīng)網(wǎng)絡中。許多學者對神經(jīng)網(wǎng)絡中不重要的連接權重進行剪枝操作。如2015年SONG H.等[3]先通過訓練網(wǎng)絡確定重要連接,然后修剪不重要連接,最后重新訓練并微調剩余網(wǎng)絡連接的權重,實現(xiàn)了將經(jīng)典網(wǎng)絡AlexNet和VGG等模型參數(shù)壓縮幾十倍。SONG H.等[4]提出了用EIE方法將壓縮模型與硬件加速結合,實現(xiàn)了CPU和GPU的速率及功耗性能的大幅改善。LI H.等[5]通過對卷積核中權值絕對值之和進行排序,裁剪重要性低的卷積層,減少卷積神經(jīng)網(wǎng)絡的計算成本,這種方法不需要使用稀疏庫或專用硬件加速。WEI W.等[6]采用一種類似于L1正則化的Group Lasso方式,在不損失精度的前提下將網(wǎng)絡學習的參數(shù)盡可能地結構化稀疏。SONG H.等[7]則混合使用了剪枝、量化和編碼3種壓縮技巧,將經(jīng)過剪枝后的模型進行量化操作再整合霍夫曼編碼,使網(wǎng)絡在保持相同準確率的基礎上達到最高49倍的壓縮比。
通道剪枝也是模型壓縮和加速領域的一個重要分支。通道剪枝同權重剪枝相似,在保證網(wǎng)絡的剪枝率和剪枝結構確定的前提下,對每個通道的重要性進行評估,剪掉重要性排序最低的通道,并使得剪枝后網(wǎng)絡模型的精度損失最小。HE Y.H.等[8]首先用通道選擇機制添加L1范數(shù),約束權重,使權重更加稀疏,并把稀疏的通道裁減掉,然后基于最小二乘法約束剪枝前后輸出的特征圖。LIU Z.等[9]提出一種針對BN層通道剪枝的方法,該方法利用BN層的權重評估輸入通道的重要性分數(shù),過濾掉分數(shù)低的通道,在通道裁剪的同時,減少網(wǎng)絡對應的卷積核以及卷積通道個數(shù),逐層剪枝達到壓縮效果。LI B.等[10]采用了自適應批量歸一化的簡單有效的評估技術方法,揭示不同剪枝子網(wǎng)絡與其微調收斂精度之間的強相關性,該方法不需要對子網(wǎng)絡進行實際微調,就能在候選子網(wǎng)絡中快速找到具有最高潛在準確率的網(wǎng)絡。GUO S.等[11]提出DMCP方法,該方法通過交叉熵損失和預算正則化的梯度下降直接優(yōu)化網(wǎng)絡,搜索最優(yōu)通道子結構。LIU N.等[12]提出基于神經(jīng)網(wǎng)絡自動化結構剪枝的框架,使用混合型的結構化剪枝維度和高效的交替乘子優(yōu)化算法對訓練過程中的正則項動態(tài)更新,利用啟發(fā)式搜索方式進行抽樣。
2020年,在EfficientNet分類網(wǎng)絡的基礎上[13],Google Brain團隊提出了一種結合新型雙向特征金字塔網(wǎng)絡(Bidirectional Feature Pyramid Network,BiFPN)和縮放原理的EfficientDet目標檢測網(wǎng)絡。該網(wǎng)絡共有8個不同版本,從EfficientDet-D0到EfficientDet-D7。其中,EfficientDet-D7在COCO數(shù)據(jù)集上的mAP(mean Average Precision)高達51%,超過了現(xiàn)有大部分目標檢測網(wǎng)絡的性能,網(wǎng)絡的模型框架如圖1所示。
圖1 EfficientDet網(wǎng)絡
EfficientDet網(wǎng)絡是兼?zhèn)錂z測精度和速度的優(yōu)秀目標檢測算法,該網(wǎng)絡利用對骨干網(wǎng)絡和特征金字塔網(wǎng)絡結構的縮放原理,增加特征提取網(wǎng)絡的深度,并結合注意力機制原理,考慮不同特征層的重要程度,以實現(xiàn)優(yōu)異的檢測效果。但是由于模型縮放的特征,網(wǎng)絡存在一定的結構復雜性,使得模型參數(shù)量不斷增加。為減少缺陷檢測模型的冗余參數(shù)量,提高模型檢測速度,同時確保網(wǎng)絡性能,可對EfficientDet網(wǎng)絡進行必要的剪枝操作,以降低模型參數(shù)量和計算復雜度,提高模型運行速度,縮短運行時間,便于晶界檢測模型的應用和部署。
由EfficientDet網(wǎng)絡中BiFPN結構可知,由于不同分辨率的輸入特征對融合輸出特征的貢獻不同,因此該網(wǎng)絡采用了一種類似于計算機視覺領域注意力機制結構的加權雙向特征金字塔網(wǎng)絡BiFPN結構。該結構在融合不同層輸入特征的過程中采用了大量權重參數(shù),這無疑會帶來權重參數(shù)的冗余,因此剪枝網(wǎng)絡權重是必要的。BiFPN結構采用的快速歸一化加權融合策略如式(1)[1]4:
(1)
式(1)中,O為輸出特征;∑i,∑j分別為第i層和第j層求和;ωi,ωj分別為第i層和第j層的權重參數(shù),用來作為判斷輸入到下一層網(wǎng)絡的特征重要程度的標準;ε為一個極小的值,用來避免數(shù)值不穩(wěn)定,ε=0.000 1;Ii為第i層的輸入特征。
通過網(wǎng)絡參數(shù)自動學習以后,根據(jù)權重值的大小進行排序,然后對應剪枝比例確定權重閾值,便可以進行EfficientDet模型的權重剪枝。
此外,由于L1正則化傾向于產(chǎn)生更少的特征,使得網(wǎng)絡部分冗余參數(shù)在訓練過程中盡可能變?yōu)?,從而生成一個稀疏化的網(wǎng)絡模型。L2正則化在權重更新過程中使參數(shù)盡可能小,使網(wǎng)絡模型結構更加簡單,泛化能力更強。在網(wǎng)絡剪枝過程中,引入L1正則化和L2正則化,促使網(wǎng)絡中冗余參數(shù)趨近很小的數(shù),可以提升權重剪枝的推理速度,同時降低誤剪枝的風險。因此,筆者通過L1正則化和L2正則化的方法對權重和通道參數(shù)矩陣進行選擇。
L1范數(shù)是向量中各個元素絕對值之和,可以進行特征選擇,即讓特征的系數(shù)變?yōu)?。L1正則化方法如式(2)所示[14]252,它相對要比 L2 正則化更容易產(chǎn)生稀疏解。
(2)
式(2)中,C為正則化后的損失函數(shù);Co為神經(jīng)網(wǎng)絡原來的損失函數(shù),在原始損失代價后面加入一個L1正則化項,即所有權重ω的絕對值之和;n為訓練集的樣本大??;λ是正則項系數(shù),用來權衡正則項與Co項的比重。
L2范數(shù)是向量各元素的平方和再求平方根,它可以使網(wǎng)絡在再訓練過程中保留下來的參數(shù)數(shù)值逐漸減小,以防止網(wǎng)絡過擬合,提升模型的泛化能力,也有利于模型保持原有精度。L2正則化方法如式(3)所示[14]253。
(3)
式(3)中,C為正則化后的損失函數(shù);Co代表神經(jīng)網(wǎng)絡原來的損失函數(shù),在原始損失代價后面加入一個L2正則化項,即所有權重ω的平方之和;n為訓練集的樣本大小,為使求導方便增加系數(shù)1/2;λ是正則項系數(shù),用來權衡正則項與Co項的比重。
然而,權重剪枝標準在非結構化剪枝的情況下,通常僅將不重要的特征權重置0,生成的權重張量可以稀疏,但卻保持其原始形狀,因而得到的只是稀疏化網(wǎng)絡。雖然通過減小權重張量的尺寸能減少浮點運算的數(shù)量,但非結構化修剪會產(chǎn)生許多帶有0的權重張量,且不會自動減小此類張量的大小。非結構化剪枝最主要的缺點是數(shù)據(jù)結構的加速稀疏需要硬件設備支持額外的存儲開銷,但目前對于稀疏操作進行加速支持的庫非常有限,大多數(shù)框架和硬件無法加速稀疏矩陣的計算,這就意味著無論用多少0填充參數(shù)張量,都不會對實際訓練成本產(chǎn)生實質的影響,僅僅是一種直接改變網(wǎng)絡架構進行剪枝的方式,而不是對任何框架都適用的方法,在應用上效果不盡人意。因此,人們開始嘗試將不重要的權重對應的特征層直接進行剪枝,通過改變網(wǎng)絡架構方式的修剪方法,真正達到網(wǎng)絡模型壓縮的目的,降低模型結構的冗余,實現(xiàn)參數(shù)量和計算力的減少,這種方法稱為結構化剪枝。
筆者使用的網(wǎng)絡模型中特征提取部分采用了多尺度縮放原理,通過結合殘差網(wǎng)絡增加神經(jīng)網(wǎng)絡的深度,通過改變特征提取的層數(shù)和提高輸入圖像分辨率,使網(wǎng)絡能夠學習和表達更豐富的特征。因此,特征矩陣的通道數(shù)量相較于其他網(wǎng)絡更多,剪枝網(wǎng)絡通道數(shù)對于該網(wǎng)絡模型的壓縮也是必要的。在結構化通道剪枝算法中,最常用的一種算法是BN(Batch Normalization)層通道剪枝算法。BN層[15]2指批量歸一化層,在神經(jīng)網(wǎng)絡中通常位于卷積層和激活函數(shù)之間,它的作用是在網(wǎng)絡中按照輸出通道的數(shù)目對同一批次訓練的數(shù)據(jù)樣本進行歸一化的操作,使輸入數(shù)據(jù)符合同一分布。在網(wǎng)絡中增加BN層已經(jīng)成為目前卷積神經(jīng)網(wǎng)絡廣泛使用的一種加速網(wǎng)絡收斂,以獲得更好的泛化性能和魯棒性的方法。具體見式(4)[15]3:
(4)
針對在卷積層后的批量歸一化層中的縮放系數(shù)γ進行L1正則化,即通過訓練BN層的γ參數(shù),使其作為每一層的稀疏因子,在訓練完成之后對所有的BN層通道的該系數(shù)進行排序,然后通過預先設置的剪枝比例確定γ系數(shù)的閾值,再將閾值以下的對應通道剪掉。由于每個縮放系數(shù)對應于特定的卷積通道或全連接層中的神經(jīng)元,為了保持通道數(shù)匹配,相應的卷積層和線性層也對應裁剪,達到更高的通道級別剪枝。由于額外的正則化方法很少會使性能有所損失,相反某些情況下會導致更高的泛化精度,修剪不重要的通道可能會暫時降低性能,但這種影響可以通過在修剪網(wǎng)絡后進行微調來補償。
由于EfficientNet網(wǎng)絡中的MBConvBlock結構卷積層、深度可分離卷積層、殘差連接層和BiFPN結構都采用了BN層結構,因此對EfficientDet網(wǎng)絡進行BN層通道結構化剪枝具有可行性。假設模型中BN層結構共有L層,通過剪枝不重要的BN層通道,實現(xiàn)模型壓縮的目標?;贐N層通道剪枝的EfficientDet模型壓縮算法如表1所示。
表1 基于BN層通道剪枝的EfficientDet模型壓縮算法
晶界缺陷的HRTEM圖像數(shù)據(jù)集從2個金屬納米晶體視頻中分解而來[16],由于分解后的圖像存在過于相似的問題,若只用這些圖像作為網(wǎng)絡的訓練數(shù)據(jù)集,實驗結果和網(wǎng)絡的應用及泛化能力將受到極大影響。為了使模型更好地應用于晶界缺陷的檢測,對每個缺陷位置的一些具有代表性的原始圖像進行旋轉、平移剪切、亮度對比度、椒鹽噪聲和直方圖均衡化等數(shù)據(jù)擴充操作,形成共2 000 張圖像,作為晶界數(shù)據(jù)集,如圖2所示。其中,測試集占10%,共200 張圖像用于測試模型的性能;訓練和驗證集占90%,共1 800 張。在訓練和驗證集中,驗證集占20%,共360張。
(a)晶界原圖1 (b)晶界原圖2 (c)晶界原圖3 (d)晶界原圖4
(e)旋轉操作 (f)平移剪切操作 (g)亮度對比度色度操作 (h)直方圖均衡化操作圖2 原始晶界缺陷樣本圖像和處理后的晶界樣本圖像
對于檢測精度的定義,實驗中采用與COCO數(shù)據(jù)集[17]評價標準相同的AP(Average Precision)指標和AR(Average Recall)指標[18]。AP是閾值為0.5~0.95之間的平均準確率,主要反映預測結果的誤檢率,AP50和AP75分別指閾值為0.5和0.75時模型的準確率。AR是平均召回率,反映預測結果的漏檢率。P是指準確率,即模型正確識別的晶界缺陷個數(shù)占模型識別的所有晶界缺陷個數(shù)之比;R是召回率,即模型正確識別的晶界缺陷個數(shù)占總體晶界缺陷圖像個數(shù)之比,定義見式(5)式(6)。P-R曲線即準確率-召回率曲線,每個AP計算過程為P-R曲線下的面積,AR計算過程為每個圖像中檢測到固定數(shù)量的最大召回率在類別和交并比上的平均值。
(5)
(6)
式(5)和式(6)中,TP是實際正樣本預測為正樣本的個數(shù);FP是負樣本預測為正樣本的個數(shù);TN是負樣本預測為負樣本的個數(shù);FN是將正樣本預測為正樣本的個數(shù)。
此外,采用參數(shù)量和浮點運算數(shù)(Floating Point Operations,F(xiàn)LOPs)等指標來衡量算法和模型復雜度。對應于某個卷積層的浮點運算數(shù)的計算見式(7):
FLOPsConv=(2×Ci×K2-1)×H×W×Co
(7)
式(7)中,Ci為輸入通道數(shù);K為卷積核尺寸;H和W分別為輸出特征層的高和寬;Co為輸出通道數(shù)。對應于全連接層的浮點運算數(shù)的計算見式(8):
FLOPsFC=(2×I-1)×O
(8)
式(8)中,I為輸入神經(jīng)元數(shù)量;O為輸出神經(jīng)元數(shù)量。
首先,使用非結構化剪枝的方法對EfficientDet進行剪枝實驗,所采用的模型為EfficientDet-D0。在晶界數(shù)據(jù)集上對未壓縮的模型進行完整訓練直到收斂,在模型完成完整訓練的基礎上,將一定數(shù)量小于閾值的權重進行置0操作,使權重矩陣稀疏化,對壓縮后的模型進行重新訓練使權重微調,使其盡量恢復最優(yōu)性能,降低剪枝對模型精度造成的損失。由于卷積層和全連接層對剪枝的靈敏度反映不同,即卷積層相比全連接層對剪枝有更高的靈敏度,實驗采用將所有卷積層和全連接層的權重分別減去20%和40%的L1非結構化剪枝方法,其中正則項系數(shù)λ的值采用10-5。剪枝后進行微調迭代訓練20,50,100,200個epoch,實驗結果如表2所示,不同微調訓練epoch數(shù)目的實驗結果如圖3所示。
圖3 不同微調訓練epoch數(shù)目的實驗結果圖
表2 不同微調程度的EfficientDet模型非結構化剪枝實驗結果
由圖3可知,不同微調訓練epoch數(shù)目也對晶界缺陷檢測的精度存在影響,當剪枝結束后微調網(wǎng)絡模型訓練100個epoch時,訓練損失已經(jīng)達到收斂,且壓縮后模型的測試平均精度、平均召回率最優(yōu),甚至略微超過基礎未壓縮前模型的精度,測試所用時間耗時最少。因此后續(xù)實驗均用微調訓練100個epoch的結果,作為最終訓練模型的參數(shù)預測晶界缺陷的位置。
由于L1正則化和L2正則化對網(wǎng)絡權重參數(shù)具有稀疏的作用,筆者對EfficientDet-D0模型分別進行L1范數(shù)和L2范數(shù)不同剪枝比例的權重剪枝,具體實驗結果如表3所示。
表3 基于權重剪枝的EfficientDet模型非結構化剪枝實驗結果
通過表3可以看出,隨著權重剪枝比例的上升,模型檢測效果并沒有明顯的下降,而是保持在原有的精度性能水平上,這說明模型中存在大量冗余權重,通過修剪冗余權重,使模型學習到較優(yōu)的網(wǎng)絡結構,因此性能有略微的提升。非結構剪枝方法使晶界模型測試時間有明顯的縮短,可由原來的23 s降低為12 s,大大縮短了模型運行測試的時間。不同通道剪枝比例和剪枝策略的EfficientDet-D0網(wǎng)絡非結構化剪枝模型的AP和AR指標結果圖如圖4所示。
(a)不同剪枝策略AP指標 (b)不同剪枝策略AR指標圖4 不同通道剪枝比例的AP和AR實驗結果圖
通過圖4可以看出,選擇不同的正則化對網(wǎng)絡修剪后的性能指標存在略微的差異。在剪枝過程的訓練中,正則化程度通過影響權值大小來決定剪枝的結構。從圖4中不同通道剪枝比例的AP指標和AR指標總體情況來看,L1正則化的剪枝效果比L2正則化優(yōu)秀,且當權重剪枝比例為30%時,網(wǎng)絡模型的性能最優(yōu)。
結構化剪枝實驗采用的算法見表1,采用BN層通道剪枝的方式,將不重要的BN層通道裁剪掉,使網(wǎng)絡模型參數(shù)量和計算量顯著減少。對于BN層通道結構化剪枝分別采取不同剪枝比例的實驗,實驗結果如表4所示。
表4 基于BN層通道剪枝的EfficientDet模型結構化剪枝實驗結果
由表4可知,隨著BN層通道的剪枝比例逐漸增加,模型參數(shù)量大幅減少,且浮點運算數(shù)指標也明顯降低。但是與剪枝算法前相比,若BN層通道剪枝達到80%,AP指標也會大幅下降2.4%,僅當BN層通道剪枝比例為40%時,算法模型性能最好??梢姡斁W(wǎng)絡結構裁剪過多時,很有可能造成最優(yōu)結構的破壞,引起模型精度的下降。因此,并不能用簡單地提高剪枝比例去降低模型的復雜度,而應綜合評估模型的性能指標。對模型剪枝前后參數(shù)量和FLOPs的縮減比例進行計算,不同剪枝比例的模型參數(shù)量和FLOPs縮減比例如圖5所示。若AP指標下降2.4%,在模型可接受范圍內,結構化剪枝可使模型參數(shù)量降低達到70%,模型的計算量降低達到60%。
圖5 不同BN層通道剪枝率的參數(shù)和FLOPs縮減比例
針對晶界缺陷檢測模型EfficientDet算法推理時間較慢、參數(shù)量大以及結構冗余導致模型應用成本高的問題,筆者提出了基于權重剪枝和BN層通道L1正則化剪枝的EfficientDet晶界檢測模型壓縮算法。非結構化剪枝的稀疏網(wǎng)絡雖能較高程度保證網(wǎng)絡模型的精度,減少模型推理時間,但是并不能帶來參數(shù)量和浮點計算量的減少,需要硬件設備支持加速。因此,筆者還采用對BN層的縮放因子重要性排序的方法,確定剪枝網(wǎng)絡的結構化通道剪枝,對EfficientDet模型進行了真正意義上的剪枝操作。實驗結果表明:通過剪枝方法可以大幅縮減模型的推理時間、參數(shù)量和浮點計算量,具有較好的實際應用意義。
然而,筆者僅針對EfficientDet算法深度網(wǎng)絡模型采用常規(guī)的剪枝操作策略,即根據(jù)相關參數(shù)的絕對值大小確定是否需要對網(wǎng)絡進行權重和BN層通道剪枝,該算法在剪枝比例達到較高后,模型性能會大幅度下降。因此,如何設計更優(yōu)的剪枝策略,使網(wǎng)絡模型在更精簡的同時,模型精度不會受到嚴重影響是后續(xù)研究的內容之一。