馬一帆, 林俊宇, 李寶明, 徐培全
(上海工程技術大學 材料工程學院, 上海 201620)
隨著工業生產自動化進程的加快,產品的質量要求也越來越得到重視。傳統的人工表面檢測主要是通過人眼觀察,如果檢測時間過長,會導致視覺疲勞。另外,通過肉眼檢測,很難嚴格控制產品的質量標準。近年來,隨著機器視覺的迅速發展,其在工業產品的質量檢驗領域有了更大的需求量。因此,對缺陷檢測視覺算法的研究具有十分重要的工業指導意義。在缺陷檢測領域,許多學者對不同的算法進行了大量的研究。Xiao等分析了最大類間方差算法(OTSU法)處理單模直方圖的不足,提出了加權目標方差(WOV)的表面檢測方法[1],實驗結果表明,WOV法具有較好的圖像分割效果;Li等提出了針對目標缺陷的最大加權閾值分割法,大大提高了閾值檢測的效率[2]。
與其他檢測算法相比,模板匹配在缺陷檢測中能夠更靈活地提取標準模板特征[3]。研究了模板匹配算法中的歸一化互相關系數問題后,Qian等人提出了部分信息相關系數(PICC)方法來改進傳統的歸一化互相關系數,發現PICC可以有效地減少檢測中的錯誤報警[4];Bouchot J L等人利用模板匹配方法研究了規則紋理圖像的缺陷檢測問題,并引入了偏差范數作為擬合函數[5]。實驗證明了該算法在織物質量檢測中的可行性和可靠性。
隨著計算機硬件和數據處理能力的提高,人工智能的發展迅速,深度學習已應用于工業缺陷檢測領域。Marani等人采用無監督學習聚類和分層聚類方法檢測復合材料表面缺陷,取得了良好的效果[6];Jiang S對圖像進行了去噪和增強預處理,通過主成分分析減小了提取的特征圖像的維數,并采用BP神經網絡算法對缺陷進行分類[7]。結果表明,該方法幾乎可以完成所有機械零件的缺陷檢測,取得了較好的檢測效果。近年來,卷積神經網絡(CNN)由于深度學習和參數微調技術的出現而得到迅速發展。Cha等人使用CNN深度學習算法檢測混凝土和鋼材表面[8]。該算法能有效降低光照的影響,自動提取特征并經過訓練學習后,對樣品表面進行缺陷檢測。結果表明,該方法具有良好的檢測性和適應性。閾值分割、模板匹配和深度學習在缺陷檢測領域得到了廣泛的應用,這表明每種算法都有其優點、缺點和存在的價值,沒有被完全取代。因此,對這3種算法進行比較研究,并將其集成到軟件平臺上,具有重要的意義和價值。
靈活的軟件體系結構是多功能檢測中必不可少的。本文利用WPF框架設計了如圖1所示的各個接口以及界面,包括圖像顯示、結果顯示、讀取圖片以及3種檢測模塊。在設計過程中,為了使界面更加整潔美觀,采用腳本語言對界面進行設計。該接口設計了3個模塊:閾值分割檢測模塊(模塊1)、模板匹配檢測模塊(模塊2)和深度學習檢測模塊(模塊3)。各模塊的算法實現在C#在VS2015開發環境下開發。

圖1 利用WPF開發的接口界面
加載圖片時通過圖像的實際長度和寬度與顯示窗口的長寬比來調整圖片的放大倍數,使圖片填充到相框的顯示窗口中。
閾值分割是常見的圖像分割的算法。圖片是以像素為單位排列的,每幅圖像按通道數可分為單通道、三通道和多通道。三通道通的一個像素包含紅色、藍色和綠色的信息,而單通道只有黑白作為像素的顏色分量。由于單通道圖像處理相對簡單,多通道圖像往往采用灰度變換的方法轉化為單通道圖像。對于單通道灰度圖像,將每個像素的值從黑到白劃分為255個點來測量灰度值,可以通過閾值分割來選擇灰度值的范圍。
焊接中的氣孔是工件中經常出現的額缺陷,本次試驗通過開發的閾值分割模塊對焊后的氣孔進行檢測,焊接后宏觀氣孔等缺陷呈黑色,因此選擇灰度直方圖中0-40的范圍來提取孔隙缺陷。灰度直方圖的選取如圖2所示,提取效果如圖3所示。可以看出黑色區域被明顯地標記出來,即對于與背景灰度相差較明顯的缺陷,閾值分割模塊能比較準確地檢測出來。在工業上,氣孔的大小可以在一定程度上變化,因此可以將氣孔的面積作為判斷的依據,從而實現批量圖片的自動檢測。

圖2 灰度直方圖的選取

圖3 閾值分割提取效果
閾值分割算法簡單快速,但對于復雜圖像,閾值分割很難提取出理想的缺陷特征。模板匹配不僅可以準確地檢測出缺陷特征,而且可以實現圖像完整性檢測。模板匹配分為灰度模板匹配和形狀模板匹配。灰度模板匹配主要是通過比較模板區域和圖像區域的灰度值差異來實現的,這種方法受光照影響較大,難以適應各種環境;形狀模板匹配是通過提取邊緣亞像素輪廓作為模板來遍歷需要比較的區域。與灰度模板匹配相比,形狀模板匹配受光照影響小,精度高。形狀模板匹配先創建模板,然后調用創建的模板遍歷感興趣區域匹配,匹配分數達到指定值后,將確定匹配成功。
在本次算法的開發過程中,設置搜索的起始角(SA)和角度范圍(AR)。為了提高模板匹配的效率,采用逐層匹配的方法匹配。對于相似度小的區域,可以在少量匹配層下排除;相似度大的區域,可以通過多層匹配來判斷,匹配金字塔層的數量(NL)決定了匹配的準確性。最小得分(MS)可以控制模板圖像與檢測圖像匹配成功的相似性。當匹配數(NM)設置為“1”時,最佳匹配通常由最大重疊(MO)和貪婪度(G)確定。
當按表1設置參數時,可以獲得圖4的匹配效果。圖4顯示了通過手動創建的3個模板,用于匹配由黃色圓圈標記的3個設置的感興趣區域(RIO)位置。紅色圓圈表示匹配失敗,綠色圓圈表示成功匹配。如果3個位置都匹配,則整個圖像被判斷為“OK”,否則被判斷為“NG”。形狀模板匹配算法可以準確地將標準圖像與檢測到的圖像進行比較,但在缺陷判斷方面不夠靈活。

表1 模板匹配的幾個參數

圖4 基于模板匹配的檢測效果
在很多情況下,產品的缺陷并不明顯,缺陷與背景之間沒有明顯的色差,缺陷的位置也不固定。此時利用成熟的深度學習算法,可以很好地解決復雜缺陷的判斷問題。卷積神經網絡(CNN)以其成熟、穩定的特性被應用于工業視覺檢測領域。本文構建了CNN深度學習網絡模型,如圖5所示。對輸入圖像進行預處理,得到感興趣區域,便于特征提取;利用多層神經網絡對預處理后的圖像進行訓練,生成分類器;卷積層主要是通過對模板濾波來提取圖像特征,利用池層來增強特征,減小圖像的像素尺寸;最后,使用全連接層連接所有特征,并通過不同的權重(W(1-n)) 將輸出值發送給分類器。這些層的神經網絡可以循環多次,又稱為多層神經網絡。所有這些中間層的神經網絡一起構成了隱藏層。
經過標記、訓練、學習多幅圖像,生成一個分類器。在VS環境下,利用生成的分類器對需要測試的產品分類。在訓練過程中,首先讀取一個空分類器,設置分類器的參數;其次,利用帶參數的分類器對標簽文件夾下的圖像進行訓練,從而在有監督學習下產生訓練效果較好的分類器;最后,保存訓練好的分類器并對生成的分類器進行評估。分類過程主要是通過讀取經過訓練的分類器來對需要測試的圖像分類。當然,在讀取待測圖像后,需要對圖像進行預處理,使其與訓練中的圖像處理方法相一致。原始圖像和預處理圖像如圖6所示。

圖5 CNN神經網絡在深度學習中的基本原理圖

圖6 原始圖像與預處理圖像
分類結果的正確性主要取決于生成的分類器,分類器的參數設置決定了分類器的質量。主要參數有“input batch”、“learning rate”、“number of iterations” 、“weight” 和“momentum” 。“input batch”決定了訓練的一次迭代中訓練圖像的數量;“learning rate”決定了學習率;“weight”表示在整個連接層計算的特征的比例;利用“momentum”可以優化梯度下降誤差的計算。梯度下降表示為式(1):
wt+1=wt+μνt-λwL(f(x,wt)).
(1)
其中,λ表示 “learning rate”;μ表示“momentum”;L(f(x,wt)) 代表梯度下降函數; t代表“number of iterations”;x代表“input batch”;f(x,w)表示基于深度學習的分類器的分類結果,這取決于權重“w”和“ input batch” ,變量ν包含 “momentum”的影響。
通過表2所設置的特征參數,可以有效地降低錯誤率。在訓練和學習50幅標記為“OK”和111幅標記為“NG”的圖像之后,訓練誤差逐漸減小,直到達到其最低水平,如圖7所示。

表2 訓練器參數設置

圖7 訓練過程中訓練錯誤率的變化
從訓練結果來看,訓練錯誤率很小。在預檢測過程中,可以識別大多數錯誤,如圖8所示。在自主開發的柔性軟件平臺上,采用C#語言實現CNN深度學習分類算法,對缺陷產品和產品的分類和識別是成功的。

圖8 使用經過訓練的分類器進行分類的效果圖像
利用CNN深度學習進行缺陷檢測,能有效檢測劃痕型缺陷,檢測效果良好。然而,在檢測過程中,算法的發展比較復雜,導致檢測時間較長。
本文提出了一種基于缺陷檢測的柔性軟件平臺。在VS環境下成功地開發了閾值分割、形狀模板匹配、CNN深度學習等缺陷檢測算法模塊,并在開發的軟件平臺上用C#語言實現,并研究了各種算法的優缺點:
(1)閾值分割算法檢測速度快,但受光照影響大,只檢測缺陷與背景顏色相差較大的圖像。與閾值分割算法相比,形狀模板匹配算法在缺陷檢測時受光照影響較小,在工業完整性檢測中具有突出的優勢,但不能檢測出更復雜的缺陷。CNN深度學習算法受光照影響小,能檢測復雜缺陷,檢測效果好。但由于CNN算法的復雜性,缺陷定位的選擇不夠靈活,檢測速度較慢。
(2)基于開發的軟件平臺,可以檢測出工業上大多數產品的缺陷,檢測效果非常好。但是,深度學習算法還有很大的改進空間。一種既能考慮分類率又能考慮分類效果的智能算法是未來的研究方向。