王芷薇,郭 斌,胡曉峰,2,羅 哉,段林茂
(1.中國計量大學(xué) 計量測試工程學(xué)院,浙江 杭州 310018; 2.浙江省先進制造技術(shù)重點實驗室,浙江 杭州 310058; 3.杭州沃鐳智能科技股份有限公司,浙江 杭州 310018)
制動主缸是行車制動系統(tǒng)的動力源,在液壓制動系統(tǒng)中有著至關(guān)重要的作用[1,2],其質(zhì)量直接影響汽車的安全性能。主缸在加工過程中會因生產(chǎn)環(huán)境不理想、制造工序不規(guī)范等原因造成主缸內(nèi)槽表面加工缺陷[3]。缺陷會導(dǎo)致主缸漏油、活塞卡滯等問題。由于主缸的口徑極小,無法用人眼直接觀測。目前在工業(yè)生產(chǎn)中主缸內(nèi)槽缺陷的檢測方法有內(nèi)窺鏡人工檢測方法和機器視覺檢測方法。內(nèi)窺鏡人工檢測方法效率低、精度差,易因工作人員長時間的檢測疲勞而產(chǎn)生檢測誤差;機器視覺檢測方法適應(yīng)力較差,無法進行自動識別,在圖像預(yù)處理及識別過程中難以針對不同種類缺陷進行快速檢測,不同缺陷檢測時要設(shè)定不同的閾值[4~6]。
近年來,深度學(xué)習(xí)技術(shù)取得很大進展,可以實現(xiàn)自主識別以及高準確率,因此利用深度學(xué)習(xí)進行缺陷檢測的研究越來越多?;谏疃葘W(xué)習(xí)的缺陷檢測方法主要包括兩類:1) 依賴于預(yù)定義的錨框(anchor box),通過網(wǎng)絡(luò)學(xué)習(xí)對圖片中上千種的錨框進行判斷,判斷該錨框內(nèi)是否含有缺陷,再對錨框進行分類。該類檢測的網(wǎng)絡(luò)主要有RetinaNet、SSD、YOLOv3和Faster R-CNN等[7];2) 通過網(wǎng)絡(luò)學(xué)習(xí)得到待測圖片中所需要的關(guān)鍵點,對關(guān)鍵點進行分類,該類檢測網(wǎng)絡(luò)有CornerNet和FCOS(fully convolutional one stage)等[8~10]。CornerNet網(wǎng)絡(luò)消除了對錨框的依賴,但僅能提取邊緣特征,容易產(chǎn)生很多誤檢。FCOS目標檢測算法在不依賴錨框的基礎(chǔ)上,進行逐像素點預(yù)測,減少了重疊計算和訓(xùn)練所占內(nèi)存,提高了檢測精度。因此,引入FCOS作為缺陷檢測模型的核心網(wǎng)絡(luò),組建缺陷檢測模型,實現(xiàn)對在線大批量制動主缸內(nèi)槽表面的砂眼、劃痕、振刀紋多類別缺陷的檢測和分類。
檢測系統(tǒng)流程圖如圖1所示,首先獲取主缸圖像并進行預(yù)處理,其次對主缸凹槽的圖片進行不同種類缺陷的分類,以獲取深度學(xué)習(xí)所需樣本,搭建FCOS網(wǎng)絡(luò)并對樣本進行缺陷檢測,最后根據(jù)結(jié)果進行模型驗證。
圖1 檢測系統(tǒng)流程圖Fig.1 Flow chart of detection system
針對傳統(tǒng)的機器視覺檢測方法,提出基于FCOS目標檢測算法的主缸缺陷檢測的方法,其流程圖如圖2所示。
圖2 檢測流程圖Fig.2 Flow chart of detection
將在線采集的制動主缸內(nèi)槽表面缺陷圖片經(jīng)圖像經(jīng)預(yù)處理后,按4:1的比例分為訓(xùn)練集和測試集用于離線建模,其中缺陷特征標注后的訓(xùn)練集作為FCOS目標檢測算法的輸入,通過梯度下降法進行迭代,進而優(yōu)化網(wǎng)絡(luò)參數(shù),幫助網(wǎng)絡(luò)更快收斂,模型訓(xùn)練完畢后通過測試集檢驗網(wǎng)絡(luò)對主缸缺陷檢測的準確率,對網(wǎng)絡(luò)進行評估。工業(yè)生產(chǎn)線要求檢測缺陷的均值平均精度達到90%以上,若網(wǎng)絡(luò)模型性能達到實際要求,便將網(wǎng)絡(luò)投入實際的主缸缺陷在線檢測中,反之則繼續(xù)調(diào)整網(wǎng)絡(luò)參數(shù)并重新訓(xùn)練網(wǎng)絡(luò)。
FCOS是一種全卷積的單階段目標檢測算法,基于逐像素預(yù)測的方式預(yù)測特征圖上每個空間位置的類別,并直接輸出目標的類別[11]。由于算法不需要雙階段目標檢測算法的特征候選區(qū)域,從而具有更快的檢測速度,算法也消除了對錨框的依賴,完全避免了調(diào)整錨框相關(guān)的超參數(shù),減小了訓(xùn)練時的內(nèi)存占用[12]。
圖3為檢測搭建的FCOS算法的模型結(jié)構(gòu),F(xiàn)COS由兩個子網(wǎng)絡(luò)組成:特征金字塔網(wǎng)絡(luò)和逐像素回歸預(yù)測網(wǎng)絡(luò)。
圖3 FCOS基本結(jié)構(gòu)Fig.3 Basic structure of FCOS
由于主缸凹槽存在不同種類缺陷重疊的情況,會造成邊界框難以在重疊部分進行回歸,可采用單層特征金字塔網(wǎng)絡(luò)消除重疊帶來的模糊性。單層特征金字塔網(wǎng)絡(luò)檢測速度快,但只關(guān)注了頂層的語義信息,容易忽略底層的小目標信息[13,14],因此提出基于一種多特征融合金字塔網(wǎng)絡(luò),提取圖像的多層特征信息,針對不同層次的特征分別引入金字塔結(jié)構(gòu),進行特征融合,融合后利用多層特征信息實現(xiàn)邊界框的預(yù)測和分類。該方法保證了微小的缺陷目標在高層特征中也有較強的語義信息。
多特征融合金字塔網(wǎng)絡(luò)(multi-feature fusion-pyramid network)是綜合考慮低層特征和處理過的高層特征,并且在不同特征層獨立進行預(yù)測的網(wǎng)絡(luò)。通過對高層特征進行自頂向下的線路和低層特征進行自底向上的線路再橫向連接進行特征融合,生成最終的分辨率圖進行預(yù)測[15]。文中的多特征金字塔網(wǎng)絡(luò)所用的是以ResNet-101殘差網(wǎng)絡(luò)為主干網(wǎng)絡(luò),提取圖像的全局特征。結(jié)構(gòu)如圖4所示。
圖4 特征融合網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.4 Featurefusionnetworkarchitecture
所采用的特征金字塔網(wǎng)絡(luò)定義了3個級別的特征圖(P3、P4、P5),其中P3、P4、P5是由ResNet網(wǎng)絡(luò)中C3、C4、C5通過1×1卷積層再和高層特征2倍上采樣的結(jié)果進行融合得到,P3、P4、P5的步幅分別8、16、32,融合后的每個特征級都進行逐像素預(yù)測,由于步幅不同,每個特征級可檢測不同大小的對象,實現(xiàn)多層特征的融合。
主缸缺陷圖片的像素為800×1 024,經(jīng)過特征金字塔網(wǎng)絡(luò),得到的特征圖尺寸分別為100×128、50×64、25×32像素。
逐像素預(yù)測法是特征圖中每個像素點的位置經(jīng)過映射得到預(yù)測邊界框從而進行分類的方法。
回歸操作是指在真實邊界框中,每個像素點都有對應(yīng)的回歸目標h=(l*,t*,r*,b*),l*、t*、r*、b*是該像素點到真實邊界框4條邊的距離。特征圖中的每點像素(x,y)都有與之對應(yīng)的(l*,t*,r*,b*),如式(1)所示:
(1)
通過回歸分析得到對應(yīng)關(guān)系,即確定網(wǎng)絡(luò)隱藏層的參數(shù)。由于網(wǎng)絡(luò)針對缺陷重疊情況使用特征金字塔網(wǎng)絡(luò),因此不同大小的缺陷分配給不同的特征層進行回歸操作。
訓(xùn)練集在FCOS目標檢測算法中經(jīng)過回歸和分類操作后可得到每個像素點與真實邊界框的對應(yīng)關(guān)系以及類別。當(dāng)未被訓(xùn)練的樣本輸入網(wǎng)絡(luò)時,樣本中每個像素通過逐像素預(yù)測法預(yù)測邊界框以及邊界框的類別,將預(yù)測結(jié)果與真實邊界框進行對比并多次迭代修改參數(shù),訓(xùn)練網(wǎng)絡(luò)。
一些遠離圖片中心的像素點采用逐像素預(yù)測法后會預(yù)測出低質(zhì)量的邊界框,給檢測結(jié)果帶來偏差,因此每個像素點預(yù)測出邊界框后加入中心概率(Center-ness)預(yù)測分支。
(2)
通過式(2)可知,遠離圖片中心位置的像素點中心概率值小,靠近圖片中心位置的像素點中心概率值接近于1。由于非極大值抑制可以抑制除局部最大值之外的所有梯度值,則通過非極大值抑制,濾除中心概率值小的邊界框。
當(dāng)訓(xùn)練集輸入FCOS網(wǎng)絡(luò)中得到預(yù)測的邊界框時,損失函數(shù)表示預(yù)測的邊界框與真實邊界框的差距程度[16,17],損失函數(shù)定義見式(3):
(3)
圖像的采集系統(tǒng)由視覺成像機構(gòu)、機械傳動系統(tǒng)和運動控制系統(tǒng)3部分組成,系統(tǒng)結(jié)構(gòu)圖如圖5所示。
圖5 采集系統(tǒng)結(jié)構(gòu)圖Fig.5 Acquisition system structure diagram
視覺成像機構(gòu)通過垂直加載機構(gòu)至主缸內(nèi)部凹槽處,通過拍照獲取凹槽表面原始圖像,如圖6所示。為防止所建網(wǎng)絡(luò)出現(xiàn)過擬合現(xiàn)象,經(jīng)采集、預(yù)處理得到10 000張制動主缸內(nèi)槽表面圖像,再按4:1的比例分為訓(xùn)練集和測試集以訓(xùn)練和驗證模型。
圖6 制動主缸內(nèi)槽表面圖像Fig.6 master cylinder picture
圖片的上下部分為主缸內(nèi)壁,對后期訓(xùn)練以及缺陷學(xué)習(xí)會產(chǎn)生干擾,因此要對主缸凹槽有效區(qū)域ROI進行裁剪。通過對原始圖像灰度轉(zhuǎn)換得到灰度圖像,根據(jù)凹槽邊緣較周圍更亮,其邊緣灰度值較凹槽灰度值更高的特征,對其凹槽有效區(qū)域進行裁剪,裁剪后的圖像如圖7所示。
圖7 裁剪后內(nèi)槽表面圖像Fig.7 Cropped image of inner groove surface
缺陷標注對建立深度學(xué)習(xí)網(wǎng)絡(luò)至關(guān)重要,由于凹槽缺陷大約在1~3 mm左右,采集的圖片是其50~100倍,缺陷相對密封槽是十分微小的,缺陷標注不準確很容易導(dǎo)致在后期訓(xùn)練深度學(xué)習(xí)網(wǎng)絡(luò)時模型不收斂的情況。針對主缸3種不同種類的缺陷進行標注,缺陷均用Labelme軟件進行標注,如圖8,標注后自動保存為json文件生成COCO數(shù)據(jù)集,由于后續(xù)對比網(wǎng)絡(luò)中Faster R-CNN和Mask R-CNN所用的數(shù)據(jù)集格式為Pascal VOC,因此將COCO數(shù)據(jù)集轉(zhuǎn)成VOC數(shù)據(jù)集,在Linux系統(tǒng)中搭建深度學(xué)習(xí)環(huán)境,將生成VOC數(shù)據(jù)集的路徑添加至代碼中進行網(wǎng)絡(luò)訓(xùn)練。
圖8 3類缺陷標注示意圖Fig.8 Three types of detect labeling schematic diagram
搭建深度學(xué)習(xí)網(wǎng)絡(luò)的主要環(huán)境如下:處理器為Intel Core i7-7700,16 G內(nèi)存,GPU為GTX 1070,操作系統(tǒng)為在Ubuntu16.04上創(chuàng)建linux虛擬機,python=3.6.5,pytorch=1.3.1,cuda=10.0。基于深度學(xué)習(xí)網(wǎng)絡(luò)的缺陷檢測種類繁多,為了驗證FCOS網(wǎng)絡(luò)的性能,將在相同的實驗環(huán)境下,對相同的數(shù)據(jù)集分別采用Faster R-CNN網(wǎng)絡(luò)、Mask R-CNN網(wǎng)絡(luò)和FCOS網(wǎng)絡(luò)并進行對比。
對比3種網(wǎng)絡(luò)模型是否收斂,分別繪制出學(xué)習(xí)網(wǎng)絡(luò)隨著訓(xùn)練次數(shù)增加的檢測損失函數(shù)和精度曲線圖,如圖9所示。
圖9 3種網(wǎng)絡(luò)的損失函數(shù)和精度圖Fig.9 Loss function and precision graph of three kinds of networks
損失函數(shù)和精確度圖是3種網(wǎng)絡(luò)分別迭代 50 000 次得到,從圖中可以看出,隨著迭代次數(shù)的增加,損失值都不斷減小。
Faster R-CNN的損失函數(shù)震蕩幅度大,在迭代20 000次前精確度上升較快,但趨勢逐漸緩慢,最終的精確度值也較低;Mask R-CNN損失函數(shù)雖震蕩但效果比Faster R-CNN好,當(dāng)?shù)螖?shù)達到20 000次左右時,損失值基本趨于穩(wěn)定,最終精確度值比Faster R-CNN高,但精確度值不易收斂,需要迭代更多次數(shù)才能達到所需要求;FCOS網(wǎng)絡(luò)的損失函數(shù)震蕩幅度最小,在迭代20 000次后趨于收斂,迭代次數(shù)較少時,精確度雖不如Faster R-CNN好,但隨著次數(shù)增加精確度越高且最后趨于穩(wěn)定,最終精確度值最高。Faster R-CNN、Mask R-CNN、FCOS網(wǎng)絡(luò)迭代50 000次的最終精確度分別為0.869 1、0.871 4、0.900 4。
分別比較3種網(wǎng)絡(luò)的檢測性能,如表1所示。
表1 3種網(wǎng)絡(luò)模型性能對比Tab.1 Performance comparison of three network models
表1中準確率表示預(yù)測樣本中實際正樣本數(shù)占所有正樣本數(shù)的比例;召回率表示預(yù)測樣本中實際正樣本數(shù)占所有預(yù)測的樣本的比例;mAP(mean average precision)即平均精度均值,是作為目標檢測中衡量檢測精度的指標。
由于FCOS目標檢測算法消除了錨框的依賴,訓(xùn)練耗時最短。應(yīng)用于在線檢測時,采集的新數(shù)據(jù)不用與錨框進行相關(guān)超參數(shù)的計算,且不需要區(qū)域候選網(wǎng)絡(luò),工業(yè)產(chǎn)線在線檢測時運用Faster R-CNN網(wǎng)絡(luò)檢測單個主缸內(nèi)槽耗時22 s,Mask R-CNN耗時18 s,而FCOS網(wǎng)絡(luò)耗時10 s,F(xiàn)COS網(wǎng)絡(luò)滿足工業(yè)耗時要求且提高了檢測效率;FCOS算法中,預(yù)測框內(nèi)的每個像素點都為正樣本,而其他兩種網(wǎng)絡(luò)是基于錨框和真實框達到足夠的交并比時的像素點規(guī)定為正樣本,因此FCOS算法召回率相對較好;FCOS采用特征金字塔網(wǎng)絡(luò),減少了單個像素點的預(yù)測框重疊導(dǎo)致的模糊性,并且采用多級特征預(yù)測可以提高小目標的檢測精度;FCOS網(wǎng)絡(luò)mAP比Mask R-CNN網(wǎng)絡(luò)提高2.6%,比Faster R-CNN網(wǎng)絡(luò)提高4.9%。
FCOS網(wǎng)絡(luò)的檢測結(jié)果如圖10所示。圖10中,(a)為砂眼缺陷的檢測效果,(b)為劃痕缺陷的檢測效果,(c)為振刀紋缺陷的檢測效果。
圖10 缺陷檢測效果圖Fig.10 The defect detection effect diagram
本文研究了基于深度卷積神經(jīng)網(wǎng)絡(luò)的目標檢測算法FCOS,對算法原理進行了分析。制動主缸內(nèi)槽表面的缺陷大多數(shù)屬于小面積缺陷且不規(guī)則,F(xiàn)aster R-CNN會出現(xiàn)漏檢情況,F(xiàn)COS網(wǎng)絡(luò)采用特征金字塔網(wǎng)絡(luò)提取特征以及多級逐像素預(yù)測算法提高了對微小缺陷的檢測效果。針對Mask R-CNN訓(xùn)練時長較長的問題,F(xiàn)COS網(wǎng)絡(luò)減少了錨框相關(guān)參數(shù)的計算,大大減短了訓(xùn)練時長。通過對模型的訓(xùn)練,F(xiàn)COS網(wǎng)絡(luò)在制動主缸內(nèi)槽缺陷檢測精度明顯優(yōu)于Mask R-CNN和Faster R-CNN網(wǎng)絡(luò),耗時短,滿足實時檢測的要求。