張子楊 魏海軍 劉 竑 賈風光
(1.上海海事大學商船學院 上海 201306;2.山東交通學院船舶與輪機工程學院 山東濟南 264209)
大量研究數據表明,機械設備的故障多數是由于磨損引起的。鐵譜診斷技術,通過提取機械系統(tǒng)中的潤滑油,分離出其中攜帶的磨損顆粒(磨粒),再對磨粒的尺寸、形態(tài)、顏色、粒度分布和磨粒濃度進行分析,即可以判斷出設備的磨損狀態(tài)、故障原因和位置[1-2]。但傳統(tǒng)的鐵譜磨粒圖像分析,嚴重依賴人工經驗,耗費大量時間,且分析結果主觀[3-4]。
一些學者在磨粒圖像的智能識別方面進行了研究。陳果和左洪福[5]運用C-均值有效實現了8種磨粒的聚類,但僅對少量磨粒圖像樣本進行了參數提取,且顏色、形狀因子、尺寸等參數仍是人工測量。WANG等[6]使用蟻群算法提取磨粒邊緣,對彩色圖像的適應性較高,但需要進行人工閾值的選取預處理,不能達到智能化分割。安超等人[7]利用Inception-v3神經網絡對嚴重滑動和疲勞剝塊進行了有效分類,但由于類別較少,且是單目標磨粒數據集,不具有代表性??梢?,以往的磨粒識別研究仍需要人工參數的測量與選取,且針對的多是背景簡單的單目標磨粒,沒有實現智能化。復雜背景下的多目標磨粒識別仍存在技術瓶頸。
近年來,卷積神經網絡(Convolution Neural Network,CNN)結合深度學習在世界計算機圖像識別挑戰(zhàn)賽中屢次奪冠,在目標檢測方面,表現日益良好[8]。深度學習的檢測方法主要分為兩大類,一類是兩階段檢測,以RCNN(Regions with CNN)系列為代表,主要包括RCNN[9]、Fast RCNN[10]、Faster RCNN[11]等;另一類是單階段檢測,以YOLO(You Only Look Once)家族為代表,主要包括SSD[12](Single Shot MultiBox Detector)、YOLO[13]、YOLOv2[14]、YOLOv3[15]等。前者雖然有較高的檢測精度,但網絡繁冗,耗費較長的檢測時間;后者計算參數少,檢測速度快,但在重疊目標和小目標的檢測上精度較差。目前,YOLOv3較好維持了檢測速度與準確率的平衡。基于此,本文作者引入YOLOv3框架完成了鐵譜磨粒的檢測,并針對磨粒檢測過程中特征尺度多變、過度下采樣、模型計算量的增加等具體問題提出改進方案。
YOLO將一幅圖像分成S×S個網格單元,如果某個目標的中心落在這個網格中,則這個網格就負責預測這個目標。每個網格要預測B個邊界框,每個邊界框要回歸其自身坐標及尺寸(x,y,w,h)和預測一個置信度值,置信度定義為式(1)。
(1)
這個置信度包含2個信息:一是邊界框中含有目標的置信度,二是邊界框的準確度。若網格中有目標則Pr(Object)=1,沒有目標則Pr(Object)=0。另外,每個網格還要預測一個類別信息,記為C,概率記為Pr(Classi)。每個邊界框的特定類別置信度采用條件概率計算,定義為式(2)。
(2)
最后得到S×S×(B×5+C)列的輸出張量,通過設置閾值過濾低分的邊界框,并對保留的邊界框進行非極大值抑制(Non-Maximum Suppression,NMS)[16]處理,去掉重疊的邊界框后得到最終的檢測結果,完成目標的檢測。
磨粒的采集環(huán)境處于微米級光學顯微鏡下,而且受到背景、曝光、焦距等一系列因素影響,同一類型、甚至同一個磨粒,在不同的磨粒圖片中會呈現出不同尺寸的形狀特征。CNN網絡提取到大量尺寸不一致的同一類別磨粒特征,必然會造成網絡的震蕩,難以收斂,影響模型訓練效果。
空間金字塔池化(Spatial Pyramid Pooling,SPP)本是SPPNet[17]提出用來解決全連接層固定輸出的問題。全連接層作為CNN網絡中的分類器,需要將卷積層學到的分布式特征映射到樣本標記空間,固定特征圖尺寸。SPPNet在全連接層之前加入空間金字塔池化層,對任意尺寸的輸入特征圖,通過不同的池化結構提取特征并連接,生成固定大小的特征圖送入全連接層。
文中借用其思想,引入空間金字塔池化模塊(SPP Module)。通過對不同尺度的磨粒特征使用多個卷積核進行最大池化(Max pool),再將池化后的特征圖維度擴充(concatenate),最終得到新的特征圖組合,以達到多尺度特征提取統(tǒng)一大小的特征向量,解決磨粒尺寸的特征不一致,并在之后增加三層卷積,豐富特征圖的語義信息,最后送入yolo檢測層。SPP Module結構示意圖如圖 1所示。
圖 1 Yolo SPP Module結構示意
隨著CNN網絡深度的加深,特征提取的能力也隨之得到增強,這對相似磨粒的識別大有裨益,但過多的下采樣層會導致密集磨粒和小顆粒磨粒特征消失,網絡學習不到正確的特征,降低檢測率,甚至導致錯檢、漏檢。為此,文中提出2種解決方案,并進行了實驗效果對比。
(1)大尺度yolo層檢測(yolov3_mod)。原始yolov3中通過下采樣送入yolo檢測層的尺寸分別為13×13、26×26、52×52,對此文中擬采取增大第三yolo層檢測的輸入尺寸,同時保留前兩層尺寸以確保網絡的深度,不降低網絡對相似磨粒的特征學習能力。具體做法是,增加97層網絡的上采樣(upsample)步伐(stride),提高特征圖尺寸,再與11層淺層網絡的特征圖張量連接(concat),最后得到一個較大尺寸(104×104)的yolo檢測層。
(2)全尺度yolo層檢測(yolov3_5l)??紤]到各磨粒尺寸的大量不一致性,3層yolo層檢測學習能力有限,對目標重疊、密集磨粒檢測能力不強,故擬在第3個yolo層后,追加2個大尺寸(104×104,208×208)檢測的yolo層,將原始的3個yolo層增加至5層,以達到全尺度特征圖的覆蓋。具體做法是,在102層卷積輸出后,通過route連接到上取樣層,再與11層網絡張量連接送入第4層yolo檢測,并將其后的121層網絡與第4層網絡張量連接送入第5層yolo檢測,完成全尺度yolo層檢測。改進的yolo模型結構如圖 2所示。
圖 2 改進的yolo模型結構
YOLOv3通過批量歸一化(Batch Normalization,BN)[18]將每層網絡的輸入歸一化,使其分布在一定的均值與方差范圍內,有效解決了CNN訓練過程中梯度消失和梯度爆炸的問題,提高了網絡模型穩(wěn)定性,但BN層同時也增加了CNN網絡中的層數,加大了網絡前向推斷的計算量,影響了網絡模型的綜合性能。
假設在一個Batch內的第i個樣本內,神經元的輸出為yi,則卷積層和BN層的輸出可表示為式(3)與式(4)。
(3)
(4)
式(3)中:w表示權重;x表示輸入神經元;b表示偏置。式(4)中:μ和σ2分別代表均值與方差;ζ代表一個很小的正數;γ和β為可學習的系數。
由于在推理過程中,BN層參數除卷積層的輸入外,其余固定不變,故可將式(4)變形為式(5)。
BNi=ayi+c
(5)
從式(3)和式(5)可以看出,卷積層和BN層的運算都是線性計算,將BN融入卷積層不會產生任何誤差和偏移,融合后的卷積層輸出如式(6)所示。
(6)
卷積層與BN層的融合過程如圖 3所示。
圖3 Conv層與BN層融合示意
利用Bruker的UMT摩擦磨損試驗機制作各種磨損顆粒。設備如圖 4所示。環(huán)境溫度為22 ℃,相對濕度為50%。盤銷實驗中,上銷為標準416不銹鋼圓柱,圓盤為合金鋼E52100,潤滑劑為Mobile Gard 412潤滑油,在294 N的載荷下以900 r/min的速度持續(xù)25 h。盤銷實驗主要用于生成嚴重滑動和切削磨粒。四球實驗中,球的材料是GCr15(硬度63HRC),最大負載和速度設置為900 N和300 r/min,實驗時間為50 h。四球實驗主要用于產生疲勞磨損顆粒,包括球形磨粒、疲勞剝塊和層狀磨粒。
圖4 實驗設備
將制得的磨粒通過鐵譜制譜儀制成譜片,再利用顯微鏡觀察儀拍攝得到原始磨粒圖片。由于實驗所用光學顯微鏡拍攝的圖片尺寸為2 568×1 912,分辨率太高,故對這些原始磨粒圖片進行旋轉、剪裁,并利用OpenCV進行數據增廣后,得到4 920張416×416的磨粒圖片,隨機選出3 936為訓練集,984為測試集。最后利用標注工具對這些磨粒圖片進行標注、分類,整理成VOC數據集格式。最終得到5類磨粒數據集,分別是球形磨粒(spherical),切削磨粒(cutting),疲勞剝塊(chunky),層狀磨粒(laminar),嚴重滑動磨粒(sliding),其中球形和切削磨粒多呈現小顆粒,疲勞、層狀和嚴重滑動磨粒為相似磨粒類型。各類別典型磨粒如圖 5所示。
圖5 磨粒數據集
YOLOv3采用K-means[19]算法對數據集進行先驗框維度聚類,以加速模型收斂。但由于原始yolov3模型使用的VOC和COCO數據集分類眾多,且實例尺寸較大,不適用自制的磨粒數據集。實驗前,將磨粒數據集重新聚類,得到符合磨粒數據集特點的先驗框數據,分別為(28,74)(31,41)(40,48)(50,86)(58,60)(70,152)(78,92)(127,164)(214,262)和(24,41)(26,81)(33,42)(39,30)(39,52)(40,76)(49,44)(53,88)(58,60)(68,152)(74,87)(94,110)(114,158)(152,170)(215,262)。
訓練環(huán)境:CPU為Intel(R) Xeon(R) CPU E5410@2.33 GHz,顯卡Tesla k80,內存16 G,Ubuntu18.04操作系統(tǒng),CUDA10.1,cudnn7.6.2。
在目標檢測中,總平均準確率(mAP)[20]是目標檢測模型最重要的評價指標。True positives(TP)表示正樣本被正確識別的數量,False positives(FP) 表示負樣本被識別為正樣本的數量,False negatives(FN)表示正樣本被識別為負樣本的數量。準確率(Precision)即為在測試集樣本中TP所占的比率,召回率(Recall)表示是在測試集樣本中,所有正樣本被正確識別為正樣本的比例。準確率與召回率如式(7)和式(8)所示。
(7)
(8)
平均精確率(Average Precision,AP),即各類樣本的準確率均值,可以由Precision-Recall (PR)曲線所圍成的面積表示,對各類的AP求平均值即為目標檢測模型的總平均準確率(mAP)。
在完成yolo模型訓練后,進行測試集上的精確度驗證,得到各類磨粒檢測的準確率和召回率,將結果繪制成PR曲線圖,如圖 6所示。
圖6 磨粒PR曲線
從圖 6可以看出,原始的yolov3模型對于形態(tài)和顏色特征明顯的球形磨粒和切削磨粒的識別率較高,但對嚴重滑動、層狀磨粒和疲勞剝塊等相似磨粒的識別率較低。改進后的yolov3_mod模型和yolov3_5l模型有效提高了相似磨粒的識別率。
各模型的準確率和檢測速度如表 1所示。表2展示了2種改進模型融合操作前后的平均推理時間。
表1顯示yolov3_mod和yolov3_5l兩模型對相似磨粒的識別率分別提高了8%和14%,mAP提高了5%和10%,充分證明了改進yolo模型的有效性。表2顯示改進后的兩模型較融合前,推理時間提升8%左右,表明模型融合操作,降低了網絡計算量,加速了模型檢測。
表 1 各模型檢測結果
表2 模型融合前后推理時間
圖7—9展示了各yolo模型在測試集中的部分可視化檢測結果。可以看出,原始yolov3模型對密集磨粒和小目標磨粒的漏檢較多,對相似磨粒的錯檢率也較高。如圖7(a)、(b)顯示,原始yolov3模型分別漏檢了一個切削磨粒(cutting)和層狀磨粒(laminar),而在圖7(c)中,至少漏檢了8個球形磨粒(spherical),且將2個球形磨粒錯檢為疲勞剝塊(chunky)。
圖7 Yolov3檢測結果
圖8 Yolov3_mod檢測結果
圖9 Yolov3_5l檢測結果
改進后的yolo模型有效地檢測出了密集磨粒和小顆粒磨粒。如在圖8(b)中,yolov3_mod模型正確識別出所有層狀磨粒(laminar),圖8(c)中僅漏檢了2個球形磨粒(spherical)。又如,在圖9(a)中,yolov3_5l模型識別出所有切削磨粒(cutting),圖9(c)則正確檢測出了所有球形磨粒(spherical)。
另外,對比同一被正確識別出的磨粒,不難發(fā)現,改進后的yolo模型所預測的邊界框,相比原始yolov3模型更貼近真實的磨粒邊界,說明改進后的yolo模型不僅提高了相似磨粒的檢測效果,而且定位更加精確。
(1)基于YOLO算法提出了yolov3_mod和yolov3_5l兩種改進模型,有效提高了相似磨粒的識別率,降低了小顆粒磨粒的漏檢率,且磨粒的定位更加精確,基本實現了復雜背景下多目標磨粒的識別。
(2) 改進的模型融合了卷積層和BN層,簡化了網絡結構,一定程度上緩解了添加模塊帶來的額外計算量,提高了模型的檢測速度。
(3) 由于引入了較多的添加層,yolov3_5l的檢測速度降低了較多,但擁有較高的精度;yolov3_mod雖然精度比yolov3_5l低,但擁有更快的檢測速度。根據實際工況需求可進行精度和速度的取舍。
(4) 模型對相似磨粒,特別是層狀磨粒的識別率還有待進一步提高。同時,量化模型,降低添加模塊的計算量也值得進一步深入研究。