周志飛,吳金龍,李軼昳,賈力榜,沈玉杰,張 剛,崔 斌
(1.公安部物證鑒定中心,北京 100038;2.北京多維視通技術有限公司,北京 100070;3.中國科學院自動化研究所,北京 100190)
槍支種屬識別是涉槍案件物證檢驗的基礎,對涉槍案件的偵查和檢驗具有重要意義[1-2]。槍支種屬識別以外形特征作為主要判定因素,長期以來,檢驗人員在進行識別時主要以工作經驗為主,以查閱書籍、文獻資料等為輔,導致查詢效率較低。隨著涉槍案件現場物證勘查勘驗對時效性的要求越來越高,槍彈痕跡檢驗領域迫切需要一種快速且準確的槍支識別技術。
境外一些國家和地區的法庭科學機構曾對以圖像識別為基礎的槍種識別展開研究,多數通過傳統圖像識別技術進行槍支識別,且大多利用外形特征提取某個特征點,然后利用特征進行匹配以獲取檢索結果[3-5]。印度法庭科學實驗室的MURTHY 等[4]創建一個包含254 張圖像的9 mm 手槍檢索庫,以槍支整體形狀、握把、扳機等部位作為人工標定的特征點來進行檢索和識別。中國臺灣地區中央警校法庭科學部門的WEN 等[5]對槍支圖像進行外形輪廓特征提取和優化,計算槍支圖像輪廓邊緣到重心的距離分布,以前3 個峰值點的位置作為對比特征,構建一個包含300 支手槍庫容量的檢索庫。目前,中國大陸較少有對以圖像識別為基礎的槍種識別展開研究,但有研究人員對槍支圖像的特征提取與識別進行分析,大多利用傳統圖像匹配技術獲取圖像的特征值以進行槍支與非槍支識別,對于槍支集合下不同種類的槍支識別沒有進一步研究。例如:馮艷平等[6]在太赫茲(THz)圖像上進行閾值分割和邊緣檢測,計算槍的面積、長度、寬度以及槍管與槍托之間的夾角,以區分槍支與非槍支;和睿等[7]探索結合Canny 特征和矩陣相似度理論的圖像檢索算法,并在手槍圖像的檢測和檢索方面進行實驗;張樹江等[8]設計一套槍彈痕跡圖像識別系統,通過利用基于小波直方圖的圖像檢索方法在數據庫中檢索與目標圖像最相似的樣本圖像,從而為槍彈檢驗人員提供參考。
上述研究主要采用傳統的模式識別方法,通常包含特征提取和分類器設計2 個步驟。其中,特征提取由人工設計特征,需要依靠設計者大量的先驗知識,而對于槍支圖像這類特殊的圖像,先驗知識難以挖掘;傳統分類器大多結果較為簡單,難以通過多個簡單閾值完成復雜的圖像識別任務。上述問題導致目前已有的槍支識別算法大多只能研究單一槍種,特征提取單一,數據庫容量小,無法滿足實際應用的需求。基于深度學習的方法[9]可以更好地處理圖像分類任務,相比于傳統機器學習,深度學習方法(如深度卷積神經網絡[10])采用更深、更多層的卷積結構,利用大規模的訓練數據集以端對端的方式來訓練網絡中的權重參數,從而實現目標特征的自動提取和分類,克服人工提取設計特征的缺陷,且更容易學習到深層次的語義特征[10-11]。
一般認為,網絡層數越深,模型表達能力越強,但是深層網絡也帶來了許多問題,如模型過擬合、梯度消失等。殘差網絡(ResNet)[12]通過引入捷徑連接,學習信息的差值并增加梯度傳播,從而有效避免網絡層數增加導致的訓練誤差增大、模型退化問題。殘差網絡被廣泛應用于目標檢測、姿態估計、圖像識別等任務[13]。例如:文獻[14]提出一種改進的殘差網絡,結合交叉熵損失函數與中心損失函數完成人臉識別,其在測試數據集上取得了97.46%的準確率;文獻[15]提出一種基于RestNet101 的頭部姿態估計方法,其利用殘差網絡結合回歸損失預測歐拉角以表示頭部姿態;文獻[16]采用152 層殘差網絡架構,對花卉圖像的特征進行自動提取,實現了一種基于遷移學習的花卉識別系統。
本文采用基于深度學習的方法,通過改進和優化深度殘差網絡模型的訓練方式,使之適用于種類多、樣本少的大規模槍支圖像識別任務。
槍支數據集是槍支圖像檢索的基礎,槍支圖像的質量影響槍支圖像檢索算法的精度。因此,為了保證槍支圖像數據集的圖像質量,本文制定槍支圖像數據集的圖像采集和圖像增強規范。
為了保證槍支圖像數據集的圖像質量,本文參考《比例照相方法規則(GA/T 158-1996)》拍攝槍支物證照片的操作原則,制定圖像采集規范如下:在拍攝前,解除槍支的附件或配件,如瞄準鏡、消音器等,僅保留槍支本體,并且使槍支處于原始狀態;在拍攝時,槍支主體與相機鏡頭角度垂直,槍支主體應位于圖像的中心位置,槍管與水平面平行,槍支的外形特征清晰,光線均勻,背景為純色;一般應拍攝左右兩面的槍支照片,并且拍攝槍支標識等細目照片。
按照圖像采集規范,本文通過實物拍攝、圖冊掃描、互聯網查詢下載等方式,采集到國內外54 個國家和地區共7 364 種槍支,38 156 張槍支圖像,其中,槍支整體圖像數為21 128,槍支細目圖像數為17 028,槍支種類包括手槍、步槍、獵槍、沖鋒槍、機槍等,具體情況如表1所示。部分槍支圖像樣本示例如圖1 所示。

表1 槍支圖像數據集信息Table 1 Dataset information of firearms images

圖1 槍支圖像數據集樣本示例Fig.1 Sample example of the firearms images dataset
由于槍支圖像樣本較少,為了獲取足夠多的數據量以學習槍支型號的魯棒信息,本文使用深度學習中常用的數據增廣方法來對槍支圖像進行增強[11]:首先,將原始圖像統一調整到256 像素×256 像素;然后,對圖像進行裁剪,截取主要以中心裁剪為主,取大小為224 像素×224 像素,每張截取的圖像都進行左右翻轉、上下翻轉,調整圖像亮度,亮度調整因子設置為0.2。
本文檢索系統的開發目標是在自建的制式槍支圖像數據集基礎上,實現對涉案制式槍支圖像中槍支種類信息的自動識別。一方面,由于制式槍支種類多,往往需要層數較深的卷積神經網絡來實現分類;另一方面,由于每種槍支的圖像樣本數量非常有限,采用較深層的神經網絡模型極易產生過擬合問題。相比于普通卷積神經網絡,ResNet[13,17]增加了捷徑連接,捷徑連接可以學習信號的差值,從而有效避免網絡層數增加導致的訓練誤差增大、模型退化問題。因此,本文采用殘差網絡作為槍支圖像識別的基準模型。
深度殘差網絡基本結構如圖2 所示,右側分支稱作殘差分支,左側部分稱作本體分支,x為輸入信號,H(x)是期望輸出。通過捷徑連接即殘差分支,將輸入x跳變連接到輸出層,此時殘差網絡相當于要學習目標值H(x)和x的差值,即殘差F(x):=H(x)-x。因此,通過不斷地訓練使殘差結果逼近0,這樣即使網絡層數不斷加深,準確率也不會下降,網絡輸出始終可以很好地表征網絡輸入的特征信息。殘差的引入使得網絡的參數量和計算復雜度并未提升,任何已有的網絡模型都可以在原有框架的基礎上引入殘差模塊。

圖2 深度殘差網絡基本結構Fig.2 Basic structure of depth residual network
在深度殘差網絡中,為了保證網絡的穩定性和準確性,每個殘差單元都包含3 個基本算子,分別為批歸一化(Batch Normalization,BN)算子、激活算子、池化(Pooling)算子[18]。BN 算子對激活函數的輸入進行歸一化,相當于增加一個約束,限定網絡的配置空間,從而有效解決輸入數據發生偏移和增大的問題,避免梯度消失和梯度爆炸現象。對于輸入的一批(Batch)樣本x=[x1,x2,…,xn],BN 算子的操作如式(1)所示:

其中:μB=為均值;為方差;ε為一個極小值;為歸一化后的激活值。結合槍支圖像種類多、樣本少的特點,本文采用最常用的線性修正(Rectified Linear Unit,ReLU)激活算子。
對于池化算子,針對槍支識別問題,本文在初始輸入特征時采用最大池化(Max Pooling),可以更好地保留圖像紋理特征;在最后一個卷積層的特征圖上,采用全局平均池化(Average Pooling),這樣更有利于保留整體數據信息,得到用于槍支檢索的高級特征。
槍支圖像數據集中槍支類別多(上千種類別),每種槍支圖像的樣本又很少(每種類別的槍支圖片平均只有2~3 張),導致難以實現穩定的網絡訓練,網絡訓練非常容易過擬合。因此,本文構建一種新的多任務級聯殘差網絡模型,該網絡模型共包含4 個任務,或稱為4 個階段,從而實現由粗到細的槍支圖像分級識別和檢索:第一階段實現槍支圖像的左右朝向分類;第二階段從槍族的概念出發,將從同一個槍族發展變種而來的槍支類型合并為一類,稱為槍族類(IDFamily);第三階段依據每個大類中槍支圖像的外觀,將較為相似的槍支和明顯不相似的槍支再次進行合并和分類,稱為相似類(IDSimilar);第四階段則細分到具體型號的槍支類型,稱為原始類(IDorigin)。網絡模型中包含的這4 個階段均采用Softmax 損失函數[19]輸出其分值,如式(2)所示:

最后,整個網絡模型通過融合這4 個階段Softmax 損失函數的輸出,共同約束需要查找的槍支圖像和庫中的槍支圖像的相似度,訓練深度網絡模型參數,從而獲取高級檢索特征。
此外,針對基于深度殘差網絡的槍支圖像識別任務,本文嘗試18 層殘差網絡(ResNet18)、50 層殘差網絡(ResNet50)和101 層殘差網絡(ResNet101),對比實驗結果發現,ResNet18 網絡可以滿足應用要求,并且由于其網絡層數較少,模型不容易出現過擬合問題。
改進后的多任務級聯殘差網絡整體結構如圖3所示,其中共包含4 個階段,每個階段(StageN,N=1,2,3,4)中都包含一個2.1 節所述的基礎網絡,該基礎網絡是一個包含BN、ReLU 和Pooling 的ResNet18。在每個Stage,信息傳遞有2 條支路,右側為殘差分支,左側為本體分支。1×1 的卷積層加在殘差分支,可以在改變輸出通道數的同時提高非線性特性,進一步提升模型表現能力。

圖3 槍支識別系統網絡架構Fig.3 Firearms identification system network architecture
整個槍支識別系統模型的步驟如下:
步驟1創建一定數量的槍支圖像樣本,采用代碼自動化處理及人工處理相結合的方式將槍支圖像粗分為整槍、槍支部件和標記錯誤圖像,并剔除無法識別的圖像。
步驟2對圖像樣本進行剪裁及翻轉,再將樣本按人工經驗提取出部分數據,按所屬類別進行分類,拆分成訓練集和測試集。
步驟3將處理好的圖像輸入進行7×7 卷積、BN、ReLU 激活及最大池化操作。
步驟4瓶頸塊結構如圖3 中StageN模塊所示,右側為殘差分支,左側為本體分支。對于本體分支,首先對輸入數據進行3×3 卷積、BN 及第一次ReLU 非線性激活,接著將得到的特征送入下一層網絡,再進行一次卷積和BN 操作;對于殘差分支,對輸入數據進行1×1卷積、BN 然后作為輸出,與左側分支特征圖進行合并,進行第二次ReLU 激活;隨后將第二次ReLU 非線性激活的輸出結果作為輸入,送入本體分支進行3×3 卷積、BN 及第三次ReLU 非線性激活,進一步進行3×3 卷積、BN 處理得到相應的特征圖。本體分支特征圖與殘差分支特征圖相合并,進行第四次ReLU 激活,整個過程構成網絡的一個階段(Stage)。
步驟5槍支識別網絡模型由依次相連的4 個Stage 組成,每一段網絡結構類似。對第四階段(Stage4)輸出的槍支二維特征圖,在池化層進行全局平均池化,然后接入全連接層,并通過Softmax 層進行歸一化處理,采用4 個Softmax 損失函數聯合作用,約束槍支的左右朝向、槍族屬性(IDFamily)、相似槍支類(IDSimilar)和精確的槍支型號(IDorigin)。
步驟6將ImageNet[20]上預訓練模型的權重加載到改進ResNet上對應的層,設置學習率、Batch 大小、權重衰減正則項等參數。對訓練數據進行迭代訓練,保存多次訓練中最高識別精度的模型權重,并在測試集上加載訓練好的模型進行測試,從而驗證模型精度。
根據槍支圖像識別算法的應用需求,本文設計一種槍支圖像檢索系統,該系統基于B/S 架構,部署于公安網,采用Java 開發語言。系統以槍支圖像數據集和槍支基礎信息數據庫數據作為支撐,以槍支圖像檢索算法為核心功能,通過上傳槍支物證圖像,為用戶提供槍支圖像自動識別和信息查詢等服務。槍支圖像檢索系統架構如圖4 所示。

圖4 槍支圖像檢索系統架構Fig.4 Firearm images retrieval system architecture
槍支圖像檢索系統包括圖像上傳、圖像比對、信息查詢3 個功能模塊。用戶按照要求將圖像上傳到系統后,槍支圖像檢索算法自動提取所上傳槍支圖像的特征,并與系統中槍支圖像數據集的圖像特征進行比對,按照相似度由高到低依次排列識別到的槍支圖像。用戶可以選擇槍支圖像查閱槍支詳情并進一步確認查詢結果,如圖5 所示。

圖5 對比結果頁面Fig.5 Comparison results pages
本文所提制式槍支圖像識別系統基于PyTorch 深度學習框架構建,采用Java 語言搭建實現前端業務系統。系統測試環境為Ubuntu16.04操作系統,Intel Core i7處理器,GTX1080Ti 顯卡,顯存11 GB。模型訓練采用Adam 優化算法,批次大小(Batch size)設為32,初始學習率設為10-4,在經過30 個輪次的訓練后,學習率逐步衰減到10-6。評估指標主要包括:
1)前n位命中概率(Rank-n),即將待檢索的圖像輸入識別網絡提取特征后,計算其與數據庫中各類槍種圖像特征的歐式距離,以該距離作為相似度從而對檢索結果進行排序,排序結果中最靠前的n張圖像中有正確結果的概率。Rank-n具體計算如式(3)所示:

其中:N為待檢索的圖像總數量。
2)模型推理速度,即每秒可以處理的圖像幀數(Frame Per Second,FPS)。
測試樣本從槍支測試數據集中選取,檢索數據集為本文2.1 節所述的自建槍支數據集,共包含7 364 種類型的槍支。在槍種的挑選上,從實戰應用的角度出發,用于測試的槍支圖像涵蓋了國內常見制式槍支,如51 式7.62 mm 手 槍、54 式7.62 mm 手槍、56 式7.62 mm 沖鋒槍、64 式7.62 mm 手槍、92 式9 mm 手槍、56 式半自動手槍等,同時包括國外知名槍支,如格洛克17 手槍、伯萊塔92F 手槍、西格紹爾P229 手槍、魯格P85 手槍等,共計874 種槍支類型,1 018 張槍支圖像。
將3.1 節所選取的1 018 張測試槍支圖像逐一輸入本文所搭建的制式槍支圖像檢索系統,提取測試圖像的深度特征,并與數據庫中每類槍支圖像的深度特征進行比較,計算其歐式距離,按照歐式距離的相似度對庫中檢索的每類槍支圖像排序輸出,記錄排序結果,獲取前n位命中的檢索結果。同時,除了與經典殘差網絡(ResNet)模型[12]進行比較,還和近期主流分類網絡模型EfficientNet[21]、專門用于細粒度圖像分類的網絡模型NTS-net[22]進行比較。表2 所示為采用本文模型、殘差網絡ResNet18、ResNet50、EfficientNet 和NTS-net對相同樣本進行訓練后的測試結果,其中,檢索庫槍支種類數為7 364,檢索庫槍支圖像數量為21 128,測試庫圖像數量為1 018。

表2 5 種模型的測試結果Table 2 Test results of five models %
從表2 可以看出:采用ResNet50 雖然在訓練集中能夠獲得比ResNet18 更好的準確率,但是在測試集中前20 位命中概率比ResNet18 略微下降,說明對于細粒度小樣本分類問題,采用ResNet50 會造成過學習;標準的EfficientNet 模型結果優于ResNet;專門用于細粒度圖像分類的NTS-net 模型準確率優于EfficientNet,并且非常接近本文模型。圖6、圖7所示為2把槍支(64式7.62 mm 手槍、格洛克17 手槍)圖像檢索識別結果,從中可以看出,本文基于多任務級聯殘差網絡模型可以準確識別出槍支的型號,并且將與之相似的槍支型號的圖像均按照相似度進行排序展示。

圖6 64 式手槍檢索結果Fig.6 Retrieval results of 64 pistol

圖7 格洛克17 手槍檢索結果Fig.7 Retrieval results of Glock 17 pistol
表3 所示為不同模型的參數量大小以及推理平均幀率,從表3 可以看出:當批次大小為32 時,本文模型的幀率雖然略微低于ResNet50,但基本也可滿足實際需求,并且在本文所構建的槍支庫中也能夠實現秒級檢索返回;EfficientNet 雖然有較小的模型參數量,但是其推理速度并無太大優勢,這主要是由于采用EfficientNet 生成的特征向量維數較大。

表3 模型參數量及推理速度比較Table 3 Comparison of model parameters and reasoning speed
傳統的槍支識別技術依賴檢驗人員的經驗,查詢速度慢且精度低。本文建立一種基于多任務級聯深度殘差網絡的槍支圖像識別模型,該模型以ResNet18 為基本構建單元,通過對槍支圖像從像素級特征到語義級特征的分級劃分,并融合每個任務的損失函數,以共同訓練網絡參數,實現針對制式槍支圖像的自動識別。在此基礎上,采用Java 語言構建一套槍支圖像自動識別系統。實驗結果表明,該模型對真實場景槍支圖像的Rank-20 識別準確率超過95%,并且具有較好的魯棒性。下一步將對深度網絡模型的輕量化進行研究,降低識別模型的參數量并提高模型的推理速度。此外,探索并實現針對非制式槍支圖像的識別和檢索系統也是今后的研究方向。