張 震,李浩方,李孟州
鄭州大學 電氣工程學院,鄭州 450001
隨著中國經濟的快速發展,人民生活水平日益提高,乘坐汽車、火車、飛機等交通工具日益頻繁。在汽車站、火車站和機場等人口密集的場所,安檢是保證公共安全的重要保證措施之一。
從國內的安檢行業的發展來看,X 光安檢機[1]結合人工安檢是主要的手段。但是,即使人工借助X光安檢儀,如果遇到客流高峰等突發狀況,安檢工作人員的熟練程度和精神狀態可能會影響安檢的準確率[2],使公共安全存在隱患。因此,如何確保安檢的高準確率和高效率,是人工檢測現階段比較突出的問題。
由于深度學習在目標檢測領域中的快速發展,將神經網絡與實際運用場景結合是目前一個熱門方向[3]。目前基于深度學習目標檢測與識別的方法可以分為兩類:第一類是依賴候選區(Region Proposals)的提取的方法有 R-CNN[4]、SPP-NET[5]、FAST R-CNN[6]、FASTER R-CNN[7]、R-FCN[8]等,這些算法按照兩階段處理模式:提出候選區域,識別候選區域中的對象,這些方法在小目標的檢測精度較高,但是檢測的速度較慢;第二類是不依賴候選區的模型而基于回歸的目標檢測方法有SSD[9]、YOLO[10]等。由于YOLO采用是端到端的目標檢測和識別,將物體檢測作為回歸問題求解,采取將候選框和對象識別兩個階段進行整合,直接輸入圖像經過推理,從而便能得到圖像中所有物體的位置和其所屬類別及相應的置信概率。YOLO算法相比較其他算法,不僅滿足目標檢測實時性的要求,還有較高的準確率。
因此,為了解決人工安檢利用X光安檢機不能實時確保準確率和效率的問題,本文基于深度學習中目標檢測的YOLO 算法,提出了一種改進的Dense-YOLO 算法,對可疑物進行目標檢測,能夠提升安檢中的準確率和效率。
YOLO(You Only Look Once)目標檢測和識別算法是Redmon 和Farhadi 等人于2015 年提出的基于單個神經網絡的目標檢測系統。到2018年YOLO已經發展到第三個版本。相比較YOLO-v2[11],YOLO-v3[12]算法進行了如下改進:
(1)采用更深的卷積神經網絡Darknet-53 取代Darknet-19,加深了網絡層數。
(2)加入殘差網絡[13]。一方面,保證網絡結構在較復雜的情況下能夠收斂,并且有效提升分類和檢測的檢測效果,特別是對于小目標識別檢測效果有了較大的提升。另一方面,殘差網絡中的1×1 的卷積,一定程度上減少了參數量和計算量。
(3)借鑒FPN[14](Feature Pyramid Networks)架構和引入Faster R-CNN 中錨定框思想,實現多尺度檢測。采用多尺度來對不同大小的目標進行檢測,采用3個尺度進行預測,每個尺度有3個錨定框。
(4)改進分類器-類別預測方法。YOLO-v3 用多個獨立的邏輯(logistic)分類器替換softmax[15]函數,以計算輸入屬于特定標簽的可能性。在計算分類損失時,YOLO-v3 對每個標簽使用二元交叉熵損失,避免使用softmax函數而降低了計算復雜度。YOLO-v3算法結構如圖1所示。

圖1 YOLO-v3算法結構
2017 年 Huang 等借鑒 ResNet 的思想,提出了一種全新的密集連接的卷積神經網絡DenseNet[16](Dense Convolutional Network)。DenseNet 網絡中任意兩層都是直接聯系的,網絡中每一層的輸入都是前面所有輸出層的交集,并且每層網絡中學習的特征圖也會直接傳輸給后面的層作為輸出,因此可以加強特征的復用。DenseNet的網絡結構圖如圖2所示。

圖2 Densenet網絡結構
DenseNet網絡中主要的結構有:稠密塊(Dense Block)、瓶頸層(Bottleneck layer)和過渡層(Transition layer)。其中稠密塊是密集連接網絡的合集,主要由多層卷積層構成,可以有效地學習圖像的特征;瓶頸層主要是減少輸入特征圖的數量,通過3×3 卷積對特征維度進行降維,起到了模型加速和壓縮的作用;過渡層主要是對輸出的特征圖進行降維,由一個1×1的卷積層和2×2的平均池化層組成。
YOLO-v3 在目標檢測領域有較為出色的檢測效果,但針對安檢可疑物品的檢測任務,需要對網絡進行改進。本文結合自制數據集中可疑物品的特點,提出了一種改進的Dense-YOLO網絡模型,改進的方法如下:
(1)Dense-Yolo網絡設計[17]。借鑒了DenseNet網絡中特征復用的思想,改進YOLO-v3 中的Darknet-53 網絡結構,進一步加強特征在網絡中的傳遞,一定程度上保留待檢測目標圖像整體輪廓的原始信息,提升可疑物品中小目標的識別。
(2)改進K-means[18]聚類。針對本文中的可疑物品數據集,需要重新采用改進K-means 聚類,得到新的聚類中心,以適應可疑物品的檢測任務。
(3)卷積層改進。將原有網絡中卷積層進行改進,將其中的卷積操作和批次歸一化[19]操作進行合并,改進后可以提升網絡的推理速度,一定程度上減少訓練過程中的時間。
(4)采用多尺度訓練。網絡訓練的過程中,采取隨機選擇某一個尺寸作為輸入的圖像,實現多尺度訓練,增強模型的泛化能力。
YOLO-v3 使用Darknet-53 網絡來提取特征。由于網絡層數的加深,容易出現過擬合或梯度(彌散、爆炸)的問題,因此,Darknet-53 網絡中借鑒了殘差網絡的思想:將某一層的原始輸出直接連接到后面的層中,在一些相同維度的層之間構建了res層。采用跳層連接的方式解決了深度神經網絡中梯度消失的問題。
而本文借鑒DenseNet 網絡思想:網絡中每一層的輸入都是前面所有層輸出的累加和,同時該層的輸出也會向后傳播,成為后面一層輸入的一部分。新的Dense-Yolo網絡,采用密集連接可以通過通道上的維度連接來實現特征的復用,有助于可疑物小目標的特征提取,同時,減少參數和降低計算成本,提高網絡效率。因此需要將Darknet-53中部分的殘差層改為密集連接網絡,同時參考DenseNet網絡進行從新命名修改。改進后的網絡結構模型如圖3所示。
具體的改進方式為:由于Darknet-53 的第13 層到第36 層的維度相同,不需要進行維度的轉換,因此將Darknet-53中res層更改為密集連接層,將Darknet-53中15 層、18 層、21 層、24 層、27 層、30 層、33 層和 36 層的shortcut 層改為route 層,原先res 層更改為密集連接層,實現相同維度特征的密集連接,將其設計命名為一個Dense Block-1;將第 40 層、43 層、46 層、49 層、52 層、55層、58層和61層的shortcut層改為route層,原先res層更改為密集連接層,將其設計命名為一個Dense Block-2;同理,將第 65 層、68 層、71 層和 74 層的 shortcut 層改為route層,原先res層更改為密集連接層,將其設計命名為一個Dense Block-3。Darknet-53 中第37 層卷積層與DenseNet 網絡的過渡層(Transition layer)功能相似,都是對輸出的特征圖進行降維,故將第37 層重新命名為Transition layer-1;同理,將第62層重新命名為Transition layer-2。改進的網絡模型輸出的可視化圖像如圖4所示。

圖3 改進的網絡模型

圖4 特征可視化圖像
Dense-Yolo網絡使用YOLO檢測層進行類別輸出,采用3個不同預測尺度對不同大小的目標進行檢測,不同預測尺度分別為13×13、26×26和52×52。預測尺度輸出特征圖有兩個維度是提取到的特征的維度,比如13×13,還有一個維度是采用以下公式進行計算:

式中,B表示每個預測的邊界框的數量,C表示邊界框的類別數。因此另外一個特征維度是3×(5+6)=33。對于本文所制作的數據集,有6 個類別,類別預測使用多標簽分類,使用多個獨立的邏輯logistic 分類器。預測的邊界框的數量是3個,每個邊界框有(x,y,w,h,confidence)五個基本參數。
YOLO-v3 中先驗框參數是應用K均值聚類,預先選擇9 個聚類簇,通過在COCO 數據集中聚類得到的,涉及種類眾多,不適合用于訓練檢測安檢異常物品,因此需要對先驗框重新聚類。
由于傳統的K-means算法采用歐式距離的算法,在聚類時易出現局部最優解的情況,為了獲得更好的IoU(Intersection Over Union)得分,而與樣本框的大小無關,減少大框于小框之間產生無關的錯誤。綜合考慮,對傳統的K-means算法進行改進,在錨聚類的過程中使用重疊度IoU作為兩個框位置相似的度量,計算公式和新距離公式為:

式中,Ground truth表示為真實區域,Prediction表示為預測區域,box代表樣本框,centroid代表K-means算法產生的聚類中心,IoU表示樣本框和聚類中心框的交并比。改進K-means算法實現步驟如下:
(1)從數據集中隨機選取一個樣本點作為初始聚類中心xi。
(2)首先計算每個樣本與當前存在聚類中心之間的距離,用D(x)表示;其次計算每個樣本點被選為下一個聚類中心的概率。
(3)重復第(2)步,直到選擇K個聚類中心。
(4)再針對數據集中的每個樣本xi,計算K個聚類中心的距離,用D(x)表示;并將其分到距離最小的聚類中心所對應的類中。
(5)針對每個類別ci,重新計算它的聚類中心ci=(屬于該類的所有樣本質心)。
(6)重復第(4)步和第(5)步,直到聚類中心的位置不再發生變化。
因此,本文中進行上述方法的改進,根據自制數據集重新聚類分析,聚類過程中簇的中心個數K和平均交并比的關系如圖5所示。根據坐標軸可知在K=9 時平均交并比的得分高并且曲線收斂,因此選擇K=9,從而確定網絡中的錨點數量和坐標位置。新聚類出來的9個錨定框為:(27×19),(33×28),(48×35),(51×43),(63×55),(78×64),(99×82),(118×104),(139×127)。

圖5 聚類結果圖
由于Darknet-53 的模型結構是由一系列的1×1 和3×3 的卷積層組成。在每個卷積層后都會跟一個BN(Batch Normalization)層和一個 LeakyReLU 層。在YOLO-v3中卷積層與BN層的計算公式為:

其中,xconv為卷積之后的計算結果,wi為連接權重,γ為縮放因子,β為偏置,σ2為方差,μ為均值,ε取0.000 000 1。
隨著網絡層數的增多,模型在訓練過程中會占用更多顯存和內存,由于BN層不僅能改善神經網絡的梯度,減少對初始化的依賴,并且能夠改善正則化策略,控制過擬合現象的發生。因此,有必要將卷積層和BN層整合,整合后的計算公式如下:

通過實驗證明,將卷積層與BN層整合后,能夠有效提升網絡的推理速度和加速模型的訓練過程。改進卷積層結構對比如圖6所示。

圖6 改進卷積層結構圖
改進后的檢測算法中采用卷積網絡來提取特征,未使用全連接層來得到預測值,因此,網絡在訓練過程中輸入圖片的尺寸不需要固定。
由于改進網絡中包含有4 個殘差模塊和一個密集連接塊,因此最小尺寸的圖像為輸入圖像的1/32,所以在改變圖像尺寸時,需要保證是32的倍數。因此,將訓練集的圖片大小分為多種圖像尺度[20],分別為{320,352,…,608}。訓練時采取每迭代10 次隨機選取一種尺度訓練。多尺度訓練過程示意圖如圖7所示。

圖7 多尺度訓練過程示意圖
由于X光機下的異常物品沒有大規模的數據集,因此需要自己制作數據集。本文的數據主要來源于某汽車站人工檢測異常的照片和安檢培訓中異常照片。一共收集到異常照片4 780張。
對收集到的數據利用LabeLImg工具對數據集進行目標分類標記,將標記工具生成的xml的文件進行整理,制作成標準的VOC2007數據集格式。將標注分類主要分為以下6類:可疑液體、打火機、剪刀、手機、電腦、充電寶。數據集中的標注的部分異常樣例圖像如圖8所示。

圖8 數據集中標注的異常樣例圖像
由于數據量相對較小,這導致在訓練的過程中容易出現過擬合的問題,因此,本文采用兩種數據增強的方法增加訓練數據的多樣性和復雜性。第一種采用線下數據增強方法,對所收集到的圖片進行裁剪大小、調整角度、調整對比度和添加噪聲,將數據集擴充到27 000張。第二種采用實時數據增強方法,主要是對訓練圖片進行隨機的平移和水平翻轉。在實驗時,隨機將80%照片作為訓練集,剩下的20%作為測試集。
4.2.1 實驗平臺
本實驗在PC端完成,實驗平臺配置如表1所示。其中YOLO-v3算法使用了darknet-53框架,Fast-RCNN和SSD算法使用了Caffe框架。

表1 實驗平臺配置
4.2.2 超參數設置和網絡訓練
改進的Dense-YOLO 模型,訓練采用YOLO-v3 的權重參數作為初始化參數。在訓練過程中采用動態監控,因此,訓練1 000 次保存一次網絡權重,方便選取最優的權重文件。改進網絡檢測效果最優的部分實驗訓練參數設置如表2所示。
Welcome to the world beard competition(世界胡須錦標賽)in Germany(德國)!Here,you can see funny beards.Three hundred men with beards from different countries come together.The one with the most special(特別的)beard wins.

表2 網絡訓練參數表
Dense-YOLO 網絡訓練中,網絡結構損失函數Loss值越小越好,期望值為0。為達到最優性能,迭代的次數選擇20 000。現將迭代5 000 次以后的loss 進行說明:在5 000 到8 500 次時損失函數值較快速下降;8 500 次時降低為初始學習率的0.1 倍,損失值緩慢下降;在15 000 次時學習率在上一次的基礎上再縮小0.1 倍,損失函數值逐漸減小并趨于平穩;17 500次以后損失值在0.02 左右,在20 000 次后結束訓練。訓練loss 變化如圖9所示。

圖9 訓練過程中loss損失圖
4.3.1 網絡結構改進分析
為了驗證對自制數據集中可疑物的檢測效果,本文進行對比實驗。對比實驗中,YOLO-v3 網絡是采用darknet 框架對自制數據集進行訓練,對YOLO-v3 網絡采取優化的三種方法為:(1)修改新的學習率為0.001 8;(2)迭代20 000次;(3)采用新的聚類算法后得到的錨定框;(4)使用尺寸為608×608 的數據集進行訓練。而Dense-YOLO網絡使用本文中提到的卷積層改進、多尺度訓練方法和迭代20 000 次。兩種算法的檢測對比以訓練結束時得到的6種目標的AP值進行對比。圖10中列舉了6種不同物體在兩種算法下的檢測對比。

圖10 兩種算法的檢測對比
由圖10 可知,改進后的Dense-YOLO 網絡模型,對于大目標的檢測,例如電腦、手機和充電寶,檢測精度較高,mAP[21]提升了4.6%;對于小目標的檢測,例如打火機、剪刀,這類的小目標,檢測精度有了較大提升,mAP提升了12.2%。由于可疑液體的檢測結果有一定提升,但易受到容器大小和容器顏色的影響,因此對于可疑液體還需進一步安檢。改進后的檢測效果如圖11所示。

圖11 改進后檢測效果
實驗證明,改進后的Dense-YOLO 網絡模型比原YOLO-v3 網絡模型檢測精度有所提升,其中mAP 提升了7.89%。其次,改進后的網絡提升了可疑物的小目標檢測精度,增強了模型的可靠性。
4.3.2 卷積層改進的對比實驗
在3.3 節中提出改進卷積層的設計,對比實驗采用Dense-YOLO模型,分為卷積層合并的最優模型和未合并的最優模型兩組進行實驗。使用測試集中隨機挑選2 000 張照片在GPU 上進行預測推理,并將推理預測的時間進行平均統計。實驗結果如表3所示。

表3 不同卷積結構推理對比表
實驗結果表明,將卷積層與BN 層合并后的網絡結構,在推理時間上提升了7.89%。說明對于卷積層的合并改進,可以減少計算來提升模型的推理速度。卷積層結構的改進,不僅可以提升訓練速度,還能減少占用的內存和顯存空間。
4.3.3 不同分辨率圖像的性能分析
根據3.4 節中提出的多尺度訓練的方法,本文對測試集中挑選四種尺寸進行性能分析,其中尺寸分別為320×320、416×416、512×512 和608×608。YOLO-v3 網絡分別對四種尺寸的數據集進行訓練,Dense-YOLO網絡使用4.3.1小節中訓練結果。圖12代表兩種算法針對不同圖像尺寸測試結果以mAP數值對比。

圖12 兩種算法在不同尺寸下的對比
由圖12可知,改進后的Dense-YOLO網絡模型相比較YOLO-v3網絡有兩點提升:
(1)采用多尺度的訓練策略,改進后的網絡在不同尺寸上的檢測精度均比YOLO-v3算法在檢測精度上有一定提升,mAP 平均提升4.67%,同時增強模型對于不同輸入尺寸檢測可疑物品的適應性。
(2)采用多尺度訓練策略相比于單一尺度的訓練,多尺度訓練對于高分辨的檢測有著更好的檢測結果。因此,提高輸入網絡中X 光安檢儀圖像的分辨率[22],能進一步提升可疑物品的檢測精度。
4.3.4 檢測模型的對比實驗
為了驗證模型在相同數據集上的檢測效果,使用文獻中Fast-RCNN、SSD、YOLO-v3 三種算法與改進算法作對比。采用圖像的尺寸為608×608,數據集中隨機選取12 000 張,按照8∶2 的比例將其分為訓練集和測試集。對比的性能指標以mAP和FPS作為評價指標。實驗的結果如表4所示。

表4 不同算法的性能分析
從實驗結果分析可知,在四種算法中Fast-RCNN的識別準確率最高,但是檢測的速度是最慢的。改進后的Dense-YOLO網絡的mAP稍低于Fast-RCNN網絡,但是在檢測速度快147.5 倍。改進后的網絡與SSD 算法和YOLO-v3 算法相比,改進后的網絡在mAP 和檢測速度上都有一定提高。由此說明,改進的網絡在準確率和檢測速度均有提高,并且能解決人工利用X光安檢儀檢測可疑物品中效率和準確率無法實時保證的問題。
本文基于YOLO 框架,借鑒DenseNet 網絡中密集連接的思想,利用自制X 光下可疑物品的數據集,提出了一種改進的Dense-YOLO 可疑物目標檢測算法。首先通過使用密集連接,實現了特征融合和復用;其次,對自制數據集采用改進的K-means算法進行維度聚類;然后對卷積層中的網絡進行合并;最后采用多尺度的訓練方法。通過多種方法改進的Dense-YOLO算法,在精度上達到了91.68%,檢測速度上達到了59 f/s,不僅可以幫助安檢人員高效的利用X安檢儀,還能對可疑物品進行準確檢測,一定程度上減少公共隱患。