朱宗洪 李春貴 李煒 黃偉堅



摘要:為完成噴油器閥座常見的瑕疵識別,對深度檢測模型進行研究,提出基于Faster R-CNN模型的噴油器閥座瑕疵識別改進方法。首先,對常規生產下的噴油器閥座瑕疵圖像進行采集、處理,構造出相關數據集;其次,在FasterR-CNN模型上對候選框和特征網絡進行改進,獲得比原有模型更高的精確度。實驗結果表明:改進的FasterR-CNN模型在噴油器閥座瑕疵識別中精確度得到加強,識別精確度可達71.79%,相比原有模型精確度提升了近3.9%。說明該深度學習方法能夠有效實現噴油器閥座瑕疵的識別,為后續自動一體化檢測研究提供了基礎。
關鍵詞:汽車噴油器閥座;瑕疵識別;Faster R-CNN;深度學習
中圖分類號:U464.136;TP391.41DOI:10.16375/j.cnki.cn45-1395/t.2020.01.001
0引言
隨著視覺檢測技術的快速發展,制造業自動化生產線上使用機器視覺來檢測目標產品瑕疵的軟件和應用越來越多,生產效率也得到很大的提高,在瑕疵檢測中使用機器代替人已經成為一種不可避免的趨勢。實際上,如何更好地將工業生產與機器視覺檢測技術相結合是一個十分困難的問題,目前噴油嘴閥座(如圖1)的檢測還是通過手動實現,在人丁檢查中,工作人員需要在精神高度集中、連續的單純作業環境下工作(如圖2),人眼容易疲勞,無法保證檢測合格率。本文在機器視覺技術的基礎上,研究深度學習方法在閥座瑕疵檢測中的應用。
深度學習是機器學習的一個分支,是近些年來機器學習領域取得的重大突破和研究熱點之一。在檢測算法的不斷改進下,Girshick等提出了R-CNN算法,該算法將“深度學習”和傳統的“計算機視覺”知識進行了結合。接著He等提出了目標檢測算法SPP-Net,方法的提出解決了候選框縮放成統一大小而導致物體變形的問題,Girshic通過對R-CNN和SPP-Net的缺點做進一步改進,通過引入多任務損失函數和RoI Pooling提出了FastR-CNN,雖然該算法在計算速度上得到了提高,但還不能滿足端對端的測試。因此,Ren等提出了FasterR-CNN,隨后在保證一定精度的前提下,為了能提高檢測速度,又出現了YOLO、SSD等算法。Fatser R-CNN算法在物體檢測中,相對其他算法能達到更好效果。雖然Faster R-CNN算法能獲得很好的檢測性能,但是在汽車噴油器閥座的應用中,仍然存在許多的問題:①噴油器閥座圖像中的目標尺寸相對較小,不能精準的完成識別和定位;②瑕疵種類并不單一存在,往往一張圖像上存在多類尺度不一的瑕疵,并且在檢測過程中會受到光照等因素的影響,所以會出現漏檢、誤檢的發生。針對以上問題,本文在Faster R-CNN算法基礎上,對錨框大小和數量進行改進,并在改變特征提取網絡的同時引入ResNet、Inception模塊,通過一系列的改進,讓汽車噴油器閥座的檢測更精準,以滿足工業檢測的基本要求。
1數據集構建
1.1數據采集
在噴油器閥座檢測中,由于噴油器閥座瑕疵較小,不能通過肉眼識別,因此,需要對噴油器閥座圖像進行放大;同時還要克服其他外部光源的干擾,根據焦距等參數的調整與設定來獲取清晰的瑕疵圖像,保證采集的圖像質量。在檢測中,圖像的精度也直接影響到最后判別瑕疵的結果。CCD工業相機性能優良,有較好的彩色還原度和光源預校準功能,本身包含有輸入輸出單元和感光單元。通過放大鏡頭與所選相機接口及芯片尺寸進行匹配,實現圖像的放大及精準度的控制;通過選取合適的光源、工裝,完成遮光裝置設計,該裝置在解決外部光源干擾的同時,也有效克服了自身光源發散的問題,使拍攝圖片更加清晰,得到高質量的圖像信息;最后,對圖像采集卡進行二次開發,并通過相機與電機的配合完成圖像的拍攝及存儲。采集環境和流程圖如圖3所示。
1.2圖像數據處理
由于攝像頭拍攝的圖像通常是彩色圖像,顏色信息比較豐富,冗余的信息會增加后續圖像處理的難度,因此,在實際生產中需要提出有效的方法對圖像進行預處理,該操作能弱化或消除圖像中無關信息,恢復對檢測目標有用的真實信息。目前收集的2100張圖片還不能完成樣本數據集的模型訓練,圖片數量直接影響到檢測與識別的結果。為了能夠提高檢測模型的泛化能力,一般采用數據增強方式來避免數據不足,如圖4所示。該方法能有效提高目標識別率,常常通過灰度轉化(圖4(a)),飽和度加強(圖4(b)),飽和度減弱(圖4(c)),翻轉(圖4(e)、圖4(f))等方法進行數據集擴充,提高目標命中率,處理之后數據庫得到7500張圖片。與此同時,原始采集的圖片分辨率為5678x2948像素,像素太高不僅會占內存空間,還不利于后期的模型訓練,因此,在訓練前會將圖像進行壓縮。接著將樣本打亂,提取其中的20%(1500)做測試集,80%(6000)做訓練集,之后使用Labellmg標記訓練圖像的缺陷類別及位置,標注目標完成后,將每一張標注圖片保存為XML文件,作為訓練樣本。
2Fastel R-CNN算法
Faster R-CNN主要包含3個部分:特征提取層、RPN(Region ProposalNetwork)層、FastR-CNN層。Fatser R-CNN特征提取層使用的是VGG16網絡模型,通過conv+ReLU+Pooling層提取Image的特征圖,它被認為是卷積神經網絡中分類性能較優秀的網絡模型。Faster R-CNN網絡結構如圖5所示,通過結構可以了解整個檢測過程:似設一張任意大小P×Q的圖像,縮放至固定大小MxN,然后將MxN圖像送入CNN網絡;而CNN網絡中包含了13個Conv層+13個ReLU層+4個Pooling層;而RPN網絡首先經過3x3卷積,分別生成PositiveAnchors和對應Bounding Box Regression偏移量,然后計算出Proposals;而ROI Pooling層則利用Proposals從FeatureMaps中提取Proposal Feattire送入后續全連接和SoftMax網絡作Classification。所以可以概括為Faster R-CNN在Fast RCNN的基礎上,用RPN(region proposal network)網絡取代了選擇性搜索,通過有效區域合并、去除冗余等方法對目標位置進行調整,從而生成高質量的區域建議框,并且通過共享特征提取網絡,有效降低了區域檢測的時間,獲得更精確的結果。最后由Fast RCNN對區域特征進行學習,完成物體的分類和邊框的回歸。
候選區域(RPN)是一個全卷積神經網絡,訓練時使用非極大值抑制方法,通過窗口中目標/非目標分類概率獲取候選區域,按照一定比例隨機選取正/負樣本進行訓練,正負樣本以Iou(Intersection overUnion)作為判別依據。IoU是一種邊界窗口回歸(BoundingBox Regression,BBox)和真實目標窗口重合度的指標。通過實驗發現,LoU的取值能在很大程度上影響檢測效果。如果設置太大則會使檢測不準確,造成大量的誤檢產生;設置太小檢測就會不完整,存在漏檢;因此,針對汽車噴油器閥座對LoU進行設置,如果檢測到的邊界框與瑕疵真值框之間的LoU重疊率大于0.7,則表示預測類別正確,為正樣本;如果在檢測到的邊界框與地面真值框之間的LoU重疊率小于0.3,則表示預測類別錯誤,為負樣本。RPN網絡使用BBox生成Rol時,其回歸損失函數如式(1):
Lreg對整個模型的魯棒性產生至關重要的影響。其中函數SmoothL1,如式(2):
RPN網絡的識別是典型的二分類過程,其分類損失函數定義如式(3):
最后得到RPN網絡對單個圖像樣本的損失函數如式(4):
3基于Faster R-CNN的改進實現
3.1錨框數量與大小進行改變
錨窗是RPN網絡操作中很重要的一個參數,對后續候選框生成數量與大小會產生決定性的影響。在原始Faster R-CNN中RPN使用3種不同尺寸及比例(1:1,1:2,2:1),組合成9種不同大小的錨框,并以此預測包含目標的窗口位置。似設對于一個長為H,寬為W的特征圖,將會生成H*W*9個候選框,最后通過非極大值抑制算法剔除多余的候選區域。但在噴油器閥座的瑕疵檢測中,它不同于平常的行人、車輛檢測,噴油器閥座的瑕疵較小且種類較多,用現有的算法模型檢測會存在漏檢,因此針對該對象的特性對錨框進行改進,長寬比變為0.5,1,2,4,縮放比例變為4,8,16,生成的候選窗口也由原來的9個變為現在的12個。改進的錨窗使Faster R-CNN模型檢測效果更好,對尺寸較小的噴油器閥座有著更精準的檢測率,通過計算可以發現改進的錨窗尺寸與瑕疵尺寸大小接近。實現步驟如下:
Step 1對anchor進行初始化:
anchor base=16,anchor middle=(7.5,7.5),Size=16*16,ratio=[0.5,1,2,4],anchor base為初始值,anchor middle為初始化中心,size為面積,ratio為長寬比。
Step 2計算初始化時在不同長寬比下anchor對應的面積如式(5):
Size1,2,3,4=size/atlio=[512,256,128,6] (5)
Step 3對anchor進行開根號計算,可以得到不同的寬、高,如式(6):
Step 4由anchor的中心以及不同的寬和高計算出anchors ratio,具體如式(7)、式(8):
x_left=x1-(w1-1)/2=-3.5,y_left=y1-(h1-1)/2=2(7)
x_right=x1+(w1-1)/2=18.5,y_right=y1+(h1-1)/2=13(8)
anchors={[-3.5,2,18.5,13],[0,0,15,15],[2.5,-3,12.5,18],[4,-8,11,23]}。
Step 5利用3種不同的stales[4,8,16]分別去擴大anchors,擴大的方法是先計算出來上一步的anchor的中心以及寬高,使寬高分別乘以scale,然后再利用中心和新的寬wi、高hi計算出最終所要的anchors,如式(9)、式(10)所示:
最后得到不同尺寸大小的anchors,如式(11)所示:
anchors1,2,3,,…,12={[-37,-15,54,32]…[-55,-247,72,264]} (11)
對比發現改進后的候選框大小更接近實際瑕疵區域大小,具體通過實驗進一步驗證。
3.2改進特征提取網絡
雖然vGG-16是卷積神經網絡中分類性能優秀的模型,但該模型在圖像的特征提取上損失較大,不夠充分,影響最后的目標檢測效果,導致對小目標的識別率不夠精確。隨著網絡模型的不斷改進,出現了Inception、ResNet等較深的網絡模型,不斷加深網絡層數可以提高性能;因此,結合Inception和ResNet等網絡的優點,在特征提取網絡上做改進,對網絡的深度、寬度同時進行改進,能更有效地對特征進行提取。因為在網絡中前3層卷積網絡能很好地提取特征,因此,通過這一特性對vGG16網絡進行改進,改進后的網絡如圖6所示。
將conv4卷積網絡模塊進行替換,借鑒ResNet50構建深層網絡的思想,以及Inception模型拆分-變換-合并的內積策略,同時加深該層網絡的深度和寬度,以獲得更強的表達能力。增加網絡的深度和寬度是提升神經網絡性能的最直接方法,由于Inception模塊是具有優良局部拓撲結構的網絡,會對輸入圖像執行并行卷積操作,最后再將得到的不同感受野特征進行拼接。因此,在對該網絡模塊進行設計時,通過融合ResNet跟Inception的特性,在殘差模塊中使用Inception moclule來替換殘差連接中的卷積層而組成新的結構,使節點學習輸入輸出之間的差值映射,避免輸入輸出特征的擬合,消除梯度彌散和梯度爆炸,并且加快網絡的訓練。在替換的模塊中,首先,通過1×1卷積對輸入進行降維拆分;然后,經過多個3×3的卷積進行轉換(為了減少計算量,其中5×5卷積用兩個3×3卷積進行替換);接著,沿通道維度串聯的方式進行通道合并,進行多尺度的檢測;最后,通過一個1×1卷積實現通道一致,完成殘差模塊跟輸出的線性向量的相加,公式如式(12)。在改變網絡模塊時,可以根據相似高度模塊化理念進行設計,讓新模塊的計算復雜度跟vGG16中的conv4模塊相似,這樣在增加網絡深度和寬度的同時,網絡復雜度也得到保持。式中,X(i)和y(i)為輸入通道,在實驗中輸入輸出通道數都為512,*為卷積。在該模塊中,一般通過修改3×3卷積層的通道數來進行網絡模塊的設計。這是由于該卷積層獨立于輸入、輸出,更有利于網絡的構造。設計模塊如圖7所示。
vGG16網絡跟ResNet50的cony4模塊參數數量都是5898k,ResNet50的每個模塊大約是983k參數。因此,按照相似模塊的搭建原則,將3×3卷積層的通道數設置為172.為了加快收斂,在每層輸入前加入批標準化(Batch Normalization,BN)層,有助于對前一層網絡輸出進行矯正,使其均值規范為0,方差規范為1,再輸入到下一層。改進的特征提取網絡能夠利用不同網絡的優勢,提高特征利用率,獲得更為豐富的輸入特征,使得性能進一步加強。
4實驗結果與分析
實驗硬件平臺操作系統為WIN1064位,CPU Intel core(TM)i7-47903.60GHz,16GB內存,2TB希捷硬盤。整個實驗基于Tensorflow深度學習框架進行開發,編程語言為pyhton,并采用NVIDIAGeForceGTX1070顯卡進行GPU加速訓練。本文以制作好的噴油器閥座數據集為訓練樣本,以端到端的卷積共享方式進行訓練,模型使用隨機梯度下降算法(SGD)進行權值優化,動量設置為0.9,權重衰減因子為0.05,每步使用的batch size設置為128,初始學習率為0.01000.當批處理次數達到40000次時,學習率調整為0.0001;當批處理次數達到60000次時,停止訓練得到模型。
而關于性能評價指標,采用的是平均準確率AP(avelage precision)。其優于accuracy的評價,常作為信息檢索評價標準,主要包括兩個值:precision和recall,其中precision即為精確率,表示不同類別中,真正屬于該類別的樣本在被預測為正的樣本中比例,公式為:
其中,以毛刺、刮痕、銹斑、白點4類瑕疵為檢測目標,根據不同種類瑕疵進行預測,TP(True Positive)表示正確識別出瑕疵目標的樣本數量;FN(False Negativa)表示未識別出瑕疵目標的樣本數量;FP(FalsePositive)表示錯誤識別瑕疵目標的樣本數量。而recall為召回率,代表正確檢測出的目標個數與測試集中所有個數的比值,如式(14)所示:
其中,recall的分母true positives+false negatives,即瑕疵樣本總數,而平均準確率的公式為:
由上可知,AP為一個關于precision和recall的積分;也就是對每一個閾值分別求precislon和recall變化情況的乘積,最后所有閾值下的乘積值進行累加。如果想評估一個模型的性能,可以通過precision-recall曲線(性能較好的體現就是在recall增長的同時保持precision在一個較高的水平)。綜合所有類別,可以通過平均精確率均值MAP對模型進行評價,它代表模型中所有類別平均準確率的均值,計算公式為:
該實驗中N代表所含類別的個數為4,最終檢測結果也通過相應曲線和表格來展示。
4.1模型識別結果
實驗在Fastei R-CNN網絡模型上,通過改進候選框和特征提取網絡,生成針對噴油器閥座瑕疵的高質量區域建議框,提取到更有效的特征,實驗結果說明了改進算法的效果。首先,對常見的4類瑕疵進行識別,如圖8(a)-圖8(d)所示,從圖中能觀察到毛刺跟白點都相對較小,人眼容易忽略,但所提出的算法得到比較好的識別效果。在實際生產中,一個噴油器閥座很多時候會存在多種瑕疵,用常規的Faster R-CNN檢測,會有漏檢的情況發生如圖8(e)、圖8(g),而使用改進的算法會得到如圖8(f)、圖8(h),檢測效果得到了提高,具體的測試結果如圖8所示。
4.2性能評估
一個良好的評價指標是模型公平比較的重要保證。為了更客觀地評價該改進算法的檢測性能,將特征網絡改進算法Our1,候選框改進算法Our2,綜合候選框改進和特征網絡改進的算法Our3與算法FasterR-CNN作對比。通常使用積分的方法,求取P-R曲線的面積,獲得平均準確率(AP)。針對噴油器閥座常見的瑕疵:毛刺、銹斑、刮痕、白點,測量的結果如圖9所示。
由圖9(a)可知:對于噴油器閥座毛刺的檢測,FasterR-CNN的平均準確率(AP)為0.7745,算法Our1平均準確率為0.7926,算法Our2的平均準確率為0.8038,算法Our3實驗平均準確率為0.8185.由此可知,所提小的算法Our1、算法Our2、算法Our3在Faster R-CNN基礎上分別提高了1.81%、2.93%、4.4%。
由圖9(b)可知:對于噴油器閥座銹斑的檢測,Fastei‘R-CNN的平均準確率(AP)為0.6989,算法Our1平均準確率為0.7104,算法Our2的平均準確率為0.7037,算法Our3實驗平均準確率為0.7197.由此可知,本文所提出的算法Our1、算法Our2、算法Our3在Faster R-CNN基礎上分別提高了1.15%、0.48%、2.08g/0.
由圖9(c)可知:對于噴油器閥座刮痕的檢測,FasterR -CNN的平均準確率(AP)為0.6242,算法Our1平均準確率為0.6430,算法Our2的平均準確率為0.6357,算法Our3平均準確率為0.6819,可得出,所提出的算法Our1、算法Our2、算法Our3在Faster R-CNN基礎上分別提高了1.88%、1.15%、5.77%。
由圖9(d)可知:對于噴油器閥座白點的檢測,Faster‘R-CNN的平均準確率(AP)為0.6177,算法Our1平均準確率為0.6268,算法Our2的平均準確率為0.6402,算法Our3平均準確率為0.6516.由此可知,本文所提出的算法Our1、算法Our2、算法Our3在FasterR—CNN基礎上分別提高了0.91%、2.25%、3.39%。
通過目標檢測算法中先進的FasterR—CNN算法進行對比,所提出的算法在檢測性能上有明顯提高,在噴油器閥座瑕疵中,通過比較不同瑕疵種類在不同算法下的準確率,最后得到均值平均檢測率(MAP),如表1所示。
根據上述噴油器閥座目標檢測準確率數據可看出,候選框改進算法、提取網絡算法在原有算法模型上有相應的提高,而綜合二者的算法在原模型上也得到了顯著提高,在原模型上大約提升了4個百分點的平均準確率,毛刺的檢測準確率相對其他瑕疵檢測準確率要高。這是由于在瑕疵樣本中,毛刺的數量相對較多,因此檢測準確率較高。通過改進算法與現有算法模型一一做對比,分別得出改進模型的有效性,在考慮時間跟準確率這兩個評判標準時,所提出的算法為了追求較高檢測精度,會造成時間成本的增加。這是由于在噴油器閥座生產場景下,檢測精確度較低會失去檢測意義。因此,為了實現高精確的檢測,以犧牲少量時間作為代價,這是在工業生產中可以接受的,所提出的算法已在生產線初步應用,檢測模型圖如圖10所示。通過與自動設備相結合,基本實現工業上的無接觸檢測,在節約大量人力成本的同時,有效提高了工業生產效率和經濟效益。
5結論
本文以噴油器閥座圖像數據為研究對象,將深度學習中的目標檢測方法應用到噴油器內部缺陷檢測領域中,并且在基于FasterR-CNN檢測模型上進行改進,分別對噴油器閥座中常見的毛刺、刮痕、白點、銹斑4類對象進行實驗測試。實驗結果表明,算法Our1 MAP為69.32%,算法Our2MAP為69.58%,算法Our3MAP為71.79%。總的均值平均準確率比現有的Faster R-CNN算法分別提升了大約1.4%、1.7%、3.9%。由于在噴油器閥座瑕疵中,其他樣本數量相對毛刺較少,在后期的工作中需要在樣本及算法模型上進行改進,使得模型準確率進一步得到提升。實驗中網絡的加深會造成時間的浪費,出現內存不足、響應慢等問題。為了更好的應用于工業場景,在以后的研究中,可以將網絡替換成輕量級網絡進行訓練,在降低模型大小的同時,也能保持模型性能,更好地滿足工業上閥座檢測要求。技術的投入能更好地保證檢測的可靠性和精準性,對提高自動化生產水平、噴油器生產具有很大的實際意義。