劉 桂 戚瑋瑋 柴曉冬 鄭樹彬 張喬木
(上海工程技術大學城市軌道交通學院 上海 201620)
地鐵車輛的螺栓故障檢測對地鐵的安全運行具有重要意義,為了保障車輛高效安全的行駛,檢修人員會在每日車輛回庫后,通過用眼看的方式對車輛進行檢查,但是因為螺栓體積小、數量多、位置隱秘、特征不明顯,檢查時耗時耗力,且檢修標準無法統一質量無法確保。
隨著圖像識別算法的不斷更新與優化,目前行業內已經出現了利用圖像分類識別技術來檢測螺栓的狀態。圖像分類的第一步是提取目標的特征并描述圖像,第二步利用分類器判別目標類別,李靜[1]等提出了一種基于方向梯度直方圖特征和支持向量機(Support Vector Machine,SVM)結合的檢測螺栓的方法,可以很好地將螺栓識別出來;胡紹海等[2]通過螺栓丟失的區域會產生暗邊緣丟失,形成一個半徑更小的亮邊緣效應,然后結合FAST 角點特征檢測對動車底板螺栓進行故障檢測;吳應永[3]等首先通過提取螺栓圖像的尺度不變特征(Scale-Invariant Feature Transform,SIFT),然后通過SVM 分類器完成對螺栓故障的分類,類似的方法還被廣泛應用于車牌檢測[4]、發動機軸承蓋分類[5]、戶外天氣狀況識別與分類[6]、滾動軸承故障診斷[7]等領域。
本文基于此背景,提出了基于詞袋模型的螺栓丟失故障檢測方法,首先通過滑動窗口產生丟失螺栓的候選區域,然后利用Harris-SIFT 提取特征,特征聚類構建詞袋獲得詞袋描述向量,SVM分類器對候選區域進行檢測,獲得了較高的準確率,具有一定的實用性。
詞袋模型[8]最初用于解決文本分類問題,它不考慮文本中每個單詞的含義和語法,通過將文本視為單詞的組合,構建詞匯表,并對每個文本中的單詞信息進行統計,因其計算量小,運行效率較高,深受研究學者的喜愛。2003 年,Sivic[9]等成功將詞袋模型引入到目標檢測領域。基于詞袋模型的目標檢測由四個部分組成:提取圖像的底層特征、創建詞袋、構建圖像的詞袋描述和分類器檢測。因此本文方法的整體流程如圖1 所示,整個流程分為兩個階段:第一階段為訓練階段,首先人工截取地鐵車輛軸箱圖片的螺栓圖片,獲得丟失螺栓和正常狀態螺栓的的樣本集,然后使用Harris-SIFT 結合算法對提取特征和描述,構建詞袋,利用詞袋統計每幅圖像中每個單詞出現的次數,從而獲得每幅圖像的詞袋描述向量,最后將每張圖像的詞袋描述向量送入SVM 分類器進行訓練,獲得檢測模型。第二階段為檢測階段,本文檢測時以整個軸箱圖片作為輸入,使用滑動窗口在輸入圖像上多尺度掃描,每掃描一次獲得一個圖像塊,對圖像塊提取Harris-SIFT 特征,并通過詞袋得到圖像塊的詞袋描述向量,使用訓練好的分類器對其進行分類預測,判斷螺栓是否丟失,對重疊框使用非極大抑制,最后輸出最終檢測結果。

圖1 基于詞袋模型的螺栓丟失故障檢測流程
候選區域提取是傳統目標檢測的第一步,滑動窗口法是選擇候選區域的經典算法。滑動窗口,顧名思義就是使用一個比圖像小的窗口以一定的步長在整個圖像上滑動,得到候選區域,如圖2所示。

圖2 滑動窗口示意圖
Harris[10]算子是一種角點檢測算法,它基于圖像的灰度特征,運用圖像中灰度值的變化完成特征檢測。SIFT[11]是由加拿大教授David G.Lowe 在1999 年提出,2004 年完善總結的一種特征描述子,對旋轉、尺度變化、亮度變化具有很好的不變性和穩定性,也是一種常用的圖像底層局部特征提取算法。但是因為其算法的第一步中通過構建高斯差分尺度空間,并將空間內所有極值點去除邊緣效應后作為特征點,計算量大且會生成許多無用的特征點影響計算時間,且Harris 算法已經可以清晰地標記出丟失螺栓的框架,因此本文考慮將Harris 算法與SIFT 算法結合,先對圖像進行Harris 特征點檢測,然后再用SIFT 算法對特征點確定方向和描述,使得特征提取算法更加簡單,效率更高。
Harris-SIFT算法的主要步驟如下:
1)計算圖像I中像素點(x,y)在水平和豎直方向上的梯度Ix和Iy和兩個方向梯度的乘積Ixy;
2)將圖像I與高斯函數卷積,分別計算G*Ix,G*Iy,G*Ixy,生成像素點(x,y)處的自相關矩陣M:
3)計算該像素點處的Harris響應值CRF:
其中,det(M)和trace(M)分別是矩陣M的行列式和直跡,k是一個常數,一般為0.04~0.06,本文取0.04;
4)在以像素點(x,y)為中心的鄰域內,判斷點(x,y)的CRF值是否是該鄰域內的最大值,若是,則將其標記為特征點;若不是,則跳過;
5)為特征點指定方向:按照圖像梯度的方式給每個特征點分配穩定方向;對于已經檢測到的特征點,先求最接近當前尺度值的高斯圖像:
使用有限差分,計算以特征點為中心,3×1.5σ為半徑的區域內圖像梯度的幅角和模值,幅角和模值的計算公式如下:
通過直方圖統計像素點鄰域內的梯度方向和模值。梯度方向直方圖將0°~360°的范圍分為36個柱,每10°為一個柱。直方圖的峰值代表特征點的主方向;
6)生成特征描述子:對特征點當前的尺度周圍像素區域進行分塊,計算每個分塊內的梯度直方圖,生成特征描述子。取特征點周圍一個16×16 的窗口作為鄰域,再計算該窗口內每個像素點的梯度方向和大小。然后,將該窗口劃分為16 個4×4 的子區域,統計每個子區域中不同方向梯度的大小。在統計過程中,將原先36°的10 個方向縮減為45°的8 個方向。最后,每個子區域內都可以獲得一個由8 個方向上梯度大小組成的8 維特征矢量,而整個窗口則可以獲得一個16×8=128 維特征矢量,該矢量就是特征點最終的描述向量。
對所有圖像按照Harris-SIFT 算法進行特征提取,每張圖的特征點數量不一樣,無法直接應用分類器進行分類,因此在使用分類器訓練前,需要將整個圖像表示為一個多維向量。而且通過Harris-SIFT 提取的特征為128 維向量,在存儲和后續計算具有一定的困難,因此有必要采用K-Means聚類算法對該特征向量進行聚類操作,此步驟不僅解決了特征點數目不一無法分類的問題,同時解決了上一步提取的特征向量無法高維不便計算的問題。
K-Means[12]算法作為一種最常用的聚類方法,因計算流程簡便,被廣泛用于詞袋模型中。它的主要實現步驟是[13]:1)首先隨機選取k個特征點作為初始聚類中心;2)計算每個特征點與聚類中心的相似度即歐式距離,并將特征點劃分到距離最近的類中;3)根據上一步的結果,通過取類中特征各自維度的算數平均數,重新計算得出新的聚類中心;4)重復2)、3)操作直到新舊聚類中心的距離為0或者達到設置的迭代次數為止,此時的k個聚類中心就是k個基礎單詞,詞袋構建完成。
獲得詞袋后,圖像的高維Harris-SIFT 特征便可以通過矢量量化轉換為詞袋描述向量。矢量量化的具體過程為對于提取的Harris-SIFT 特征,分別計算它與詞袋中k個單詞間的歐式距離,使用與其距離最近的單詞代替這個特征,再統計圖像中每個單詞出現的次數,就可以得到圖像的k維的詞袋描述向量,每張圖片均可表示為一個詞袋描述向量。
得到圖像的詞袋向量后,為了進一步完成圖像分類,需要建立分類器。SVM[14]是詞袋模型中最常用的分類器,核心思想是尋找一個使得分類間隔最大化的分類超平面,在解決小樣本、線性或非線性問題上具有較好的優勢。在實際場景中,非線性可分的特征樣本空間更為常見,此時SVM 需要運用核函數將低維樣本空間映射到一個更高維的特征空間,并在高維空間中構建最優分類超平面來完成分類。因螺栓圖片兩兩之間較為相似,特征點分布趨近,因此難以通過簡單的線性分割平面進行分類,又因徑向基核函數非線性能力強,也是目前應用最廣泛的核函數,所以本文選徑向基核函數作為分類器核函數。
本文選用上海地鐵9 號線地鐵車輛圖片作為數據集來源,共有400 張軸箱端蓋圖片,如圖3 所示,圖片的大小為2000×4096px,其中螺栓均為正常狀態。因在實際場景中,螺栓丟失的情況極少出現,需要通過PS 來模擬螺栓脫落丟失的情景,如圖4 所示,最終本文數據集共400 張,其中200 張螺栓正常軸箱圖片,200張存在螺栓丟失軸箱圖片。

圖3 地鐵車輛軸箱正常圖

圖4 地鐵車輛軸箱丟失螺栓圖
本節實驗分為兩部分,第一部分是基于詞袋模型對螺栓緊固狀態檢測,因螺栓僅是整個軸箱的一小部分,本文通過人工截取的方式,采集了400 個丟失螺栓,400 個正常螺栓,圖片大小均為150×150,部分數據集如圖5所示,上面5個是正樣本,下面5 個是負樣本;第二部分測試詞袋模型對軸箱圖像中螺栓丟失的檢測效果。

圖5 部分樣本示意圖
首先構造了標準的訓練集和測試集圖庫,正樣本圖像為丟失螺栓圖,總共400 張;負樣本圖像為正常狀態螺栓圖共400 張,然后選取其中300 張正樣本和300 張負樣本當作訓練集,并對這600 張圖像在經過Harris-SIFT 特征提取后構建詞袋模型并進行描述,得到相應的K 維向量,將得到的向量進行標記后送入SVM 分類器,完成訓練;最后將剩下的100張正樣本圖像與100張負樣本圖像作為測試集,用于測試詞袋模型的效果。
表1 是基于詞袋模型的丟失螺栓目標檢測算法的混淆矩陣,其中TP表示丟失螺栓檢測為丟失的個數,FP丟失螺栓檢測為正常螺栓的個數,FN表示正常螺栓被檢測為丟失的個數,TN表示正常螺栓檢測為正常的個數。本次實驗以識別準確率ACC作為評價指標,公式如式(6)所示。

表1 基于詞袋模型的丟失螺栓目標檢測算法的混淆矩陣
表2 反映了視覺單詞個數K的取值大小與檢測準確率ACC 變化關系。由表可知,單詞數為70時,準確率最高達到了95.5%,當K值低于70 時,K越大,準確率越高;當K值大于70時,準確率隨著K的增大而下降。理想狀態下,聚類的類別數越多,則詞袋模型中用于描述圖像的單詞越多,描述就會越詳細,檢測的準確率越好。但是當K值增大到一定程度時,很多相似或相同的特征可能就被劃到不同的視覺單詞類中去,使得到詞袋變得龐大復雜,大大增加了模型的復雜度,檢測的準確率也隨之下降。

表2 不同單詞數的準確率
在軸箱圖片中,螺栓占整幅圖的大小不足百分之一,所以在使用詞袋模型對其中的螺栓狀態檢測前,本文需先使用滑動窗口選擇候選區域,再使用表2 中分類準確率最高的K值進行實驗。在滑動窗口中,一般需要建立圖像金字塔,在每一層圖像上使用150×150的滑動窗口以步長20進行掃描,每掃描得到一個圖像塊,使用詞袋模型訓練好的的SVM分類器對圖像塊判斷是否是脫落螺栓,若有則保存,沒有則繼續滑動。在判斷檢測的過程中由于是多尺度逐行逐列掃描,所以在螺栓丟失的位置可能會做多次標記。本文采用目標檢測中一種標準的方法:非極大值抑制[15]的方法,根據在一定區域內的檢測響應值,比較其大小,取最大的保留,這樣在圖像中的螺栓脫落位置就不會重復的標記保存,檢測結果如圖6所示。

圖6 丟失螺栓軸箱檢測結果圖
本次實驗檢測100 幅螺栓丟失軸箱圖中實際含有丟失螺栓106 個,依次對100 幅圖片進行目標檢測,共耗時8min,平均1 張圖片耗時4.8s,最終檢出丟失螺栓97 個,因此檢測丟失螺栓準確率為91.5%。
以地鐵車輛軸箱端蓋的丟失螺栓為檢測目標,本文提出了一種基于詞袋模型的螺栓丟失狀態檢測方法。首先特征提取時將Harris-SIFT 算法結合,減少計算量,然后對其構建詞袋模型,獲得圖像的詞袋描述后送入SVM 分類器中進行訓練,并不斷調整參數獲得具有最高準確率的模型。實驗結果表明,本文方法是一種有效、可靠的螺栓丟失故障檢測方法。本文僅研究了螺栓的丟失一種異常狀態,在此基礎上可以進一步對螺栓松動等其他故障檢測進行研究。