白小軍, 劉 穎, 申宇飛, 周 冬
( 1 西安工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,陜西 西安 710016;2 電子信息現(xiàn)場(chǎng)勘驗(yàn)應(yīng)用技術(shù)公安部重點(diǎn)實(shí)驗(yàn)室, 陜西 西安 710121 )
現(xiàn)勘圖像是現(xiàn)場(chǎng)勘驗(yàn)信息的重要組成部分,其分類和檢索可為刑偵破案提供重要線索[1]。圖像分類和檢索任務(wù)都依賴于圖像特征[2-3],目前來看,圖像特征可分為淺層特征與深度特征兩大類。淺層特征是經(jīng)過人工設(shè)計(jì)的特征表達(dá)方式,主要使用顏色、紋理、形狀等信息,由圖像專家基于領(lǐng)域知識(shí)設(shè)計(jì)合理的算法提取和表達(dá);深度特征則是近幾年被提出,是一種基于數(shù)據(jù)驅(qū)動(dòng)的自適應(yīng)特征表達(dá)方式,該方式不需要多少領(lǐng)域知識(shí),只需迭代運(yùn)行一些簡(jiǎn)單的過程即可獲得高質(zhì)量的特征。
文獻(xiàn)[4]中提出了一種兩層體系的刑偵現(xiàn)勘圖像檢索方法,指出不同類別的圖像適用的特征有所差異,因此,首先要對(duì)圖像分類,然后根據(jù)類別選擇合適的特征執(zhí)行檢索,但文中使用的淺層特征分類效果不夠理想。文獻(xiàn)[5]提出了一種改進(jìn)的現(xiàn)勘圖像分類算法,提高了分類的準(zhǔn)確率,但計(jì)算量大,效率不夠理想。以上兩篇文獻(xiàn)都采用淺層特征執(zhí)行分類任務(wù),本文研究基于深度特征的圖像分類技術(shù),采用卷積神經(jīng)網(wǎng)絡(luò),在刑偵現(xiàn)勘圖像庫(kù)上進(jìn)行訓(xùn)練優(yōu)化,以優(yōu)化的深度網(wǎng)絡(luò)提取圖像特征,并進(jìn)行圖像分類。
卷積神經(jīng)網(wǎng)絡(luò)是最有代表性的人工神經(jīng)網(wǎng)絡(luò),在深度學(xué)習(xí)中獲得了廣泛的應(yīng)用。一般的卷積神經(jīng)網(wǎng)絡(luò)通常由卷積層、池化層、全連接層以及分類層等多個(gè)層級(jí)構(gòu)成。紐約大學(xué)教授Yann LeCun在1998年提出的LeNet[6]是早期卷積神經(jīng)網(wǎng)絡(luò)的代表,在手寫數(shù)字識(shí)別方面取得了巨大的成功;近幾年最有代表性的卷積神經(jīng)網(wǎng)絡(luò)是由牛津大學(xué)計(jì)算機(jī)視覺組(visual geometry group,VGG)與Google DeepMind研究員一起研發(fā)的VGG[7]網(wǎng)絡(luò),以及由微軟亞洲研究院的何凱明團(tuán)隊(duì)提出的深度殘差網(wǎng)絡(luò)[8](deep residual network,Res)等。
VGG通過反復(fù)堆疊3×3的小型卷積核和3×3的最大池化層,構(gòu)筑深度神經(jīng)網(wǎng)絡(luò);面對(duì)層數(shù)加深時(shí)的梯度消失問題,通過逐層訓(xùn)練的方式,成功將網(wǎng)絡(luò)深度增加到16層以上,在ImageNet數(shù)據(jù)集上使圖像分類的錯(cuò)誤率降到了7.3%。Res網(wǎng)絡(luò)則針對(duì)更深層次的網(wǎng)絡(luò)訓(xùn)練困難的問題,提出了殘差學(xué)習(xí)框架,采用堆疊殘差結(jié)構(gòu)塊的形式,構(gòu)建超級(jí)深度網(wǎng)絡(luò),通過算法優(yōu)化,使其計(jì)算復(fù)雜度比VGG網(wǎng)絡(luò)更低,并使圖像分類的準(zhǔn)確率首次超越了人類的分辨率。
VGG網(wǎng)絡(luò)的典型結(jié)構(gòu)如圖1所示。圖中Conv1~Conv5為5組卷積,每組中又可包含多層卷積,每組卷積后都帶一個(gè)最大池化層(max pool);其后有3個(gè)全連接層(fc1-fc3),中間使用dropout技術(shù)解決過擬合問題;通過卷積、池化和全連接等步驟,提取到圖像的深度特征。最后一層是Softmax分類器,根據(jù)fc3層的輸出實(shí)現(xiàn)圖像分類。
圖1 VGG網(wǎng)絡(luò)結(jié)構(gòu)示意
對(duì)于Softmax分類器,輸入向量V,用(V1,V2,…,Vn)表示,輸出為代表圖像標(biāo)簽的向量S,用(S1,S2,…,Sn)表示,每一個(gè)分量代表屬于某個(gè)類別的概率,Si的計(jì)算公式[9]為
(1)
其中i∈(1,n),j∈(1,n)。
fc3層的輸出經(jīng)過Softmax分類器后,轉(zhuǎn)換為分類到n個(gè)類別的概率。例如當(dāng)n=3時(shí),假設(shè)Softmax的輸出向量為[0.09, 0.67, 0.24],則說明分類到第二個(gè)類別的概率為67%。
多層的神經(jīng)網(wǎng)絡(luò)中蘊(yùn)含著海量的參數(shù),能夠擬合任意復(fù)雜的分類模型,為使網(wǎng)絡(luò)參數(shù)達(dá)到最優(yōu),需要經(jīng)過很多輪的迭代訓(xùn)練。訓(xùn)練的目標(biāo)是使分類損失最小化[9],通常使用的損失函數(shù)為
(2)
式中l(wèi)ossk代表第k個(gè)樣本的分類損失;S為分類器的輸出向量,根據(jù)式(1)計(jì)算得到;ti為期望的輸出向量t的分量,若正確的類別維度則取值為1,其它類別維度取值為0。將所有樣本的分類損失累加起來,即可得到訓(xùn)練集上的總損失。
為實(shí)現(xiàn)最優(yōu)化目標(biāo),神經(jīng)網(wǎng)絡(luò)訓(xùn)練中使用梯度下降算法[10]找到損失函數(shù)的極值點(diǎn),具體迭代公式為
wi+1=wi-ηloss(wi),
(3)
其中,loss(wi)為第i輪迭代后的分類損失,wi為第i輪的模型參數(shù),常量η代表學(xué)習(xí)速率。該式的含義是根據(jù)第i輪訓(xùn)練的模型參數(shù)和損失,通過求偏導(dǎo)的方式找到損失下降最快的方向,進(jìn)而調(diào)整下一輪訓(xùn)練的模型參數(shù)。訓(xùn)練的過程就是迭代執(zhí)行梯度下降算法,直到達(dá)到最大訓(xùn)練次數(shù),或使損失達(dá)到收斂。
Res網(wǎng)絡(luò)的結(jié)構(gòu)過于復(fù)雜,這里不做詳細(xì)介紹。同VGG網(wǎng)絡(luò)一樣,Res網(wǎng)絡(luò)也分為特征提取網(wǎng)絡(luò)與分類器兩部分,同樣使用SoftMax分類器,其訓(xùn)練和優(yōu)化方法與VGG網(wǎng)絡(luò)相同。
考慮到卷積神經(jīng)網(wǎng)絡(luò)不但分類準(zhǔn)確率高,而且具有良好的跨域通用的特性,因此,使用預(yù)訓(xùn)練的網(wǎng)絡(luò)模型,在新的數(shù)據(jù)集上進(jìn)行微調(diào)(再訓(xùn)練調(diào)優(yōu))后,一般都可以很好的適應(yīng)新的數(shù)據(jù)集。所以本文分別選擇了16層的VGG網(wǎng)絡(luò)和50層的Res網(wǎng)絡(luò),在具有10個(gè)類別、2900張圖片的刑偵現(xiàn)勘圖像庫(kù)上進(jìn)行訓(xùn)練和測(cè)試,過程如圖2所示:
圖2 現(xiàn)勘圖像分類任務(wù)訓(xùn)練與測(cè)試過程
第1步對(duì)現(xiàn)勘圖庫(kù)中的圖片進(jìn)行預(yù)處理,主要是為每張圖片標(biāo)注類別;
第2步基于TensorFlow平臺(tái),選擇一個(gè)開源的神經(jīng)網(wǎng)絡(luò)項(xiàng)目,在本地搭建自己的深度網(wǎng)絡(luò);
第3步調(diào)整全連接層(fc3)的輸出類別數(shù)??紤]到一般的神經(jīng)網(wǎng)絡(luò)都在ImageNet數(shù)據(jù)集上訓(xùn)練和測(cè)試,其輸出類別通常在1000個(gè)以上,所選用的項(xiàng)目只包含10個(gè)類別,所以調(diào)整最后一個(gè)全連接層(fc3)的輸出類別數(shù)為10。
第4步加載預(yù)訓(xùn)練的模型參數(shù)。對(duì)于深度網(wǎng)絡(luò),從頭訓(xùn)練使其達(dá)到最優(yōu)是一件非常困難的事情,利用卷積神經(jīng)網(wǎng)絡(luò)具有良好的跨域特性,使用預(yù)訓(xùn)練的模型參數(shù)作為初始參數(shù),可以快速訓(xùn)練獲得局部最優(yōu)解,所以在網(wǎng)絡(luò)初始化時(shí)需要要加載預(yù)訓(xùn)練的模型參數(shù);
第5步獲得最優(yōu)刑偵圖庫(kù)的模型參數(shù)。使用標(biāo)注好的刑偵現(xiàn)勘圖庫(kù),在初始網(wǎng)絡(luò)模型上進(jìn)行再訓(xùn)練,對(duì)模型參數(shù)進(jìn)行微調(diào),以得到最優(yōu)刑偵圖庫(kù)的模型參數(shù);
第6步導(dǎo)出保存這些模型參數(shù)。調(diào)優(yōu)后的模型參數(shù)將用于后續(xù)的圖像分類、檢索等任務(wù),所以需要導(dǎo)出保存這些模型參數(shù);
第7步使用優(yōu)化好的卷積神經(jīng)網(wǎng)絡(luò),對(duì)測(cè)試集中的現(xiàn)勘圖像進(jìn)行分類。
本文的實(shí)驗(yàn)數(shù)據(jù)集采用某省公安廳刑偵局提供的2900幅刑偵現(xiàn)勘圖像,共分為10個(gè)類別,包括車輛、房屋、道路、門窗、指紋、腳印、血跡、兇器、輪胎以及草圖等,部分實(shí)例圖像如圖3所示。
圖3 現(xiàn)勘圖像數(shù)據(jù)庫(kù)例圖
實(shí)驗(yàn)中將2900幅圖像分為3部分:取2500幅作為訓(xùn)練集,200幅作為驗(yàn)證集,200幅作為測(cè)試集。測(cè)試集用于最終測(cè)試分類的準(zhǔn)確率,而驗(yàn)證集主要用于確定最佳的訓(xùn)練迭代次數(shù)。
由于引入了預(yù)訓(xùn)練模型參數(shù),訓(xùn)練的迭代次數(shù)可以大幅度減小。在訓(xùn)練過程中,既要防止訓(xùn)練不足造成的“欠擬合”,還要防止過度訓(xùn)練造成的“過擬合”。在訓(xùn)練中將學(xué)習(xí)速率設(shè)置為0.001,mini-batch參數(shù)設(shè)置為30(一次輸入30幅圖像進(jìn)行訓(xùn)練),每迭代100輪,導(dǎo)出一次模型參數(shù),并輸出一次損失值。實(shí)驗(yàn)中得到VGG網(wǎng)絡(luò)和Res網(wǎng)絡(luò)的損失下降曲線分別如圖4所示。
圖4 網(wǎng)絡(luò)訓(xùn)練中的損失下降曲線
為獲得最佳模型參數(shù),在驗(yàn)證集上分別導(dǎo)入各次迭代訓(xùn)練產(chǎn)生的模型參數(shù),并分別計(jì)算分類任務(wù)損失,損失變化曲線如圖5所示。可以看出,在訓(xùn)練集上經(jīng)過300輪迭代后,損失已經(jīng)下降到了合理的水平;而在驗(yàn)證集上的測(cè)試表明,300次迭代后損失產(chǎn)生了震蕩,所以確定300次迭代產(chǎn)生的模型為最優(yōu)解。以該模型為依據(jù),在測(cè)試集上進(jìn)行圖像分類實(shí)驗(yàn),測(cè)試分類準(zhǔn)確率結(jié)果如表1所示。
圖5 驗(yàn)證集上的損失變化曲線
表1 兩種網(wǎng)絡(luò)下的圖像分類任務(wù)測(cè)試結(jié)果
可以看出,Res網(wǎng)絡(luò)采用更深的層次結(jié)構(gòu),分類準(zhǔn)確率較之VGG網(wǎng)絡(luò)稍有提高。而與文獻(xiàn)[4]中采用傳統(tǒng)淺層特征分類的結(jié)果相比,采用深度特征分類的準(zhǔn)確率有了大幅度提高。
在VGG和Res網(wǎng)絡(luò)中,最后一個(gè)卷積層的輸出經(jīng)過池化進(jìn)入全連接層,在全連接層自適應(yīng)的生成圖像特征,這可理解為單尺度的特征表達(dá)。本文希望找到一種多尺度的特征表達(dá)方式[11],以改善特征的質(zhì)量,進(jìn)而提高圖像分類效果。具體做法是將原來的最后一個(gè)池化層,改為金字塔池化層[12]。如圖6所示,最后一個(gè)卷積層的輸出為一系列特征圖,對(duì)這些特征圖分別進(jìn)行多尺度池化,以增強(qiáng)圖像的特征表達(dá)能力。
圖6 改進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu)示意
金字塔池化層的實(shí)現(xiàn)方法如圖7所示。使用不同尺度大小的網(wǎng)格將特征圖分成一個(gè)個(gè)小塊,對(duì)于VGG網(wǎng)絡(luò)提取每個(gè)小塊中的最大值;而對(duì)于或Res網(wǎng)絡(luò),提取每個(gè)小塊中的平均值,分別組成一個(gè)特征向量。圖中使用了4×4、2×2、1×1的網(wǎng)格將特征圖切分別分成16塊、4塊和1塊,對(duì)這些小塊分別進(jìn)行池化,得到16維、4維和1維的特征向量,最后將這些特征向量組合起來生成21維的特征向量,這樣就完成了對(duì)特征圖的多尺度表達(dá)。
圖7 金字塔池化層的實(shí)現(xiàn)方法示意
引入金字塔池化后,其對(duì)上述刑偵現(xiàn)場(chǎng)圖像的測(cè)試數(shù)據(jù)如表2所示??梢钥闯?,改進(jìn)后的VGG網(wǎng)絡(luò)分類準(zhǔn)確率較之前提高了3.3%,而改進(jìn)后的Res網(wǎng)絡(luò)較之前提高了3.5%。
表2 網(wǎng)絡(luò)優(yōu)化前后測(cè)試效果對(duì)比
鑒于深度學(xué)習(xí)廣泛應(yīng)用于圖像處理領(lǐng)域所得了傳統(tǒng)方法難以比擬的效果,本文嘗試將深度卷積網(wǎng)絡(luò)應(yīng)用于刑偵現(xiàn)勘圖像分類工作,采用先進(jìn)的VGG網(wǎng)絡(luò)和Res網(wǎng)絡(luò),在現(xiàn)勘圖像數(shù)據(jù)集上進(jìn)行再訓(xùn)練優(yōu)化,進(jìn)而提取圖像深度特征進(jìn)行分類;刑偵現(xiàn)勘圖像實(shí)驗(yàn)測(cè)試結(jié)果表明,深的層次結(jié)構(gòu)VGG網(wǎng)絡(luò)和Res網(wǎng)絡(luò)特征提取方法相比傳統(tǒng)方法準(zhǔn)確率均有大幅度提高。另外,采用金字塔池化的方法分別對(duì)VGG網(wǎng)絡(luò)和Res網(wǎng)絡(luò)進(jìn)行了優(yōu)化和改進(jìn)。實(shí)驗(yàn)表明,改進(jìn)后VGG網(wǎng)絡(luò)和Res網(wǎng)絡(luò)的刑偵圖像特征分類準(zhǔn)確率得到了進(jìn)一步提高??梢?,本文所研究的方法,能夠適用于刑偵現(xiàn)場(chǎng)圖像處理。