杜曉輝,潘科欣,劉 博
(1.電子科技大學 光電科學與工程學院, 成都 610054;2.電子科技大學 智能顯微技術聯合研究中心, 成都 610054)
在可再生能源領域內,風能的儲量豐富、經濟效益高,具有廣闊的商業化發展前景[1]。由于風力發電機組空氣動力學的強非線性,結構復雜,運行工況的頻繁隨機切換以及有效風速的不可測性導致風力發電機組系統故障率極高[2]。齒輪箱螺栓是風力發電機重要的組成部分,由于風電機在高轉速工作時產生的載荷與振動幅度會導致齒輪箱的螺栓松動,而螺栓松動會導致其作用在接頭上的夾緊力降低,從而進一步導致結構剛度下降[3]。
傳統螺栓松動檢測是采用基于傳感器的方法,主要分為基于聲學和基于壓電傳感2種?;诼晫W的方法利用了超聲波飛行時間[4],而壓電有源傳感的方法利用了介質材料的壓電效應[5]。Yang等[6]提出了一種基于超聲波衰減的診斷方法檢測太空作業車輛的螺栓松動。Okugawa通過智能墊圈實現了基于壓電的螺栓松動檢測[7]。Zhao等[8]提出了一種基于壓電傳感器來識別飛機機翼中鉚接面板的損壞。然而,上述方法依賴于人工操作,同時需要部署傳感器,花費的成本較高,并且可移植性較低。
隨著計算機視覺技術的不斷發展,近年來基于計算機視覺的螺栓松動檢測引起了廣泛重視。Cha等[9-11]將機器學習與基于機器視覺的螺栓尺寸提取相結合,提出了一種螺栓松動檢測方法。然而,這種方法在需要識別具有不同尺寸或形狀的新型螺栓時,必須重復訓練過程。Li等[12]提出了一種基于圖像配準的螺栓松動檢測方法,但是這種方法需要人工將圖像中包含螺栓的區域框選出來。Yang等[13]提出了一種基于Faster-RCNN卷積神經網絡的螺栓松動檢測方法,不過這種方法依賴于相機拍攝的角度。
本文中提出了一種基于深度學習與圖像配準的螺栓松動檢測方法。與之前基于視覺的螺栓松動檢測方法相比,本文中方法不需要人工將圖像中包含螺栓的區域框選出來,也不需要有關螺栓類型或螺栓損壞狀態的相關專業知識,因此該方法對于工程應用將更加靈活并且具有更低的成本。本文中通過風力發電機的齒輪箱螺栓做實驗測試,測試結果證實,經改進后的YOLOv5目標檢測網絡檢測速度FPS為131.6,檢測指標AP@0.5為0.981。
首先收集一個包含349張螺栓圖像的數據集,并將數據集分離,其中297張圖像用于訓練,52張圖片用于測試。然后對YOLOv5s進行改進,并使用上述圖像數據集對該模型進行訓練和評估,實現了對圖像中螺栓位置的定位。其次使用圖像配準和透視變換技術,將不同檢查周期的圖像映射到同一坐標系中,將灰度對比圖中的螺栓松動部分進行特征增強,定位出因螺栓松動引起的差異特征,從而檢測出松動的螺栓。
假設目前有兩排風力發電機齒輪箱螺栓需要被檢測,本文中在兩個檢查周期間進行評估,并且在檢查間隔期間松開螺栓5。兩張輸入圖像中模板圖像和待檢測圖像如圖1所示。

圖1 擰緊和松動的螺栓圖Fig.1 Images of tightened and loosened bolts
首先,需要識別出圖像1中螺栓的位置。本文中使用的目標檢測網絡為YOLOv5[14]。在進行目標檢測時,YOLO算法會首先將輸入圖片分成多個小網格,目標中心所在的網格用于檢測該目標類別。YOLO算法只需將圖片輸入到網絡中即可得到最終的檢測結果,因此該網絡將檢測問題轉換成回歸問題。并且,YOLO算法直接使用整幅圖像來進行檢測,因此可以獲取全局信息,減少了將背景檢測為目標的錯誤。YOLO系列算法在經歷了5個版本的發展后形成了如今完整的端到端目標檢測網絡。YOLOv5的整體框架如圖2所示。

圖2 YOLOv5網絡模型
YOLOv5是單階段物體檢測網絡,它與其他單級物體檢測網絡一樣具有3個重要部分。模型的Backbone部分主要用于從給定的輸入圖像中提取重要特征。在YOLOv5中,CSP(跨階段部分網絡)從輸入圖像中提取豐富信息特征。Neck部分主要用于生成特征金字塔。特征金字塔有助于模型在對象縮放上很好地泛化,識別具有不同大小和比例的同一對象。其他目標檢測模型采用的特征金字塔技術有FPN、BiFPN、PANet等,YOLOv5的Neck部分和YOLOv4中一樣,都采用FPN+PAN的結構。但是YOLOv4的Neck結構中采用的是普通的卷積操作,而YOLOv5的Neck結構中使用的是PANet來獲取特征金字塔。模型Output部分主要用于執行最后的檢測部分。它在特征上應用錨框,并且能生成具有類別概率、對象性分數和邊界框的最終輸出向量。
雖然YOLOv5的檢測效果已經達到了很高的標準,但是其主要是針對Microsoft COCO數據集,并非在任何數據集上都能擁有優秀的表現。目標檢測模型的Backbone是用于獲取輸入圖像并從中提取特征映射的元素,這是任何目標檢測網絡的關鍵部分,因為它是負責從輸入圖像提取上下文信息以及將該信息提取為模式的主要結構。因此,本文主要是在Backbone上對YOLOv5進行修改。Zhang等在2018年推出了ShuffleNet[15],這是一種計算效率極高的輕量化CNN架構。ShuffleNet利用逐點群卷積來降低計算成本,同時保持準確性,并且其采用了通道混洗操作,用于幫助信息在功能通道之間流動。與另一種輕型目標檢測網絡MobileNet相比,ShuffleNet在ImageNet分類中的錯誤率更低,并在保持精度的同時,憑借其輕量化的設計,其推理速度大概為AlexNet的13倍。ShuffleNetV2在ShuffuleNetV1的基礎上引入了通道分離操作,將輸入的特征圖分為兩支,之后采用拼接合并分支,讓前后的通道數一樣,然后再進行通道混洗。ShuffleNetV2高效的架構設計,使每個構建塊的效率被提高,從而能利用更多的特征圖和更大的網絡容量。因此,憑借ShuffleNetV2的優異表現,本文中選擇使用ShuffleNetV2來替換掉YOLOv5s原有的Backbone。ShuffleNetV2主要由1個3×3的卷積層、1個池化層和16個ShuffleNetV2 block組成,其網絡結構如圖3所示。

圖3 ShuffleNetV2-YOLOv5網絡模型
基于Pytorch框架的目標檢測網絡ShuffleNetV2-YOLOv5來定位螺栓的位置,實驗在Windows 10(64bit)下進行,該系統的硬件環境為Intel(R)Core(TM)i5-8400 CPU@2.80GHz,NVIDIA GeForce RTX2060 GPU和16GRAM。
在訓練過程中,訓練和測試集比例為6∶1。使用學習率為0.001、動量為0.98、權重衰減為0.001、優化方法為Adam的訓練過程進行了100次迭代,訓練過程如圖4所示。當迭代次數達到100次時,訓練精度提升趨于平緩,其中AP@0.5值為0.981,在工程應用領域可以被接受。基于以上結果,決定使用100次迭代之后生成的模型作為最終檢測模型。測試集中部分圖片的檢測結果如圖5所示。

圖4 訓練過程

圖5 測試集中部分圖像檢測結果
圖像配準算法可分為基于特征和基于強度2種算法。基于特征的方法是找到圖像特征(如點、線和輪廓)之間的對應關系,根據圖像中多個點之間的對應關系,再通過幾何變換將目標圖像映射到參考圖像,從而在參考圖像和目標圖像之間建立逐點對應關系?;趶姸鹊膱D像配準則不是通過基于特征的圖像配準應用幾何變換,而是根據相關性指標比較圖像中的像素值,從待檢測圖中截取出和模板圖最相似的部分與模板圖做配準。該方法已廣泛應用于醫學成像[16]和遙感[17]。
從圖1中識別出各螺栓位置以后,本文中截取出包含螺栓的區域作為模板圖(ROI區域),如圖6(a)所示。在基于特征點和基于強度的2種配準方法中,本文中經過測試,選擇了效果更好的基于強度的配準方法。圖1(a)中經過圖6(a)圖配準后截取出的圖像為圖6(b)圖。模板圖與待檢測圖之間的灰度圖強度比較如圖7所示,圖像整體存在少量噪聲。接下來,需要通過特征增強的方式,過濾掉圖像的噪聲,在原圖中標記出松動的螺栓。

圖6 模板圖和待檢測圖中包含螺栓的區域Fig.6 Areas containing bolts in the template image and the image to be inspected

圖7 灰度圖比對結果
一旦完成2個圖像的配準過程,即可通過識別配準錯誤識別松動的螺栓。然而,直接識別松動的螺栓仍然需要借助人工干預,如:松動的螺栓周圍存在噪聲等現象。因此,需要對灰度圖進行特征增強,消除噪聲,以避免螺栓松動檢測出現錯誤。
通過對圖7執行SLIC(簡單線性迭代聚類)[18]超像素分割方法,圖像被分割為一系列局部區域,稱為超像素,如圖8(a)所示。超像素可以定義為一組具有共同特征(如像素強度)的像素。超像素攜帶的信息比像素多,并且具有感知意義,相比幾乎沒有感知意義的像素網格中的單個像素,屬于同一個超像素組的像素具有某種共性,例如相似的顏色或紋理分布。同時,超像素能夠將圖像本身的復雜性從數十萬個像素減少到僅數百個超像素,對于計算要求高的問題非常有用。

圖8 超像素分割結果Fig.8 Superpixel segmentation results
SLIC算法通過基于像素在圖像平面中的顏色相似性和接近度對像素進行聚類,從而生成超像素。對于每個超像素區域,本文中計算該超像素區域內所有像素的方差,計為強度變化系數并表示為variance。然后,通過設置截止閾值T,可以從配準誤差中消除噪聲內容,從而可以保留螺栓松動特征,每個超像素區域的直方圖如圖8(b)所示。其中Superpixel1來自松開的螺栓區域,Superpixel2代表噪聲內容。如圖8所示,松動螺栓周圍的強度大小發生了顯著變化,而在其他區域平穩過渡。在這方面,提取超像素的variance值可以有效地將松動螺栓與它的背景噪聲分離。因此,本文中對variance值小于預定義閾值T的超像素區域不作處理,而對variance值大于預定義閾值T的超像素區域對應的原圖像區域處理為紅色,表示螺栓松動部分。最終檢測結果如圖9所示。

圖9 最終檢測結果
對于平面區域,有2種方式的幾何轉換:一種是基于2×3矩陣進行的變換,稱為仿射變換;另一種是基于3×3矩陣進行的變換,稱為透視變換。一個平面內的任意平行四邊形可以被仿射變換映射為另一個平行四邊形??梢詫⒎律渥儞Q想象成一幅圖像畫到一個膠版上,在膠版的角上推或拉,使其變形而得到不同類型的平行四邊形。相比較仿射變換,透視變換更具有靈活性,一個透射變換可以將矩形轉變成梯形,如圖10所示。

圖10 仿射變換與透視變換
如圖11所示,當輸入的兩張圖片拍攝角度相差較大時,如果不對圖像做任何處理而直接使用基于強度的圖像配準,匹配效果較差、噪聲難以去除。因此,做配準前需要對待檢測圖片做空間變換。本文中采用的方法是基于FAST特征點匹配的透視變換。

圖11 模板圖與待檢測圖Fig.10 The template image and the image to be detected
提取圖11的FAST特征點,對FAST特征點進行匹配,找到最匹配的特征點對,提取最優配對點的坐標,生成透視變換矩陣。作透視變換,生成待檢測圖像,如圖12所示。將待檢測圖像與模板圖像做配準后使用SLIC算法進行圖像分割,如圖13(a)所示。最后通過設置合適的閾值,得到最終檢測結果如圖13(b)所示。

圖12 經FAST特征點匹配后生成待檢測圖像

圖13 經圖像分割后得到最終檢測結果Fig.13 The final detection result is obtained after image segmentation
由于基于機器視覺的螺栓松動研究目前還處于起步階段,因此還沒有官方的基準數據集發布,為了確保神經網絡能夠處理不同種類的螺栓,本文中數據集部分由DS-2DC2D40IW-DE3(2.8~12 mm)智能相機采集,部分從網絡上公開數據集中得到,總共收集了349張照片,并將數據集分成297張訓練圖像和52張測試圖像。圖像數據集中部分圖片如圖14所示。為了提高深度學習算法的訓練速度,所有圖片均統一轉換為640×640像素,此外,每一張圖像都使用LabelBox標記工具所標注,如圖15所示。

圖14 螺栓數據集

圖15 LabelBox標注數據集
在目標檢測領域,P(Precision)、R(Recall)和AP(Average Precision)是常見的3種衡量網絡性能的參數。Precision是檢測到的物體中目標物體的比例,而Recall是實際檢測到的目標物體總數的比例。精確召回(PR)曲線中y軸表示精確值,x軸表示召回值。AP是PR曲線與x軸和y軸所圍成的面積,是目標檢測中廣泛使用的評價指標。精確率、召回率以及AP計算如式(1)—式(3)所示,其中TP表示真陽性,FP表示假陽性,FN表示假陰性。
本文中主要選用推理時間和AP@0.5兩個參數對模型性能進行評測。目標檢測模型的推理時間含義為運行檢測模型識別每張圖像中所有特定目標所花費的時間,本文中使用FPS來表示,單位為(幀/s)。AP@0.5是目標檢測任務中廣泛使用的Microsoft COCO標準中的一個參數,表示為當IoU設為0.5時,P-R曲線所圍成的面積。
表1列出了ShuffleNetV2-YOLOv5訓練結果的細節。在本文中計算環境中,ShuffleNetV2-YOLOv5的檢測平均FPS為131.6,AP@0.5為0.981。

表1 ShuffleNetV2-YOLOv5訓練結果
本文中將ShuffleNetV2-YOLOv5與其他常見的目標檢測算法進行了比較,如表2所示。本文中在mmdetection框架中搭建了Faster-RCNN[19]和RetinaNet[20],在Tensorflow框架中搭建了YOLOv3[21],發現它們的檢測速度和AP@0.5值都低于YOLOv5s,這證明了YOLOv5s相比上述3種目標檢測網絡更適合作為基準網絡進行研究。相比YOLOv5自帶的骨干網絡DarkNet,ShuffleNetV2憑借其更為輕量化的設計,在本文中數據集上表現優異。盡管其AP@0.5值相比YOLOv5s并未得到明顯地改善,但是由于ShuffleNetV2-YOLOv5模型的參數量(8.4M)相比YOLOv5s(14.1M)減少了40.8%,因此其檢測速度上相比YOLOv5s得到了69.8%的提升。因此,可以認為ShuffleNetV2-YOLOv5在本文中數據集上的綜合表現優于YOLOv5s。

表2 不同模型對比
在本文中提出的方法中,最耗時的過程是SLIC超像素分割。這個過程的計算成本與輸入圖像的分辨率、超像素分割的區域個數有關。如表3所示,在本文中計算環境下,如果輸入圖像分辨率為2 560×1 440,超像素分割的區域個數為240個,圖像分割計算時間為7.2 s,圖像配準耗時為378 ms。隨著圖像分辨率的降低,超像素分割的計算時間和圖像配準耗時逐漸降低。在輸入圖像分辨率為640×360,超像素分割的區域個數為60個的情況下,圖像分割計算時間可顯著縮短至1.9 s,圖像配準耗時縮短為28 ms。因此建議應用較低分辨率的輸入圖像來降低計算成本。

表3 不同分辨率圖像耗時
圖像分辨率并不會對本文方法造成不良影響。本實驗采用圖1作為輸入圖像,通過縮小原始輸入圖像的大小并重復螺栓松動檢測程序來進行研究。本文中選擇了1 280×720和640×360兩種圖像分辨率,圖16顯示了不同輸入分辨率圖像的螺栓松動檢測結果。

圖16 不同分辨率的檢測結果
由于本文之前的測試是假設只有單個螺栓松動的情況下,因此,本實驗對采集圖像中松動螺栓的個數是否對本文方法產生不良影響進行研究。本實驗采用圖1作為模板圖像,并且在檢查間隔期間松開螺栓4、5,如圖17所示。實驗結果表明松動的螺栓個數并不會成為影響該方法的因素。

圖17 不同松動螺栓個數的檢測結果
由于螺栓自身的松動是一個漫長的過程,因此需要在螺栓松動角度較小時及時發現并處理。本實驗將測試當螺栓旋轉角度較小時,本文方法是否能正確定位出松動螺栓。本次測試兼顧檢測的準確性和實時性,采用圖11作為模板圖像并且設置圖像分辨率為1 280×720,其中5號螺栓分別進行了從5°、10°和15°的一系列逆時針旋轉。圖18顯示了本文中方法在螺栓旋轉角度較小的情況下依然能準確定位松動的螺栓。

圖18 不同旋轉角度的檢測結果
兩次拍攝周期光照強度的變化是影響本文中方法檢測效果的重要因素。本實驗采用圖1作為模板圖像,通過添加額外的光源來改變照明條件,導致第二個輸入圖像中的亮度發生了輕微變化。盡管如此,本文中方法仍然在這種情況下檢測到螺栓松動,如圖19所示。

圖19 光照條件改變后的檢測結果
如第2.4節所述,通過引入截止閾值T對灰度圖中螺栓松動區域進行特征增強并消除配準誤差中噪聲內容。本小節將證明截止閾值T在特征增強過程中的重要性。本次測試采用圖19作為輸入圖像,不同截止閾值的檢測結果顯示在圖20。若閾值T設置得過高,松動螺栓所在的超像素區域則可能被會當作噪聲區域而被抑制;若閾值T設置得過低,部分噪聲區域則可能會被當作是松動螺栓所在的超像素區域而得不到準確地抑制,這會直接導致檢測算法的準確率受到很大的影響。本文中建議初始截止閾值T=100,并可根據測試結果進一步調整。

圖20 不同截止閾值的檢測結果
2次拍攝周期相機拍攝角度的變化是另一個影響本文中方法檢測效果的重要因素。之前測試中采用的2個輸入圖像都是相機在相同角度條件下拍攝獲取到的。當2張輸入圖像相機拍攝角度發生較小的變化時,也能通過透視變換的方法對輸入圖像進行處理,從而定位到松動的螺栓。本測試采用了圖11作為輸入圖像,檢測結果如圖21所示。

圖21 拍攝角度改變后的檢測結果
1) 本文中提出的采用深度學習以及圖像配準的螺栓松動檢測方法,能實現螺栓松動的全自動化檢測。
2) 在YOLOv5s的基礎上進行改進,采用ShuffleNetV2作為Backbone,根據對比實驗結果,相較于YOLOv5s,該模型在檢測準確率上和YOLOv5s相當,并且參數量降低了40.8%,推理速度提升了69.8%。
3) 在輸入圖像分辨率、螺栓的旋轉角度、光照條件等方面進行魯棒性測試,實驗結果表明本文方法的魯棒性健壯,當螺栓發生5°以上旋轉時該方法能準確檢測出螺栓松動,在風力發電機螺栓松動的智能化檢測方面具有重要意義。