楊苗苗,方 夏,王 杰,黃思思,王 楊
(四川大學機械工程學院,成都 610065)
手機等通訊設備以及智能手表等穿戴設備為了增強與人體之間的交互體驗會安裝振動電機來提供觸覺反饋。扁平振動電機體積較小,且生產成本更低,因此需求量大。目前生產廠家在產品的出廠檢測中仍舊通過人工觀察示波器上的電壓信號來判斷產品是否合格,人工成本高,并且準確率與檢測標準難以保證。因此,提出一種準確率高的智能缺陷檢測方法具有重要的意義。
電機的缺陷檢測可以通過采集振動、音頻、電信號等方法來進行判別。文獻[1]對異步電機的振動信號使用短時傅里葉變換轉化為時頻圖,將其輸入卷積神經網絡(CNN)實現電機的故障診斷;文獻[2]對電機的音頻信號使用經驗模態分解(EMD),將分解后的參數進行特征融合,使用支持向量機(SVM)對特征向量進行識別;文獻[3]利用小波包算法對電機電流信號進行特征提取,將特征輸入3層LSTM網絡來判斷電機缺陷。上述方法雖可以完成對電機缺陷的檢測,但應用于扁平振動電機的缺陷檢測仍有不足。①電機的生產環境嘈雜且不穩定,振動或音頻信號的信噪比較低。②深度神經網絡(DNNs)需要大量的數據用于訓練,某些缺陷的樣本數量卻很少。③SVM等簡單的機器學習模型在多分類任務中效果不好。④小波包算法的基函數種類多,需要大量實驗才能選取合適的基函數與分解的層數。因此電信號更適合扁平振動電機的缺陷檢測,并且需要提出一種準確率高,能勝任少樣本、不平衡數據的分類任務的算法。
gcForest(multi-Grained Cascade Forest,多粒度級聯森林)是文獻[4]提出的深度森林算法。文獻[5]將gcForest用于彩色眼底圖像的質量評估,實驗證明其可以在小樣本和數據不平衡的場景下完成任務。文獻[6]使用gcForest對滾動軸承進行缺陷診斷,實驗證明該算法具有良好的缺陷識別精度。文獻[7]將gcForest運用于電能質量干擾的分類,實驗表明,gcForest可以精確識別不同種類的電信號。然而gcForest也有不足,級聯森林只能在CPU中進行訓練,速度較慢。
為了提升gcForest的訓練效率與缺陷分類的準確率,使用級聯CatBoost處理特征向量。文獻[8]使用CatBoost識別醫療保險欺詐行為,實驗證明CatBoost在處理分類任務中有較好的表現。
綜上所述,針對扁平振動電機的少樣本、不平衡數據的分類任務和識別準確率不高的問題,本文提出一種基于gcForest與CatBoost(gcCatBoost)的缺陷檢測方法。先用gcForest中的多粒度掃描結構來獲取電機電壓信號的特征向量,然后使用級聯CatBoost對特征向量進行分類,實現對扁平振動電機的缺陷檢測。
本文研究的扁平振動電機如圖1所示。

圖1 電機實物與三維拆解結構圖
扁平振動電機直徑為8 mm,厚度為3 mm,輸入直流電,額定電壓為3 V,負載電流為90 mA,額定轉速為13000±3000 rpm,加速度為0.55 Gp(X-Y軸)。
扁平振動電機的生產裝配的過程中會產生波形落、波肩傾斜、波肩高低、無波峰、波肩長短等缺陷。
電機的良品電壓波形如圖2a所示。在裝配過程中,若偏振塊的晶面粘有異物,電機在轉動過程中出現接電不良,在波形上可以看到較大落點,此缺陷稱為波形落,如圖2b所示;若電機磁鐵在充磁的過程中磁極偏移,在波形上會出現波肩同向傾斜,此缺陷稱為波肩傾斜,如圖2c所示;若電機的線圈的匝數不相同,導致兩線圈阻值不一,在波形上會出現兩端的波肩不在同一高度,此缺陷稱為波肩高低,如圖2d所示;若電刷在換向過程中出現故障,在波形上會出現波峰消失,此缺陷稱為無波峰,如圖2e所示;若電刷的觸頭不在同一高度,在波形上會出現波肩一端的長度明顯大于另一端,此缺陷稱為波肩長短,如圖2f所示。

(a) 良品

(b) 波形落

(c) 波肩傾斜

(d) 波肩高低

(e) 無波峰

(f) 波肩長短圖2 電機電壓波形
(1)多粒度掃描
多粒度掃描結構首先采用滑動窗口對輸入的原始特征進行分割,其次將得到的特征向量輸入到隨機森林與完全隨機森林中,最后將兩個森林得到的類向量拼接作為多粒度掃描的輸出。如圖3所示,將一個J維的原始數據輸入多粒度掃描結構,使用K維的滑動窗口,滑動步長為λ,得到L個特征向量,其中L=(J-K)/λ+1,兩種森林分別輸出L個x維類向量,拼接后得到2·L·x維向量輸出。

圖3 多粒度掃描

(1)
其中,I為類別個數,pi為樣本屬于第i類的概率。

圖4 類向量生成
(2)級聯森林
級聯森林結構由多個隨機森林與完全森林分類器組成。級聯森林將多粒度掃描結構輸出的特征向量作為輸入,通過逐層處理,得到最終的類別輸出。如圖5所示,首先將特征向量輸入第一層級聯森林得到多個x維類向量,其次將所有類向量與輸入的特征向量拼接,作為下一層的輸入,以此類推,最后將第N層的類向量平均,取最大值作為最終結果輸出。級聯森林采用K折交叉驗證來減小過擬合[4]。級聯森林在一定的層數內沒有性能提升,則級聯停止擴展,訓練終止。因此,gcForest可用于不同規模的數據集。

圖5 級聯森林

(2)
CatBoost在此方法上做出改進,增加了先驗p[8],如式(3)所示:
(3)
其中,c>0。通過這種方式來減少數據中的噪聲對分類精度的影響。
文獻[13]將級聯CatBoost應用于滾動軸承剩余壽命的預測。實驗結果表明級聯CatBoost相比于單一CatBoost有更高的預測精度。本文將級聯CatBoost取代gcForest中的級聯森林結構,對電機的不同缺陷進行檢測。該方法的檢測流程如圖6所示。

圖6 總體流程圖
采集電機在額定電壓下的電壓信號,提取信號中相鄰的200個點作為樣本輸入多粒度掃描,其次將得到的特征向量輸入級聯CatBoost進行分類,最后輸出故障類別。如圖7所示,多粒度掃描結構中設有3個滑動窗口,其大小分別為1×13、1×25、1×50,滑動步長為1,分別對6類電機信號的200維特征進行提取,得到2256、2112、1812維特征向量,將3個滑動窗口得到的特征向量拼接得到6180維特征向量作為級聯Catboost的輸入,每層設置4個CatBoost分類器共產生4個6維類向量與輸入級聯層的向量拼接得到6204維向量輸入下一層。級聯CatBoost中采用5折交叉驗證,級聯CatBoost擴展3層內性能沒有顯著提升則停止訓練。

圖7 gcCatBoost
為驗證gcCatBoost應用于扁平振動電機缺陷檢測的可行性,采用以下平臺進行實驗。①軟件平臺:Win10系統,Python 3.7,LabVIEW2018。②硬件平臺:intel 9400F,GTX1080Ti顯卡,16GB RAM,NI-USB-6351采集卡、供電系統、電機治具。
使用圖8所示的數據采集裝置與LabVIEW2018軟件采集每個電機運行時的電壓信號。USB-6351采集卡采樣率為40 K,采樣點數為100 00,采集時間為0.25 s。電機的一個周期信號約占170個點,取200個點作為一個樣本輸入,每種缺陷的樣本數為:良品2100個,波形落1100個,波肩傾斜600個,波肩高低550個,無波峰1450個,波肩長短1800個。取總樣本個數的0.33作為測試集,如表1所示。

圖8 實驗平臺

表1 數據集的劃分
多粒度掃描結構中使用3個滑動窗口,大小按2.3節選取。多粒度掃描結構中完全隨機森林和隨機森林中的決策樹的個數為500。
設定每個CatBoost分類器中樹的個數為1000,通過增加CatBoost分類器的個數來觀察測試集準確率的變化。如圖9所示,實驗數據表明gcCatBoost的準確率會隨著CatBoost分類器數量的增加而增高,同時訓練時間會隨著CatBoost分類器數量的增加而延長,為平衡訓練時間與準確率,使用4個CatBoost分類器構成級聯CatBoost。

圖9 CatBoost數量
使用4個CatBoost分類器,在一定范圍內對每個分類器中樹的數量進行改變。如圖10所示,實驗數據表明gcCatBoost的準確率會隨著樹的數量增加而增高,在局部位置準確率會有波動。增加樹的數量會延長訓練時間,因此設定樹的數量為1000個。CatBoost中其他超參數設定如下:深度depth=6,學習率learning_rate=0.2。

圖10 樹的數量
使用3.2節中的參數訓練gcCatBoost模型。其中訓練集準確率為99.96%,測試集準確率為98.41%。模型的檢測結果如表2所示。其中缺陷1:波肩高低,缺陷2:波肩長短,缺陷3:波肩傾斜,缺陷4:波形落,缺陷5:無波峰。

表2 檢測結果
其他評價指標如表3所示,其中,Precision表示被預測為正的樣本中實際為正的比例,Recall表示正樣本被預測為正的比例,F1為綜合評價指標。

表3 其他評價指標 (%)
將gcForest與其他機器學習算法進行對比實驗,由表4中不同方法的準確率數據可以得知gcForest可以完成小樣本、不平衡數據的分類任務,并且在電壓信號的缺陷檢測中有很高的準確率。

表4 不同方法的準確率
采用不同的GBDT算法作為級聯層的分類器進行實驗對比,每個級聯層4個分類器,每個分類器中包含1000棵樹,實驗結果如表5所示,由此可得使用CatBoost作為級聯層分類器的gcCatBoost的準確率更高。

表5 不同級聯層的準確率
使用3.2節中的參數訓練gcCatBoost時,訓練時間為1501 s,訓練自動終止于第6層,平均每層訓練時間為250.2 s。訓練gcForest時使用隨機森林與完全隨機森林各兩個,每個森林包含1000棵樹,訓練時間為7887 s,訓練自動終止于第7層,平均每層訓練時間為1 126.7 s。由此可得gcCatBoost的訓練成本低于gcForest。
本文提出了一種基于gcCatBoost的扁平振動電機缺陷檢測方法。該方法首先使用數據采集卡采集電機的電壓信號,其次使用多粒度掃描結構處理電壓信號數據點之間的聯系得到特征向量,最后使用級聯CatBoost對特征向量進行分類,完成對電機的缺陷檢測。通過實驗可知,該方法適用于小樣本、不平衡數據的分類場景。與傳統的機器學習算法相比,該方法高達98.41%的準確率具有更大的優勢。與gcForest相比,該方法的準確率更高,且訓練時長更短。該方法的提出為扁平振動電機的缺陷檢測提供了新的選擇,可以滿足市場對扁平振動電機高效率、高品質檢測的需求。