李舒婷,姜永峰,張 良+
(1.中國民航大學 電子信息與自動化學院,天津 300300;2.浙江省溫州市公安局 情報信息支隊,浙江 溫州 325000)
在機場安檢通道中,行李安檢儀輸出的圖像通常擁擠雜亂、不同層次的物品相互重疊,使得人工判圖耗時長且存在誤判風險,所以利用計算機視覺領域中的圖像檢測技術實現更高效的安檢X光圖像違禁品檢測。
在文獻[1]中,Samet Akcay等利用卷積神經網絡解決X光圖像中違禁品的分類問題,將網絡中的特征提取與詞袋模型結合后,通過遷移學習微調實現圖像檢測。在文獻[2]中,Domingo Mery等使用近年來提出的多種目標檢測算法對圖像進行深度特征提取,對比得到的檢測準確率最高可達95%,但這種方法僅能判斷圖像中是否含有違禁品,不能準確判斷目標在X光圖像中的位置。在文獻[3]中利用Faster R-CNN[4]、R-FCN[5]、YOLOv2[6]等變型的多種檢測算法,驗證了這些算法可以更好地應對擺放雜亂的安檢X光圖像中的檢測任務,但導致部分檢測的分類質量有所下降。
因此,本文以全卷積網絡為基礎框架,通過多尺度特征融合各層級的方式,實現對不同大小目標的特征分離,結合改進的損失函數優化算法模型。所提方法在應用于實際安檢X光圖像的過程中,驗證了算法的可行性,為智能安檢判圖提供思路。
X光射線在穿透行李內不同密度的物品時會不同程度地衰減,最終在探測器上投影出大致的形狀,重疊物品表示為復合影像,并依據黃、綠、黑等顏色體現物品類別。
圖1左側是目前主流算法的檢測過程,通過將輸入X光圖像上的多個位置作為錨框參考,對目標邊界框進行回歸。但密集的預測錨框導致了大量的損失計算和內存消耗,在訓練過程中使得正負樣本極不均衡。圖1右側為本文算法的檢測過程,通過直接在每個空間位置點上預測一個4D向量和一個類別,實現更加快捷的無錨框檢測。

圖1 X光圖像中違禁品的表示方法
假設某點 (x,y) 落在違禁品邊界框的區域內,則視為正樣本,得到一個4D實向量t*=(l*,t*,r*,b*) 作為回歸目標。否則為負樣本,則表示目標回歸的類標簽k的值為零,屬于背景類。若該點落在多個邊界框內,則被認為是模糊樣本,根據最小面積優先選取邊界框作為回歸目標。
因為網絡得到了盡可能多的前景數據訓練回歸目標,所以優于只能通過提高IoU閾值作為正樣本的基于錨框檢測方法。當點 (x,y) 對應的回歸目標表示為B=(x0,y0,x1,y1,k) 時,回歸向量滿足
(1)
全卷積網絡(fully convolutional networks,FCN[7])首先輸入任意尺寸的圖像,類似于CNN的結構,將網絡中的全連接層替換成一個個卷積層,最后利用反卷積對特征圖進行上采樣,使它恢復到與輸入圖像相同的尺寸并逐像素檢測。如圖2所示,在上面一行CNN中,前5層是卷積層,第6、7層是長度為4096的一維向量,輸出的第8層是一個長度為1000的一維向量,分別對應1000個類別的概率。而下面的一行是FCN,后面3層結構為卷積層,輸出對應的通道數、寬、高分別為(4096,7,7)、(4096,1,1)、(1000,1,1)。因為FCN中所有的特征層都是卷積層,故稱為全卷積網絡。

圖2 全卷積網絡實現的語義分割任務
FCN在場景深度估計的文獻[8,9]中和語義分割的文獻[10,11]中均取得了巨大的成功,目前的學術研究也正在嘗試將其用于目標檢測領域。如在文獻[12]中DenseBox利用FCN判斷像素是否在某個物體的中心點附近,并結合多任務學習和定位進一步提高目標檢測的準確性。在文獻[13]中UnitBox基于FCN進行圖像分割,提出一種新型框架進行人臉檢測。而在文獻[14,15]中CornerNet和CenterNet基于關鍵點進行目標檢測,通過獨立預測框左上角和右下角的位置將兩幅預測圖進行聯合嵌入,最終獲得邊界框。
但基于FCN的檢測方法目前主要還是用于特殊場景下,獲取全局信息的能力較弱且難以組聯同一檢測目標的關鍵點,在具有高度重疊目標的通用檢測任務上效果一般。因此,針對安檢通道中X光圖像的特點,使用FCN優化網絡結構提升違禁物品檢測的準確率。
圖3為本文提出的檢測算法,雙向FCN的整體網絡構架。X光圖像輸入網絡后,首先將逐個像素進行特征提取。經過多層卷積和池化后,自底向上產生C1、C2、C3、C4、C5卷積層。深層特征圖通過雙向特征金字塔進行特征融合后,產生P3L、P3R、P4L、P4R、P5L、P5R(Pi∈RH×W×K表示第i層特征圖)降低漏檢率,解決了重疊物體引發的歧義,P3~P7對應的步長(相對于原圖的縮放比例)分別是8、16、32、64、128。之后P3~P7共享檢測頭,輸出端分別添加分類及回歸子網絡。

圖3 雙向FCN的網絡框架

(2)
2.2.1 特征金字塔網絡
通常的物體檢測算法,無論是單階段檢測還是雙階段檢測,通常都是在骨干網絡的最后一個層直接輸出檢測頭做模型訓練。若網絡最后一層的步長是32,則輸出特征圖的分辨率只有輸入的1/32。致使圖像模糊,不利于準確檢測,因此一般會去掉最后一層的最大池化層(Max Pooling)或者將卷積層步長改小。
這種檢測算法顯然無法同時有效表征各個尺度的物體,因此利用深度卷積神經網絡搭建多層級的金字塔結構,使用一種自上而下的側邊連接在各個尺度構建特征圖,這種結構稱為特征金字塔網絡(feature parymid network,FPN)[16]。目前主流的物體檢測模型都是自上而下單向融合的FPN,如常見的Faster R-CNN、Mask R-CNN、RetinaNet和Cascade R-CNN[17]等。
PANet[18]是第一個提出從下向上的二次融合模型,證明了雙向融合的有效性。模型整體上可以看作是在Mask R-CNN上改進,充分利用網絡淺層特征融合得到更加精確的分割結果。而PANet的雙向融合較為簡單并不具有實際應用價值。
因此本文在FPN的研究上更進一步,設計雙向并行的多尺度預測機制,將淺層特征和深層特征雙向融合搭建側金字塔,提高檢測精度。
2.2.2 左側特征金字塔
分開來說,圖4為左側FPN,把更抽象、語義更強的高層特征圖P(i+1)L通過最鄰近元法進行上采樣,生成粗粒度特征圖。對應的低一級卷積層Ci通過1×1的卷積計算降低通道數,但仍保持與第i層特征圖相同的尺寸。將其與P(i+1)L生成的上采樣圖像橫向連接,獲得更多細粒度信息的特征層PiL。

圖4 左側FPN的融合模塊
因此左側FPN提高了特征映射的分辨率,可以獲得更多關于小目標的圖像數據。C1、C2由于尺寸過大且語義信息不足,沒有放入特征融合中。由此可得左側FPN的表達式為
(3)
2.2.3 右側特征金字塔
如圖5所示,為右側FPN的具體結構,通過對特征增強細粒度表達提取高判別性能的特征,保存更多的淺層定位信息。結構自下而上進行特征融合,淺層特征經過骨干網絡的橫向連接通過1×1的卷積計算降低通道數。

圖5 右側FPN的融合模塊
低一級的特征圖P(i-1)R通過步長為2的下采樣傳遞到頂層,最后兩者融合后通過3×3的卷積層消除混疊效應。因此最后生成的特征圖P3R、P4R、P5R, 對應卷積層的空間尺寸大小也相同。值得注意的是,這里的P3L和P3R表示不同的特征圖,P5L和P5R也表示不同的特征圖。右側FPN的表達式為
(4)
雙向FPN模塊將尺寸不同的物體分配到對應的層級上,P5L-P3L自頂向底將深層的信息傳遞到淺層,可以學到更多的語義信息。P3R-P5R自底向頂將淺層的信息傳遞到深層,通過更高的分辨率學到目標的細節信息。綜合局部信息和全局信息,使得不同尺度下的特征都有豐富的語義信息和位置信息,最終對8個特征圖逐像素回歸。
與基于錨框的檢測不同,雙向FPN直接對限制了邊界框回歸的范圍。設di表示第i層特征需要返回的最大距離,d2~d7的取值分別為0、64、128、256、512以及∞,則每層滿足
mi-1≤max(l*,t*,r*,b*)≤mi
(5)
若超出這個范圍則被設置為負樣本,不再需要返回邊界框。通過限定回歸最大距離分離不同特征層的回歸目標,可以確保對象始終完整地處于各特征層的接受域內,減少了負樣本參與回歸的計算量。刀和槍等多種違禁品時常發生遮掩,但通過特征金字塔的雙向逐級融合可以很大程度緩解目標重疊的問題,進一步降低了違禁品檢測的漏檢率。
如圖6所示,數據經過雙向FPN預測后輸入共享檢測頭,連接4個卷積層,分別進行分類和回歸計算。分類分支預測目標在每個位置上個類別的概率,在回歸分支預測目標在每一個位置上的偏移量。但大量偏離目標邊框中心點很遠的那些預測框,會導致大量低效率的訓練和計算占用內存。從IoU Loss函數的角度來說,當預測框和目標邊框在水平或垂直方向上相交時,IoU計算的值仍沒有比在其它方向上有明顯增加,導致對這兩個方向上的懲罰不夠。因此無法給出優化方向,收斂速度減慢。在基于錨框檢測方法的損失計算中,DIoU Loss[19]通過合并預測邊框和目標邊框之間的標準化距離,可以使預測框的中心點更大程度接近目標邊框,避免產生過大的框體。

圖6 違禁品生成標注的過程
因此本文提出在回歸分支IoU Loss的基礎上,也引入一個懲罰項進行損失函數計算。這個懲罰項可以達到對于不同距離、方向和面積的預測框都做到高質量回歸的效果。具體來說,用ΔT表示該像素點描繪的預測邊框的對角線交點,與距離該點負責的目標邊框的對角線交點的距離比值。該懲罰項ΔT通過抑制低質量的邊界框來最小化損失函數,使模型在訓練時達到快速收斂,回歸更加準確。經實驗可得,在將ΔT參與衡量的損失函數TIoU引入到(non-maximum suppression,NMS)中,替換原本的IoU消除冗余,表明在目標遮擋的檢測情況下,也能顯著提高后抑制項的魯棒性。t=(l,t,r,b) 表示左、上、右、下4個邊界框與預測該邊框的像素點之間的距離,t*=(l*,t*,r*,b*) 表示該點負責的目標對象真值邊框與該像素點之間的距離,則ΔT的表達如式(6)所示
(6)
分類分支輸出一個W×H×K大小的特征圖訓練k個二值分類器,對應真值是圖6中的可視區域。針對單階段檢測中正負樣本比例嚴重不平衡的問題,該分支使用Focal Loss[20]作為損失函數,在交叉熵函數的前面增加前置因子γ降低大量簡單負樣本在訓練中所占的權重。通過更關注于困難的、錯分的樣本,使得整體的損失函數值變小。
預測推理時,將所有分支的Loss進行求和,選擇結果最小的特征層學習實例,訓練時根據學習的特征進行更新。給定輸入圖像進行前向推理時,通過網絡前向傳播得到特征圖Fi每一個位置上 (x,y) 的分類概率P以及回歸預測向量t。 如果P≥0.05, 則作為正樣本,然后通過式(1)獲得預測值。最合適的特征金字塔層會自然地輸出高置信分數,因此不需要進行特征更新。令Npos表示每次訓練過程中正樣本的個數,則在進行計算求和時,整體的損失函數滿足式(7)

(7)
本實驗數據集來源于民用航空機場中安檢通道采集的X光圖像,通過實驗室同組人員共同標注制作的安檢X光圖像數據集,共計8718張X光圖像。
如圖7所示,該數據集主要包含5類違禁品,分別為槍、刀、扳手、鑷子和剪刀等,并對每張圖像標注了違禁品的邊框位置和類別。先將手工標注的X光數據集改為coco數據集的存放格式,再根據image下的圖片和標注下面xml文件,把每個圖片的標簽重新整合成train和val的兩個json文件。

圖7 違禁品的種類分布
在消融實驗(ablation study)中,選擇該數據集的60%作為訓練集,40%作為驗證集。通過將本文方法與基于錨框的RetinaNet方法,以及各文獻進行對比,以此驗證本文方法的實用性。
如前文所述,針對X光圖像中違禁物品檢測的主要問題是盡量降低行李漏檢的概率和解決重疊物品的難識別障礙。為評估本實驗圖像的檢測結果,采用的評價指標為平均漏檢率和平均精度。

(8)
平均精度(average precision,AP)作為目標檢測另一重要的評價指標,表示每張圖片上的含有k個類別和所有TIoU閾值下的精度的平均值。檢測器預測的類別和位置效果越好,AP值越高。AP50、AP75分別指的是在TIoU的閾值在大于0.5、大于0.75時的平均精度。數值越高,越難達到檢測效果。則平均精度的計算公式為
(9)
實驗系統配置包括處理器Inter Xeon(R)Silver 4110CPU@2.10 GHz的工作站,兩塊NVIDIA GeForce GTX 1080Ti的GPU顯卡,在Ubuntu 16.04操作系統的平臺上,軟件環境為Pytorch深度學習框架和Python編程語言。
在消融實驗中,為了與基于錨框的檢測器同級平等比較,以驗證本文所提的方法可以作為一個強大而簡單的替代方案,所以實驗均設置與 RetinaNet相同的超參數。在用自制數據集訓練算法的初始階段時,使用更快更簡單的ResNet-50[21]作為骨干網絡。并設置batch_size=4,初始學習率為0.01,在迭代20 K和28 K時的學習率分別衰減為0.001和0.0001。
所有的消融實驗只訓練30 k迭代(epoch=20),是完整實驗迭代次數的1/3。在ImageNet上預先訓練的權值初始化主干網絡,單張輸入X光圖像通過調整大小使得其短邊為800,長邊小于或等于1333,采用隨機梯度下降法(stochastic gradient descent,SGD)進行優化。
3.3.1 有無錨框的消融實驗
如表1所示,在同樣網絡深度的無錨框檢測器雙向FCN中,實驗可以獲得56.2%的AP。而在搭建同樣參數的基于錨框的RetinaNet中,進行實驗后獲得只有55.3%的AP。可見基于本文提出的無錨框檢測方法遠遠優于有錨框的檢測方法。在基于錨框檢測的卷積神經網絡中,網絡過深(例如步長為32的特征層)導致了正負樣本比例嚴重失衡,致使準確率下降,只能通過降低IoU的閾值在一定程度上得到補償。

表1 基于錨框的RetinaNet和基于無錨框的雙向FCN
類似地,在將雙向FCN去掉一側FPN的情況下,即設置與RetinaNet相同的骨干網絡和特征融合方式后,本文所提方法依舊比基于錨框的檢測方法高出0.7%。雙向FCN因為沒有錨框,所以對比每個位置上的單個像素點,少了9倍的候選框數量,顯存占用也只有一半。本消融實驗驗證了雙向FCN實現的無錨框網絡的召回率比基于錨框的同類網絡更好。
3.3.2 有無多尺度預測的消融實驗
如表2所示,本組消融實驗通過控制網絡經過不同程度的特征融合,驗證雙向特征金字塔的存在會帶來檢測性能的顯著提升。

表2 多尺度預測的不同方法對比
在基于FCN的檢測器中,目標邊框重疊會在訓練過程中難以判斷該點應該回歸到重疊區域內的哪個邊界框,導致檢測性能大幅下降。如表第二行所示是不使用多尺度預測的FCN網絡,平均精度較低。
第三行消融實驗添加了單側特征金字塔,采用左側特征金字塔自頂至底融合,對淺層語義進行特征增強。在輸入大小為1024×800的圖像時,最小的檢測出目標大小為16×13,降低了微小目標的檢測難度,使得小目標的AP顯著提高。
第四行為添加了雙向特征金字塔的網絡,因為絕大多數的重疊目標被分配到了不同的特征層進行檢測,使得AP不斷提高。相比于單側特征金字塔,MOR也有明顯降低,因此符合投入應用安檢通道場景中的實際要求。
在計算檢測邊框來自于模糊位置的數量時發現,只有2.3%的邊界框是由模糊位置產生的。同時考慮到不同類別之間的重疊數量,比例降低到1.5%。因此,本消融實驗進一步驗證了違禁品的遮擋問題一定程度上可以通過雙向FPN解決。
3.3.3 有無改進損失函數的消融實驗
如表3所示,通過控制網絡在不同的損失函數下計算,驗證了+TIoU的AP有了明顯的提升。除了檢測準確度外,+TIoU算法的另外一個重要性能指標,檢測速度的評價指標,也有小幅提高。

表3 回歸損失函數
從圖8可以看到,3個損失函數在迭代過程中的衰減曲線。GIoU仍然嚴重依賴IoU,因此很難收斂。TIoU直接最小化兩個目標框的距離明顯縮短推理時間,相比GIoU收斂快得多。

圖8 回歸損失函數的衰減曲線
表4展示了本文所提方法雙向FCN與目前雙階段和單階段的最前沿的檢測算法(state-of-the-art,SOTA)在X光數據集上的實驗結果對比。雙向FCN選擇訓練90 k迭代的完整實驗,學習率在60 K和80 K次迭代時減小10倍,對比同量級的雙階段檢測器Faster R-CNN,僅一個指標略低0.1%。同時保證了網絡檢測的實時性要求,每秒檢測圖片數量(frame per second,FPS)相比于雙階段的算法Faster R-CNN明顯提高。對比同級的單階段檢測器RetinaNet,本方法也在較快的檢測速度基礎上使AP提高了兩個百分點。

表4 雙向FCN與SOTA檢測方法比較
針對傳統CNN檢測違禁品準確度低的問題,本文提出了一階段檢測的雙向FCN算法。該算法基于FCN進行無錨框的逐像素檢測,節省了所有與錨框相關的計算,避免了基于錨框檢測帶來的弊端。在特征融合階段加入了雙向特征金字塔,一定程度上緩解了目標重疊的影響,同時降低了不同大小目標的漏檢率顯著提高了檢測的準確性。通過改進損失函數加快了網絡訓練模型,滿足檢測實時性要求。該算法大檢測的安檢圖像輸出結果如圖9所示,表示了違禁品的類別和位置。實驗結果表明,和目前流行檢測算法(包括Faster R-CNN、YOLO和RetinaNet)相比,所提設計結構更加簡潔,充分驗證了雙向FCN在X光圖像違禁物品檢測中的實用性。

圖9 X光圖像違禁物品的檢測結果