張 娜,羅 源,包曉安,金瑜婷,涂小妹
1(浙江理工大學(xué) 信息學(xué)院,杭州 310018)
2(浙江廣廈建設(shè)職業(yè)技術(shù)大學(xué),東陽 322100)
X 光安檢是我國廣泛應(yīng)用的安檢技術(shù)手段,應(yīng)用于各個重要領(lǐng)域. 使用人工智能技術(shù)輔助一線安檢員進(jìn)行X 光安檢判圖,有效的降低漏報問題. X 光安檢違禁品檢測實際上是對違禁品的定位和分類. 即用目標(biāo)檢測的方式檢測是否有違禁品,并在安檢圖片上標(biāo)出違禁品的位置及類別.
傳統(tǒng)的安檢圖像處理算法對安檢違禁品檢測做出很多貢獻(xiàn). 蘇冰山等[1]提出了一種新型X 光圖像民航違禁品分類方法,對X 光圖像提取Contourlet 變換后圖像的共生矩陣、Tamura 紋理特征和直方圖特征,最后將這3 種特征的特征向量串聯(lián)起來得到聯(lián)合特征向量. 劉穎等[2]提出了一種基于有偏彩色紋理字典的X光安檢圖像檢測,此算法是根據(jù)被檢測物體的顏色分布構(gòu)建色彩權(quán)值矩陣,提取多通道圖像的局部紋理特征,結(jié)合詞袋模型生成多通道優(yōu)化的圖像字典. 王宇等[3]提出了基于計算機(jī)視覺的X 射線圖像異物分類研究,該算法主要是利用Tamura 紋理特征和隨機(jī)森林[4]對X 射線異物進(jìn)行自動識別分類. 以上傳統(tǒng)算法特征捕捉能力較差,檢測模型缺少泛化能力,無法應(yīng)用于海量數(shù)據(jù)集.
隨著深度學(xué)習(xí)的發(fā)展,深度學(xué)習(xí)在安檢圖像處理算法得到了廣泛應(yīng)用. 張友康等[5]提出了使用X 光安檢圖像多尺度違禁品檢測網(wǎng)絡(luò),對SSD 網(wǎng)絡(luò)[6]進(jìn)行改進(jìn),增加了小卷積非對稱模塊、空洞多視野卷積模塊以及多尺度特征圖融合策略分別用于小尺度違禁品檢測、違禁品遮擋以及背景干擾情況下違禁品的檢測.馬喆等[7]提出了一種改進(jìn)的YOLOv3 網(wǎng)絡(luò)檢測算法,對基礎(chǔ)網(wǎng)絡(luò)進(jìn)行改進(jìn),引入多維輸入圖和多分辨率輸入圖,增加了輸入樣本的多樣性,有效解決了模型的適應(yīng)性差的問題. 蘇志剛等[8]提出了基于語義分割的多目標(biāo)違禁品識別算法,在編碼階段設(shè)計使用空洞空間金字塔卷積模塊(ASPC),同時引入注意力機(jī)制,對ASPC模塊的特征提取過程進(jìn)行監(jiān)督,進(jìn)一步提升模塊的特征提取能力. Cui 等[9]提出了一種使用RetinaNet 自動檢測貨物X 射線圖像中槍支的方法,該方法提供了更精確的對象定位和更快的檢測速度. 然而以上基于深度學(xué)習(xí)的算法檢出率并不是很高,存在漏檢及誤檢的情況.
針對以上問題,本文基于深度學(xué)習(xí)的方法,提出了改進(jìn)的Cascade RCNN[10]. 在網(wǎng)絡(luò)結(jié)構(gòu)上,原有的Cascade RCNN 網(wǎng)絡(luò)在ROI Align[11]之后的特征并沒有做任何改動,而是直接進(jìn)入后續(xù)的分類和回歸,網(wǎng)絡(luò)往往關(guān)注的是局部特征,其他特征就會受到抑制,從而不能得到有效魯棒的特征. 為了得到更加有效魯棒的特征,在ROI Align 之后添加批特征擦除(BFE)模塊[12],通過隨機(jī)擦除同一批次特征,迫使網(wǎng)絡(luò)強(qiáng)化其他特征的表達(dá).在損失函數(shù)上,原有的損失函數(shù)在位置回歸損失上缺少DIoU 損失[13],通過權(quán)重融合的方式將位置回歸損失與DIoU 損失進(jìn)行融合,相當(dāng)于為原網(wǎng)絡(luò)增加了重疊面積和中心點(diǎn)距離損失,這樣使得目標(biāo)檢測結(jié)果更加精確.
Cascade RCNN 網(wǎng)絡(luò)主要由特征提取網(wǎng)絡(luò)Res-Net101[14]、特征金字塔網(wǎng)絡(luò)(feature pyramid network,FPN)[15]、RPN (region proposal network)[16]網(wǎng)絡(luò)層以及級聯(lián)檢測器組成. 特征提取網(wǎng)絡(luò)ResNet101用于提取圖片特征,將原圖經(jīng)過Conv1、Conv2、Conv3、Conv4以及Conv5 卷積操作以及不同層次的特征融合得到不同尺度的特征圖P2、P3、P4 以及P5. 然后將P2、P3、P4 以及P5 不同尺度的特征圖輸入到RPN 中用于得到候選目標(biāo)區(qū)域,將所得的候選目標(biāo)區(qū)域做ROI Align 操作后,得到7×7 大小的ROI 特征圖. 如圖1 Cascade RCNN 網(wǎng)絡(luò)結(jié)構(gòu)圖.
圖1 Cascade RCNN 網(wǎng)絡(luò)結(jié)構(gòu)圖
在檢測階段,與Faster RCNN 不同的是,Cascade RCNN 使用級聯(lián)檢測器的方式進(jìn)行檢測,由3 個檢測器分別設(shè)置不同的閾值進(jìn)行檢測. 每個檢測器包括了ROI Align、全連接層、分類得分C和邊框回歸位置坐標(biāo)B組成. 檢測時通過前一階段檢測器輸出的邊框回歸B對候選目標(biāo)區(qū)域進(jìn)行重采樣,逐步提升IoU閾值訓(xùn)練得到新的分類得分C和邊框回歸B,最終提升樣本質(zhì)量和網(wǎng)絡(luò)訓(xùn)練效果.
RPN 網(wǎng)絡(luò)主要用于生成候選目標(biāo)區(qū)域,首先通過RPN 生成一堆a(bǔ)nchor box[17],對其進(jìn)行設(shè)置閾值過濾后通過Softmax[18]分類器判斷該anchors 中的目標(biāo)屬于目標(biāo)或者背景; 同時,另一分支邊框細(xì)回歸(bounding box regression[19])修正anchor box,用于生成較為準(zhǔn)確的proposal.
Cascade RCNN 主要的改進(jìn)是在Faster RCNN 網(wǎng)絡(luò)的基礎(chǔ)上加入了級聯(lián)檢測器,級聯(lián)各個檢測模型,設(shè)置不同的IoU[20]閾值界定樣本去訓(xùn)練模型,讓每一個階段的檢測都專注于檢測IoU在某一個范圍內(nèi)的proposal,上一個檢測模型的輸出作為下一個檢測模型的輸入,越往后檢測模型的IoU閾值越不斷提升,反而也能使RPN 網(wǎng)絡(luò)輸出更準(zhǔn)確的候選目標(biāo)區(qū)域,從而減少假正樣本出現(xiàn)的次數(shù),提高網(wǎng)絡(luò)的精確度.
針對Cascade RCNN 網(wǎng)絡(luò)對X 光違禁品檢測存在檢測率低下的問題,本文提出了改進(jìn)的Cascade RCNN 網(wǎng)絡(luò)違禁品檢測算法如圖2 所示. 改進(jìn)的Cascade RCNN 將ResNet101 網(wǎng)絡(luò)輸出的特征圖自淺層至深層融合為特征金字塔并輸出到RPN 網(wǎng)絡(luò). 經(jīng)過RPN 進(jìn)行候選區(qū)域的選取后,將映射到原圖的ROI 與P2、P3、P4 以及P5 通過ROI Align 層統(tǒng)一尺寸后融合. 然后將統(tǒng)一尺寸后的ROI 特征圖后引入一個BFE 模塊,進(jìn)行隨機(jī)擦除同一批次的特征. 輸入到全連接層FC 進(jìn)行分類和回歸. 通過前一個階段的檢測器輸出的邊框回歸對候選框目標(biāo)區(qū)域進(jìn)行重采樣并逐步提升IoU閾值,最終訓(xùn)練得到新的分類得分和邊框回歸.
圖2 在Cascade RCNN 中添加BFE 模塊
如圖2 所示,改進(jìn)的Cascade RCNN 網(wǎng)絡(luò)主要包括ResNet101 特征提取網(wǎng)絡(luò)、FPN 特征融合金字塔、RPN 網(wǎng)絡(luò)層以及級聯(lián)檢測器組成. 與原始的Cascade RCNN 的區(qū)別是,該網(wǎng)絡(luò)主要在ROI Align 得到的ROI特征圖后添加了BFE 模塊進(jìn)行批特征擦除. BFE 模塊通過隨機(jī)擦除同一批ROI 特征圖的相同區(qū)域,隨機(jī)丟棄同一批次特征,防止出現(xiàn)過擬合,從而使訓(xùn)練達(dá)到更好的效果.
BFE 是通過隨機(jī)擦除同一批次某個區(qū)域圖像中所學(xué)習(xí)到的特征. 與DropBlock 算法類似的都是丟棄空間相關(guān)性,通過有效的隨機(jī)丟棄局部語義信息,激勵網(wǎng)絡(luò)學(xué)到更加魯棒有效的特征. 與DropBlock 不同的是BFE 模塊是使用批量處理,將FPN 層得到的ROI 特征張量T,經(jīng)過批處理BFE 模塊后隨機(jī)丟棄張量T的某個區(qū)域,將該區(qū)域內(nèi)所有單位清零,迫使網(wǎng)絡(luò)增強(qiáng)剩余區(qū)域的特征學(xué)習(xí).
BFE 的本質(zhì)是為了不讓網(wǎng)絡(luò)太關(guān)注那些太顯而易見的全局特征. 通常CNN 網(wǎng)絡(luò)在卷積后往往會將焦點(diǎn)集中在某個局部位置的學(xué)習(xí),而其他位置則會受到抑制. 通過引入BFE 模塊對同一批次某個區(qū)域的所有特征進(jìn)行隨機(jī)丟棄,也就是說它在同一批次圖像中禁用了與其語義部分相關(guān)的所有特征,迫使網(wǎng)絡(luò)學(xué)習(xí)其他的特征.
BFE 模塊結(jié)構(gòu)圖如圖3 所示,將ROI Align 映射后的特征圖采用特征擦除的方式進(jìn)行隨機(jī)擦除. 通過隨機(jī)產(chǎn)生通道數(shù)與ROI 特征圖相同、改變寬度縮放比例和高度縮放比例以及隨機(jī)改變擦除位置,生成一個包含0 與1 的掩碼張量,將ROI 特征圖與該掩碼張量相乘,從而消除了掩碼張量為0 位置上的ROI 特征,保留了掩碼張量為1 的ROI 特征,強(qiáng)迫網(wǎng)絡(luò)學(xué)習(xí)其它區(qū)域的特征,強(qiáng)化剩余特征的表達(dá),加快網(wǎng)絡(luò)的收斂速度.同時,采用這種擦除的訓(xùn)練方式去迭代訓(xùn)練,網(wǎng)絡(luò)具有更好的魯棒性. 實驗表明,當(dāng)掩碼張量的寬度和高度縮放比例系數(shù)不同時,訓(xùn)練出來的模型精度也有所差異.本文中由實驗結(jié)果證明,寬度和高度縮放比例系數(shù)為0.18 和0.18 時可以達(dá)到最好的效果.
算法1. BFE 算法rh輸入: 輸入張量T,大小為B×C×H×W; 擦除高的縮放比例 ,擦除寬的縮放比例 ; T 表示經(jīng)過ROI Align 處理后的特征圖;輸出: 輸出張量T';rw 1)初始化H,W: H, W←T.size()[-2:]; /*,其中,H 和W 分別為特征圖的高和寬*/;rhrw 2)初始化H',W': H'←round(*H),W'←round(*W); /*H'和W'分別為擦除特征圖的高和寬,round 為對數(shù)字進(jìn)行四舍五入*/;3)計算Sy,Sx: Sy←random.randint(0,H–H'),Sx←random.randint(0,W–W'); /*Sy 和Sx 分別為擦除的起始y 坐標(biāo)和起始x 坐標(biāo),random.randint 為隨機(jī)產(chǎn)生整數(shù)*/;4)初始化Mask: Mask←T.new_ones(T.size()); /*Mask 為與T 大小相同,值為1 的張量*/;5)計算Mask: Mask[:,:,Sx:Sx+W',Sy:Sy+H'] ←0; /*將Mask 中需要擦除的位置置為0,不需要擦除的位置置為1*/;6)計算T': T'←T*Mask; /*T'為擦除后的特征圖*/.
圖3 BFE 模塊結(jié)構(gòu)圖
本文主要針對Cascade RCNN 邊框損失函數(shù)進(jìn)行改進(jìn). Cascade RCNN 的損失函數(shù)主要由兩部分組成,分別是分類誤差、坐標(biāo)回歸誤差. 其公式如式(1),式(2)所示.
其中,v=(vx,vy,vw,vh)表示真實框坐標(biāo),tu=(tux,tuy,twu,thu)表示預(yù)測框坐標(biāo),利用smoothL1損失函數(shù)作為邊框回歸損失. 然而實際上評價框檢測的指標(biāo)是使用IoU,多個檢測框可能有相同的大小的smoothL1,IoU可能差異很大. 為了解決這個問題,在smoothL1的基礎(chǔ)上,與DIoU loss 進(jìn)行加權(quán)求和,進(jìn)而提高目標(biāo)回歸的準(zhǔn)確性.
基于IoU系列的檢測算法損失函數(shù)一般可以定義為L=1?IoU+R(B,Bgt),其中B定義為預(yù)測框,Bgt定義為真實框,R(B,Bgt)定義為B和Bgt的懲罰項. 而DIoU loss 的懲罰項表示為,ρ(·)定義為歐式距離公式,b表示預(yù)測框B的中心點(diǎn),bgt表示Bgt的中心點(diǎn),c表示B和Bgt的最小外界矩形的對角線距離. DIoU loss、SD loss 定義如式(3)–式(4):
其中,α 和 β分別是權(quán)重比例系數(shù),本文中 α 和 β均為1.SD loss 結(jié)合了坐標(biāo)回歸損失和DIoU loss,在原有的坐標(biāo)回歸損失的基礎(chǔ)上,考慮到重疊面積和中心點(diǎn)距離的因素,加上了重疊面積和中心點(diǎn)距離損失. 對坐標(biāo)回歸損失和DIoU loss 這兩種損失函數(shù)以權(quán)重比例系數(shù)的方式進(jìn)行加權(quán)融合,使目標(biāo)回歸的準(zhǔn)確率更高,并且模型收斂速度更快.
為了分析和評估本文提出的算法的性能. 本節(jié)在X 光數(shù)據(jù)集上進(jìn)行對比實驗.
實驗環(huán)境配置: CPU 為Intel(R)Core(TM)i7-4790K CPU; 主頻為4.00 GHz;內(nèi)存為8 GB; 系統(tǒng)為Linux 4.4.0-130-generic x86_64 位; GPU 為NVIDIA Corporation GM204 [GeForce GTX 970].
數(shù)據(jù)集: 在構(gòu)建數(shù)據(jù)集上,從公開數(shù)據(jù)集中采集了3 600 張X 光安檢圖像,數(shù)據(jù)集中包括需要檢測10 種類別的違禁品,包括刀具、剪刀、打火機(jī)、打火機(jī)油、壓力容器罐、彈弓、手銬、指甲油、充電寶、煙花爆竹. 使用了3 240 張作為訓(xùn)練集,360 張作為驗證集. 如圖4 所示數(shù)據(jù)集樣本.
圖4 樣本數(shù)據(jù)集樣例
3.2.1 BFE 不同寬高比縮放比例系數(shù)的對比實驗
本節(jié)實驗采用mmdetection 工具進(jìn)行實驗,特征提取網(wǎng)絡(luò)backbone 使用ResNet101,使用ImageNet 的預(yù)訓(xùn)練模型,學(xué)習(xí)率設(shè)置為0.001 25,Batchsize 設(shè)置為2,訓(xùn)練50 個epoch.采用Cascade RCNN+ResNet101+BFE 進(jìn)行實驗發(fā)現(xiàn),使用BFE 模塊進(jìn)行訓(xùn)練的過程中,采用不同的寬高縮放比例,即rh和rw不同縮放比例系數(shù)時,測試X 光圖像數(shù)據(jù)集的mAP 值均有所差異. 當(dāng)采用不同的寬高縮放比例系數(shù)時,得到如表1 所示結(jié)果.
表1 驗證BFE 模塊使用不同的寬高縮放比例系數(shù)時mAP 的增長情況(%)
如表1 所示,當(dāng)設(shè)置BFE 模塊的寬高縮放比例系數(shù)為0.15 和0.15 時,驗證X 光數(shù)據(jù)集的mAP 為0.845 6,當(dāng)寬高縮放比例系數(shù)為0.18 和0.18 時,mAP 增長了1.15%,當(dāng)寬高縮放比例系數(shù)超過0.18 和0.18 時,驗證X 光數(shù)據(jù)集的mAP 在不斷減小. 說明寬高縮放比例系數(shù)的大小對BFE 模塊是一個重要的因素,同時也影響整個改進(jìn)的Cascade RCNN 網(wǎng)絡(luò)的精度.
3.2.2 SD loss 不同權(quán)重比例系數(shù)的對比實驗
采用Cascade RCNN+ResNet101+SD loss 進(jìn)行實驗發(fā)現(xiàn),使用SD loss 損失函數(shù)進(jìn)行訓(xùn)練時,不同的權(quán)重比例系數(shù)會影響實驗結(jié)果. 當(dāng)采用不同的權(quán)重比例系數(shù)時,得到如表2 所示結(jié)果.
表2 驗證SD loss 使用不同的權(quán)重比例系數(shù)時mAP 的增長情況(%)
如表2 所示,當(dāng)使用SD loss 損失函數(shù)權(quán)重比例系數(shù)設(shè)置為0.5:1 時,驗證X 光數(shù)據(jù)集的mAP 為0.845 8,當(dāng)權(quán)重比例系數(shù)為1:1 時,mAP 增長了2.95%,說明權(quán)重比例系數(shù)的大小對SD loss 損失函數(shù)是一個重要的因素,同時也影響整個改進(jìn)的Cascade RCNN 網(wǎng)絡(luò)的精度.
3.2.3 不同模型的對比實驗
在實驗的過程中,分別加入BFE 模塊以及SD loss 損失函數(shù)不同模型進(jìn)行對比實驗,使用mAP 作為評價標(biāo)準(zhǔn). 實驗結(jié)果如表3 所示.
表3 驗證分別加入BFE 模塊以及SD loss 損失函數(shù)后的mAP 的增長情況(%)
如表3 所示,當(dāng)使用Cascade RCNN+ResNet101進(jìn)行訓(xùn)練時,驗證X 光數(shù)據(jù)集的mAP 值為0.845 3. 加入BFE 模塊后mAP 為0.857 1,加入后增長了0.011 8.說明加入BFE 模塊后準(zhǔn)確率有一定的提高,再加入SD loss 損失后mAP 值為0.876 4,相比原算法提升了0.031 1. 說明改進(jìn)的損失函數(shù)和改進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu)對X光安檢檢測的準(zhǔn)確率有一定的提升.
3.2.4 不同算法的對比實驗
在實驗的過程中,分別將改進(jìn)的Cascade RCNN算法與其它目標(biāo)檢測算法進(jìn)行對比實驗,使用mAP 作為評價標(biāo)準(zhǔn). 實驗結(jié)果如表4 所示.
如表4 所示,當(dāng)使用改進(jìn)的Cascade RCNN 算法進(jìn)行訓(xùn)練時,驗證X 光數(shù)據(jù)集的mAP 值為0.876 4. 當(dāng)使用Faster RCNN 和Mask RCNN 這些雙階段算法進(jìn)行訓(xùn)練時,驗證X 光數(shù)據(jù)集的mAP 值分別為0.802 8和0.817 3.同時,也對比了單階段RetinaNet 檢測算法,說明改進(jìn)的Cascade RCNN 算法比同類型的雙階段檢測算法以及單階段檢測算法的精度更高.
表4 分別驗證其它目標(biāo)檢測算法和改進(jìn)Cascade RCNN 算法的mAP 的增長情況(%)
本文基于Cascade RCNN 網(wǎng)絡(luò),在網(wǎng)絡(luò)結(jié)構(gòu)上,引入一個BFE 批特征擦除模塊,通過隨機(jī)擦除同一批次中的相同區(qū)域,迫使網(wǎng)絡(luò)學(xué)習(xí)其他區(qū)域的特征,加強(qiáng)其他區(qū)域特征的學(xué)習(xí),增強(qiáng)了模型的魯棒性. 同時,驗證了當(dāng)BFE 中寬高縮放比例系數(shù)為0.18 和0.18 時,可以達(dá)到最好的效果. 提出一個加權(quán)SD loss 損失函數(shù),該損失函數(shù)將Smooth L1 loss 與DIoU loss 進(jìn)行加權(quán)融合,通過調(diào)整權(quán)重比例系數(shù),使邊界檢測結(jié)果更加準(zhǔn)確. 測試性能與原算法相比,改進(jìn)的Cascade RCNN 網(wǎng)絡(luò)的mAP 增長了3.11%,精度得到了提升. 最后,將改進(jìn)的算法與同類型的雙階段檢測算法和單階段檢測算法進(jìn)行對比,改進(jìn)的算法比其它目標(biāo)算法的精度更高.