李姚舜,劉黎志
(智能機器人湖北省重點實驗室(武漢工程大學),武漢 430205)
隨著大數據和人工智能(Artificial Intelligence,AI)技術的廣泛應用,社會各領域均向著智慧化方向發展,例如“智慧城市”“智慧圖書館”“智慧工地”等[1],其中的理念就是將現有的機器人、大數據、人工智能等高新技術植入到工業設備中。
目標檢測是一種常見的工業場景分析模塊,隨著卷積神經網絡(Convolutional Neural Network,CNN)的發展,基于深度學習的目標檢測技術被廣泛研究。近年來,基于錨點(Anchor)框的Anchor-Based 檢測器已成為目標檢測的主流。一些基于RPN(Region Proposal Network)的二階段目標檢測框架,如RCNN(Region-CNN)[2]、Fast R-CNN(Fast Region-CNN)[3]、Faster R-CNN(Faster Region-CNN)[4]和Mask RCNN(Mask Region-CNN)[5]不斷更新目標檢測的最高精度,但這些方法必須依賴強大的GPU 算力。隨后出現了SSD(Single Shot MultiBox Detector)[6]、DSSD(Deconvolutional Single Shot Detector)[7]、YOLO(You Only Look Once)系列[8-11]、RetinaNet[12]等一階段的模型,由于其檢測速度可以同時滿足靜態圖片及實時視頻需要,在業界應用十分廣泛。盡管如此,它們仍然需要大量的計算開銷和運行內存來保持良好的檢測性能。
隨著FPN(Feature Pyramid Network)[13]和Focal Loss[12]的提出,學術界的注意力轉向到Anchor-Free 的檢測方法。Anchor-Free 檢測器取消了Anchor 框的設置,將目標檢測看作對象關鍵點的預測。通常包括兩種檢測方法:一種是首先定位幾個預定義的或自學習的關鍵點,然后綁定對象的空間范圍,這種檢測器稱為基于關鍵點的檢測方法[14-16];另一種使用對象的中心點或區域來定義目標范圍,然后預測中心點到對象邊界的4 個距離,這種檢測器稱為基于中心點的檢測方法[17-18]。Anchor-Free 檢測器消除了與Anchor 相關的超參數,簡化了編碼過程,通過一定的訓練可以取得與Anchor-Based 檢測器相似的性能,在泛化能力方面更具潛力;但是Anchor-Free 檢測器訓練時間長、訓練過程不穩定,并且在檢測精度上仍然有一定的瓶頸,無法較好地應用在生產和實踐過程中。
雖然神經網絡模型在各領域都取得了不錯的進展,但是人們發現其在實踐中經常有難以預測的錯誤,這對于要求可靠性較高的系統很危險[19],因此引起了對神經網絡可解釋性的關注。Itti 等[20]提出了圖像的顯著性圖,在此基礎上發展而來的顯著性目標檢測,通過輸出不同網絡層的顯著性圖,可以看到神經網絡關注的圖像位置,從而解釋了神經網絡為什么能看到目標[21-22]。此外,注意力機制(Attention Mechanism)也可提高神經網絡的可解釋性,近幾年來在圖像、自然語言處理等領域中,注意力機制都取得了重要的突破,有益于提高模型的性能。Hu 等[23]提出的SENet(Squeezeand-Excitation Network)成功地將注意力機制應用到了計算機視覺領域,贏得了最后一屆ImageNet 2017 競賽分類任務的冠軍。Li 等[24]將軟注意力機制融合進網絡提出了SKNet(Selective Kernel Network),使網絡可以獲取不同感受野的信息,提高了網絡的泛化能力。在后續的研究過程中,Woo等[25]提出了一種輕量的注意力模塊CBAM(Convolutional Block Attention Module),該模塊在通道和空間維度上進行注意力權重推測,相比SENet 只關注通道的注意力機制可以取得更好的效果。Vaswani 等[26]在2017 年首次提出了基于自注意力的Transformer 模型,使用編碼器和解碼器的堆疊自注意層和點向全連接層,并使用注意力替換了原來Seq2Seq 模型中的循環結構,避免了重復和卷積。Parmar 等[27]把Transformer 模型推廣到具有易于處理的似然性的圖像生成序列建模公式中,最先使用完整的Transformer 做圖像生成的工作。Dosovitskiy 等[28]提出了ViT(Vision Transformer),將純Transformer 模型直接應用于圖像輸入,驗證了基于Transformer 的體系結構可以在基準分類任務上取得有競爭力的結果。Carion 等[29]提出了一種用于目標檢測的DETR(DEtection TRansformer)模型,將目標檢測任務視為一種圖像到集合的問題。給定一張圖像,模型必須預測所有目標的無序集合,每個目標基于類別表示,并且周圍各有一個緊密的邊界框。在定位圖像中的目標以及提取特征時,相比傳統的計算機視覺模型,DETR 使用更為簡單的神經網絡,提供了一個真正的端到端深度學習解決方案。與DETR 范式不同,Beal 等[30]將ViT 與RPN 進行結合,即將CNN 主干替換為Transformer,組成 ViT-FRCNN(Vision Transformer-Faster Region-CNN),用于處理復雜的視覺任務(例如目標檢測)。上述基于注意力機制的目標檢測框架,雖然達到了一定的檢測效果,但在檢測小目標和檢測精度上與其他的CNN 框架還有一定的差距,框架中包含的全連接結構使網絡結構的參數量大幅增加,不僅增加了訓練難度,同時還大幅降低了檢測速度,因此暫時無法部署到實際生產過程中。
在智慧工地的應用中,有一項必不可少的工作就是鋼筋數量檢測,由于鋼筋本身價格較昂貴,且在實際使用中數量很多,誤檢和漏檢都需要人工在大量的標記點中找出,所以對檢測精度要求非常高,目前的鋼筋檢測仍為人工盤點。文獻[31-32]中提出可利用傳統的圖像處理技術,對輸入圖像進行預處理,并結合面積、形態等因素進行匹配計數,但在密集或有遮擋的情況下效果表現不佳。為進一步提高鋼筋計數效率和精度,文獻[33-34]中提出利用神經網絡算法開展鋼筋識別研究,在檢測效率上顯著提高,但是精度稍顯劣勢。Zhu 等[35]提出了一 種SWDA(Strong-Weak Distribution Alignment)的數據增強方法,首先將每根鋼筋的位置進行裁剪,然后輸入全卷積網絡(Fully Convolutional Network,FCN)模型以獲得語義掩碼,最后利用3 個FCN 模型對鋼筋端面進行高質量的語義分割和組合,雖然取得了較好的準確率,但這種多階段的網絡設計模型較大,且要求輸入的圖片清晰度較高,因此,如何在不降低檢測精度的前提下來減少網絡的參數和模型大小成為一個亟待解決的問題。
文 獻[36]中指出利用殘差網絡(Residual Network,ResNet)可以有效解決神經網絡的梯度彌散、爆炸以及網絡退化的問題,使得輸入的信息能夠在網絡中傳播得更遠,也可以提升網絡的性能。由于深層網絡的感受野比較大,語義信息表征能力強,但是特征圖的分辨率低,幾何信息的表征能力弱;低層網絡的感受野比較小,幾何細節信息表征能力強,雖然分辨率高,但是語義信息表征能力弱。使用金字塔池化可以融合高低層特征,使得網絡最終的語義信息特征和空間信息特征都比較好[37]。在YOLOv3 基礎上,本文結合ResNet、FPN、注意力機制重新設計了一種嵌入注意力機制的輕量級鋼筋檢測網絡RebarNet。與其他鋼筋檢測網絡相比,它具有更小的模型尺寸、更少的可訓練參數、更快的推理速度,并且沒有降低檢測精度。
在YOLOv3 網絡中,32 倍下采樣的13×13 尺寸的特征圖具有大的感受野,適合檢測大目標的物體;16 倍下采樣的26×26 尺寸的特征圖適合檢測中等大小目標的物體;8 倍下采樣的52×52 尺寸的特征圖具有較小的感受野,適合檢測小目標[10]。YOLOv3 模型采用Darknet-53 作為骨干網絡,極大地提高了算法的穩定性及目標檢測的準確率,其結構細節如圖1 所示。

圖1 Darknet-53結構Fig.1 Structure of Darknet-53
YOLOv3 將目標檢測看做目標中心點、目標寬高的預測,并設置Anchor 先驗框。YOLOv3 模型對于特征圖上每個點共預測5 個數值:該點右下角存在目標中心的概率p、目標中心相對于當前特征點的橫坐標偏移量cx、縱坐標偏移量cy、目標寬高相對于Anchor 框寬高的比例系數tx、ty。預測過程如圖2 所示。

圖2 特征圖預測過程示意圖Fig.2 Schematic diagram of feature map prediction process
圖2 中黑線框表示預測框,w、h表示預測框的寬高,設Anchor 先驗框的寬高為Awidth、Aheight,比例系數tx、ty與w、h之間的轉換參見式(1)、(2):

為了能夠檢測不同尺寸、方向的物體,幫助模型快速收斂,YOLOv3 在COCO 數據集上利用K-Means 聚類,為每個檢測通道設置了3個Anchor先驗框(僅包含寬高),如表1所示。
利用Python語言對訓練集圖片中的鋼筋寬高進行統計,所有寬高均歸一化至416×416大小,對應的散點圖如圖3所示。
根據圖3 所示,鋼筋寬度主要分布在10~40 像素,高度主要分布在10~50 像素,鋼筋的寬高分布比較緊湊,出現異常的寬高值比較少。結合表1 的Anchor 先驗框分析,鋼筋的寬高主要分布在YOLOv3 的52×52 檢測通道中,由此考慮是否可以僅利用YOLOv3 的52×52 檢測通道對鋼筋圖像進行檢測。為驗證這一猜想,本文統計了訓練集和驗證集共250 幅圖像在YOLOv3 檢測過程中,共36 802 根鋼筋真實(Ground True,GT)框的分布情況,其中,包含94.72%(34 859)的鋼筋GT 分布在52×52 的檢測小目標通道中,僅有5.28%(1 943)的GT 分布在26×26 的檢測中等目標通道中,而在檢測大目標的13×13 通道中沒有GT 出現。可見13×13、26×26 的檢測通道對于鋼筋圖像的檢測幾乎沒有貢獻,可以嘗試僅保留52×52 的檢測通道。

表1 YOLOv3設置Anchor框Tab.1 Anchors of YOLOv3

圖3 鋼筋寬高分布情況Fig.3 Distribution of width and height of rebar
為了驗證52×52 的通道的檢測效果,本文首先根據鋼筋的不同數量級從小到大選取了6 張圖片,如圖4(a)所示;然后將圖片依次輸入訓練完成的YOLOv3 網絡中進行檢測,并將52×52 檢測通道的顯著性圖映射回原圖;最后輸出52×52檢測通道的熱力圖(Heatmap),如圖4(b)所示。

圖4 不同鋼筋檢測網絡52×52通道的HeatmapFig.4 Heatmap of 52×52 channel in different rebar detection networks
熱力圖中,顏色越亮的位置,表示該處的權重值越大,也就意味著網絡更多地注意到了該位置,該處存在目標的可能性更大。分析圖4(b)可以發現,YOLOv3 網絡的52×52 檢測通道的熱力圖所有亮度均一致,表示每一個像素點的權重分布相同,即網絡認為鋼筋背景和前景具有同樣的重要性,可以推測網絡僅僅是在盲目地搜索目標。
為進一步驗證注意力機制在目標檢測中的有效性,本文在YOLOv3 網絡中加入CBAM 注意力模塊[25]并重新訓練模型。為了不影響Darknet-53 網絡預訓練參數的加載,僅在Darknet-53 網絡的第一層和最后一層卷積中加入CBAM 模塊。然后將圖4(a)中的圖片依次輸入網絡中進行檢測,最后再次輸出52×52 檢測通道的Heatmap,如圖4(c)所示。
分析圖4(c),加入CBAM 注意力模塊之后,52×52 檢測通道的權重分布比之前更加集中于鋼筋中心點的位置,由此說明加入注意力模塊之后,網絡更加能注意到鋼筋目標的位置,而并不是盲目地搜索。但是圖4(c)中的網絡也僅僅更多地注意到了小部分鋼筋目標,仍然有大多數的鋼筋目標被忽略,說明該通道的權重分布仍然有提升的空間。據此可以推測,如果能夠設計更優的網絡結構,進一步調整網絡在檢測鋼筋圖像時的權重分布,使得權重更多地集中于鋼筋目標的位置,就能夠提升52×52 通道的檢測效果。
基于上述實驗的結果,本文結合ResNet[36]、FPN[13]和注意力機制[23-25]設計了一個嵌入注意力機制的輕量級鋼筋檢測網絡RebarNet。
為了簡化模型的大小而不顯著降低模型的檢測精度,本文利用殘差塊ResidualBlock 作為網絡的基本單元。
ResidualBlock 組成如下:首先利用BasicBlock_1 和BasicBlock_2 作為特征提取模塊,其中BasicBlock_2 包含一個步長為2 的卷積操作,用于對特征圖進行2 倍下采樣;然后利用1×1 大小、步長為2 的卷積對BasicBlock_1 輸出的特征圖進行2 倍下采樣,將輸出的特征圖與BasicBlock_2 輸出的特征圖進行殘差跳連,以延長網絡記憶特征的距離;然后利用1×1、3×3 的卷積對前述特征圖進行特征提取;最后在末尾添加通道注意力(Channel Attention,CA)和空間注意力(Spatial Attention,SA)模塊[25],調整特征圖分配權重。
ResidualBlock 會對輸入特征圖進行2 倍下采樣處理。YOLOv3 網絡中52×52 尺寸的檢測通道,是對輸入特征圖進行8 倍下采樣后的結果。2.1 節的分析表明,仍有少量的GT框分布于26×26 尺寸的檢測通道中,因此本文在骨干網絡的設計過程中,包含了4 個ResidualBlock 模塊,即對輸入特征圖進行24=16 倍下采樣,避免了26×26 通道中的信息丟失。前一個ResidualBlock 輸出的特征圖經過1×1 大小、步長為2的卷積進行2 倍下采樣處理后,與后一個ResidualBlock 輸出的特征圖進行殘差跳連,從而延長ResidualBlock 模塊記憶特征的距離。整個骨干網絡共包含3 次模塊間跳連過程。
為了使最終輸出的52×52 檢測通道的特征圖包含26×26檢測通道的信息,此處將16 倍下采樣后的26×26 尺寸的特征圖進行2 倍上采樣(Upsample)處理,得到52×52 尺寸的特征圖,與8 倍下采樣后得到的52×52 尺寸的特征圖進行特征金字塔融合,以增大網絡的感受野,最后輸出52×52 尺寸的特征圖。將得到的特征圖再次利用1×1、3×3 的卷積進行特征提取,并對輸出的特征圖添加通道注意力和空間注意力模塊[23],調整特征圖分配權重,最后輸出52×52 尺寸的特征圖用于檢測鋼筋。骨干網絡的結構如圖5 所示。

圖5 本文模型的骨干網絡結構Fig.5 Backbone structure of the proposed model
利用本文網絡重新訓練鋼筋數據集至模型擬合,輸出52×52 檢測通道的熱力圖如圖4(d)所示。
分析圖4(d)可以發現,本文網絡更多地聚焦到了鋼筋中心點所在的位置,抑制了無關的背景特征,可見網絡提取鋼筋特征的能力增強。結合圖4、5 進行分析,本文網絡相比添加了CBAM 模塊后的Darknet-53 網絡更能關注到圖像中鋼筋的位置,是否可以推測本文網絡檢測鋼筋的性能得到了一定的提升,后續3.3 節將驗證此推論。
每個特征點對應3 個Anchor 先驗框,因此骨干網絡輸出大小為52×52×(5×3),每個特征點輸出3 個預測框。后處理部分首先對輸出的52×52×3=8112 個預測框進行置信度篩選,然后對篩選出來的預測框進行非極大值抑制(Non-Maximum Suppression,NMS)[37]處理,刪去重復的預測框,最后將預測框映射回原圖進行輸出。
RebarNet 網絡檢測鋼筋的流程如圖6 所示。

圖6 RebarNet網絡檢測鋼筋流程Fig.6 Flowchart of rebar detection by RebarNet network
本文選取了EfficientDet(Scalable and Efficient Object Detection)[38]、SSD(Single Shot MultiBox Detector)[6]、CenterNet[18]、RetinaNet[12]、Faster RCNN(Faster Region-CNN)[4]、YOLOv3[10]、YOLOv4[11]、YOLOv5m(YOLOv5s 模型的檢測精度偏低,適合檢測大物體;YOLOv5l模型和YOLOv5x模型的參數量過大,鋼筋檢測的速度不理想,因此本文選取了YOLOv5m 做對比實驗)等8個經典的目標檢測網絡與本文網絡做對比。各模型的參數量、訓練占用顯存以及訓練模型權重比較如表2所示。

表2 模型參數量對比Tab.2 Comparison of model parameters
分析表2 可知,本文提出的網絡包含的參數量最少,較YOLOv3、YOLOv4 模型減少了約95%,較YOLOv5m 模型減少了84%,參數量的大幅減少,使得訓練模型訓練所占用的GPU 顯存也大幅減少。模型參數減少意味著訓練過程所需時間同樣會減少,后續的3.2 節的實驗將證實此推論。
本文網絡的損失函數由兩個部分組成:一部分是預測框位置與真實框位置帶來的誤差損失LOSSLocation;另一部分是目標置信度帶來的交叉熵損失LOSSClassification。
LOSSLocation包括:預測框中心點(x,y)相對于特征圖上對應位置的 偏移量損 失,采用二元交叉熵(BinaryCrossEntropyLoss,BCELoss)進行計算;預測框寬高相對于Anchor 先驗框的比例損失,采用MSE(Mean Square Error)均方誤差進行計算。LOSSLocation參見式(3)。
LOSSClassification包括:預測框正樣本相對于GT 的置信度損失,采用BCELoss 進行計算;預測框負樣本相對于GT 的置信度損失,此處考慮到訓練集中負樣本中的難易檢測樣本不平衡,采用Focal Loss[12]計算損失,對其中的易分負樣本進行懲罰。LOSSClassification參見式(4)。

衡量模型的性能指標為:TrainTime、FPS(Frames Per Second)、mAP(mean Average Precision)及 Accuracy。TrainTime 為訓練1 個epoch 的平均時間,FPS 為模型每秒可連續檢測圖片的數量,用來評價模型的檢測速度。下面重點分析mAP 及Accuracy 這兩個評價指標。
2.4.1 mAP
mAP 是用于目標檢測模型的性能評價指標,通過計算Precision-Recall 曲線下的面積,得到每個類別的AP(Average Precision)值,所有類別的AP求均值便得到mAP,mAP計算參見式(5):

其中n為訓練集中類別的個數,由于鋼筋檢測中n=1,即mAP=AP。
交并比(Intersection Over Union,IOU)是度量預測框與GT 的重疊程度的指標,用于衡量邊界框是否正確標識了目標在圖像中的位置,其計算參見式(6):

其中:Bp表示預測框,Bgt表示真實框。一般認為若IOU>0.5,則表示預測框正確標識了目標在圖像中的位置。
圖像目標檢測任務的Precision(P)的計算參見式(7);Recall(R)的計算參見式(8):

TP(True Positive)表示Bp與Bgt的IOU>0.5 的Bp的數量,每個Bgt只計算一次;FP(False Positive)表示表示Bp與Bgt的IOU<0.5 的Bp的數量,或者檢測到同一個Bgt多余的數量;FN(False Negative)表示沒有檢測到的Bgt的數量。將訓練得到的網絡模型用于預測驗證集Val,對大于置信度閾值0.5 的Bp經過NMS算法[26]處理后,將得到的有效預測框集合BVal按置信度進行排序。對集合BVal中的每一個Bp確定其是TP還是FP,然后根據Pascal Voc2010的規定的算法計算AP。
2.4.2 Accuracy
鋼筋點數問題的關鍵在于點數是否準確,即識別出的鋼筋數量和實際數量的差距,本文設置了Accuracy(A)評價指標,對鋼筋檢測的準確性進行評價,計算參見式(9):

其中:n為鋼筋圖像的數量,Ri為第i張圖像中的鋼筋的實際數量,PRi為第i張圖像通過模型識別的數量,|Ri-PRi|為Ri與PRi計數差異的絕對值。
本文實驗采用Pytorch 框架進行網絡結構修改和量化的操作,操作系統為Windows 10,GPU 顯存為6 GB。
本文數據集來自“智能盤點-鋼筋數量AI 識別大賽(https://www.datafountain.cn/competitions/332/datasets),數據集劃分及用途如表3 所示。

表3 數據集劃分及用途Tab.3 Partition and usage of dataset
分析表3 可知,Train 數據集中僅有225 張圖片,為提高模型的魯棒性,本文采用翻轉、旋轉、縮放、裁剪等數據增強的方式在訓練過程中擴充數據集。數據增強方式如圖7所示。

圖7 數據增強Fig.7 Data augmentation
經過上述方式的隨機數據增強后,訓練集可擴充至原有大小的4~5 倍,可極大提高網絡的健壯性。
為了驗證所提網絡的有效性,本文基于Pytorch 框架實現各個目標檢測網絡,并將Train 數據集分別在各個網絡上進行訓練,訓練過程中設置BatchSize=5,統計訓練過程中的TrainTime指標。本文將不同網絡訓練得到的收斂模型用于Val 數據集、Test 數據集檢測,統計檢測過程中的mAP、Accuracy、FPS指標。統計結果如表4 所示。

表4 不同網絡的評測指標Tab.4 Evaluation indexes of different networks
分析TrainTime結果可知,本文所提網絡訓練所需時間短于大多數網絡,大致與CenterNet 網絡相近,從而驗證了2.2 節中網絡訓練時間縮短的推論。
從衡量網絡整體性能的mAP值可以發現,EfficientDet、SSD、CenterNet、RetinaNet 和Faster RCNN 在鋼筋檢測過程中錯誤較多,mAP值處于0.7 以下;YOLOv3 表現良好,mAP達到了0.889;YOLOv4 相比YOLOv3提高了2.5 個百分點;YOLOv5m 模型的mAP值最高達到了0.931,而本文提出網絡的mAP值雖然沒有超過YOLOv5m,但與其僅相差0.4 個百分點,幾乎達到了一致的檢測效果。
進一步比較Accuracy指標可以發現,本文網絡與YOLOv5m 的Accuracy指標表現最優,與mAP檢測結果一致。此處結果說明了本文所提網絡在檢測效果上滿足要求,同時驗證了2.2 節中鋼筋檢測性能提升的推論。
分析FPS指標可知,本文提出的網絡相比其他檢測網絡在鋼筋檢測速度上有極大提升。除了YOLOv5m 以外,其他模型的檢測速度均在50 FPS 以下。雖然YOLOv5m 的mAP檢測指標比本文網絡略優0.4 個百分點,但是本文網絡的檢測速度達到了106.8 FPS,是YOLOv5m 檢測速度的1.8 倍,對生產環境中的使用更加友好。
為驗證各網絡在實際生產環境中的檢測效果,本文在Test 數據集中按不同鋼筋數量級選取了6 張圖片,如圖8(a)所示。本文將圖8(a)中圖片依次輸入9 個檢測網絡中,輸出檢測后的結果如圖8(b)~(j)所示,圖片中用矩形框包圍的部分表示網絡檢測出來的鋼筋目標位置,圖片左上角的數字為網絡檢測出的實際數量。
分析圖8(b)~(j)可見,在鋼筋數量、圖片光線、角度不同的情況下,YOLOv3、YOLOv4、YOLOv5m、本文網絡相比其他模型有更高的檢測精度,更低的誤檢、漏檢率,其中,YOLOv5m、本文網絡的檢測效果最優,兩者相差不大,這里同時驗證了3.2 節中對應網絡的評價結果,并且進一步驗證了本文所提網絡在實際檢測過程中的有效性。

圖8 Test數據集上的鋼筋實際檢測效果Fig.8 Actual detection effect on Test dataset
本文基于YOLOv3 模型,結合ResNet、FPN、注意力機制等技術,提出了一種嵌入注意力機制的輕量級鋼筋檢測網絡RebarNet。實驗結果表明,本文所提網絡在不降低檢測精度的前提下,訓練速度更快、模型文件更小,極大提升了檢測速度,對于智慧工地的鋼筋檢測應用有著推動的作用;但是該網絡對于鋼筋數量比較密集、光線不夠明亮的圖片,檢測效果仍然存在一定的誤差。下一步將對模型結構進行繼續改進,進一步提高模型精度,使其能適應更多的環境,在生產實踐中真正發揮作用。