孫國棟,李 超,張 航
湖北工業(yè)大學 機械工程學院,武漢 430068
目標檢測作為計算機視覺領域中最基本、最具有挑戰(zhàn)性的任務之一,已取得了令人矚目的進展,被廣泛應用于人臉識別[1]、行人檢測[2]、自動駕駛[3-4]、智能監(jiān)控[5]等計算機視覺領域。通用的卷積神經網(wǎng)絡算法大多針對具有一定尺寸或比例的大中型目標,容易丟失小目標的特征,由于小目標尺寸小、特征弱、分辨率低等原因,網(wǎng)絡能提取到的有效特征信息少,因此小目標檢測一直是計算機視覺領域的研究難點。監(jiān)控視頻畫面中工人佩戴的安全帽所占畫幅較小,容易漏檢,因此需要適用于小目標檢測的算法?;趥鹘y(tǒng)算法的安全帽識別主要通過對安全帽的形狀與顏色特性進行判斷來識別安全帽,如劉云波等[6]對施工現(xiàn)場工人進行檢測與跟蹤,統(tǒng)計目標上三分之一部分出現(xiàn)頻率最高的色度值,與安全帽顏色相匹配,以此來判斷安全帽佩戴情況;劉曉慧等[7]利用安全帽與頭發(fā)色差來判斷是否佩戴安全帽;Shrestha等[8]利用邊緣識別算法判斷人臉上方是否存在安全帽的半圓輪廓。此類方法由于施工現(xiàn)場的背景復雜性無法對目標進行有效識別,適用范圍小,效果也不理想。得益于深度學習技術的發(fā)展以及工業(yè)需求,目標檢測技術取得了突飛猛進的發(fā)展,因此產生了很多優(yōu)秀的算法。
目前,基于深度學習的目標檢測方法主要分為兩大類:一是基于候選區(qū)域的雙階段目標檢測算法,二是基于回歸問題的單階段目標檢測算法。第一類是先由特定算法生成一系列樣本的候選框,再通過卷積神經網(wǎng)絡對樣本進行分類,最后進行邊界框的位置精修,主要有R-CNN[9-10]、Fast R-CNN[11]等;第二類則不用產生候選框,直接將目標邊框定位的問題轉化為回歸問題處理,直接對預測目標進行回歸、改進,代表有YOLO系列算法[12-13]以及SSD[14]算法。前者在檢測準確率和定位精度上占優(yōu),而后者在檢測速度上更具有優(yōu)勢,但這些方法在小目標上的檢測效果都不盡人意。國內針對安全帽佩戴檢測問題,目前屬于起步階段,研究的學者并不多。王兵等[15]利用改進GIoU后的YOLO v3進行安全帽佩戴檢測,但是由于底層缺乏語義信息容易造成小目標漏檢;張博等[16]通過先定位人體頭頸部再通過Faster R-CNN檢測安全帽的方法來進行識別,仍然是先識別人體再識別安全帽,存在兩部分誤差。
近幾年來,注意力模型在深度學習各個領域得到了廣泛的應用,大多是集中于使用掩碼來形成注意力機制。掩碼的原理是由一層新的權重來識別圖片數(shù)據(jù)的關鍵特征,通過學習訓練,讓深度學習神經網(wǎng)絡學到每一張新圖片中需要關注的區(qū)域,從而形成了注意力。自注意力是一種特殊的注意力,是注意力機制的改進。由于卷積操作主要用于處理鄰域之間的信息,因此單獨的卷積層對圖像中的全局依賴性進行建模在計算上是非常低效的。自注意力機制是通過計算跟自己相關的序列的相似度來挖掘信息,所以不存在這種依賴現(xiàn)象,可以很好地進行并行計算,大大提高了計算效率。基于此,本文對Faster R-CNN進行研究和改進,提出了融合自注意力機制(self-attention)的SAF-R-CNN改進算法,引入特征金字塔網(wǎng)絡(feature pyramid networks,F(xiàn)PN)[17]達到多尺度目標檢測的效果,同時在FPN中加入自注意力機制[18],使得模型聚焦于高層次特征,提取具有更豐富的高級語義信息和更大的接受域的特征,并且根據(jù)重要程度增強有用的特征抑制不重要的特征,使得有效的特征圖權重大,不重要的特征圖權重小,提高網(wǎng)絡在復雜場景下對于小目標的辨識能力,以此提高小目標檢測準確率。
SAF-R-CNN模型基于Faster R-CNN進行改進。模型采用ResNet-101殘差網(wǎng)絡結合FPN的方式用于提取語義信息更加豐富的特征圖,并且將自注意力層加入到特征融合的過程中,提高目標關注度,將得到的特征圖作為RPN(region proposal network)的輸入。然后通過錨框補選增強的方法對輸出的候選框進行進一步的校正,得到最終輸出,具體結構如圖1所示。
圖1 SAF-R-CNN網(wǎng)絡結構圖Fig.1 SAF-R-CNN network structure diagram
在神經網(wǎng)絡中,卷積層通過卷積核和原始特征的線性結合得到輸出特征,由于卷積核通常是局部的,為了增加感受野,往往采取堆疊卷積層的方式,實際上這種處理方式并不高效。
自注意力機制本質上是根據(jù)注意對象的重要程度進行不同的資源分配,在神經網(wǎng)絡中,注意力所要分配的資源就是權重。計算機視覺中的很多任務都是由于語義信息不足導致檢測結果不理想,而自注意力機制可以捕獲全局信息,并且選擇出對當前任務目標更關鍵的信息,使得卷積提取的特征相關性更強,捕獲更豐富的高級語義信息,更好地識別目標。
如圖2所示,輸入形狀為c×h×w的特征圖x,其中c代表特征圖通道數(shù),h代表特征圖高度,w代表特征圖寬度。特征圖x一共經過三個1×1卷積核,首先通過其中兩個1×1卷積核進行卷積,然后將h和w兩個維度展開變成h×w,并將通道數(shù)縮減為原來的1/8,得到特征空間(通道數(shù)c1=c/8,維度c1×h×w)f(x)和特征空間g(x)(維度c1×h×w),矩陣f(x)用來提取像素特征,矩陣g(x)用來提取全局特征,第三次卷積不降低通道數(shù),得到矩陣h(x)(維度c×h×w)。對f和g進行矩陣乘法得到尺度特征圖矩陣Sij,然后在列方向上通過Softmax函數(shù)進行尺度歸一化,得到注意力矩陣βj,i:
圖2 自注意力機制原理Fig.2 Principle of self-attention echanism
其中,Sij=f(xi)Tg(xi),代表尺度矩陣圖的各元素;βj,i表示注意力矩陣中的各元素,其中j代表區(qū)域,i代表位置,N代表尺度特征圖矩陣中元素的個數(shù)。最后對注意力矩陣和特征空間h進行矩陣乘法運算得到自注意力特征圖。輸出的注意力層表示為O=(O1,O2,…,Oi,…,ON)∈RC×N,其中:
其中,h(xi)=Wh xi。最后將自注意特征圖乘以一個權重,添加到輸入特征圖中,然后輸出新的特征圖。初始權重值為零,權重值的迭代更新依賴于神經網(wǎng)絡的反向傳播,即:
其中,y為最終返回的特征圖,γ為自注意力特征圖的預先給定的權重,Oi為展開后的自注意力特征圖,xi為原始輸入特征圖。
原始Faster R-CNN算法采用頂層特征做預測,會丟失很多底層的位置信息導致檢測精度不高。因此采用ResNet-101代替原本的VGG-16主干網(wǎng)絡,并且引入特征金字塔網(wǎng)絡(FPN),可以同時利用低層特征高分辨率和高層特征的高語義信,達到更好的檢測效果。FPN實現(xiàn)過程如圖3所示,自底向上路徑實際上是網(wǎng)絡的前向傳播,在前向過程中由于池化層的作用,C1、C2、C3、C4、C5后一層都只有前一層的一半大小。然后通過橫向連接和上采樣,構建出一個自頂向下的特征金字塔網(wǎng)絡。具體而言,自頂向下的過程對具有更豐富語義信息的頂層高級特征進行2倍上采樣,同時將自底向上生成的特征圖經過1×1卷積變換后的結果與上一層的上采樣結果進行融合。并且在融合之后還要經過3×3卷積核對每個結果進行卷積,目的是用來消除上采樣產生的混疊效應。并假設生成的特征圖結果是P2、P3、P4、P5,和原來自底向上的卷積結果C2、C3、C4、C5尺寸相同且一一對應。
圖3 特征金字塔網(wǎng)絡結構Fig.3 Feature pyramid network structure
金字塔網(wǎng)絡結構雖然可以通過提取不同尺寸的特征信息來增加感受野,但是金字塔網(wǎng)絡在將高級語義信息通過上采樣操作傳遞到其他層時,高級語義信息將會被逐漸淡化,而高級語義特征具有更強的代表性和區(qū)分性,能夠更好識別物體類別。為了克服這個問題,可以通過在FPN中加入自注意力層。具體來說,該模塊建立在自底向上路徑的末端,將高級語義特征轉換為不同的尺度,進一步擴大了模型的接受域。首先將自下而上路徑生成的特征圖轉換為多尺度的特征區(qū)域,通過各自后面的自注意力層,對重要的語義信息給予更多的關注,這些包含有效語義信息的多尺度特征經過自注意力層的處理后,在自頂向下的過程中連接在一起以補充自上而下的高級語義信息。如圖4所示。
圖4 金字塔自注意力結構Fig.4 Pyramid self-attention structure
在區(qū)域建議網(wǎng)絡(RPN)的訓練過程中,錨框的選擇是非常重要的一個環(huán)節(jié),選擇出的錨點越好后續(xù)的網(wǎng)絡訓練效果越好。但是由于錨框的數(shù)量極為龐大,在如此龐大的錨框中選擇出優(yōu)質的錨框是一件很困難的事情。同時,因為一張圖中會存在大小不同的物體,錨框也會設計為不同的大小,這些尺寸不同的錨框也會形成激烈的競爭,小目標數(shù)量更多,回歸難度更大,因此在網(wǎng)絡訓練過程中往往競爭不過大目標,這種不平衡的競爭關系,導致小目標更容易丟失。
針對小目標容易丟失的問題,采用錨框補選增強的方法。如圖5所示,卷積神經網(wǎng)絡經過分類置信度排序會丟棄大量分類置信度不夠高的錨點,但是其中存在大量的錨框分類置信度都差不多,導致網(wǎng)絡容易判斷錯誤,準確回歸難度大。本文方法在每輪的網(wǎng)絡迭代中選擇一部分被篩除的候選框重新加入到后續(xù)的網(wǎng)絡迭代訓練中,這樣經過多次迭代后,大部分的候選框都能得到更多訓練,小目標的信息也會被網(wǎng)絡更好地學習,從而提高小目標的檢測精度。
圖5 錨框補選增強Fig.5 Anchor frame by-selection enhancement
本文所有實驗采用Linux 16.04系統(tǒng),以深度學習常用算法框架Tensorflow框架為基礎并利用圖像處理器(graphics processing unit,GPU)進行加速運算,實驗環(huán)境為Intel?CoreTMi7-8750H CPU@2.20 GHz處理器,8 GB內存,Nvidia GeForce RTX 2080Ti顯卡。
由于目前沒有開源的安全帽佩戴檢測數(shù)據(jù)集,所以本文通過整合一些現(xiàn)有的數(shù)據(jù)集和網(wǎng)絡檢索圖像,建立安全帽數(shù)據(jù)集,一共7 580張圖片。安全帽數(shù)據(jù)集主要包括兩大類:一類是未佩戴安全帽的人(person),一類是佩戴安全帽的人(helemt),其中還包含多種施工場景、不同天氣以及不同拍攝距離的圖像,以滿足實際檢測的需要。
采用平均精度(average precision,AP),平均精度均值(mean average precicion,mAP),是評價檢測模型準確性的直觀評價標準。在計算這些指標之前,先需要計算幾個基本的指標,這些指標是基于二分類的任務,根據(jù)模型檢測到的類別和真實情況組合為四種情況:標簽為正樣本,分類為正樣本的數(shù)目為true positive,簡稱TP;標簽為正樣本,分類為負樣本的數(shù)目為false negative,簡稱FN;標簽為負樣本,分類為正樣本的數(shù)目為false positive,簡稱FP;標簽為負樣本,分類為負樣本的數(shù)目為true negative,簡稱TN。
精度(precision)表示的是被預測為正樣本的樣本中有多少是真正的正樣本,其計算公式如式(4)所示:
召回率(recall)表示樣本中的正例有多少被預測正確了,其計算公式如式(5)所示:
P-R曲線是以精度P為縱軸、召回率R為橫軸的二維曲線,P-R曲線下的陰影面積為平均精度值(AP),其計算公式如(6)所示:
利用安全帽數(shù)據(jù)集對SAF-R-CNN目標檢測算法進行驗證,結果如表1所示。通過結合金字塔自注意力模塊與錨框補選增強方法,SAF-R-CNN的mAP值比Faster R-CNN值提高了6.4個百分點,比YOLO V3的mAP值提高了2.9個百分點。
表1 在安全帽數(shù)據(jù)集上檢測結果對比Table 1 Comparison of test results on helmet data set單位:%
從檢測結果來看,圖6(a)給出了不同遮擋和背景的測試圖像,圖6(b)、(c)、(d)顯示了測試圖像在Faster RCNN、YOLO V3、SAF-R-CNN的可視化檢測結果對比圖,其中綠色箭頭所指都是改進效果明顯的地方。SAF-R-CNN算法相對于YOLO V3、Faster R-CNN檢測精度有一定的提升,并且當工人佩戴的安全帽出現(xiàn)變形和遮擋時,未優(yōu)化的Faster R-CNN算法會出現(xiàn)漏檢和錯檢的情況,但是SAF-R-CNN可以減少目標出現(xiàn)漏檢的情況,具有較好的檢測效果。
圖6 模型對比效果Fig.6 Model comparison effect
為了更好地檢驗SAF-R-CNN的有效性,直觀感受改進各個模塊對于檢測結果的影響,本文在安全帽數(shù)據(jù)集上進行消融實驗,結果如表2所示,加入自注意力模塊的特征融合可以捕捉更豐富的高級語義信息,為模型帶來更大的感受野,對小目標的識別更加準確,與Faster R-CNN相比,mAP值提高了4.9個百分點;通過錨點補選增強的方法讓小目標信息得到更多的訓練,強化了網(wǎng)絡對于小尺度目標的表達能力,使得檢測精度從92.8%提高到了94.3%。結果表明,兩次改進都能提高網(wǎng)絡對于安全帽的檢測精度。
表2 在安全帽數(shù)據(jù)集上的消融實驗Table 2 Ablation experiments on helmet data set
選取不同場景不同目標數(shù)的檢測結果進行檢測效果驗證。觀察圖7(a)到圖7(f)知,對于包含各種大小目標和不同場景的圖像,SAF-R-CNN能夠表現(xiàn)出較好的檢測效果。
圖7 各種場景的檢測結果Fig.7 Detection results of various scenarios
本文針對工人施工時的安全帽佩戴檢測問題,提出了一種基于Faster R-CNN的改進算法SAF-R-CNN。構建FPN結構并且加入自注意力層,同時在RPN中采用錨框補選的方法增強模型對于小目標的檢測能力,在自制安全帽數(shù)據(jù)集上進行測試,實驗結果表明本文改進網(wǎng)絡能較好實現(xiàn)安全帽佩戴檢測功能。相較于原始Faster R-CNN算法mAP值提高了6.4個百分點,并且對于不清晰、有遮擋、光線不佳等場景下的小目標有較好檢測效果,未來將繼續(xù)優(yōu)化網(wǎng)絡結構提升檢測精度。