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