(四川大學(xué) 機(jī)械工程學(xué)院,成都 610065)
零件表面缺陷檢測(cè)是制造業(yè)的熱門課題,亦是重大難題。針對(duì)國防軍工、電子信息等領(lǐng)域?qū)Χ嗯?、小批量鈑金零件快速制造的需求,進(jìn)行鈑金件智能化表面缺陷檢測(cè)識(shí)別的關(guān)鍵技術(shù)研究具有重要意義。目前鈑金件缺陷檢測(cè)主要有人工檢測(cè)和機(jī)器智能檢測(cè)兩種。其中人工檢測(cè)方式存在高成本、低效率且高誤檢率、高漏檢率等一系列問題[1]。該類鈑金零件在目前實(shí)際生產(chǎn)中多采用人工檢測(cè),其缺陷類型及缺陷出現(xiàn)位置均由生產(chǎn)線工人標(biāo)注出,機(jī)器智能檢測(cè)方法的必要性和迫切性凸顯。因此,研究并提出一種針對(duì)該類鈑金零件的缺陷識(shí)別分類方法的意義重大?,F(xiàn)存的基于工件表面缺陷智能檢測(cè)的方法已有很多種:李春[2]等提出了一種基于機(jī)器視覺的鈑金件缺陷在線檢測(cè)算法;廖延娜[3]等提出了一種利用激光測(cè)距檢測(cè)表面缺陷長度和深度的方法;M.Win[4]等提出對(duì)比度調(diào)整的Otsu方法和基于中值的Otsu方法,用于檢測(cè)表面缺陷;M.S.Sayed[5]等提出使用熵濾波和最小誤差閾值的表面缺陷檢測(cè)算法來識(shí)別缺陷。
隨著計(jì)算機(jī)的快速發(fā)展以及計(jì)算能力的極大提高,深度學(xué)習(xí)在表面缺陷檢測(cè)中的運(yùn)用越來越廣泛[6]。其中,姚明海[7]等提出來一種基于深度主動(dòng)學(xué)習(xí)的磁片表面缺陷檢測(cè)方法;王理順[1]等提出了一種基于深度學(xué)習(xí)的織物缺陷在線檢測(cè)算法;毛欣翔[8]等提出了一種基于深度學(xué)習(xí)的連鑄板坯表面缺陷檢測(cè)系統(tǒng)。本研究也運(yùn)用深度學(xué)習(xí)中卷積神經(jīng)網(wǎng)絡(luò)[9]的知識(shí),提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的鈑金件表面缺陷檢測(cè)的方法,通過卷積神經(jīng)網(wǎng)絡(luò)搭建了一個(gè)準(zhǔn)確率高、時(shí)間復(fù)雜度[10]低的缺陷分類模型,經(jīng)過多項(xiàng)參數(shù)優(yōu)化后,以批量測(cè)試的方式使用窗口滑移檢測(cè)方法進(jìn)行缺陷分類預(yù)測(cè)并確定缺陷位置。
卷積神經(jīng)網(wǎng)絡(luò)屬于深度學(xué)習(xí)的范疇,其作為一種多層前反饋的人工神經(jīng)網(wǎng)絡(luò),可用來處理二維輸入數(shù)據(jù)。該網(wǎng)絡(luò)含有多個(gè)層,每一層都是由多個(gè)二維平面組成,而每一個(gè)平面又是由多個(gè)獨(dú)立的神經(jīng)元[11]組成。其網(wǎng)格結(jié)構(gòu)的網(wǎng)絡(luò)與大腦神經(jīng)元的連接相似,層與層的神經(jīng)元互相連接,同一層的神經(jīng)元之間沒有連接。
本研究中的網(wǎng)絡(luò)模型為自建的卷積神經(jīng)網(wǎng)絡(luò)模型。綜合考慮工業(yè)生產(chǎn)實(shí)時(shí)性的要求以及模型的準(zhǔn)確合理性的要求,建立的網(wǎng)絡(luò)模型如圖1所示。該網(wǎng)絡(luò)是由1個(gè)圖像輸入層、2個(gè)卷積層、2個(gè)最大池化層、2個(gè)全連接層和1個(gè)輸出層組成。
圖1 網(wǎng)絡(luò)模型
圖像輸入層設(shè)置的輸入圖像大小為80×80×3。卷積層通過卷積操作能提取出輸入圖像的不同特征,為之后的分類識(shí)別做鋪墊。本文使用的卷積核為5×5×25,步長為1,padding=‘same’,搭配的激活函數(shù)為ReLU[12]。卷積操作過程如式(1)所示,得到輸出的結(jié)果為80×80×25的圖像數(shù)據(jù)。
(1)
式中,n為卷積核的大??;w為權(quán)值,其能將激活函數(shù)ReLU上得到的函數(shù)值線性映射到另一個(gè)維度空間上;b為偏置值,其允許激活函數(shù)向左或向右移位,該值很大程度上決定了學(xué)習(xí)的成功與否;x為對(duì)應(yīng)位置的像素值;y為對(duì)應(yīng)的輸出值。將上述式(1)中的輸出值y輸入激活函數(shù)ReLU中,如式(2)所示:
(2)
式中,f(x)為圖像對(duì)應(yīng)的像素點(diǎn)的值。
池化層[13]將輸入數(shù)據(jù)劃分為矩形池區(qū)域并計(jì)算每個(gè)區(qū)域的最大值來執(zhí)行下采樣。該層緊跟在卷積層后,以卷積和激活后的圖像數(shù)據(jù)作為輸入數(shù)據(jù)。本研究使用最大池化層,其卷積核為2×2,步長為2。池化后可得40×40×25的圖像數(shù)據(jù),并執(zhí)行歸一化操作,該操作能提高學(xué)習(xí)訓(xùn)練的準(zhǔn)確度。全連接層是由許多神經(jīng)元組合形成的平面二維結(jié)構(gòu),單個(gè)數(shù)據(jù)均為1×1×3。在卷積神經(jīng)網(wǎng)絡(luò)中,全連接層能整合之前幾層操作中所有具有類別區(qū)分性的局部信息,并將其映射到標(biāo)本標(biāo)記空間中。
卷積神經(jīng)網(wǎng)絡(luò)的輸出層由Softmax和Class組成。Softmax函數(shù)的身影幾乎出現(xiàn)在所有人工神經(jīng)網(wǎng)絡(luò)中,其具有分類和尋址兩種用途。而該函數(shù)在人工智能領(lǐng)域中最為廣泛的應(yīng)用就是分類。具體方式為:在人為給定一系列分類標(biāo)簽后,Softmax可以給出輸入圖像數(shù)據(jù)被劃分到各個(gè)標(biāo)簽中的概率分布。其計(jì)算過程如式(3)所示:
(3)
式中,Ii為輸出結(jié)果為第i類標(biāo)簽的概率,xi為第i個(gè)節(jié)點(diǎn)的輸出值,n為劃分的標(biāo)簽個(gè)數(shù)。而Class層用于計(jì)算具有多標(biāo)簽分類問題的交叉熵?fù)p失(Cross Entropy Loss),該層可根據(jù)前一層輸出數(shù)據(jù)大小判斷出分類的數(shù)量。交叉熵表示的是實(shí)際輸出與期望輸出的距離,其式(4)如下:
(4)
式中,yi為標(biāo)簽i的真值。若i為正確的標(biāo)簽時(shí),yi等于1;否則yi等于0。
針對(duì)實(shí)驗(yàn)對(duì)象是少樣本的鈑金零件,并根據(jù)該類型鈑金零件缺陷特性和出現(xiàn)原因,本研究重點(diǎn)檢測(cè)最主要的兩種缺陷:磕碰缺陷和劃痕缺陷。本文首先提出兩個(gè)問題:第一,由于一個(gè)鈑金零件上可能同時(shí)出現(xiàn)兩類缺陷,并存在多個(gè)缺陷在同一零件上的相對(duì)位置較為接近的情況,識(shí)別與分類的難度增大;第二,樣本數(shù)據(jù)較少,如果以整個(gè)零件或一個(gè)缺陷作為單個(gè)樣本集,則訓(xùn)練集過少,無法訓(xùn)練出有意義的參數(shù),建立的模型效果也不好,也就是所謂的欠擬合[6]。
本研究分析了上述問題后,得出以下結(jié)論:第一,同類型的缺陷面積大小不一、長度不同;第二,不同類型的缺陷辨識(shí)度相對(duì)較高。因樣本數(shù)據(jù)的提取方式?jīng)Q定了后續(xù)檢測(cè)方法是否有效,本研究提出了一種缺陷分割提取樣本的方法。該方法可分兩個(gè)步驟進(jìn)行(為方便展示,本文對(duì)所有樣本圖進(jìn)行了灰度處理。):
1)將面積小、長度短的缺陷作為單個(gè)樣本提取。通過改變?cè)撊毕莸南鄬?duì)位置的方式截取形成多張樣本圖。如圖2、圖3所示,不同的樣本圖中,同一個(gè)缺陷位于不同的位置,以此提高泛化能力。
圖2 單個(gè)短劃痕缺陷
圖3 單個(gè)小磕碰缺陷
2)將面積大、長度長的缺陷進(jìn)行分割,可形成多個(gè)缺陷分塊,并使用步驟(1)中的方式改變?nèi)毕輭K相對(duì)位置,使一個(gè)缺陷分塊再形成多張樣本圖,如圖4、圖5所示。因面積大、長度長的缺陷往往無法在單張大小為80×80的樣本圖上完整表達(dá),需將其分割形成多個(gè)面積小、長度短的缺陷分塊;為提高泛化能力的同時(shí)又與下文所提及的窗口滑移檢測(cè)方法契合,截取多張上述缺陷分塊位于樣本圖不同位置的圖像作為額外的樣本圖。
圖4 長劃痕缺陷分割成多個(gè)缺陷分塊
圖5 大磕碰缺陷分割成多個(gè)缺陷分塊
該方法能較好地提升數(shù)據(jù)集的容量,并有效區(qū)分缺陷類型。其中,因同類型缺陷分割提取后得到的缺陷分塊作為該缺陷的一部分,其對(duì)于同缺陷類型的其他缺陷分塊具有輔助識(shí)別作用。例如,圖6為兩個(gè)不同的磕碰缺陷分割提取后的兩張缺陷分塊樣本圖。可以看出,來自兩個(gè)不同磕碰缺陷的缺陷分塊樣本圖相似性較高。
圖6 兩個(gè)缺陷塊的相似對(duì)比
訓(xùn)練樣本規(guī)模越大,分類效果就越好[7]。因此,大量的有利數(shù)據(jù)是必不可少的。本研究的所有缺陷圖像均由工業(yè)相機(jī)高清拍攝獲取,并通過相應(yīng)預(yù)處理操作得到卷積神經(jīng)網(wǎng)絡(luò)輸入層所需要的80×80×3的缺陷樣本集。在原有樣本數(shù)量不多的情況下,需對(duì)數(shù)據(jù)量進(jìn)行擴(kuò)充。在樣本集中,部分缺陷的面積相對(duì)較小,或缺陷位于樣本圖的角落或邊緣位置,若采用縮放和隨機(jī)遮擋的數(shù)據(jù)增強(qiáng)方式很可能導(dǎo)致某些缺陷數(shù)據(jù)的損失。為保證模型的準(zhǔn)確度,最終采用適當(dāng)范圍的隨機(jī)亮度變化、隨機(jī)左右翻轉(zhuǎn)、隨機(jī)旋轉(zhuǎn)90°倍數(shù)角度的數(shù)據(jù)增強(qiáng)方式。部分?jǐn)?shù)據(jù)增強(qiáng)的效果如圖7所示。
圖7 數(shù)據(jù)增強(qiáng)效果
窗口滑移檢測(cè)方法的原理是:利用與樣本尺寸相同的窗口在待檢測(cè)零件圖像上按從左往右、從上到下的規(guī)律遍歷滑移;在滑移過程中從零件圖像上截取出同樣尺寸的區(qū)域塊,與學(xué)習(xí)模型進(jìn)行對(duì)比,確定該區(qū)域塊是否有缺陷,若有缺陷則用外接矩形框出并注明缺陷類型。窗口滑移檢測(cè)方法具體將進(jìn)行以下兩個(gè)步驟:
1)使用大小為80×80的窗口,并以該窗口1/2邊長的距離為單次橫向滑移量Hx(Sliding Distance)從圖像左上角向右滑移,每滑移一個(gè)位置就截取一個(gè)像素大小為80×80的區(qū)域塊。當(dāng)窗口滑移到最右端后,該窗口立即回到圖像最左端,并同樣以窗口1/2邊長的距離為單次縱向滑移量Hy向下滑移一次后再次向右滑移,直到該窗口遍歷完整個(gè)待檢測(cè)圖像。窗口滑移示意圖如圖8所示。窗口每滑移一次便將截取的區(qū)域塊與訓(xùn)練模型對(duì)比,并把該區(qū)域塊的標(biāo)簽值存入位置矩陣M的相應(yīng)位置。因待檢測(cè)圖像大小為560×960,窗口大小為80×80,選擇單次滑移量為1/2窗口邊長,總共可得到13×23個(gè)區(qū)域塊和大小為13×23的位置矩陣M。
圖8 窗口滑移示意圖
2)本模型中共有磕碰缺陷、劃痕缺陷、無缺陷3種標(biāo)簽,在位置矩陣中分別用數(shù)字1、2、3代替。因存在一個(gè)缺陷被分割在多個(gè)相鄰的區(qū)域塊中的情況,為標(biāo)記出缺陷的位置并外接帶標(biāo)簽的矩形框,需要使用圖像處理中連通域原理的算法。在Matlab軟件中,算法的具體流程為(以劃痕缺陷為例):將13×23的位置矩陣M中代表劃痕缺陷的數(shù)字2置為1,其他數(shù)字置為0,形成只存在0和1的13×23的二值矩陣(該矩陣可表示二值圖像);利用連通域regionprops函數(shù),可在位置矩陣M中得到數(shù)字1的個(gè)數(shù)與位置;利用矩陣映射原理可得到零件圖像矩陣中缺陷的對(duì)應(yīng)位置并用矩形框標(biāo)注出。該方法的部分效果展示如圖9所示。
圖9 部分效果展示
本研究共獲取缺陷數(shù)據(jù)集1 917張,其中磕碰缺陷圖683張,劃痕缺陷圖731張,無缺陷圖503張。將該數(shù)據(jù)集按4∶1的比例隨機(jī)劃分為訓(xùn)練集和測(cè)試集。得到的實(shí)驗(yàn)數(shù)據(jù)將用于驗(yàn)證114張大小均為560×960的折彎鈑金零件,并統(tǒng)計(jì)缺陷識(shí)別和分類的結(jié)果。本實(shí)驗(yàn)環(huán)境為Windows10操作系統(tǒng),Intel Core i7-7700KCPU,16GB內(nèi)存,NVIDIA GeForce GTX 1060顯卡,并使用Matlab軟件的深度學(xué)習(xí)工具箱進(jìn)行模型訓(xùn)練及調(diào)試。
在訓(xùn)練方法上,本研究采用隨機(jī)梯度下降[14](stochastic gradient descent,SGD)的方式進(jìn)行采樣,該方式是在梯度下降最快的方向上隨機(jī)選一個(gè)數(shù)據(jù)進(jìn)行計(jì)算,而不是掃描全部訓(xùn)練數(shù)據(jù)集,有助于提高迭代速度。因?qū)W習(xí)率控制著參數(shù)更新速度,學(xué)習(xí)率的選擇至關(guān)重要。學(xué)習(xí)率過大,將導(dǎo)致?lián)p失函數(shù)在極小值附近來回變化,無法收斂;學(xué)習(xí)率過小,會(huì)使學(xué)習(xí)速度變慢。在滿足準(zhǔn)確率的條件下,為盡可能縮短學(xué)習(xí)時(shí)間,本實(shí)驗(yàn)分別設(shè)置學(xué)習(xí)率為0.01、0.001、0.000 1進(jìn)行訓(xùn)練,獲得的準(zhǔn)確率對(duì)比如圖10所示。由數(shù)據(jù)表明,當(dāng)學(xué)習(xí)率為0.000 1時(shí),準(zhǔn)確率可達(dá)97.02%,且曲線較為平滑,能達(dá)到分類模型的準(zhǔn)確率要求。
圖10 不同學(xué)習(xí)率的準(zhǔn)確率對(duì)比
該類鈑金零件缺陷檢測(cè)在實(shí)際工業(yè)生產(chǎn)中要求準(zhǔn)確率應(yīng)大于95%,平均單件檢測(cè)時(shí)間應(yīng)小于1 s。根據(jù)窗口遍歷檢測(cè)方法的原理,滑移量的大小將直接影響缺陷檢測(cè)的準(zhǔn)確率和檢測(cè)時(shí)間。為獲取最優(yōu)的滑移量,本研究分別選用窗口的1/4邊長、1/2邊長、3/4邊長、邊長的滑移量作為四組實(shí)驗(yàn)參數(shù),并用于驗(yàn)證114張大小均為560×960的鈑金件零件圖。該批零件存在磕碰缺陷125處、劃痕缺陷154處,共計(jì)279處。如表1所示為不同滑移量的實(shí)驗(yàn)結(jié)果對(duì)比。結(jié)果表明,滑移量大小為1/4邊長的實(shí)驗(yàn)盡管檢測(cè)并標(biāo)注了所有缺陷,卻有28處誤檢、且耗時(shí)較長;滑移量大小為3/4邊長的實(shí)驗(yàn)出現(xiàn)8處漏檢、13處誤檢;滑移量大小為邊長的實(shí)驗(yàn)盡管耗時(shí)最少,卻出現(xiàn)16處漏檢、7處誤檢;而滑移量為1/2邊長的實(shí)驗(yàn)結(jié)果最佳,僅2處漏檢、6處誤檢且耗時(shí)滿足工業(yè)要求。
表1 不同滑移量的實(shí)驗(yàn)結(jié)果對(duì)比
實(shí)驗(yàn)結(jié)果分析:檢測(cè)結(jié)果為誤檢的原因是存在一個(gè)圖像塊中同時(shí)出現(xiàn)兩個(gè)或多個(gè)缺陷,盡管模型能將其識(shí)別為缺陷,卻無法進(jìn)行正確分類;檢測(cè)結(jié)果為漏檢的原因是存在一個(gè)缺陷的面積過小或長度過短,且恰被分割在兩個(gè)相鄰圖像塊的共同邊或4個(gè)相鄰圖像塊的交點(diǎn)處,使該缺陷樣本與無缺陷樣本相似,導(dǎo)致訓(xùn)練模型無法正確分類。
針對(duì)樣本較少的鈑金零件表面缺陷的檢測(cè)問題,本研究提出了基于卷積神經(jīng)網(wǎng)絡(luò)的鈑金件表面缺陷識(shí)別分類方法。通過缺陷分割提取的方式獲取了缺陷樣本,對(duì)樣本和訓(xùn)練模型進(jìn)行了分析,并多次調(diào)試訓(xùn)練參數(shù),獲得了準(zhǔn)確率為97.02%的神經(jīng)網(wǎng)絡(luò)分類模型,該模型具有準(zhǔn)確率高、時(shí)間復(fù)雜度低、泛化能力強(qiáng)等優(yōu)點(diǎn)。為達(dá)到分類缺陷并標(biāo)注缺陷位置的目的,本研究使用了窗口滑移檢測(cè)方法,通過窗口滑移遍歷整個(gè)待檢測(cè)圖像,截取窗口大小的區(qū)域塊與模型對(duì)比,驗(yàn)證該方法得到了96.77%的準(zhǔn)確率和0.85 s的平均每件檢測(cè)時(shí)間。實(shí)驗(yàn)表明,該方法具有識(shí)別準(zhǔn)確率高、
識(shí)別時(shí)間滿足工業(yè)要求的優(yōu)點(diǎn)。但對(duì)于實(shí)驗(yàn)結(jié)果中存在的缺陷漏檢和誤檢,暫無法從原理上得到改進(jìn)。在未來的研究中還可以在方法原理上進(jìn)一步優(yōu)化,提高識(shí)別運(yùn)算速度,減小誤檢率、漏檢率。