徐銘源 楊艷紅
(蘇州大學應用技術學院,江蘇 蘇州 215325)
傳統的安檢措施,主要是通過安檢員肉眼的觀察來判斷物品的種類,這樣的方式往往效率較低,且人員調動復雜,并且由于汽車站、火車站以及飛機場等交通樞紐具有客流量大、人員復雜、流動性高等因素,傳統的安檢方式已經不能滿足當前的需求。為了緩解安檢的壓力,采用深度學習算法,實現實時的智能化檢測。目前,基于深度學習的目標檢測方法主要有兩類:一類是以Faster(F-CNN)、R-CCN[7]、SPP-Net[9]為代表的基于候選框的雙階段目標檢測算法,這類算法檢測精度高,但速率較低;另一類是以SSD[2]、YOLO[1]為代表的單階段目標檢測算法,此類算法檢測速度較高[5]。與YOLO 算法相比,SSD算法能夠兼顧大小目標的檢測且效率高,因此基于深度學習的行李檢測系統選擇使用SSD算法。
系統由檢測模塊、Java 后臺模塊和Web 前臺模塊組成。系統結構如圖1所示。

圖1 系統結構
檢測模塊分為兩部分,一部分是先期的學習,另一部分是后期的識別與預測。學習階段,將制作和處理好的數據集放入SSD 模型中,通過框體間的對比,將學習好的參數存入模型,以便后期使用。后期,根據實際生產環境,調用模型,實時對新的行李進行追蹤與識別。Java 后臺模塊采用Tomcat 服務器和SpringBoot 框架,負責報警機制的設定,連接Web前臺、檢測模塊和數據庫,進行數據的傳遞,實現前后臺的交互。Web 前臺模塊采用Vue 框架,使用TCP/IP 協議,響應客戶端的請求,將處理好的數據傳送給客戶端;使用Web-Socket協議,實現Web服務器對客戶端的請求。
SSD是一個端到端的多尺度檢測的模型,所有的檢測和識別的過程都是在同一個網絡中進行的。網絡使用經典的VGG-16[18]為主干網絡,這一層主要是對數據集進行預訓練。在此網絡的基礎上將VGG-16網絡層的fc6和fc7[3]兩個全連接層分別用3*3 卷積層Conv6(Conv6 采用帶孔卷積Dilation Convolution以及3*3大小,dilation rate=6的膨脹卷積)和1*1 卷積層Conv7。然后移除dropout 層和fc8 層,并新增一系列卷積層,在檢測數據集上做Fine Tuning。緊接著從后面新增的卷積層中提取Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2 作為檢測所用的特征圖,加上Conv4_3 層,共提取6 個特征圖,其大小分別為(38,38)、(19,19)、(10,10)、(5,5)、(3,3)、(1,1)。這樣,SSD 一共可以預測8732 個邊界框。得到特征圖后,特征圖進行3*3卷積得到檢測結果。最后,根據置信度、閾值和非最大值抑制NMS[10]對卷積后的檢測結果進行篩選,篩選后的預測框就是檢測結果。SSD 模型結構如圖2所示。

圖2 SSD模型
在框體處理模塊中運用了分類算法、回歸算法、Jasscard系數計算、在線難挖掘(hard Negative minging)機制以及對損失函數的設計。SSD中,先驗框與真實框的匹配遵循兩個原則。原則一,從真實框出發,每個真實框與先驗框進行比較,計算兩者最佳的Jaccard(重疊)。Jaccard 系數為兩個有限集的相似度,Jaccard系數越大,相關性越高。Jaccard系數計算公式為:

通過計算找到與真實框擁有最大Jaccard 值所對應的先驗框,這樣就可以保證每一個真實框都可以匹配到一個先驗框,同時,此時的先驗框被分類為正樣本。如果,一個先驗框沒有與任意一個真實框進行匹配,那么這個先驗框就只能與背景進行匹配,這時,就把先驗框分類為正樣本。但是,由于一張圖片里真實框遠遠少于先驗框,所以第一個原則無法滿足需求。在第二原則中,將剩余還沒有與真實框配對的先驗框與預先設定好的閾值進行比較(閾值一般設為0.5)。將IOU大于0.5的先驗框分類為正樣本,IOU小于0.5的先驗框分類為負樣本。IOU[4]為交并比(Intersection over Union),反映了先驗框與真實框的交集,假設真實框的面積為S1,候選框的面積為S2,交集的面積為S,則交并比的計算公式為:

考慮到負樣本的數量遠遠大于正樣本的數量,如果不加以調整直接訓練的話會導致網絡偏向于負樣本,因此,SSD中通過使用在線難挖掘(Hard Negative Mining)機制,根據置信度損失值將負樣本進行排序,挑選置信度損失值高的負樣本框進行訓練,通過這個機制,將正負樣本之比調整為1:3。得到正、負樣本之后,依據最小化損失函數的原則來訓練先驗框。SSD 的損失函數為用于分類的log loss 與smooth L1的損失函數之和,總損失函數[5]計算公式如下:

loc的損失函數(smoothL1)的計算公式如下:

框體設計如圖3所示。

圖3 框體設計
SSD 算法與YOLO 算法的最大區別就是SSD 采用多尺度特征圖的預測方法,使得SSD模型可以檢測多個物體。多尺度特征圖算法是在每一個特征圖上設置不同尺寸和不同長寬比的候選框,每個特征圖上的候選框[4]的計算公式如下:

式中,Sk為第k個特征圖的默認框的大小相對于網絡輸入的比例,Smin為最小比例,Smax為最大比例,k代表m個特征圖中的第k個,其中m為特征圖個數。
Anchor_box的計算與Anchor_size和ratios有關。如圖4所示,Anchor_size是box的邊長,ratios為每個box的長寬比,則長寬的計算公式如下:

圖4 box

因此,越靠近輸入層,box越小,越靠近輸出層,box越大,所以SSD的底層用于檢測小目標,高層用于檢測大目標。
為了方便用戶快速了解當前的檢測情況,系統設計了報警機制和安全評估。將識別到的數據按照“危險”“警告”和“安全”三個級別,分別用紅色、黃色和綠色進行標注。報警機制與安全評估設計如圖5所示。

圖5 報警機制與安全評估
客戶端向系統發送請求,Web 模塊接收并調用Java 接口,將請求傳送給Java 后臺;后臺保存圖片,生成作業信息,向云端數據庫請求數據沉淀并喚醒檢測進程;檢測模塊進行識別、劃分等級,然后將掃描結果沉淀到云端數據庫中,同時喚醒Java 進程;Java 模塊查詢并組裝結果,將信息傳送給Web 模塊;Web 模塊進行判定,然后按照報警和安全評估兩條線路進行。報警線路中,依據等級信息,用紅、黃、綠三種顏色分別標注。安全評估中,統計各等級的數量并繪制圖表。最后將結果在客戶端進行實時的可視化展示。實現效果如圖6和圖7所示。

圖6 報警機制

圖7 安全評估
考慮到較少的樣本會導致過擬合,實驗中采用數據增強的方法,從翻轉、顏色兩方面增加數據集的數量。
本實驗的數據集采用互聯網上的公開數據集,數據集包括易爆類、刀具類、電子產品類、生活用品類等6872張行李圖片。實驗中,隨機劃分其中的5726張為訓練集,1146張為測試集。通過LabelImage 工具,標注待檢測的物品,生成對應的XML 文件,最后將圖片和對應的標注文件按照TFRECORD格式進行存儲。
實驗中,由于待識別的物品種類較多,采用單一的網絡架構只能學習一個類別的物品,為了解決這一問題,系統采用Anchor 機制,同時,采用精確率(Precision)和召回率(Recall)作為評價指標[6]。其中,精確率是指被正確檢測出來的行李類別占所有被檢測到的類別的百分比,計算公式如(7)所示;召回率是指被正確檢測出來的行李類別占待檢測行李類別的百分比,計算公式如(8)所示。

圖8 數據增強

其中,TP表示正確識別出的行李類別數量,FP表示非待檢測行李類別被檢測出的數量;FN 表示未被檢測出的行李類別的數量。
由表1 可以看出,使用數據增強將檢測結果提高了36.07%。檢測效果有了較好的提升。實驗對比如圖9所示。

表1 檢測準確率

圖9 數據增強與Anchor機制
系統首先選取長短不一的視頻進行試驗,通過評價指標分析,系統能夠很好地定位與識別移動中的物品,并進行實時的報警和安全評估。隨后,在地鐵站進行實地試驗,經過多次測試,系統可以較好地檢測通過安檢機的X 光行李,實時將數據傳到云端,不間斷地進行報警與安全評估。系統的檢測率達到73.9%,檢測效果良好,滿足安檢需求。