李培秀,李致金,韓 可,朱 超
(南京信息工程大學 電子與信息工程學院,江蘇 南京 210044)
人工智能是工業(yè)智能化的重要標志,是國家由制造向智造轉(zhuǎn)型的戰(zhàn)略支撐,同時也是工業(yè)4.0背景下研究的熱門話題?;谏疃葘W習的人工智能技術(shù)正在發(fā)揮著其不可替代的作用,尤其是在工程應用領(lǐng)域更是獨樹一幟。據(jù)此本文提出了基于Caffe深度學習框架的標簽缺陷分類檢測系統(tǒng)模型,緊跟時代的發(fā)展步伐,使得工程檢測領(lǐng)域人工檢測效率低、漏檢錯檢率高的問題得到緩解。
以往標簽缺陷檢測算法是針對特定的圖像制定出相應的特征模板,通過待檢圖像與特征模板的差分運算得出待檢圖像是否存在缺陷的結(jié)論,該方法模板制作繁瑣,且存在人為不確定性因素影響檢測效果,隨著機器學習技術(shù)的發(fā)展,人們提出了基于SVM的標簽缺陷檢測算法,該算法較前一種算法無需復雜的模板制作[1-2],只需進行簡單的圖像處理就可以進行圖像的特征提取及分類,但是該算法只適用于簡單特征圖像的分類檢測,無法進行高精度圖像特征分類處理,遇到一些特征不是很明顯的圖像就會出現(xiàn)漏檢錯檢的問題,因此本文一種基于Caffe深度學習框架的標簽缺陷檢測算法應用研究,能夠為解決上述兩類算法遇到的問題提供一種很好的思路,在工程應用領(lǐng)域具有廣泛的應用價值。
近年來,智能研究領(lǐng)域的學者們都在關(guān)注深度學習(Deep Learning)這個技術(shù)。科研人員開發(fā)出眾多的開源框架,如Caffe、Thensorflow、Theano等, Caffe(Convolutional architecture for fast feature embedding)是比較成熟的一類深度學習框架。伯克利視覺和學習中心(BVLC)在C++/Python/CUDA語言的基礎(chǔ)之上開發(fā)出Caffe這個開源的卷積神經(jīng)網(wǎng)絡框架,該框架以‘層’為單位,使得框架結(jié)構(gòu)清晰,代碼的執(zhí)行效率高且不失靈活性[3]。由于該框架使用了MKL、OpenBLAS、cuBLAS等計算庫,并且兼容GPU加速,這使得它在處理大量數(shù)據(jù)時效率非常高,Caffe深度學習框架在圖像特征提取方面具有很大的優(yōu)勢,尤其是它在處理數(shù)據(jù)時能實現(xiàn)可視化,使得提取圖像特征的過程更加明了;不僅如此,Caffe更加人性化的提供了訓練、預測、微調(diào)、發(fā)布、數(shù)據(jù)預處理及自動檢測等一整套的工具。Caffe框架的提出,使得深度學習技術(shù)應用與研究的難度系數(shù)大大降低。
標簽缺陷檢測主要分為四個步驟:1)原始標簽圖像的采集;2)標簽圖像尺寸的調(diào)整,將原始采集到的圖像設(shè)置成統(tǒng)一尺寸,為后續(xù)的特征提取做準備;3)圖像特征提取,首先對圖像特征點進行抽象,然后再進行特征的提取;4)圖像識別,在Caffe深度學習框架下對含有相應特征的圖像進行識別分類[4-5]。如圖1所示該流程圖為圖像識別過程。
圖1 標簽缺陷識別流程圖
卷積神經(jīng)網(wǎng)絡是在動物視覺原理的啟發(fā)下設(shè)計而成,其包含卷積層、池化層及全連接層,它是前饋網(wǎng)絡,具有很強的大數(shù)據(jù)處理能力。卷積神經(jīng)網(wǎng)絡具有三個特點,那就是局部感受野、權(quán)值共享和下采樣。局部感受野可以找到圖像的局部特征,如一段弧或者一個角度,更高層將局部信息綜合整理到全局信息數(shù)據(jù)中,這種思想類似于人對外部信息從局部到全局的理解。權(quán)值共享能夠精簡訓練及識別參數(shù),下采樣能夠?qū)崿F(xiàn)局部特性不變,相對于傳統(tǒng)的圖像分類算法,卷積神經(jīng)網(wǎng)絡具有鮮明的層次感[6]。
不僅如此,卷積神經(jīng)網(wǎng)絡就類似于一個黑盒子,使用者無需知道是如何進行的特征提取以及提取的何種特征。由于特征提取是在訓練數(shù)據(jù)時進行自主學習的,該方法提取的特征更具有說服力以及一般特性。大大的提高的分類檢測的效果?,F(xiàn)在大多數(shù)應用的檢測和識別系統(tǒng)都是基于該方法進行的數(shù)據(jù)處理及預判。
2.2.1 前向傳播
如圖2所示,卷積層、池化層及全連接層是經(jīng)典神經(jīng)網(wǎng)絡的標準配置。在前向傳播的處理過程中,卷積層利用卷積核與上一層輸出的特征值進行卷積運算,然后再通過激活函數(shù)處理,得到卷積過后的特征圖,作為下一層的輸入數(shù)據(jù),其中輸出特征圖的個數(shù)取決于卷積核的個數(shù),計算方程為
(1)
池化層即卷積層的特例,池化層采樣核是依據(jù)算法的需要而設(shè)計的固定參數(shù),不會在訓練和學習的過程中發(fā)生改變,采樣核函數(shù)逐個作用于輸入的特征數(shù)據(jù),并得到與之相應的特征輸出值。因此特征圖的輸入輸出數(shù)量相等,但是壓縮了特征圖的數(shù)據(jù),有效的提高了特征圖的魯棒性[7-8],公式如下:
(2)
全連接層向前傳播算法與傳統(tǒng)BP神經(jīng)網(wǎng)絡算法基本相同,在計算前首先要將特征圖從二維轉(zhuǎn)化成一維向量,再執(zhí)行全連接計算操作。其計算公式為:
(3)
卷積神經(jīng)網(wǎng)絡具有很強的圖像分類效果,本文使用Softmax為分類損失函數(shù),主要是因為其結(jié)構(gòu)簡單、效率高、且支持多種分類。前向傳播中的損失計算如公式(4)所示:
(4)
圖2 卷積神經(jīng)網(wǎng)絡
2.2.2 反向傳播
網(wǎng)絡各層參數(shù)因反向傳播而獲得的梯度值進行相應調(diào)節(jié),其中卷積層、池化層、損失層主要根據(jù)鏈式求導法則進行反向逐層計算。計算損失層梯度的公式,如式(5)所示:
(5)
式(5)中,L為最后一層輸出數(shù)據(jù),計算全連接層梯度公式,如式(6)所示:
(6)
(7)
(8)
由上述基本理論得出各層參數(shù)的梯度,然后逐層更新參數(shù),完成學習過程。
文中使用的Caffe深度學習網(wǎng)絡架構(gòu)如圖3所示,該架構(gòu)在CaffeNet網(wǎng)絡架構(gòu)基礎(chǔ)之上做了相關(guān)的調(diào)整,網(wǎng)絡總有8層。輸入數(shù)據(jù)為224×224的彩色圖片,以及對應的標簽,第一層為數(shù)據(jù)輸入層,主要是將采集的數(shù)據(jù)圖像讀入到深度學習網(wǎng)絡中,第二層是卷積核為5×5的卷積層,其卷積步長是1,卷積過后通過激活函數(shù)ReLU得到一個220×220尺寸的圖片;第三層就是池化層,本文使用的是最大值池化的方法,采用2×2池化核,且步長為2,經(jīng)過池化層運算之后網(wǎng)絡輸出110×110尺寸的圖片;第四層和第五層重復上述第二第三層的卷積和池化操作之后,輸出53×53尺寸的圖片,第六層是我們常說的全連接層,該層有500個神經(jīng)元,與第五層輸出的神經(jīng)元進行全連接操作,并通過激活函數(shù)ReLU運算后輸出,第七層是全連接層,與第六層輸出的神經(jīng)元進行全連接操作,通過激活函數(shù)ReLU運算后輸出,第八層也是全連接層,采用損失函數(shù)Softmax作用后輸出,該層有4個輸出神經(jīng)元對應4類標簽[9-13]。該網(wǎng)絡的池化層能具有去除噪聲功能,使網(wǎng)絡適應性有所增強,ReLU層有助于網(wǎng)絡的收斂,accuracy層計算測試精度,loss層計算訓練過程中的損失值,并計算誤差梯度。
圖3 網(wǎng)絡結(jié)構(gòu)
本文實驗是在3.3GHz Intel Core i5-4590CPU的硬件和Ubuntu16.04LTS,Caffe等的軟件配置下進行的。實驗從印刷廠家分揀出的圖片進行數(shù)據(jù)采集,制作實驗數(shù)據(jù)集。參考文獻[1]相比,本文算法無需進行識別圖像的模板制作、模板匹配、差分運算后的對比識別等一系列復雜工作,且減少這些工藝過程中人為造成的誤差,降低檢測精度及效率?;贑affe的深度學習模型,僅僅需要將數(shù)據(jù)集輸入到模型后,該網(wǎng)絡會根據(jù)數(shù)據(jù)集的特征進行相應模型的訓練,以滿足檢測識別的要求。簡化了檢測程序,使得檢測系統(tǒng)易于推廣。
該實驗的基本流程如圖4所示:
圖4 算法流程圖
首先是系統(tǒng)初始化,輸入數(shù)據(jù)訓練模型,由于深度神經(jīng)網(wǎng)絡需要大量的數(shù)據(jù)進行模型訓練,才能防止模型的過擬合提高模型的泛化能力和分類準確率,而我們目前提供的數(shù)據(jù)集遠遠達不到訓練模型時數(shù)據(jù)量的要求,因此,我們應該對訓練數(shù)據(jù)集進行相應的數(shù)據(jù)擴充,主要根據(jù)數(shù)據(jù)采集時可能出現(xiàn)的亮暗程度的變化,對數(shù)據(jù)集擴充,其次我們對存在缺陷的數(shù)據(jù)集缺陷形狀進行分析研究,比如線缺陷和面缺陷的形狀進行鏡像,以此擴充數(shù)據(jù)集,使其數(shù)量上滿足訓練要求,經(jīng)過數(shù)據(jù)集的擴充之后進入模型的訓練,經(jīng)過5000次的迭代訓練之后,該數(shù)據(jù)集通過學習得到一個比較穩(wěn)定且檢測效果的模型,該模型測試準確率可以達到97.66%,如圖5所示。
圖5 模型測試準確率
將相同的數(shù)據(jù)集按照參考文獻[1]中提到的方法,首先進行圖像模板制作,將多張完好的圖像進行疊加運算后,制作出相應的模板圖像,然后再將待檢圖像與模板圖像進行配準操作,過程中存在許多的人為誤差,最后進行圖像差分運算,將運算后得到的特征圖像輸入到識別模型進行缺陷的識別,其識別準確率僅96.67%,與本文提出的算法相比檢測準確率稍微偏低。
本文提出的基于Caffe框架深度學習模型在四類樣本圖像集基礎(chǔ)之上進行試驗,其中樣本數(shù)據(jù)集分別是完好圖片數(shù)據(jù)、點缺陷圖片數(shù)據(jù)、線缺陷圖片數(shù)據(jù)、面缺陷圖片數(shù)據(jù)各700張進行實驗。該模型訓練損失曲線如圖6所示:
圖6 訓練損失曲線
如圖6所示,隨著迭代次數(shù)的增加,該模型的損失曲線逐漸下降,根據(jù)深度學習理論知識可以得出,該模型隨著迭代次數(shù)的增加,模型一直在學習新的特征,使得模型逐步得到優(yōu)化,當?shù)?000次時,該模型損失曲線在0.1以下徘徊,此時該模型已經(jīng)達到最佳效果,即圖5所示模型的測試準確率達到峰值97.66%。
實驗表明,本文提出的基于Caffe框架的深度學習算法模型,與參考文獻[1]所提到的算法模型相比,本文算法無需進行檢測前期的模板制作、校驗及差分運算等工作,使得檢測程序簡單易于應用,同時該算法檢測準確率也有了一定的提高,基本滿足工程應用領(lǐng)域的檢測要求,具有較好的應用前景。