吳 忍,孫 淵
(上海電機(jī)學(xué)院機(jī)械學(xué)院,上海201306)
風(fēng)機(jī)塔筒就是風(fēng)力發(fā)電機(jī)的塔桿,主要起支撐和吸收風(fēng)電機(jī)組振動(dòng)的作用,為確保風(fēng)機(jī)發(fā)電量的穩(wěn)定可靠,風(fēng)機(jī)塔筒要將風(fēng)力發(fā)電機(jī)組支撐于60~100 m的高空。風(fēng)機(jī)塔筒的結(jié)構(gòu)型式主要有圓筒式、桁架式等,按照材料類(lèi)型又可分為純鋼式、混凝土式等。目前,鋼制圓筒式塔架在國(guó)內(nèi)外風(fēng)電企業(yè)中應(yīng)用最為廣泛。
風(fēng)機(jī)塔筒的焊縫主要包括單節(jié)塔筒的內(nèi)外縱縫,兩節(jié)塔筒組對(duì)后的內(nèi)外環(huán)縫以及法蘭盤(pán)和筒節(jié)的拼接焊縫。目前我國(guó)的塔筒生產(chǎn)中主要采用風(fēng)電塔筒大型焊機(jī)對(duì)塔筒進(jìn)行自動(dòng)化焊接,但是對(duì)于塔筒焊縫的無(wú)損檢測(cè)依然是完全依賴(lài)人工,檢測(cè)內(nèi)容包括外部和內(nèi)部缺陷檢測(cè)。對(duì)于外部缺陷,大多采用磁粉檢測(cè)(MT)、滲透檢測(cè)(PT)和渦流檢測(cè)(ET),但是由于風(fēng)機(jī)塔筒體積龐大且焊縫分布不平,操作起來(lái)十分不便,效率不高[1]。隨著計(jì)算機(jī)技術(shù)和圖像處理技術(shù)的飛速發(fā)展,在目標(biāo)檢測(cè)領(lǐng)域中,先后出現(xiàn)了數(shù)字圖像處理技術(shù)、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)3種常用的檢測(cè)方法。數(shù)字圖像處理技術(shù)也就是傳統(tǒng)圖像處理技術(shù),采集圖像時(shí)易受外界環(huán)境的噪聲干擾,泛化能力不強(qiáng)。機(jī)器學(xué)習(xí)在一定程度上能夠抵抗外界噪聲干擾,但是機(jī)器學(xué)習(xí)模型的參數(shù)設(shè)置和目標(biāo)特征點(diǎn)都要人為設(shè)定,過(guò)分依賴(lài)經(jīng)驗(yàn),因此精確度和效率無(wú)法得到保障。深度學(xué)習(xí)的出現(xiàn)解決了以上兩種目標(biāo)檢測(cè)方法存在的問(wèn)題,以卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Network,CNN)為基礎(chǔ),出現(xiàn)了R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD等多種目標(biāo)檢測(cè)算法,不需要人為地進(jìn)行特征提取。深度學(xué)習(xí)算法可自動(dòng)進(jìn)行特征提取,對(duì)目標(biāo)進(jìn)行檢測(cè)和分類(lèi),同時(shí)具有很高的檢測(cè)效率和準(zhǔn)確性。
本文提出一種基于傳統(tǒng)圖像處理和CNN的風(fēng)機(jī)塔筒焊縫缺陷檢測(cè)算法。該算法首先使用傳統(tǒng)圖像處理算法將工業(yè)相機(jī)采集到的焊縫圖像進(jìn)行灰度化。然后對(duì)焊縫灰度圖像進(jìn)行增強(qiáng)處理,改善圖像的視覺(jué)效果,清晰化圖像,便于計(jì)算機(jī)對(duì)圖像進(jìn)行進(jìn)一步處理分析。最后將圖像作為訓(xùn)練好的CNN的輸入,通過(guò)CNN判斷焊縫外部是否存在缺陷。
焊縫圖像的質(zhì)量將會(huì)直接影響缺陷檢測(cè)的準(zhǔn)確度。經(jīng)過(guò)有效傳統(tǒng)處理的圖像,具有更好的缺陷特征和更高的識(shí)別度。本文將對(duì)原始焊縫圖像進(jìn)行灰度化和圖像增強(qiáng)處理。
目前彩色圖片顏色空間包括RGB、CMY(K)、HSV和CIE-XYZ顏色空間,主流的顏色空間是RGB三通道彩色圖[2]。RGB圖像是以三維矩陣的方式存儲(chǔ),訓(xùn)練CNN時(shí),需要對(duì)RGB 3種分量進(jìn)行處理,將會(huì)增加網(wǎng)絡(luò)訓(xùn)練的時(shí)間和難度,而且顏色本身容易受到光照等因素的干擾,很難提供準(zhǔn)確的關(guān)鍵信息。因此,需要將采集到的彩色圖片灰度化,降低圖像的矩陣維數(shù)。
圖像經(jīng)過(guò)灰度化之后,顏色信息丟失,但圖像的梯度信息仍然能保留下來(lái)。在焊縫的缺陷檢測(cè)中,為了識(shí)別出缺陷,最關(guān)鍵的因素是圖像的梯度,也就是圖像的邊緣信息。目前圖像灰度化的方法包括分量法、最大值法、平均值法和加權(quán)平均法。
分量法是指將RGB圖像中三分量的亮度值分別作為3個(gè)灰度圖像的灰度值,根據(jù)后續(xù)的實(shí)際需求選取其中1個(gè)灰度值。最大值法是將RGB圖像中三分量亮度最大的亮度值作為灰度圖像的灰度值。平均值法是以RGB圖像三分量亮度值的平均值作為灰度圖像的灰度值。加權(quán)平均法是將三分量以不同的權(quán)值進(jìn)行加權(quán)平均[3]。通常情況下,人眼對(duì)綠色最敏感,而對(duì)藍(lán)色最不敏感,對(duì)RGB圖像的三分量加權(quán)平均得到灰度圖像的灰度值為
式中:i,j為圖像中某一像素點(diǎn)在圖像中的位置坐標(biāo)[4];R(i,j)為該像素點(diǎn)的紅色度值;G(i,j)為該像素點(diǎn)的綠色度值;B(i,j)為該像素點(diǎn)的藍(lán)色度值。
本文采用加權(quán)平均法對(duì)焊縫圖像進(jìn)行灰度化,焊縫原圖像以及灰度化后的灰度圖像如圖1、圖2所示。
圖1 焊縫原圖
圖2 焊縫灰度圖像
通過(guò)圖像增強(qiáng),圖像所含信息的質(zhì)量和辨識(shí)度會(huì)得到有效提升,對(duì)于實(shí)驗(yàn)觀察或者進(jìn)一步的分析處理都十分有利。圖像的信息主要是通過(guò)某些特征傳達(dá)出來(lái)的,比如圖像的邊緣、輪廓以及對(duì)比度等。通過(guò)對(duì)這些圖像特征的突出和增強(qiáng),可更好地顯示圖像的有效信息,提高圖像的使用價(jià)值。圖像增強(qiáng)按照作用域的不同可分為空域內(nèi)處理和頻域內(nèi)處理。空域內(nèi)處理是直接對(duì)圖像進(jìn)行處理;頻域內(nèi)處理是在圖像的某個(gè)變換域內(nèi),對(duì)圖像的變換系數(shù)進(jìn)行運(yùn)算,再通過(guò)逆變換獲得圖像的增強(qiáng)效果[5]。本文采用空域內(nèi)的圖像銳化方法對(duì)焊縫灰度圖像進(jìn)行增強(qiáng)處理。
圖像銳化主要是指邊緣銳化,突出圖像中的邊緣或紋理,使圖像中的各種邊界更明顯。從數(shù)學(xué)的角度來(lái)看,銳化前的圖像相當(dāng)于是被“積分”了的圖像,為了達(dá)到銳化的效果,要運(yùn)用“微分”運(yùn)算將被“積分”了的圖像還原。在圖像銳化的過(guò)程中,需要運(yùn)用到各種邊緣檢測(cè)算子,比如Roberts算子、Sobel算子、Prewitt算子和Laplace算子等,其中前3種算子為一階邊緣算子,也屬于微分算子,Laplace算子通常作為二階邊緣算子[6]。
對(duì)于離散的圖像f(x,y),Roberts算子的灰度計(jì)算公式為
式中:Ro(i,j)為該像素點(diǎn)增強(qiáng)后的灰度值;f(i,j)、f(i+1,j+1)、f(i,j+1)、f(i+1,j)分 別為該像素點(diǎn)本身、右下方、右方以及正下方像素點(diǎn)的灰度值。
Roberts算子由兩個(gè)2階的模板組成[5]:
Sobel算子為兩個(gè)3×3矩陣[5]
這兩個(gè)算子分別代表圖像的水平和垂直梯度。
Prewitt算子大小與Sobel相同,均為3×3的算子[5]
Laplace算子是一種不依賴(lài)于邊緣方向的二階微分算子,是標(biāo)量而不是矢量。Laplace算子具有旋轉(zhuǎn)不變的性質(zhì),在圖像處理中經(jīng)常用來(lái)提取圖像的邊緣,其表達(dá)式為
數(shù)字圖像的近似公式為[5]
在Matlab中基于以上4種算子對(duì)焊縫灰度圖像銳化后的效果如圖3所示。
由圖3可見(jiàn),經(jīng)過(guò)銳化后的焊縫圖像中焊縫從背景中凸顯出來(lái),更加清晰,且基于Laplace算子銳化后的圖像相比其他3種算子的銳化效果更加優(yōu)秀,不僅焊縫邊緣準(zhǔn)確清晰,且焊縫內(nèi)的特征也能有效體現(xiàn)出來(lái)。因此,本文選擇Laplace算子對(duì)焊縫灰度圖像進(jìn)行銳化處理。
圖3 圖像增強(qiáng)效果
CNN和普通的神經(jīng)網(wǎng)絡(luò)十分相似,都由大量的神經(jīng)元組成。CNN是一種前饋神經(jīng)網(wǎng)絡(luò),其神經(jīng)元可以響應(yīng)一部分覆蓋范圍內(nèi)的周?chē)鷨卧褻NN的默認(rèn)輸入都是圖像,一個(gè)CNN包括很多層,它們的輸入是三維的,輸出也是三維的。CNN通常包含輸入層、卷積層、池化層、全連接層和輸出層,有些應(yīng)用于分類(lèi)問(wèn)題的CNN還具有Softmax層[7]。本文采用的CNN結(jié)構(gòu)如圖4所示。
圖4 CNN結(jié)構(gòu)
(1)輸入層。輸入層是整個(gè)神經(jīng)網(wǎng)絡(luò)的輸入,在進(jìn)行圖像處理的CNN中,輸入層代表著輸入圖像的像素矩陣。三維矩陣可以代表一張圖片,三維矩陣的長(zhǎng)和寬代表圖像的大小,三維矩陣的深度代表圖像的色彩深度[8]。本文輸入層的圖像均為灰度圖像,故深度為1。從輸入層開(kāi)始,CNN通過(guò)不同的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)將上一層的三維矩陣轉(zhuǎn)化為下一層的三維矩陣,直至最后的全連接層。
(2)卷積層。卷積層是CNN中最重要的部分,和傳統(tǒng)的全連接層不同,卷積層每個(gè)節(jié)點(diǎn)上的輸入只是上一層神經(jīng)網(wǎng)絡(luò)的一小塊。卷積層的目標(biāo)就是通過(guò)對(duì)神經(jīng)網(wǎng)絡(luò)中的每一個(gè)小塊進(jìn)行深入分析,進(jìn)而得到圖像抽象程度更高的特征,卷積層會(huì)增加原始節(jié)點(diǎn)的深度。
卷積層由很多個(gè)特征映射組成,每一個(gè)特征映射都包含一個(gè)卷積核,不同的特征映射所包含的卷積核也是不同的,其所能抽取的特征類(lèi)型也不同。卷積核大小要根據(jù)圖像的大小來(lái)確定,卷積核過(guò)大,會(huì)產(chǎn)生過(guò)擬合,太小則很難完全提取圖像的有效特征[9]。
經(jīng)過(guò)卷積后圖像的WF(寬)和HF(高)分別為
式中:W、H為原圖像的寬和高;F為卷積核的大??;S為步長(zhǎng);P為邊界填充大小[10]。
卷積層中需要訓(xùn)練的參數(shù)數(shù)量只與卷積核的大小和數(shù)量有關(guān),同時(shí),卷積層中同一個(gè)特征映射的所有神經(jīng)元具有相同的卷積核,被稱(chēng)為權(quán)值共享[11],這樣就可降低需要訓(xùn)練的參數(shù)個(gè)數(shù)和訓(xùn)練難度。
(3)池化層。池化層能在保留卷積層有用數(shù)據(jù)的同時(shí),降低數(shù)據(jù)的維度,進(jìn)而減少CNN的計(jì)算量,提高訓(xùn)練速度。即池化層神經(jīng)網(wǎng)絡(luò)不會(huì)減少矩陣的深度,但它可以縮小矩陣的大小[12]。經(jīng)過(guò)池化操作,可將分辨率較高的圖片變?yōu)榉直媛瘦^低的圖片,進(jìn)一步縮小最后全連接層中的節(jié)點(diǎn)個(gè)數(shù)。同時(shí),池化操作還可防止過(guò)度擬合[13]。
(4)全連接層。經(jīng)過(guò)多次卷積層和池化層處理之后,輸入的圖像信息已被抽象成信息含量更高的特征。隨著卷積層和池化層層數(shù)的增加,特征映射的數(shù)量越來(lái)越多,每一個(gè)特征映射具有的神經(jīng)元數(shù)量越來(lái)越少,直至神經(jīng)元的數(shù)量減少為1[14]。當(dāng)每個(gè)特征平面都只有一個(gè)神經(jīng)元的時(shí)候,網(wǎng)絡(luò)的連接變成了全連接。全連接層的每個(gè)節(jié)點(diǎn)都與上一層的所有節(jié)點(diǎn)相連,匯總提取的特征。
(5)輸出層。輸出層的神經(jīng)元個(gè)數(shù)和網(wǎng)絡(luò)具體的任務(wù)有關(guān),對(duì)于本文的焊縫識(shí)別來(lái)說(shuō),輸出層的個(gè)數(shù)為需要檢測(cè)的焊縫情況種類(lèi)。
本文采用7層CNN結(jié)構(gòu),包括3層卷積層、3層池化層和1層全連接層?;谒仓圃鞆S采集的300張焊縫圖片,由于單張圖片過(guò)大,而且單張圖片既包含焊縫缺陷位置,也包含焊縫正常位置,通過(guò)圖像分割將300張照片擴(kuò)展為正常焊縫圖片500張,焊縫成形差和焊縫裂紋圖片各200張。由于條件的限制,現(xiàn)階段采集到的樣本圖片數(shù)量較少,將會(huì)影響到網(wǎng)絡(luò)的訓(xùn)練效果。本文對(duì)圖像添加噪聲、變換缺陷所處位置等方法,將正常圖片數(shù)量擴(kuò)充至1 200張,其中1 000張用于網(wǎng)絡(luò)訓(xùn)練,200張用于網(wǎng)絡(luò)測(cè)試。將焊縫成形差的圖片和焊縫裂紋的圖片分別擴(kuò)充至600張,各自的500張用于網(wǎng)絡(luò)訓(xùn)練,100張作為測(cè)試集用于網(wǎng)絡(luò)測(cè)試。3種訓(xùn)練樣本的圖片如圖5所示。
圖5 焊縫缺陷樣本
本文的數(shù)據(jù)集訓(xùn)練在Win10系統(tǒng)下進(jìn)行,處理 器 為Intel(R)Core(TM)i7-8550U,顯 卡 為GTX 1050,內(nèi)存32 GB,CNN的訓(xùn)練和測(cè)試都是基于Matlab中的Deep Learn Toolbox-master。
CNN在訓(xùn)練過(guò)程中對(duì)網(wǎng)絡(luò)的學(xué)習(xí)率、Batch和迭代次數(shù)等進(jìn)行調(diào)試,網(wǎng)絡(luò)參數(shù)的調(diào)試對(duì)于網(wǎng)絡(luò)測(cè)試的準(zhǔn)確率和效率至關(guān)重要。學(xué)習(xí)率是指在優(yōu)化算法中更新網(wǎng)絡(luò)權(quán)重的幅度大小,學(xué)習(xí)率可以恒定,也可基于動(dòng)量或是自適用。過(guò)大的學(xué)習(xí)率可能會(huì)導(dǎo)致網(wǎng)絡(luò)訓(xùn)練永遠(yuǎn)無(wú)法達(dá)到要求,過(guò)小的學(xué)習(xí)率則會(huì)使網(wǎng)絡(luò)訓(xùn)練效率變慢,有時(shí)還會(huì)出現(xiàn)局部最優(yōu)的情況。Batch是指每次輸入CNN的圖片數(shù)量。在可控的情況下,Batch值的選擇越大越好,值越大,模型下降的方向越準(zhǔn),震蕩越小,但過(guò)大的Batch則會(huì)使收斂精度陷入不同的局部值。迭代次數(shù)是指模型訓(xùn)練過(guò)程中遍歷數(shù)據(jù)集的次數(shù),其會(huì)直接影響模型的分類(lèi)精度[15]。根據(jù)CNN的訓(xùn)練情況,最終確定學(xué)習(xí)率為0.2,Batch值為60,迭代次數(shù)為6 000。將測(cè)試集圖片輸入訓(xùn)練好的CNN,測(cè)試結(jié)果準(zhǔn)確率如表1所示。
表1 測(cè)試結(jié)果
根據(jù)測(cè)試結(jié)果可以看出,本文的CNN對(duì)于檢測(cè)識(shí)別風(fēng)機(jī)塔筒焊縫是否存在焊縫成形差和裂紋缺陷具有很高的識(shí)別準(zhǔn)確率。
目前風(fēng)機(jī)塔筒的焊縫外部缺陷檢測(cè)主要是通過(guò)人工檢測(cè),本文提出的基于CNN的檢測(cè)方法具有耗時(shí)短、魯棒性高的特點(diǎn),經(jīng)過(guò)實(shí)驗(yàn)測(cè)試也具有很高的檢測(cè)準(zhǔn)確率。在之后的研究中,需要進(jìn)一步提高學(xué)習(xí)樣本的數(shù)量和樣本的多樣化,增強(qiáng)樣本的采集質(zhì)量,優(yōu)化神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和參數(shù),從而提高網(wǎng)絡(luò)的檢測(cè)準(zhǔn)確率。