張 健 王衛民 唐 洋
(江蘇科技大學計算機學院 鎮江 212003)
近年來,隨著全球反恐形勢日益嚴峻,機場、高鐵、大型活動場所及政府要害部門等的安檢排爆受到各國廣泛重視。2018 年6 月26 日,民航局頒布《民用航空毫米波人體成像安全檢查設備鑒定內控標準》及《民用航空毫米波人體成像安全檢查設備違禁物品探測能力測試程序》,正式將毫米波人體成像設備納入中國民航安檢設備清單[1]。毫米波成像技術能夠在不直接接觸人體的情況下,有效檢測出在衣物覆蓋下藏匿于人體各部位的物品。此外,毫米波人體成像設備具有對人體無害、穿透力強的特點,其發射功率不及手機電磁波輻射的千分之一。未來,毫米波人體成像技術將逐步應用到機場安檢中,毫米波人體圖像中違禁物品的檢測將是一個熱門的研究課題。
毫米波人體圖像中違禁物品的檢測方法基本可分為兩類:基于圖像分割和基于目標檢測。基于圖像分割的方法著重于圖像的邊緣特征,文獻[2]通過基于灰度值等統計特征來分割毫米波圖像中的違禁物品,該方法原理簡單,實現速度較快,但其假設違禁物品與人體背景之間有顯著的灰度差異,不適合檢測與人體背景灰度值相似的違禁物品。基于目標檢測的方法是利用深度學習技術對候選目標進行定位,并對候選目標進行分類,判斷其是否是違禁品。文獻[3]利用卷積神經網絡提取毫米波人體圖像的特征并用全連接層進行分類,相比于現有的方法,其算法真正例率更高,假正例率更低,但其利用滑動窗口截取局部毫米波圖像得到可疑目標熱度圖,滑動窗口的方式使得截取的局部圖像大量重疊,從而模型的檢測速度將大幅降低。
深度學習是當今人工智能領域研究和應用開發的熱點,最近在自然圖像目標識別、演講自動識別和機器翻譯等極具挑戰性的任務中均取得突破性成功[7]。文獻[8]先將毫米波人體圖像按照身體部位分割成17 個不同的區塊(比如左前臂、右前臂,上胸部、肚子等不同的身體部位),然后用CNN對這些區塊分別提取特征并用全連接層進行分類。相比于文獻[4~6]等方法,其對違禁品的種類魯棒性更高,但其識別效果受限于圖像分割的結果。
針對上述采用深度學習技術解決毫米波人體圖像中違禁物品檢測的問題,本文提出一種基于CNN 和LSTM 的毫米波人體圖像違禁物品檢測的深度學習算法,首先對水平方向16 個不同視圖的毫米波人體圖像分別提取特征,然后利用LSTM 進行多視圖圖像特征融合,最后用全連接層進行分類,得出人體17 個不同的區塊藏有違禁品的概率值。
實驗中的毫米波圖像來自于Kaggle 比賽“Passenger Screening Algorithm Challenge”[9],數據集包含1247 個毫米波人體掃描圖像,所有圖像由新一代高清晰成像技術系統(High Definition-Advanced Imaging Technology,HD-AIT)生成。為了模仿實際掃描場景,毫米波圖像由穿著不同服裝類型(從夏天輕薄衣服到冬季厚重衣服),不同體重指數,不同性別,攜帶不同數量和不同類型的違禁物品的志愿者經HD-AIT掃描而成。
比賽數據共有四種數據格式,分別是.aps,.a3daps,.a3d,.ahi,所有格式都表示相同的掃描個體,它們是3D 圖像的不同表示形式。實驗中采用的是aps數據格式,每一個aps文件包含16張圖像,它們是人體水平360°不同方向的掃描投影序列,共有16 個不同的視圖,如圖1 所示。身體被劃分成17 個不同的區域,如圖2 所示。對于每一個aps 文件,其真實標簽(groud truth)為一個二進制編碼序列,代表身體不同區域是否藏有違禁品。比如[1 0000 0000 0000 0000]表示區域1 藏有違禁品,其他區域沒有違禁品。

圖1 人體16張不同視圖圖像

圖2 身體17個不同的區域
評估方法為二進制對數損失函數:

AlexNet[10]、VGGNet[11]和GoogleNet[12]已被證明在圖像分類任務上可以獲得良好的效果。ResNet是何凱明于2015 年提出的CNN 結構模型,該方法以152 層的網絡模型在ILSVRC2015 上獲得第一名,將Top5 錯誤率降低到了3.75%[13]。本文采用ResNet50作為特征提取器。
ResNet50 是有49 層卷積層和1 層全連接層的神經網絡,每個卷積層后緊跟一個批歸一化層,后再接一個非線性激活層,只有第一層卷積層后面有一個最大池化層,最后一層卷積層后有一個平均池化層,神經網絡的最后一層是有1000 個神經單元的全連接層,激活函數是SoftMax,用來分類ImageNet 1000個類別。層的類型解釋如下。
卷積層:CNN通過卷積核將輸入映射到特征圖(feature map),特征圖中的每一個神經元與輸入的一小塊區域(本地連接域)連接,本地連接域的大小由卷積核的大小確定,一層卷積層通常有多個卷積核。
每個神經元由卷積核的參數W 與本地連接域點乘得到,參數個數由卷積核的大小F 和輸入的深度D 確定。為了降低網絡參數,每一個特征圖共享權重和偏置。從而神經網絡的前向計算等價于卷積核的參數與輸入的卷積,這也是卷積層命名的由來。
卷積層的激活函數使用的是ReLu 函數,f(x)=max(0,x)用ReLu 激活函數訓練一個4 層的神經網絡比用雙曲正切函數Tanh最大能快6倍的時間[10]。
批歸一化層:批歸一化層介于卷積層與激活層之間,通過對模型各層的輸入進行歸一化操作,使得各層的輸入保持穩定的分布,從而加速模型訓練。訓練同一個GoogleNet,使用批歸一化比不使用批歸一化快14倍[14]。
池化層:池化層一般在卷積層之后,對網絡進行下采樣操作,降低網絡的空間尺寸,另外也減少了網絡的參數和計算復雜度,還可以防止模型過擬合。ResNet 中只有第一層和最后一層卷積層之后有池化層,分別是最大池化層和平均池化層。最大池化層計算前一層中池化區域的最大值,平均池化層計算前一層中池化區域的平均值。
ResNet 的主要特點是殘差連接,如圖3 所示,輸入x 經過多個卷積層、池化層之后得到輸出F(x),加上恒等映射之后的輸出變為F(x)+x。這樣既沒有增加參數數量也沒有增加模型復雜度,且使訓練特別深的模型成為可能。

圖3 殘差連接塊
循環神經網絡(Recurrent neural network,RNN)是一類用于處理時間序列數據的神經網絡。長短期記憶網絡(Long short-term memory,LSTM)[18]是特殊的RNN,其已經在許多應用中取得重大成功,如無約束手寫識別[15]、語音識別[16]、圖像內容自動描述[17]。
LSTM 塊如圖4 所示。在淺循環網絡的架構下,相應的前向傳播公式如式(2)所示。更深的架構也被成功應用[19]。LSTM 循環網絡除了外部的RNN 循環外,還具有內部“LSTM 細胞”循環(自環),因此LSTM 不是簡單的向輸入和循環單元的仿射變化之后施加一個逐元素的非線性。與普通的循環網絡類似,沒有單元有相同的輸入和輸出,但也有更多的參數和控制信息流動的門控單元系統。LSTM網絡比簡單的循環架構更易于學習長期依賴。


圖4 LSTM循環網絡“細胞”框圖
本文所使用的模型結構如圖5 所示,ResNet 結構去除了最頂層的池化層和全連接層,加了一些卷積層和最后一個特征連接層,最后輸出49664 維特征。
先用CNN對一個人的16張不同視圖的毫米波人體圖像分別提取特征,然后將這些特征看成是時序數據送進LSTM 模型,LSTM 模型輸出的特征再經包含有17 個神經元的全連接層進行分類,最終得出人體17個區域分別藏有違禁品的概率值。

圖5 人體毫米波圖像違禁物品識別模型框圖
為了使得毫米波人體圖像中的違禁物品更容易被檢測出來,需要提高圖像的對比度。原始圖像每個像素點的值介于[0,0.001],本方法對人體16張像分別作了圖像灰度化,即將每個像素點的值均勻拉伸到[0,255],然后對每張灰度圖像做直方圖均衡化,從而提高了圖像的對比度,灰度圖與直方圖均衡化后圖像如圖6 所示。最后,為了使模型能夠快速收斂,在圖像送進模型訓練之前,對像做了均值為0,方差為1的操作。

圖6 灰度圖與直方圖均衡化對比
由于比賽方只提供了1247 個人的毫米波圖像,對于深度學習模型的訓練,數據量很小,因此,有必要做一些數據增強來擴增數據集。本方法做的數據增強方式有五種。
1)上下左右隨機平移百分之一的像素點。
2)繞圖像中心點順時針或逆時針隨機旋轉1°~15°,總共15個刻度值。
3)隨機放大或縮小,放大和縮小范圍為95%~105%。
4)隨機水平翻轉圖像。
5)隨機明暗度調整,明暗范圍為80%~120%。
需要注意水平翻轉圖像的同時,也要對標簽做相應的翻轉操作。標簽中每一個位置上的二進制值代表著身體上固定的區域是否藏有違禁品,圖像左右翻轉后,對應的區域也相應改變了,標簽也需要跟著一起改變。
其中單隨機旋轉一種操作就使原始數據集數量擴大了30 倍,本方法采用的實時數據增強,不需要提前對所有圖像做好數據增強并保存到硬盤,不僅減小了硬盤空間的使用需求,提高了模型訓練的效率,而且也極大地降低了模型過擬合的風險。
數據集總共有1247 個aps 文件,實驗中用于訓練模型的訓練集數量為1047,用于調整模型參數的驗證集數量為100,訓練集和驗證集是隨機劃分的,剩下的100 個的aps文件作為測試集,用來評估模型訓練的好壞,也是比賽的成績依據。實驗所使用的電腦配置:
操作系統:ubuntu 16.04,
CPU 型 號:Intel(R)Core(TM)i9-7900X CPU@3.30GHz,
顯卡型號:GTX1080Ti,
內存大小:32G。
實驗使用Python3.5 編程,利用深度學習框架Pytorch 搭建神經網絡模型,訓練時先用ImageNet數據集對CNN 模型進行預訓練,然后再用比賽所提供的數據進行遷移學習。模型單張圖像輸入大小為660*512,訓練模型用的優化器是SGD,每小批的數據大小為2,初始學習率為0.01,訓練中每一輪按余弦函數方式降低學習率,總共訓練了150 輪,此時的訓練損失函數和驗證損失函數都趨于平穩,且已收斂到最小值。收斂后的驗證損失函數的值為0.02。圖7 為訓練損失函數值和驗證損失函數值隨訓練輪數的變化曲線。模型訓練時間為14 小時。
測試時,對輸入圖像做了和訓練時一樣的數據增強,結果取平均值。對于100 個aps測試集,最終結果提交Kaggle比賽,損失函數值為0.03。對于17個概率值,我們設定17 個閾值,如果概率值大于等于該閾值,則將該區塊判定為藏有違禁品,否則判定為沒有違禁品。經閾值處理后,各區塊的正確率如表1所示,所有區塊的識別正確率為99.76%。

圖7 訓練損失函數和驗證損失函數值隨迭代輪數變化曲線

表1 人體17個區域識別正確率
提出了一種基于深度學習技術的方法來實現毫米波人體圖像違禁物品識別。本文使用CNN 對人體的16 個不同視圖的毫米波圖像分別提取特征,然后用LSTM 對多視圖圖像特征進行特征融合,最后用17 路sigmoid 分類器得到人體17 個部位藏有違禁物品的概率值。各區塊的概率值經閾值處理后,所有區塊的識別正確率達到99.76%,驗證了這種方法的有效性。實驗的高正確率得益于CNN 結構的精心設計,摒棄池化層,減少模型空間信息的損失,另外利用LSTM 融合同一個人體的多視圖圖像特征促使識別效果更好。在下一步工作中,我們希望在實際安檢場景下繼續提高模型識別的準確度。