任金梅,仲志丹,李躍松,樊浩杰
(河南科技大學 機電工程學院,洛陽 471003)
隨著移動互聯網技術的迅猛的發展趨勢,智能手機已經成為了移動互聯網產品的標志,每年幾乎有上億臺智能手機走向市場,在手機外殼生產制造過程中對其缺陷檢測是質量監控的重要一步[1,2]。目前在手機外殼實際生產過程中,仍然是以人工目檢的方式進行。即使是訓練有素的目檢專家,對手機外殼缺陷進行檢測時,也會出現前后標準不一致,主觀臆斷較強以及疲勞耗時等問題[3],因此急需研究自動缺陷檢測系統來減少目檢工作者的工作量,并提供統一標準,客觀有效的檢測方法。
深度學習和計算機技術的快速發展及其應用領域廣泛性的不斷增強[4~8],使得計算機視覺已經應用于各種工業產品的質量檢測中[9]。Li等[10]提出了一種基于主成分分析(PCA)的手機玻璃膜缺陷檢測系統,通過比較缺陷像素數之和來識別缺陷的類型和大小。Ma等[11]提出了一種基于卷積神經網絡和滑動窗口技術相結合的方法,來檢測手機表面缺陷,但需要先檢測出感興趣區域,再進行分類檢測。He等[12]第一次將空間金字塔池化引入卷積神經網絡,用來處理輸入圖片大小不一的問題。Cao等[13]運用卷積神經網絡與空間金字塔池化相結合的方法,實現了監控錄像中對黑煙車輛的自動識別。Huang等人[14]采用HOGv進行特征提取,再通過ELM算法訓練單個分類器,有效的實現了交通信號的識別。
本文受到Cao和Huang等人的啟發,在經典卷積神經網絡(CNN)AlexNet的基礎上,加入空間金字塔池化層(SPP),并與極限學習機(ELM)相結合,設計了SCNN-ELM模型,用來檢測手機外殼生產過程中產生的劃痕,污點等細小缺陷。該模型能夠實現手機外殼的缺陷檢測,完成特征的自動提取,并在一定程度上縮短了缺陷檢測的時間,并通過測試集進行檢驗,證明了該方法的有效性與可行性。
卷積神經網絡是受生物學中視覺神經元工作機理的啟發,受大家不斷重視的一種高效識別模型[15]。在CNN網絡發展的過程中,出現了幾種比較經典的用于分類的網絡結構,2012年AlexNet[16]在ImageNet競賽中一舉奪冠,以Relu作為激活函數提高網絡訓練速度,加入Dropout避免過擬合,是圖像檢測的首選基礎網絡,因此本文選取AlexNet作為特征提取器的基礎網絡,其網絡結構如圖1所示。
從圖1中可以看出AlexNet網絡包含五個卷積層,三個采用最大池化方式的池化層,以及三個全連接層。但由于全連接層對輸入特征的尺寸是固定的,因此在AlexNet網絡結構中要求輸入的圖片尺寸大小是一致的。所以在網絡輸入圖片時,需要將輸入圖片進行裁剪、拉伸等操作,保證輸入的圖片尺寸是統一的。這樣做會破壞圖片原有特征的完整性,因此在特征提取的過程中會使得特征提取的魯棒性不夠,降低網絡精度。而空間金字塔池(SPP)層能夠很好的解決上述問題,SPP層采用多個滑塊窗口進行池化,原理就是從每個窗口中分別計算每個塊的值,從而輸出一個神經元,不管輸入圖片的尺寸是多少,一旦窗口數量固定,那么輸入全連接層的神經元個數也隨即確定,因此在AlexNet卷積網絡的最后一次卷積操作得到不同尺寸的特征圖后,用SPP層進行池化,使得輸入圖片的尺寸不管是否一致,都能滿足全連接層對特征圖固定尺寸的要求,特征提取的更加完善,從而為模型在檢測過程中準確率的提高奠定了基礎,其特征提取過程如圖2所示。

圖1 卷積神經網絡結構

圖2 SPP特征提取過程
極限學習機(ELM)是人工智能領域的一種人工神經網絡模型[17],是一種單隱藏層的前饋神經網絡。其輸入層權重和隱藏層偏置可以隨機確定,輸出層權重則是通過最小化損失函數,依據廣義逆矩陣理論計算得到,因此泛化能力好,收斂速度快[18]。CNN網絡的缺點是結構需要預先確定,訓練時會出現局部最優解,網絡泛化能力差[19,20]。因此本文選用ELM作為分類器,其網絡結構如圖3所示。

圖3 ELM網絡結構
假設有N個訓練樣本{xi,ti|xi∈Rn,ti∈Rj,i=1,2…N}(式中xi表示第i個特征圖,ti表示第i個樣本標簽,集合代表所有訓練樣本數據)。從圖3中可以看出ELM網絡結構中只有一個隱藏層,若隱藏層節點數為L,則隱藏層輸出矩陣H(x)為:

式(1)中hi(x)表示第i隱藏層節點的輸出,隱藏層的輸出是輸入乘上對應權重加上偏差,再經過一個非線性函數其所有節點結果求和得到,其表達式為:

式(2)中,W∈RL×n為輸入層至隱含層之間的權重;b∈RL為隱含層的偏置量;g(?)為激勵函數。則由圖3可知期望輸出矩陣O的表達式為:

當樣本數為N時,若存在權重β使得期望輸出O與樣本標簽T之間的關系若滿足式(4),那么網絡訓練便能夠達到預期值。

圖4 SCNN-ELM模型結構圖

在ELM中W和b是隨機產生的,且訓練過程中保持不變,H是隱含層輸出,因此權重β的確定方法有很多中,其中一種可以通過最小二乘法即通過式(5)求解出權重β。

式(6)中,H+為H的Moore-Penrose廣義逆解。ELM算法的核心是求解出權重β,其求解過程可以歸納為三點:1)隨機產生輸入權重W和和隱藏層偏差b;2)計算出隱藏層輸出H;3)由式(6)計算出輸出層權重β。
本文以AlexNet為基礎,在此基礎上加入SPP作為網絡結構的最后一個池化層,將SCNN與ELM分類器相結合,其網絡結構如圖4所示。
該模型輸入任意尺寸的圖片,經過卷積、最大池化等循環操作,最終經過SPP池化后,得到固定尺寸的特征圖,送入到全連接層,進行模型的訓練。模型訓練完成后,在測試實驗的過程中,以及之后的缺陷檢測過程中,用該模型進行特征提取,然后用ELM分類器代替原來網絡結構中的Softmax分類器,構建SCNN-ELM模型對手機外殼缺陷進行檢測。在圖4中,以3層的SPP為例,不管輸入圖片的尺寸大小是多少,經過Conv5卷積層之后得到的每張特征圖,再經過3層的SPP進行池化操作后,提取到的特征個數是固定的,以輸入圖片尺寸247×247×3(圖片是彩色圖片,其中3為RGB三通道)為例則經過卷積和池化之后輸入全連接層的神經元個數為5376個,可以滿足全連接層對特征圖同一尺寸的要求。
本實驗所用硬件平臺為Intel i5-3210M 2.5GHz CPU,內存8GB的64位計算機,采用GPU進行加速。采集數據集并構建算法模型,最終通過測試集驗證SCNNELM模型在手機外殼缺陷檢測中的精確度,具體步驟如下:
1)運用CCD相機進行手機外殼缺陷數據集的采集,用不同尺寸的像素滑動截取完整的缺陷信息,并在顯示器上顯示并進行標注,構建數據集制作標準實驗數據集;
2)以Tensorflow為平臺,加入SPP層構建網絡結構,從標準數據集中,對每類缺陷樣本隨機選取組成訓練集,進行網絡訓練,不斷更新權重;
3)構建SCNN-ELM模型,將剩余的標準數據集中的圖片作為測試集,對進行訓練和驗證,并采用Softmax與ELM分類器進行對比試驗;
4)將模型對手機外殼的缺陷檢測分類結果以及準確性進行分析,其主要流程如圖5所示。

圖5 模型檢測流程圖
本文實驗過程中,選用的設備(包含有:工業CCD相機、計算機、可調節光源等)進行圖片信息采集,根據手機外殼顏色的不同,可通過調節光源的顏色使得缺陷特征凸顯的更明顯,如圖6所示。

圖6 缺陷圖片采集設備
本次實驗過程中采用不同尺度的像素對CCD采集的整張手機外殼圖片進行截取,將帶有完整缺陷和無缺陷的圖片挑選出來,并進行標注,構建手機外殼缺陷圖像數據集,共計2萬多張圖片。其中包含劃痕、污點、擦傷缺陷圖像(如圖7所示),將獲得的缺陷數據集按照一定的比例分為訓練集和測試集(如表1所示)。

圖7 3種典型的手機外殼缺陷

表1 缺陷圖像數據集
4.2.1 學習速率的選擇
在模型訓練過程中,學習速率是一個重要的參數,學習速率較大收斂速度會很快,但模型容易越過全局最優解,從而使得模型準確率降低。學習速率太小收斂速度較慢,且容易陷入局部最優解,模型準確率較低。因此學習速率的大小不僅影響著模型的訓練時長還將直接影響模型能否收斂到全局最小值。為了研究模型結構中學習速率與準確率之間的聯系,在實驗的過程中不斷調整學習速率對模型進行訓練,不斷觀察模型準確率以及損失值的變化情況,其損失值和準確率與學習速率的關系如表2所示。

表2 不同學習速率下損失值和準確率
由表2可以清楚的看出,當學習速率為10-4時,準確率最高為98.55%,因此,選擇10-4作為模型訓練時的學習速率。另外該模型為了進一步提高模型的準確率,減小模型訓練過程中的損失值,在訓練的過程中每次迭代都將學習速率乘以0.95,使學習速率能夠在訓練過程中不斷衰減,更加平滑的向著全局最小值邁進,從而提高訓練的準確率。
4.2.2 訓練次數選擇
在實驗過程中,將準確率和損失值與訓練次數的關系進行可視化,從關系圖中尋找訓練次數的最優解。本次實驗過程中對不同訓練次數時模型的損失值與準確率進行統計,得到三者中之間的關系如圖8所示。

圖8 損失值和準確率與訓練次數的關系
由圖8可以看出訓練次數為450時,損失值減小幾乎為零,穩定在一個很小的值附近,此時的準確率也在一個穩定的值附近,繼續增加訓練次數,損失值不在減小,準確率亦不再上升,因此再繼續增加訓練次數已經沒有意義,又考慮到訓練時間,所以本次實驗選擇訓練次數為450。
4.2.3 SPP層數的選擇
實驗過程中觀察,采取不同空間金字塔池化層數和池化方式時準確率的變化,其變化情況如表3所示。

表3 不同空間金字塔層數時的識別準確率(%)
通過表3可以看出3層和4層的空間金字塔池識別精度較高,最高達到98.55%,繼續增加池化層數目,準確率并沒有提高。從表3中易看出最大池化略優于平均池化,為減少網絡內部計算量,縮短缺陷檢測時間,本文選擇3層金字塔池化層加上最大池化的方式,作為池化層來進行特征的提取。以污點為例,將卷積池化操作過程進行可視化,卷積特征如圖9所示。

圖9 卷積特征圖的可視化
在實驗的過程中發現,ELM算法的隱含層節點個數與測試集的準確率之間有著一定的聯系,采集相關數據進行整理,得到兩者之間關系,如圖10所示。

圖10 準確率與隱含層節點數的關系
從圖10中可以清晰直觀地看出,準確率隨著節點數的增加在不斷地上升,當節點數為15時,測試集準確率為98.75%,節點數高于15時,準確率便不再發生變化,此時繼續增加節點數已經沒有意義,因此選擇節點數為15較為合適。
將訓練集輸入網絡模型進行訓練,將訓練次數設置為450次,至模型完全收斂,得到模型參數,用于測試樣本特征的提取。本次測試過程中,為確認網絡的泛化能力,從數據集的每一類缺陷圖片中隨機選取800張圖片作為測試集,并將測試集通過混合矩陣進行隨機混合后,再輸入網絡模型中,其檢測結果,如表4所示。

表4 SCNN-ELM模型分類結果
將混合的測試集缺陷圖片輸入訓練好的模型中,對特征圖進行提取,運用Softmax分類器對測試集進行分類識別,其結果如表5所示。

表5 SCNN-Softmax模型分類結果
此外本文將傳統的CNN網絡,采用上述數據集進行訓練,其過程與上述方法類似,在此不再贅述,該模型測試集分類識別結果,如表6所示。

表6 CNN(AlexNet)-Softmax模型分類結果
將三種模型分別對測試集進行測試,并將得到的測試結果進行整理,如圖11所示。
從圖11中可以看出,加入空間金字塔池化層的SCNN網絡相對于傳統的CNN網絡,不管是單個缺陷種類檢測準確率,還是整體識別準確率都有所提高,這是因為SPP層的加入,使得網絡對輸入圖片的尺寸不再限制,能夠使得原始特征更好地保留下來,特征提取地更加完整。另外通過柱狀圖還可以看出,在SCNN網絡進行特征提取的基礎上,ELM分類器相對于Softmax分類器效果更好,識別準確率相對更高,另外ELM算法不需要迭代,而是隨機確定輸入權重,通過廣義逆矩陣求解輸出權重,因此要比Softmax分類用時更少。

圖11 三種模型的缺陷檢測結果對比
本文基于深度學習的思想,針對手機外殼缺陷檢測過程中的速度與準確率等問題,建立了SCNN-ELM模型,模型中SPP池化避免了全連接層對輸入圖片尺寸的限制,使得特征能夠更完整地保留,提高了缺陷檢測的精度。ELM采用非梯度優化的坐標下降法,無需對目標函數求導就可以完成對物體的分類識別。在運行速度和分類精度上都具有一定優勢,通過對比試驗進一步說明模型的可靠性。上述研究,為手機外殼生產過程中的缺陷檢測環節提供了可行性方法,也為工業智能制造打下了基礎。該模型泛化能力較強,如果出現新的缺陷類型,只需要在訓練好的網絡結構上,加入新的缺陷訓練集,重新對網絡結構進行微調即可。