金映谷,張 濤,楊亞寧,王 月,劉玉婷
(大連民族大學 a.機電工程學院;b.信息與通信工程學院,遼寧 大連 116605)
在實際生產過程中,由于生產設備、工藝流程、生產環境等各因素的影響,造成產品出現缺陷,如:剎車片的劃痕,齒輪表面出現振紋、魚鱗,磁瓦表面的氣孔、斷裂等,這些缺陷不僅直接影響產品的外觀和質量,甚至在使用過程中會產生安全隱患。因此,在生產加工時,對工業產品表面進行缺陷檢測十分必要[1],既可以避免缺陷品流入市場,還可以及時改進工藝流程,提高經濟效益。本文以深度學習在工業產品缺陷檢測的應用為論述中心,首先對國內外深度學習及各種工業產品檢測技術的研究現狀進行分析;然后對幾種典型的、使用頻率較高的應用于工業產品缺陷檢測的深度學習模型進行簡單介紹;最后對基于深度學習的工業產品缺陷檢測技術進行總結和展望。
在加工過程中,工業產品缺陷檢測的相關工作越來越受到重視。缺陷檢測是指在不影響被檢測工件或材料工作性能的前提下,利用光、聲、電、熱、磁等特性檢測工件是否存在缺陷[2]。缺陷檢測方法經歷了人工檢測、利用介質進行檢測和利用計算機檢測三個階段。
19世紀中期,第二次世界工業革命期間,當時工業生產規模較小,自動化程度低,缺陷檢測主要依賴人工檢測完成[3]。檢測方法以人工視覺檢測為主,只要求相應的人工成本,無需專門的設備,但對于檢測人員的數量要求較多。該檢測方式有著檢測效率低、漏檢率高、人工成本高等諸多弊端。20世紀以來,制造業對產品質量的要求越來越高,缺陷檢測技術進入利用介質對產品進行缺陷檢測的階段。當前應用最廣的介質檢測技術包括磁粉檢測技術、渦流檢測技術、滲透檢測技術和超聲波檢測技術等[4]。最近幾年,隨著科技的發展,缺陷檢測技術進入到計算機圖像檢測階段,其中最熱門的技術是集圖像采集與深度學習于一體的缺陷檢測技術,對比于其他檢測技術,準確性高,檢測效率高,結構簡單。
在深度學習出現之前,大部分數據處理使用機器學習中的淺層學習方法,常見的有:高斯混合模型[5]、支持向量機[6]、邏輯回歸、K均值聚類[7]等,淺層機器學習模型早已應用于實際問題,但在處理一些具體的、繁瑣的(如圖像、語音、視頻等領域)問題時,表現效果并不理想。近幾年深度學習發展迅速,特別在圖像分類、自然語言處理、聲音識別等方面表現優異。
1974年,Paul提出了反向傳播算法[8],可以很好地解決神經網絡模型加深時部分線性分類產生誤差的問題。此外,隨著神經網絡層數的加深,研究人員依然面臨著訓練結果不穩定或“梯度消失”的問題。1998年,LeCun等[9]提出了著名的Lenet-5卷積神經網絡,應用于識別支票上的手寫數字,準確率較高。2006年,Geoffery Hinto教授提出了深度信任網絡(Deep Belief Network, DBN),成為局部最優、梯度消失的有效解決方法,該模型在MNIST手寫數據庫上取得了98.8%的識別率。在深度信任網絡的啟發之下,Bengio等[10]在2007年提出層疊自動編碼機(Stacked Auto-encoder, SAE)結構,在MNIST手寫數字數據庫上取得了98.6%的識別率。以上三種深度學習技術中的經典架構在聲音識別、圖像分類、文字處理等領域受到廣泛關注[11]。
深度學習框架于2010年前后在中國變得炙手可熱,基本上與人工智能行業爆發的節點吻合。近年來,深度學習在中國的工業產品檢測、語音識別、文字識別等領域表現突出。2013年,百度公司建立了深度學習研究院,并在語音識別、無人車、人臉識別、語音合成等領域取得了不錯的成績[12-13],其構建的深度網絡在圖片檢索領域表現優異。2018年7月,常海濤等[14]使用Faster R-CNN對工業CT圖像進行缺陷檢測,該方法對于氣泡、夾渣和裂紋的檢測準確率高達96%,且單張圖片的檢測時間達毫秒級。何俊杰等[15]對Faster R-CNN算法進行改進,使用多層的區域提議網絡結構生成精確候選區域,根據候選區域的特征和目標分類實現缺陷的識別和定位,使用該方法對6種類別的液晶屏邊框電路進行缺陷識別定位,檢測速度平均單張0.12 s,準確率94.6%。2019年3月,毛欣翔等[16]使用YOLO v3模型搭建了針對連鑄板坯表面的缺陷檢測計算平臺,實現了從采集數據到輸出結果存儲的端到端模式,使得檢測連鑄板坯時更加輕便且能夠實時輸出結果。2020年1月,田珠等[17]使用Faster R-CNN檢測工業火花塞圖像焊縫的缺陷,準確率達到93%,誤判、漏判率低。2020年6月,吳桐等[18]提出一種采用線陣圖像深度學習的電池組焊縫瑕疵檢測方法,該方法對焊縫單孔、穿孔、凹槽瑕疵的總識別率可達94%,平均檢測速度(4 096×4 000像素的單張工件圖像)0.97 s。
深度學習可從狹義與廣義兩個方面理解,狹義是指具有具體結構和固定訓練方法并且包含多個隱層的神經網絡[19];廣義指具有多個層次結構的機器學習算法[20]。深度學習的流程:輸入在網絡中逐層訓練得到特征,進行反向傳播、調整網絡的參數,得到最優解后輸出。典型的深度學習模型分為卷積神經網絡模型、深度信任網絡模型和自編碼網絡模型[21]。
卷積神經網絡(Convolutional Neural Networks,CNN)是仿照生物的視覺接收和視覺認知機制構建的神經網絡,是一種包含卷積運算且具有深度結構的前饋神經網絡。目前成為缺陷檢測的主要方法,這里將基于卷積神經網絡的缺陷檢測模型分為兩大類:一類是基于分類的卷積神經網絡缺陷檢測模型;另一類是“端”到“端”的卷積神經網絡缺陷檢測模型。在缺陷檢測應用中常見的部分神經網絡模型分類情況如圖1。
由于缺陷檢測也是目標檢測的一種,以下關于模型理解部分均以目標檢測過程為主。
2.1.1 基于分類的CNN缺陷檢測模型
CNN可用于特征的提取、選擇和分類操作,建立滑動窗口,并以一定步長在圖像上滑動產生候選區,判斷候選區內是否為缺陷區域。在檢測時可以簡單分為三個步驟:窗口滑動、候選區域的產生及圖像分類和后續處理,窗口滑動和后續處理的方法固定。由此,研究的重點應放在如何提升CNN的特征提取、選擇及分類能力方面,進而提高圖像的準確度。
在R-CNN中,使用簡單的區域劃分算法將圖片劃分為很多小區域,按照層級分組方法以一定的相似度合并區域,最后剩下的候選區域被歸一化為同一固定大小送入網絡模型中提取圖像特征,將這些特征向量送入多類別分類器,依據特征向量推斷屬于某一類別的概率大小,選取概率最大的類別作為結果輸出。R-CNN直觀地將檢測問題轉化為分類問題,但R-CNN模型需統一候選區的大小后才可進行特征提取和分類,且提取的候選框會在特征提取時重復計算。
Fast R-CNN解決了R-CNN特征提取時選框重復計算的問題。該模型使用Selective Search找出候選框后,整張圖輸入CNN中,使用該模型中的核心結構Roi Pooling層,對應候選框的部分做采樣,經過兩層全連接層之后得到最終的特征。接著同時進行兩個操作,一是對特征進行分類,二是回歸此特征的候選框偏移。該模型很好地將分類和回歸任務融合在一個模型中。
在Faster R-CNN中RPN算法的作用替代了部分Selective Search,產生候選區域的速度更快。其中RPN網絡接受整張圖片并提取特征圖,回歸候選框,然后在feature map上對應每個滑窗位置都映射一個特征。而后同Fast R-CNN操作相同,分別進行分類和回歸操作。但此模型不能很好地保留和提取小尺度目標的特征[15],且檢測速度較慢。
Mask R-CNN在Faster R-CNN基礎上進一步擴展,在每個ROI區域加上一個用于預測分隔掩碼的掩碼層,可以更好地實現像素級別的圖像實例分割,將目標檢測與目標分割同時處理,可以取得較好的實例分割效果。同時用Roi Align層替代Roi Pooling層解決了misalignment問題,且該模型利用區域候選網絡替代滑動窗口的方式提取候選區,因此需要候選區的數量減少[22],使得該方法的準確率和速度都得到了較大提升。但此模型對候選區提取方法的依賴性較強,若背景復雜則會檢測失敗。
Inception系列網絡也是CNN分類網絡中比較常用的一種,Inception網絡起源于2014年的GoogLeNet,經過不斷演化,現在已經迭代到Inception-v4版本[23]。Inception模型很好地解決了增加網絡深度和寬度的同時減少參數的問題。Inception v1[24]通過將1×1,3×3,5×5的卷積核和3×3的池化卷積核堆疊在一起,增加了網絡寬度,降低了feature map的厚度,在ImageNet分類結果中測試誤差為6.67%。在此基礎上又提出了Inception v2[25],在v1基礎上加入了BN層,標準化每一層的輸出結果,另外為了降低參數量,使用2個3×3的卷積核代替了5×5,提升運算速度。Inception v2的測試誤差降低到4.8%。Inception v3[26]加入了降維思想,例如將一個3×3的卷積核拆成1×3和3×1的卷積核,這使得網絡深度進一步加深,同時增加網絡的非線性,測試誤差降低至3.5%。Inception v4則是將Inception模塊與殘差網絡相結合,極大地提升了訓練的速度,測試誤差降低至3.08%。由于Inception v3作為一個已經預訓練好的圖像分類模型,使用簡單方便,準確率高,被更多地應用。
2.1.2 “端”到“端”的卷積神經網絡缺陷檢測模型
對比于上述幾種模型,YOLO算法和SSD算法可以實現“端”到“端”的目標檢測,輸入被測圖像,輸出目標圖像。YOLO可實現在一個CNN中進行檢測操作,算法簡潔,檢測速度快,不易對背景誤判,泛化能力強,在做遷移學習時魯棒性好。YOLO還經常與Inception一起使用,YOLO作為圖像分類算法,Inception作為目標檢測算法,兩者結合使用表現優異。但YOLO在定位細長的物體時無法很好地泛化。SSD算法使用一個C+1類分類器判斷錨框里包含的是物體或是背景,若包含物體則進一步判斷物體種類。且SSD可以將CNN輸出的特征進一步通過卷積和池化處理,實現多尺度預測。
深度信任網絡(Deep Belief Networks,DBN)算法[27]是典型的深度學習神經網絡模型之一,既可用于非監督學習,也可以用于監督學習。DBN的組成元件是受限玻爾茲曼機(Restricted Boltzmann Machines, RBM),RBM[28-29]由可視層和隱含層構成,分別作為輸入訓練數據和特征檢測器使用,DBN算法的本質是如何更好地進行特征表達。由于DBN由多個RBM組成,在訓練中第一個RBM進行充分訓練后固定權重和偏移量,將第一個RBM的隱含層作為第二個RBM的可視層,將數據輸入第二個RBM繼續訓練,第二個RBM充分訓練后,重復一、二間的過程直至得到較為理想的數據,DBN結構的最后一層為微調,使用BP算法對判別性能做一個標簽集并被附加到頂層,給從下而上的學習設置BP網絡用以調優,因為BP算法對權值參數空間僅是一個局部的搜索,相較于前向神經網絡訓練較快,而且收斂的時間也少。
自編碼器(Autoencoder, AE)是一類在半監督學習和非監督學習中使用的人工神經網絡,其功能是通過將輸入信息作為學習目標,對輸入信息進行表征學習[30-31],包含編碼器和解碼器兩部分。自編碼器可按學習范式和構筑類型分類,如圖2。
進行缺陷檢測時常由于數據量過大,包含的冗余信息及噪音信息會對識別產生影響,降低準確率,又或者想通過數據降維尋找數據內部的本質結構特征,提升模型訓練速度,因此數據降維是提升檢測準確率的方法之一。自編碼器接收輸入將其轉換成高效的內部表示,這一過程稱為編碼,由于其維度一般遠小于輸入數據,自編碼器應用于降維方面表現很好,在輸出結果之前,經過解碼函數將高效的內部表示重構為類似輸入的結構輸出。另一方面,自編碼器可作為強大的特征檢測器,可應用于深度神經網絡的預訓練,在樣本數據不充足的情況下,對網絡進行預訓練會提升檢測的準確率。
現有的基于自編碼器的缺陷檢測方法大致分為三類:第一類是將自編碼器用于特征提取,結合分類器或深度網絡進行分類,最后輸出檢測結果;第二類是使用去噪自編碼器將缺陷視為噪聲去除,得到無缺陷的圖片樣本,將無缺陷檢測樣本和原圖進行求差操作得到殘差圖,并使用閾值分割方法,分割出缺陷區域,實現檢測;第三類是將自編碼器用于深度網絡的預訓練,以彌補樣本不足對深度網絡模型帶來的影響。
在進行產品缺陷檢測時,通過對缺陷檢測技術應用不同深度學習網絡模型面對不同工業制品的應用情況研究,分析檢測網絡模型在實驗中存在的問題,有目的地優化現有算法,從而提高缺陷檢測的準確率和速度。深度學習中各典型網絡應用于工業產品缺陷檢測的優缺點見表1。
通過檢測方法、被檢對象、檢測精度三方面對近五年相關應用研究進行總結見表2。

表1 基于深度學習缺陷檢測方法的比較

表2 基于深度學習工業產品缺陷檢測的應用研究

續表2 基于深度學習工業產品缺陷檢測的應用研究
基于深度學習的缺陷檢測技術在理論層面和實際應用層面都取得了較好成績,但依舊存在以下問題:
(1)采集圖像時,光照環境、背景復雜度等外界因素會影響缺陷特征的提取進而影響檢測精度,同時硬件設備帶來的圖像畸變及噪聲等因素也會在一定程度上影響圖像的質量、檢測的性能。如何高質量地采集圖像,減少外界因素的干擾是目前需要解決的問題之一;
(2)在實際采集數據的過程中,除了需要避免外界因素影響,數據本身的全面性也是需要考慮的因素。在一些檢測項目中,缺陷樣本的數量不夠充分,種類不夠豐富,會導致網絡模型不能完整、準確地學習缺陷的特征,無法正確檢測。如何快速、準確、全面地獲取缺陷特征,保證實際應用時檢測的準確率是目前需要解決的另一個問題;
(3)基于卷積神經網絡的缺陷檢測系統很大程度上依賴于候選框的回歸,候選框回歸產生偏差,或因目標屬于小尺寸目標,導致無法生成候選框,無法精準定位缺陷位置等問題,急需優化候選框生成和校正回歸誤差的算法,優化提取小尺寸目標特征時的算法;
(4)現有的算法應用到實際生產過程中會產生一些實時性問題。在保證檢測系統精度和效率的情況下,如何提高系統的準確性與實時性也是目前需要考慮的問題。
在目前工業產品缺陷檢測中,深度學習已應用到機械零件(如火花塞、軸承、錨桿等)、汽車零件、芯片、半導體晶圓等各種產品的缺陷檢測上。基于深度學習的缺陷檢測將成為未來的發展趨勢,具體有如下幾個研究方面:
(1)基于上述存在的問題,如何優化圖像采集的質量,提高候選框的精度,更加全面、準確地提取特征進行學習,對于小尺寸目標的特征提取,都是未來需要研究的方向;
(2)如今涌現大量的神經網絡(包括針對某一問題進行改進的神經網絡)各有優缺點,這些網絡都是基于大量數據實現的,如何使用較少的圖片樣本訓練出表現優異的識別模型是一大難點;
(3)目前的缺陷檢測技術大多是基于二維平面的,只能單一檢測某一平面,如何對某一物體進行全方位的缺陷檢測(如利用三維建模等)也是未來研究的方向;
(4)在產品衍生物越來越多的今天,如何將一個已經訓練好的模型遷移到另一個類似產品上,并保證其準確率和檢測效率,也有待研究;
(5)在檢測出缺陷并明確是何種缺陷后,對該物體的信息善后及處理是十分重要的,同時將缺陷產品與無缺陷產品分離也是十分必要的。缺陷檢測系統可以與預警系統結合,在檢測出缺陷產品后及時示警,工作人員可以及時剔除缺陷產品;或與分揀系統結合,由機械手剔除缺陷產品,另外還可建立溯源系統,排查生產工藝中會使產品產生缺陷的步驟,并及時優化生產工藝,從而降低生產成本。
產品的質量和外表的完整度對于產品的評價十分重要,缺陷檢測的應用具有極其重要的實際意義,廣大科研工作者和企業都熱衷于缺陷檢測的研究。本文針對基于深度學習的工業產品缺陷檢測方法進行綜述,對基于卷積神經網絡、深度信任網絡及自編碼器的缺陷檢測技術進行了介紹,總結近五年國內外的相關研究成果,同時結合實際指出當前基于深度學習的工業產品缺陷檢測技術存在的問題,并給出該技術未來的發展方向,以輔助相關研究人員、企業等有針對性地進行知識重用及設計創新。