鄭祥盤,宋國進
(閩江學(xué)院物理與電子信息工程學(xué)院,福州 350108)
隨著經(jīng)濟的不斷發(fā)展,貨物的流通量越來越大,對大型起重機的運作時長要求也越來越高,這對起重機運行造成了潛在的安全隱患.因此,對起重機定期進行檢測、維護與保養(yǎng)是十分必要的.
相比于眾多的安全隱患,金屬結(jié)構(gòu)裂縫、變形、腐蝕等缺陷的出現(xiàn)往往會給生產(chǎn)造成重大的損失.因此,高空位置金屬結(jié)構(gòu)的缺陷檢測是大型起重機安全檢測最重要的環(huán)節(jié).基于傳統(tǒng)的缺陷檢測方法常常是人工作業(yè)對起重機進行勘察.檢驗人員需要攀爬到起重機金屬結(jié)構(gòu)的高空位置去觀察是否存在裂紋及腐蝕等缺陷;但有些部位如港口門座式起重機的象鼻梁和人字架頂部、門式起重機的主梁下蓋板和支腿上部等位置,往往存在檢驗人員難以到達、安全得不到保障以及檢測不夠全面等問題.
在起重機缺陷檢測方面,有通過建立大跨度門式起重機數(shù)學(xué)模型推導(dǎo)梁的中撓度解的[1],也有通過改進的和聲搜索算法識別起重機結(jié)構(gòu)空間模態(tài)的傳感器優(yōu)化布置的[2].但在起重機金屬結(jié)構(gòu)的缺陷檢測識別方面目前還沒有很好的識別方式.基于卷積神經(jīng)網(wǎng)絡(luò)在視覺識別方面取得了巨大進展,其中膠囊網(wǎng)絡(luò)通過一個卷積層和兩個膠囊層,不需要使用過多訓(xùn)練技巧,在MNIST數(shù)據(jù)集中取得了目前該領(lǐng)域內(nèi)領(lǐng)先地位的成績,錯誤率僅為0.25%[3].Salimans等[4]將卷積網(wǎng)絡(luò)應(yīng)用于對抗網(wǎng)絡(luò),得到生成式對抗網(wǎng)絡(luò)將該網(wǎng)絡(luò)用于圖像分類領(lǐng)域,改變了傳統(tǒng)CNN大量標(biāo)注樣本的學(xué)習(xí)策略.Hu等[5]提出的壓縮激發(fā)網(wǎng)絡(luò)(squeeze-and-excitation networks)通過對特征通道間的相關(guān)性建模,把重要特征進行強化以提升準(zhǔn)確率.在ImageNet訓(xùn)練集上的Top-5錯誤率由2012年冠軍網(wǎng)絡(luò)的15.4%降低至4.47%,Top-5錯誤率表示在學(xué)習(xí)到的標(biāo)簽中,預(yù)測概率最大的5個類別,不包含正確類別的比率.Simonyan等[6]提出了為處理大規(guī)模圖像識別的深度卷積神經(jīng)網(wǎng)絡(luò).王洋[7]等提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的特征快速提取算法.
為此,在前人研究的卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上,針對起重機金屬結(jié)構(gòu)缺陷圖像數(shù)據(jù)不足的特點,本文中提出雙網(wǎng)絡(luò)并行的卷積神經(jīng)網(wǎng)絡(luò)模型.首先建立淺層次卷積神經(jīng)網(wǎng)絡(luò),由于淺層次卷積神經(jīng)網(wǎng)絡(luò)卷積核數(shù)量較少,故識別速度較快,但精度不足.本文中應(yīng)用雙網(wǎng)絡(luò)并行模型,即采用訓(xùn)練好的深層次卷積神經(jīng)網(wǎng)絡(luò)AlexNet訓(xùn)練本文中構(gòu)建的淺層次卷積神經(jīng)網(wǎng)絡(luò),提高識別精度.
通過大量起重機金屬結(jié)構(gòu)缺陷圖像訓(xùn)練淺層次卷積神經(jīng)網(wǎng)絡(luò)模型.在卷積神經(jīng)網(wǎng)絡(luò)的框架上,用反向傳播算法確定淺層次卷積神經(jīng)網(wǎng)絡(luò)模型各層參數(shù),在全連接網(wǎng)絡(luò)層后連接Softmax分類器,應(yīng)用梯度下降算法更新分類器中各個參數(shù)值,從而獲得一個能對缺陷問題進行有效檢測與識別的分類器.
卷積神經(jīng)網(wǎng)絡(luò)受人對貓視覺皮層電生理研究的啟發(fā).經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)由卷積層(C)、激活函數(shù)層、池化層(P)、全連接層(FC)、損失函數(shù)層組成.整個網(wǎng)絡(luò)模型如圖1所示,圖中省略了卷積層和池化層之間的激活函數(shù)層[8].常用的激活函數(shù)有Sigmoid函數(shù)、Tanh函數(shù)、ReLU函數(shù).由于Sigmoid函數(shù)單調(diào)連續(xù),輸出范圍在(0,1)中,優(yōu)化較穩(wěn)定,故本文中采用Sigmoid函數(shù).
圖1 淺層次卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Shallow convolutional neural network structure diagram
上述卷積神經(jīng)網(wǎng)絡(luò)包含4個卷積層、3個最大池化層、1個全連接層、1個損失函數(shù)層(圖1),其中損失函數(shù)采用Softmax回歸函數(shù).首先在卷積層中包含有多個濾波器,對預(yù)處理后的二維圖像數(shù)據(jù)進行卷積運算,減少特征圖尺寸;然后將輸出值經(jīng)過Sigmoid函數(shù),獲取特征圖上的像素值,使模型能夠更加擬合復(fù)雜的函數(shù),形成特征圖;再通過池化層降低特征維度,減少模型計算量;最后將全連接層上的每個神經(jīng)元與輸入特征圖上的每個像素建立連接,綜合提取圖像特征,將組合后的特征值傳輸給Softmax分類器計算每個類別的概率值,從而確定每個像素的缺陷情況.其中,池化層將卷積層的輸出結(jié)果通過求出n×n滑動窗口的平均值或最大值來確定通過池化層后的特征圖,該輸出結(jié)果能夠很好地表示輸入池化層前的數(shù)據(jù),故池化層具有降低數(shù)據(jù)特征維度,降低計算量的作用.
由于BP算法是一種能夠極大降低梯度的訓(xùn)練方法,故本文采用BP算法求解淺層次卷積神經(jīng)網(wǎng)絡(luò)模型中的參數(shù)值.在計算模型的每層參數(shù)的過程中利用梯度下降算法[9]對網(wǎng)絡(luò)中的每層參數(shù)進行迭代更新,采用的更新公式為
(1)
(2)
(3)
在全連接網(wǎng)絡(luò)層的結(jié)果輸出后連接Softmax分類器,計算得到不同類別的對應(yīng)概率.對網(wǎng)絡(luò)前面的輸出結(jié)果進行分類,首先取二分類進行分析,采用{(x1,E(x1)),…,(xi,E(xi)),…,(xN,E(xN))}表示N個數(shù)據(jù),xi為表示輸入圖像數(shù)據(jù)的矩陣,E為卷積神經(jīng)網(wǎng)絡(luò)的期望輸出.對于二分類問題有:
(4)
其中:p表示當(dāng)輸入數(shù)據(jù)為xi時,輸出值為1或0的概率;θ為當(dāng)前模型參數(shù)k、b構(gòu)成的矩陣.綜合可得概率分布為:
p(x)=(gθ(x))E(xi)((1-gθ(x))1-E(xi),
(5)
其中,x為x1,x2,…xN構(gòu)成的矩陣,gθ(x)=q(θTx),q為Sigmoid函數(shù).
通過最大似然估計等計算可得分類器關(guān)于θ的損失函數(shù):
(1-E(xi))log(1-gθ(xi))].
(6)
通過對θj求偏導(dǎo),可得:
(7)
(8)
其中α為學(xué)習(xí)率.由于多任務(wù)學(xué)習(xí)相較于單任務(wù)學(xué)習(xí)的分類準(zhǔn)確率和效率更高,已廣泛應(yīng)用在圖像識別[10]、圖像細(xì)粒度分類[11]、人臉檢測[12]等圖像領(lǐng)域,因此本文中將以上二分類情況拓展至多分類情況,取l為分類的種類,同理可得
其中,θ1,θ2,…,θl為每組標(biāo)簽對應(yīng)的所有參數(shù)構(gòu)成的矩陣.
多種類分類器的損失函數(shù)為:
(1-E(xi))log(1-gθ(xi))]=
(9)
對θj求偏導(dǎo)可得:
(10)
根據(jù)梯度下降算法,按式(1)更新參數(shù),訓(xùn)練Softmax分類器中參數(shù).
通過上節(jié)中對網(wǎng)絡(luò)中各層參數(shù)的訓(xùn)練,完成了較淺層次網(wǎng)絡(luò)模型的建立.為了彌補淺層次的卷積神經(jīng)網(wǎng)絡(luò)識別精度低的缺陷,在上述理論基礎(chǔ)上建立雙網(wǎng)絡(luò)并行模型,即利用深層次網(wǎng)絡(luò)模型AlexNet與淺層次網(wǎng)絡(luò)模型的交叉熵函數(shù)訓(xùn)練淺層次卷積神經(jīng)網(wǎng)絡(luò),達到提高識別精度、降低訓(xùn)練模型參數(shù)對服務(wù)器的要求,縮短訓(xùn)練時間.
利用雙網(wǎng)絡(luò)并行模型完成淺層次卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練后,將每一幀圖像進行不同尺度大小的變化并且均等分塊輸入淺層次卷積神經(jīng)網(wǎng)絡(luò),計算每個分塊的結(jié)果值,將其與之前人為定義的數(shù)值進行對比,從而確定缺陷的類別.
在網(wǎng)絡(luò)模型訓(xùn)練過程中,對各個類別數(shù)據(jù)均勻隨機抽樣,將70%、20%、10%分別作為訓(xùn)練集、測試集和驗證集.使用工業(yè)相機采集圖像,像素為2 048×4 096,將圖像劃分為5行10列,共有50張子圖.且從采集到的圖像中隨意裁剪3 000張擁有同樣缺陷問題的圖像,分別縮放至100×100與227×227兩種規(guī)格.其中將100×100規(guī)格的圖像用于訓(xùn)練本文提出的較淺層次的神經(jīng)網(wǎng)絡(luò),用227×227規(guī)格的圖像訓(xùn)練AlexNet.人為的定義每種數(shù)值代表的缺陷類別,以便后續(xù)與結(jié)果進行比對,確定缺陷類別.為了將圖像中的缺陷問題凸顯出來,并有利于訓(xùn)練時的收斂,對圖像進行中心式歸一化處理.即將圖像中的每一個像素減去該圖像的平均值,并減少圖像數(shù)值的取值范圍.中心式歸一化示意圖如圖2所示.
圖2 中心式歸一化示意圖Fig.2 Central normalized diagram
進一步將中心式歸一化處理后的圖像儲存在數(shù)據(jù)庫中,減少硬盤IO開銷[9].
本研究構(gòu)建的雙網(wǎng)絡(luò)并行模型如圖3所示.其中,全連接層前存在一個卷積層分支,其中卷積核個數(shù)為200,卷積核大小為7×7,步長為1.將該卷積層與AlexNet中的最后一個池化層輸出結(jié)果進行交叉熵?fù)p失函數(shù)連接,通過深層次卷積神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果修正較淺層次神經(jīng)網(wǎng)絡(luò)模型中的參數(shù)實現(xiàn)雙網(wǎng)絡(luò)并行模型.并行網(wǎng)絡(luò)的損失函數(shù)為:
J(θ)=αLclassification(θ)+βLcross,
(11)
圖3 雙網(wǎng)絡(luò)模型示意圖(省略激活函數(shù)層、中心歸一化層)Fig.3 Dual network model diagram (omitted activation function layer and center normalization layer)
其中,Lclassification(θ)為分類器的損失函數(shù),即式(10).Lcross為較淺層次網(wǎng)絡(luò)與AlexNet網(wǎng)絡(luò)之間的交叉熵?fù)p失函數(shù),具體為
(12)
其中,t=(ti)表示AlexNet在最后一個池化層輸出的特征向量,s=(si)為本文所提出網(wǎng)絡(luò)在C4層輸出的特征向量.
首先,對AlexNet與淺層卷積神經(jīng)網(wǎng)絡(luò)分別進行訓(xùn)練.其中AlexNet模型的卷積核參數(shù)初始化采用AlexNet在1 000分類中訓(xùn)練好的參數(shù)[13],輸入AlexNet模型的數(shù)據(jù)大小為227×227×3.淺層次卷積神經(jīng)網(wǎng)絡(luò)模型參數(shù)采用隨機初始化,即采用均值為0,方差為1的標(biāo)準(zhǔn)高斯分布,輸入淺層次網(wǎng)絡(luò)模型的數(shù)據(jù)大小為100×100×1.通過反向傳播梯度下降算法,在每一次迭代過程中,對公式(2)中的權(quán)重與偏置參數(shù)k,b進行更新.
其次,對雙網(wǎng)絡(luò)并行模型進行訓(xùn)練.由于式(11)中α=1-β,故需通過對訓(xùn)練集數(shù)據(jù)進行訓(xùn)練來確定β超參數(shù)值.本文中訓(xùn)練次數(shù)為20次,淺層次的卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練參數(shù)中每個批次圖片數(shù)量為128,權(quán)重衰減系數(shù)為0.000 1,α的初始值為0.001,每迭代104次,α縮小10倍.取原有訓(xùn)練集劃分為訓(xùn)練集與測試集,根據(jù)模型在測試集的表現(xiàn)效果確定式(12)中的超參數(shù)β的值,結(jié)果如圖4所示.從圖4可得超參數(shù)β為0.2時,模型準(zhǔn)確率最高,表現(xiàn)效果最好.
圖4 β與模型分類準(zhǔn)確率關(guān)系圖Fig.4 Relation diagram between super-parameter and model classification accuracy
本文中采用相同的數(shù)據(jù)與訓(xùn)練策略分別對2組模型進行訓(xùn)練,一組為本文第2節(jié)改進的加入AlexNet的雙網(wǎng)絡(luò)并行模型,另一組為本文第1節(jié)的淺層次單網(wǎng)絡(luò)卷積模型.根據(jù)訓(xùn)練情況繪制出樣本集大小對準(zhǔn)確率影響曲線,如圖5所示.
圖5 雙網(wǎng)絡(luò)模型與單網(wǎng)絡(luò)模型不同樣本集對比曲線圖Fig.5 Contrast curve of different sample sets between double network model and single network model
由圖5可知,雙網(wǎng)并行模型準(zhǔn)確率高達95.9%,誤檢量為123.若只采用單網(wǎng)絡(luò)模型進行訓(xùn)練,則模型的最大準(zhǔn)確率為80.1%,誤檢量為597.通過本研究改進的雙網(wǎng)絡(luò)并行的卷積神經(jīng)網(wǎng)絡(luò)模型可以將誤檢率降低79.4%,準(zhǔn)確率提高11.8%,故采用雙網(wǎng)絡(luò)模型比單網(wǎng)絡(luò)模型在識別的準(zhǔn)確性方面有明顯提高,具有更好的魯棒性,識別效率更高.
為驗證本文中雙網(wǎng)絡(luò)并行模型有效性,現(xiàn)將該模型與淺層次卷積神經(jīng)網(wǎng)絡(luò)模型放在相同訓(xùn)練集與訓(xùn)練策略條件下,對起重機金屬結(jié)構(gòu)的疲勞開裂、腐蝕等常見缺陷圖像進行分類.除此之外為進一步說明本文中雙網(wǎng)絡(luò)并行模型算法在起重機缺陷檢測方面的優(yōu)勢,現(xiàn)將該雙網(wǎng)絡(luò)并行模型算法與屬于卷積神經(jīng)網(wǎng)的SENet模型,以及傳統(tǒng)的機器視覺方法支持向量機庫(LibSVM)、BP神經(jīng)網(wǎng)絡(luò)進行對比.
SENet模型是ILSVRC 2017的冠軍網(wǎng)絡(luò)[14].在SENet模型中,每個通道的[0,1]權(quán)重由分支(gap-fc-fc-sigm)分配,能夠自適應(yīng)地使原各通道的激活值進行響應(yīng).該網(wǎng)絡(luò)模型在ImageNet數(shù)據(jù)集中圖像分類錯誤率僅為2.25%.但該模型的空間復(fù)雜度較高,參數(shù)數(shù)量高達2.75×107.一般來說,模型的大小取決于訓(xùn)練的數(shù)據(jù)規(guī)模,而起重機缺陷識別檢測的分類較少,故對起重機缺陷分類識別所對應(yīng)的簡單數(shù)據(jù)集應(yīng)用SENet模型容易造成過擬合問題.現(xiàn)將相同的訓(xùn)練集、測試集數(shù)據(jù)分別對SENet進行訓(xùn)練,SENet各層初始化參數(shù)為ImageNet訓(xùn)練后的參數(shù).
LibSVM[15]所采用的測試集、訓(xùn)練集同雙網(wǎng)絡(luò)并行的卷積神經(jīng)網(wǎng)絡(luò)一致.LibSVM分類采取以下步驟:
1) 提取樣本梯度直方圖(HOG)特征.
2) 選擇核函數(shù),核函數(shù)公式為K(u,v)=exp(-γ|u-v|2).
3) 通過LibSVM中SVMcgForClass函數(shù)選取最優(yōu)c和g,其中,c為懲罰系數(shù),g為gamma函數(shù)設(shè)置.
4) 訓(xùn)練模型,用以上得到的g、c訓(xùn)練分類模型.
5) 精度測試,用LibSVM中svmpredict函數(shù)對模型分類精度進行測試.
BP神經(jīng)網(wǎng)絡(luò)模型[16]的訓(xùn)練步驟如下:
1) 初始化權(quán)系數(shù)及各網(wǎng)絡(luò)參數(shù).初始學(xué)習(xí)率 0.1,動量因子0.9,允許誤差10-6,隱層節(jié)點20個.
2) 輸入樣本,迭代次數(shù)n=0.
3) 比較期望輸出Tk與實際輸出Zk(n)計算誤差E(n),判斷是否滿足要求,滿足轉(zhuǎn)至6),否則轉(zhuǎn)至4).
4) 判斷n+1是否大于最大迭代次數(shù),若大于轉(zhuǎn)至6),否者,反向計算每層神經(jīng)元局部梯度Dn.
5) 計算學(xué)習(xí)率η(n)與權(quán)值w(n);n=n+1,轉(zhuǎn)至3).
6) 判斷是否訓(xùn)練完所有樣本,是則結(jié)束,否則轉(zhuǎn)至2).
表1給出了雙網(wǎng)絡(luò)并行模型與對比模型的識別準(zhǔn)確率.對比雙網(wǎng)絡(luò)模型算法與屬于卷積神經(jīng)網(wǎng)絡(luò)的淺層次單網(wǎng)絡(luò)模型和SENet模型的識別準(zhǔn)確率可以看出,本文采用的雙網(wǎng)絡(luò)并行模型比淺層次卷積神經(jīng)網(wǎng)絡(luò)模型在缺陷識別準(zhǔn)確率方面有較大幅度的提高,且對起重機金屬結(jié)構(gòu)缺陷識別的效果更加穩(wěn)定.SENet模型由于其模型參數(shù)過多,訓(xùn)練數(shù)據(jù)過少,導(dǎo)致過渡擬合了訓(xùn)練數(shù)據(jù),缺乏泛化能力,所以表1中其識別準(zhǔn)確率也不如雙網(wǎng)絡(luò)并行模型.與傳統(tǒng)的機器視覺算法LibSVM和BP神經(jīng)網(wǎng)絡(luò)進行對比,可以看出由于雙網(wǎng)絡(luò)并行模型的卷積神經(jīng)網(wǎng)絡(luò)避免了傳統(tǒng)機器視覺所必需的圖像灰度值操作、模糊操作、閾值操作、腐蝕以及膨脹操作,雙網(wǎng)絡(luò)并行模型算法比LibSVM算法、BP神經(jīng)網(wǎng)絡(luò)在起重機金屬結(jié)構(gòu)裂紋、腐蝕、變形等缺陷識別準(zhǔn)確率均有較大提高.
表1 雙網(wǎng)絡(luò)并行模型與其他模型的缺陷識別準(zhǔn)確率對比表
圖6為雙網(wǎng)絡(luò)并行模型算法與LibSVM算法、BP神經(jīng)網(wǎng)絡(luò)的大型起重機金屬結(jié)構(gòu)腐蝕和裂縫缺陷檢測效果對比圖.圖中綠色為雙網(wǎng)絡(luò)并行模型算法的檢測效果圖,藍色為LibSVM算法檢測效果圖、白色為BP神經(jīng)網(wǎng)絡(luò)檢測效果圖.
圖6 起重機金屬結(jié)構(gòu)檢測結(jié)果圖Fig.6 Crane metal structure detection result diagram
從圖6可看出,在面對不同尺度的起重機金屬結(jié)構(gòu)的缺陷識別時,本文中提出的雙網(wǎng)絡(luò)并行模型算法更具魯棒性,而LibSVM算法、BP神經(jīng)網(wǎng)絡(luò)雖然能夠識別框出起重機金屬結(jié)構(gòu)缺陷,但其準(zhǔn)確度不如雙網(wǎng)絡(luò)并行的卷積神經(jīng)網(wǎng)絡(luò)模型.
傳統(tǒng)機器視覺在大型起重機金屬結(jié)構(gòu)的缺陷識別應(yīng)用中,存在數(shù)據(jù)量大、特征空間維度高,單一特征提取算法難以滿足大型起重機金屬結(jié)構(gòu)缺陷的識別.本文中提出將雙網(wǎng)絡(luò)并行模型的智能視覺檢測技術(shù)應(yīng)用于該領(lǐng)域,提高缺陷識別的性能與效率,并通過實驗驗證了該算法的有效性,得到如下結(jié)論:
1) 與傳統(tǒng)的起重機缺陷檢測算法比較,雙網(wǎng)絡(luò)并行模型的卷積神經(jīng)網(wǎng)絡(luò)算法不僅通過圖像池化操作降低了特征空間維度,還通過將全連接層上的每個神經(jīng)元與輸入特征圖上的每個像素建立連接,綜合提取圖像特征算法,使其具有更好的魯棒性,識別效率更高.
2) 通過雙網(wǎng)絡(luò)并行模型與單網(wǎng)絡(luò)模型、傳統(tǒng)機器視覺識別方式的實驗性能對比,驗證了雙網(wǎng)絡(luò)并行模型算法在識別金屬結(jié)構(gòu)缺陷的準(zhǔn)確度.表1所示淺層次單網(wǎng)絡(luò)卷積模型識別準(zhǔn)確率最高為87.2%,傳統(tǒng)機器視覺識別準(zhǔn)確率最高為87.8%.而雙網(wǎng)絡(luò)并行模型識別準(zhǔn)確率最低也有95.3%,表明雙網(wǎng)絡(luò)模型相比于單網(wǎng)絡(luò)卷積模型、傳統(tǒng)機器視覺的有效性.
3) 通過雙網(wǎng)絡(luò)并行模型與SENet網(wǎng)絡(luò)模型的實驗性能對比,驗證了雙網(wǎng)絡(luò)并行模型算法在識別金屬結(jié)構(gòu)缺陷的效率與準(zhǔn)確度.由于SENet網(wǎng)絡(luò)模型訓(xùn)練參數(shù)量達到2.75×107,遠大于雙網(wǎng)絡(luò)并行模型所需訓(xùn)練參數(shù),空間復(fù)雜度較高,導(dǎo)致缺陷識別效率較差.而在準(zhǔn)確率方面,其識別準(zhǔn)確率最高為90.1%,低于雙網(wǎng)絡(luò)并行模型準(zhǔn)確率.