黃宏安, 陳國棟, 張神德
(福州大學物理與信息工程學院,福建 福州 350108)
目前深度學習已被廣泛應用于許多領域,但是在工地領域方面的運用仍然較少,目前塔吊安全事故頻繁發(fā)生,2007—2016年間總共發(fā)生了152起在役塔吊安全事故[1],在這些塔吊安全事故中由于塔吊出現(xiàn)裂縫沒及時發(fā)現(xiàn)最終導致安全事故的發(fā)生不在少數(shù)。塔吊安全事故的發(fā)生往往會給施工現(xiàn)場帶來巨大的經(jīng)濟損失甚至會造成嚴重的人員傷亡,因此塔吊已然成為工地施工現(xiàn)場主要的危險源之一。對于塔吊裂縫的識別如果采用傳統(tǒng)的人工檢測裂縫的方法將浪費大量的時間和精力,再加上在塔吊高處的檢測非常危險,檢測人員在塔吊高處的檢測難度較大,如果操作不慎極有可能對檢測人員的生命安全構成威脅。除此之外,檢測精度也隨各檢測人員的經(jīng)驗技術而異,具有不確定性,因此分析研究深度學習技術在工地領域中塔吊裂縫識別中的應用具有非常重要的現(xiàn)實意義。
在傳統(tǒng)的關于識別與檢測的算法中,大多數(shù)的檢測算法是基于滑動窗口的經(jīng)典框架或者是根據(jù)目標圖像的特征點進行匹配的[2],然而傳統(tǒng)的算法面臨許多的問題,包括時間復雜度高、區(qū)域選擇算法暴力等缺點。直到2012年AlexNet在ImageNet大規(guī)模視覺識別挑戰(zhàn)賽中一舉奪冠,而且AlexNet的識別效果遠遠超過傳統(tǒng)的目標檢測算法[3],人們的視野才漸漸的轉到卷積神經(jīng)網(wǎng)絡上。目前基于深度學習的目標識別算法可以分為兩個流派,一個流派是以YOLO算法[4]和SSD算法為代表的基于回歸的目標檢測算法,另一個流派是以R-CNN為代表的基于分類的檢測算法。本文將YOLOv3算法、SSD算法和Faster-RCNN算法應用在塔吊的裂縫識別上,實現(xiàn)對塔吊裂縫的目標檢測,通過比較分析這兩種算法在塔吊裂縫識別上的優(yōu)缺點,并進一步提出下一步的改進方向。
目前主流的基于深度學習的目標檢測器可以被分為以下兩個大類:其中一大類是以基于候選區(qū)域的卷積神經(jīng)網(wǎng)絡R-CNN為代表的二階段檢測器(Two-stage)[5],但是由于R-CNN算法在訓練模型時需要對每一個候選區(qū)域都進行一次CNN操作,R-CNN算法在訓練過程較為繁瑣導致模型的訓練速度并不理想,后來為了提高訓練的速度對CNN操作進行改進從而得到了相比R-CNN算法訓練速度得到大量提高的同時仍能保持與R-CNN相近檢測精度的Faster-RCNN算法;另一大類是以基于回歸算法的YOLO算法和SSD算法為代表的一階檢測器(One-stage)。通常而言,二階檢測器的檢測精度要比一階檢測器的檢測精度要高,而一階檢測器的檢測效率比起二階檢測器的檢測效率高。
YOLO算法的思想是端到端的回歸方法,直接通過暴力的網(wǎng)格劃分產(chǎn)生若干個含有裂縫的候選區(qū)域,隨后送入神經(jīng)網(wǎng)絡模型進行回歸檢測,該系列算法識別速度快、識別準確度略低于RCNN算法。本文采用YOLOv3算法對塔式起重機裂縫進行檢測,YOLOv3算法采用一個單獨的卷積神經(jīng)網(wǎng)絡模型實現(xiàn)end-to-end的目標檢測[6],因此在訓練效率上YOLOv3算法比Faster RCNN算法要快很多。YOLOv3算法以Darknet53為骨干網(wǎng)絡架構如圖1所示,通過對圖像進行降采樣來獲取不同尺度下的特征圖,這樣做的目的是為了用來適應在不同尺度下目標的檢測輸出[7],與此同時也是為了降低底層目標的特征損失,通過對頂層特征圖的兩次上采樣并與底層特征圖進行融合,加強了對不同尺度下目標的適應性。
圖1 YOLOv3特征提取網(wǎng)絡
R-CNN算法是二階段的檢測算法,第一階段通過一定的算法提取可能含有目標的候選區(qū)域,第二階段對候選區(qū)域中的目標進行詳細分類和候選區(qū)域回歸,輸出目標的類別和位置。該系列算法識別錯誤率低,但檢測速度較慢。Faster RCNN[8]算法拋棄了傳統(tǒng)的滑動窗口方法,直接使用RPN生成檢測框,這也是Faster R-CNN的巨大優(yōu)勢,這樣做能極大提升檢測框的生成速度。目前為止,F(xiàn)aster RCNN 方法是主流的二階檢測器目標識別算法,雖然通過RPN直接生成檢測框大大提高了運行速度,但是在識別效率上依然無法做到對檢測目標進行實時性檢測。本文中對于塔式起重機裂縫的識別以VGG16模型為骨干網(wǎng)絡架構,F(xiàn)aster RCNN的識別流程圖如圖2所示。
圖2 Faster RCNN識別流程圖
SSD算法[9]是Wei Liu在2016年提出的一種目標檢測算法。SSD算法綜合了 YOLO 和 Faster RCNN 兩種算法的優(yōu)勢,對目標檢測的精度和速度都進行了提升。SSD的骨干網(wǎng)絡是基于傳統(tǒng)的圖像分類網(wǎng)絡,如ResNet,VGG等,在本文塔式起重機裂縫識別中作者所用的SSD網(wǎng)絡模型是基于一個前饋的卷積神經(jīng)網(wǎng)絡VGG16,其結構如圖3所示。經(jīng)過3個池化層和10個卷積層的處理,可以得到一個尺寸為38×38×512的特征圖。最后在這個特征圖上進行回歸,得到物體的位置和類別。
圖3 SSD網(wǎng)絡結構圖
基于上述算法,本文將目前主流的基于候選區(qū)域的二階檢測器Faster RCNN算法和基于回歸的一階檢測器YOLOv3算法應用在塔式起重機的裂縫識別中,對于基于這兩種算法訓練得到的裂縫識別模型進行比較,分析Faster RCNN算法和YOLOv3算法在塔式起重機裂縫識別方面的優(yōu)劣。為了獲取足夠多的塔式起重機裂縫圖像樣本數(shù)據(jù),防止數(shù)據(jù)集不足導致網(wǎng)絡在訓練過程中過擬合的情況的發(fā)生,本文除了通過人工采集方式獲得塔式起重機裂縫圖像數(shù)據(jù),本文還加入了和塔式起重機材質(zhì)相類似的鋼鐵裂縫和高鐵鐵軌裂縫,同時考慮光照和陰影等環(huán)境因素影響,本文使用相機在不同時間和不同時刻對塔式起重機裂縫的不同位置進行拍攝,最后將所得到的數(shù)據(jù)集進行一定程度的垂直翻轉、水平翻轉、線性變換與空間濾波變換獲得裂縫樣本圖像共6128張,部分裂縫樣本數(shù)據(jù)集如圖5所示。數(shù)據(jù)集中包含各種塔式起重機裂縫圖片并轉換成PASCAL-VOC 數(shù)據(jù)集格式用于訓練模型。在整個實驗的過程中隨機使用數(shù)據(jù)集中的80%的數(shù)據(jù)集用于訓練數(shù)據(jù),剩下20%的數(shù)據(jù)集用于測試數(shù)據(jù)。
圖4 目標檢測算法訓練、識別流程圖
圖5 實驗裂縫樣本數(shù)據(jù)集
本實驗在64位Window 10操作系統(tǒng)上進行,IDE采用Pycharm。具體環(huán)境配置如表1所示。
表1 實驗運行環(huán)境
本文應用YOLOv3,F(xiàn)aster RCNN和SSD算法進行塔式起重機裂縫檢測,一共分為訓練和識別兩個過程,對于一些裂縫圖像較暗、模糊等現(xiàn)象,可以在算法執(zhí)行時進行數(shù)據(jù)預處理,改善圖像質(zhì)量。除此之外在進行深度學習目標檢測算法訓練時,為了提高算法的魯棒性,可以對圖像進行垂直翻轉、水平翻轉、線性變換等操作,圖4為訓練算法流程圖與識別算法流程圖。
將訓練測試集分別輸入到Faster RCNN,SSD,YOLOv3算法中,分別訓練出三種塔式起重機裂縫網(wǎng)絡模型,得到依次為Faster RCNN,SSD,YOLOv3裂縫識別效果圖,如圖5所示。
圖6 Faster RCNN、SSD、YOLOv3 識別效果圖
在本次實驗中使用Faster RCNN算法、SSD算法、YOLOv3算法在裂縫測試集中進行測試,并對不同算法結果進行了對比,實驗結果如表2所示。
表2 根據(jù)裂縫識別實驗結果所得出的不同評測的指標值
通過分析實驗和表2的實驗結果,我們可以知道SSD算法在訓練塔式起重機裂縫網(wǎng)絡模型時訓練速度最快,當我們需要實時的監(jiān)測塔式起重機裂縫圖像時相對效果的訓練效率往往更具有優(yōu)勢,因此SSD算法適用于較大的塔式起重機裂縫圖像數(shù)據(jù)集。YOLO算法對裂縫圖像中有裂縫的區(qū)域定位比起SSD算法更精準但訓練速度會比SSD算法更慢,YOLO算法能夠用標定框較為完整地標記出裂縫區(qū)域,適用于對塔式起重機裂縫圖像區(qū)域標定框定位要求較為嚴格且對實時性具有一定要求的場景,F(xiàn)aster RCNN 算法與SSD算法、YOLO算法相比對塔式起重機的裂縫圖像識別上漏檢率誤檢率漏較低,但是對塔式起重機裂縫網(wǎng)絡模型訓練速度最慢,適用于對塔式起重機裂縫圖像區(qū)域標定框定位嚴格,但對實時性要求不高的場景。
本文通過對基于回歸算法的SSD算法和YOLO算法和對基于候選區(qū)域的Faster RCNN算法在塔式起重機裂縫識別的識別領域的分析表明,YOLO算法、SSD算法和Faster RCNN算法都能較為準確地識別出裂縫圖像。其中Faster RCNN算法檢測精度最高,達到86.15%,同時針對Faster RCNN算法在訓練效率上和測試效率的不足,下一步改進的方向可以讓Faster RCNN算法生成的候選框采用自適應反饋調(diào)節(jié)的方式,通過訓練時反饋調(diào)節(jié),使生成的候選框數(shù)量形成動態(tài)變化,這樣可以有效提升訓練效率。SSD算法訓練裂縫模型時所用時間最少,模型的檢測精度為74.47%,YOLOv3算法檢測精度為76.36%,訓練效率略低于SSD算法,針對SSD算法和YOLO算法在檢測精度上的不足,下一步將繼續(xù)對SSD算法和YOLO算法的網(wǎng)絡結構進行優(yōu)化,可考慮加入GAN網(wǎng)絡,提升檢測精度。