蘇 賦,羅海波
(西南石油大學電氣信息學院,四川 成都 610500)
當今社會中,生物識別技術在人們日常生活中應用日益廣泛,而指紋識別在生物識別市場中所占份額依然最多[1]。指紋是手指表面脊線和谷線的紋理特征,能增加手指與物體接觸的摩擦力,從而更容易抓取物件,特征點是指紋最重要的特征,包括端點和交叉點。手指指紋面積較小,指紋采集設備僅需采集手指表面的一部分就可以獲得所需信息,所以指紋采集設備大多小巧便攜。指紋特征還具有普遍性、唯一性及不變性等生物識別所必需的特性,以上優點使指紋識別作為一種重要的身份認證技術得到了廣泛的應用。常見的指紋識別系統有門禁系統、考勤系統及智能手機的指紋識別系統等。隨著指紋識別系統越來越多地運用于各種場合,提升指紋識別算法精度仍具有重要意義。
傳統的指紋識別方法通過算法提取出特征點,再比對特征點。若相似度高于閾值,則指紋匹配成功。早期的指紋特征提取方法有Maio等[2]提出的追蹤指紋原始灰度圖中的脊線的方法,Jiang等[3,4]提出的自適應步長法和局部圖像分類法等。尺度不變特征變換SIFT(Scale Invariant Feature Transform)是一種基于尺度空間的特征描述算子,它對圖像縮放、旋轉及仿射變換都有保持不變的特性,因此也有學者[5]嘗試提取指紋SIFT特征進行指紋識別。如Park等[6]通過提取指紋的SIFT特征點,利用SIFT算子對特征點周圍的紋理信息進行指紋匹配。Awad等[7]評估了一種利用SIFT特征縮短指紋識別時間的算法匹配分數矩陣MSM(Matching Score Matrix)。Zhong等[8]提出了一種基于SIFT和LSH局部敏感哈希(Locality Sensitive Hashing)算法的快速指紋分類檢索與識別方法。Aravindan等[9]提出了一種基于小波分解圖像的SIFT指紋識別方法。
除傳統方法外,有學者嘗試將機器學習運用到指紋識別中。Chen等[10]提出了一種基于改進支持向量機的區域信息融合方法并用于指紋識別。Hsieh等[11]將多目標優化的思想融入支持向量機中,提出了一種新的指紋識別算法。Noor等[12]嘗試使用不同分類器對指紋進行分類,包括決策樹、線性判別分析、中高斯支持向量機MG-SVM(Medium Gaussian Support Vector Machine)、k近鄰k-NN(k-Nearest Neighbor)、袋裝樹集成分類器,其中中高斯支持向量機驗證率在所有分類器中最高。
近年來,深度學習在圖像分類任務上取得了良好的效果,越來越多的學者開始將深度學習應用到指紋識別中。張永泉等[13]建立了一個輕量級的深度神經網絡,并分別利用二值化特征模式和三元組損失(Triplet Loss)優化模型,進行指紋匹配。Yuan等[14]設計了一種學習率自適應的卷積神經網絡,并且采用圖像尺度均衡的方法檢測指紋活性。Zeng等[15]采用殘差網絡ResNet(Residual Networks)[16]及交叉熵函數和對比度函數來訓練網絡,同時還采用了權值衰減的正則化方法和k均值算法來識別指紋。上述方法將不同的卷積神經網絡應用到了指紋識別中來,相比傳統方法,取得了更好的表現。這些方法大多只使用了某一種卷積神經網絡,改變其中某些參數,或者引入其他方法到網絡中,可以提升網絡的性能。但是,單一網絡受本身結構的制約,盡管改變了參數,但其性能仍難以突破自身上限。
針對這一問題,本文提出了一種改進Stacking的集成學習[17]算法,該算法通過Stacking集成學習,將DenseNet網絡[18]與改進的AlexNet網絡[19]進行融合,以獲得比單一網絡模型更優的網絡性能。首先,針對AlexNet網絡特征傳播能力不足的問題,引入深度可分離卷積(Depthwise Separable Convolution)[20];針對AlexNet網絡獲取全局信息的能力不高的問題,引入空間金字塔池化(Spatial Pyramid Pooling)[21];針對AlexNet網絡泛化能力不高的問題,引入全局平均池化(Global Average Pooling)[22],替代前2個全連接層;采用批歸一化(Batch Normalization)[23]取代局部響應歸一化(Local Response Normalization),解決AlexNet網絡中間層數據分布改變的問題。改進后的AlexNet網絡識別準確率有了大幅提高,將改進后的AlexNet網絡稱為GS-AlexNet。DenseNet網絡能夠緩解梯度消失,加強特征傳播,鼓勵特征重用,增強了指紋特征提取能力。使用Stacking集成學習,將DenseNet網絡與GS-AlexNet網絡結合起來,充分利用上述2種網絡的優點,獲得了比單一網絡模型更優的性能。對同一基學習器訓練得到的不同模型,根據模型的識別準確率對測試集預測結果賦權,改進了Stacking集成學習算法。采用隨機梯度下降分類器(Stochastic Gradient Descent Classifier)[24]作為元分類器,對加權預測結果進行分類,最終輸出整個模型對指紋的預測結果。
卷積神經網絡具有強大的特征表達和圖像分析處理能力,因此本文選擇DenseNet和改進的AlexNet 2種卷積神經網絡來提取圖像特征,獲取預測結果。下面對AlexNet及其改進版本與DenseNet網絡進行詳細的介紹。
1989年,卷積神經網絡問世,但在此后很長一段時間內,卷積神經網絡只在手寫數字識別等小規模圖像識別問題上取得了較好的成績,在大規模圖像的識別問題上則效果不佳,其中原因包括算法有待提升,以及硬件對計算能力的限制。直到2012年,AlexNet的出現改變了這一切。AlexNet采用了許多方法來提升網絡性能,在ImageNet數據集上取得的效果超越了當時其它所有網絡。
AlexNet網絡模型結構如圖1所示,它包括5個卷積層、2個池化層及3個全連接層,總體結構較為簡單,訓練所花費的時間相對殘差網絡等結構復雜的網絡要短。

Figure 1 Structure of AlexNet
GS-AlexNet以AlexNet網絡為基礎網絡結構,通過添加深度可分離卷積、空間金字塔池化等結構來提升網絡性能,其網絡結構如圖2所示。

Figure 2 Structure of GS-AlexNet
(1)在第3個3×3卷積層之后加入2個3×3深度可分離卷積層,后跟1個最大池化層,然后再與旁路第3個3×3卷積層之后的1×1卷積層的結果相加。深度可分離卷積相比傳統卷積參數量更少,計算速度更快。采用如圖2所示的結構,能夠使特征傳播得到加強,有助于提高識別準確率。
(2)增加空間金字塔池化層。空間金字塔池化最初被應用于目標檢測中,通過搜索算法產生的候選區域可能具有不同的尺寸,直接剪裁或者更改圖像尺寸會使圖像扭曲變形或失去部分重要信息,使目標檢測的精度受到限制。而空間金字塔池化對任意尺寸的特征圖都能輸出固定長度的向量,使得卷積神經網絡不再需要嚴格要求輸入圖像的尺寸。同時,空間金字塔池化通過將特征層劃分為不同的區域,各區域分別進行平均池化,使不同區域的上下文信息聚合,提高了獲取全局信息的能力。
(3)將1個全局平均池化層添加到空間金字塔池化層后,以替代前2個全連接層。對于分類任務來說,最后一個卷積層通常連接到全連接層中,然后再連接到Softmax邏輯回歸層。這種方式能夠將卷積結構與傳統的神經網絡分類器連接起來,即用卷積層提取特征,并以傳統方式對特征分類。然而,使用全連接層容易發生過擬合,降低網絡的泛化能力。因此,本文采用全局平均池化替代傳統的全連接層。全局平均池化層對最后一個卷積層的每個對應類別都生成一個特征圖,然后取每個特征圖的平均值,通過強制特征映射和類別之間的對應,全局平均池化更適合卷積結構,使網絡的泛化能力得到了提高。
(4)去除前2個最大池化層之前的局部響應歸一化,改為在每個卷積層以及深度可分離卷積之后添加一個批歸一化層。批歸一化不僅能夠加快模型的收斂速度,還可以起到正則化的作用,提高模型的訓練精度。雖然通常輸入數據都被進行過歸一化處理,但經過網絡訓練及迭代后,數據分布會被改變。批歸一化處理能夠在網絡中任意一層進行,可以有效地解決訓練過程中,中間層數據分布改變的情況,使數據分布由始至終控制在一個較小的范圍內。
AlexNet之后出現的許多網絡都嘗試通過加深網絡來提升網絡性能,Simonyan等[25]通過對3×3卷積核和2×2池化層的堆疊,構建了16~19層的卷積神經網絡,多于AlexNet的8層,但若再加深網絡則可能面臨梯度消失和梯度爆炸的問題。Highway Networks[26]是首個網絡深度達到100層的卷積神經網絡,而且利用門單元形成的旁路,研究人員可以很輕松地構建超過100層的網絡,且網絡性能依然十分優秀。ResNet網絡與Highway Network有相似之處,二者都采用了旁路連接的方式使特征傳播得到加強。但是,Highway Network中的門單元可能會關閉,而ResNet中的連接不會關閉,殘差模塊產生的特征始終會向前傳遞。
DenseNet雖然借鑒了ResNet的旁路連接方式,但其主要研究目的不是通過加深網絡來提高網絡的性能,而是探索特征重用對網絡的影響,以獲得訓練速度快且參數對輸入圖像擬合程度高的網絡。對于卷積神經網絡而言,輸入與輸出臨近的層間如果包含更短的連接,會使網絡更深、參數對輸入圖像擬合程度更高,并能提高訓練效率。基于這種思想,DenseNet的設計人員采用了將每一層與其他所有層以前饋方式連接起來的結構,通過特征復用加強了特征的傳播,同時緩解了梯度消失,網絡性能由此得到提升,圖3展示了一個Dense模塊的結構。

Figure 3 A 4-layer dense block with a growth rate of 4
Dense模塊使每一層與后面所有層相連,增強了信息流動性。換言之,第n層能夠得到前面所有層的特征圖,將x0,…,xn-1作為輸入,則:
xn=Hn([x0,x1,…,xn-1])
(1)
其中,[x0,…,xn-1]表示從0到n-1層的特征圖的連接,其使特征圖組合起來的方式是連接而不是如ResNet中的加法,這種方式能夠使計算量減少,可大大提升效率。Hn(·)是一個混合函數,其包括正則化操作、線性整流和1個3×3的卷積。
要將2個以上的卷積神經網絡模型結合起來,需要使用一種模型融合算法,把不同的卷積神經網絡置于同一系統之中。本文采用Stacking這種2層堆疊的模型融合算法,并通過對預測結果賦權改進算法。
Stacking集成學習的主要思想是將不同模型結合起來,充分利用它們各自不同的優點,以獲得最好的效果。首先將原始數據集劃分為若干子數據集,此過程運用了K折交叉驗證的思想,避免模型過擬合;然后將子數據集輸入不同的基學習器,基學習器輸出預測結果;再將各基學習器輸出的預測結果結合起來輸入元學習器;最后輸出整個模型的預測結果。Stacking集成學習基本結構如圖4所示。

Figure 4 Structure of stacking ensemble learning
原始數據的劃分可以分為2步,首先將原始數據集劃分為訓練集和測試集,再運用K折交叉驗證算法將訓練集中的數據劃分為訓練數據和測試數據。如當K=6時,將訓練集中的數據分為6份,其中1份作為測試數據,剩余5份作為訓練數據來訓練基學習器,之后再挑選另1份數據作為測試數據,其余數據作為訓練數據。重復6次后,得到6個對測試數據的預測結果,將其結合起來作為元學習器的訓練數據。如果有2個以上的基學習器,則其余基學習器也按照如上步驟來訓練,再將所有基學習器的預測結果結合起來作為元學習器的訓練數據。
基學習器模型經過訓練集的訓練數據和測試數據訓練后得到訓練好的模型,用該模型預測測試集中的數據,將得到的預測結果結合起來作為元學習器的測試數據,最終由元學習器輸出整個模型的預測結果。
為了進一步提升Stacking集成學習算法的性能,本文采用DenseNet網絡和GS-AlexNet網絡2種卷積神經網絡作為Stacking集成學習的基學習器,同時將基學習器預測測試集的結果賦權相加,得到的結果再輸入元學習器。
在指紋數據集上的實驗顯示,DenseNet網絡和GS-AlexNet均能取得較高的識別準確率。但是,同一網絡訓練得到的K個模型的效果不盡相同,對預測結果取均值無法得到更好的結果。對測試集預測結果賦權相加,為效果好的模型賦大的權值,為效果不好的模型賦較小的權值,能使性能好的模型對之后的訓練影響更大,性能差的模型對后續訓練的影響變小,從而改善模型整體的性能。本文中元學習器均采用隨機梯度下降分類器,將本文使用的Stacking算法稱為CW-Stacking,其流程如圖5所示。訓練集中的訓練數據用來訓練DenseNet和GS-AlexNet模型,訓練集中的測試數據輸入訓練好的模型輸出預測結果。預測結果連接起來作為訓練數據,輸入隨機梯度下降分類器中。

Figure 5 CW-Stacking algorithm
賦權的第1步要將測試集數據輸入訓練好的模型,輸出的是模型正確預測測試集輸入數據的概率a。如測試集數據總共可分為C類,則卷積神經網絡可以針對每幅圖像或其他類型數據輸出C個概率值,代表該數據為某一類的概率,C個概率值之和為1。從C個概率值中取出1個正確表示該數據類型的概率,就得到所需要的概率值a了。一幅圖像輸入卷積神經網絡后,獲取概率值a的大致流程如圖6所示。

Figure 6 Process of obtaining probability value a
如果有N個異質基學習器,每個基學習器經K次訓練共得到N×K個模型,也得到N×K組概率值。一個基學習器輸出的概率除以同一同質基學習器訓練得到的K個模型輸出的概率值之和,可以得到權重w。第n(1≤n≤k)個同質基學習器權重計算公式如式(2)所示:
wn=an/(a1+…+aK)
(2)
再以按權重分配的方式,將同一基學習器得到的K組預測結果結合起來,如式(3)所示:
P=w1p1+w2p2+…+wKpK
(3)
其中,p1,p2,…,pK為某一基學習器輸出的整組預測結果。然后將DenseNet和GS-AlexNet網絡輸出的2組加權預測結果連接起來作為測試數據輸入隨機梯度下降分類器中,最終得到整個模型的預測結果。
本文所采用的數據集來自山東大學公開的指紋數據集——多傳感器指紋數據庫(Multi-Sensor Fingerprint Database),指紋圖像如圖7所示。

Figure 7 Fingerprint images collected by five kinds of sensors
本數據集包括5種不同傳感器采集的指紋,這5種傳感器分別為AES2501刷卡指紋掃描儀、FPR620光學指紋掃描儀、FT-2BU電容式指紋掃描儀、URU4000光學指紋掃描儀和ZY202-B光學指紋掃描儀。采集指紋時,使用上述5種傳感器分別采集左手和右手的食指、中指、無名指共6個手指的指紋,每個手指的指紋采集8次,共采集106人的指紋。所以,該數據集中共有6×5×8×106=25440幅指紋圖像。5種不同的采集設備導致多傳感器指紋數據庫中指紋圖像具有不同的尺寸,表1中展示了各指紋采集設備采集到的指紋的指標。

Table 1 Indexes of fingerprint collected by each sensor
由于不同的指紋采集設備采集到的指紋圖像尺寸各不相同,實驗中將所有的指紋圖像尺寸統一轉化為224×224,得到25 440幅224×224的指紋圖像。本文將其中3/4的指紋圖像劃分為訓練集,用作基學習器模型的訓練,得到的預測結果作為元學習器的訓練數據;剩余1/4劃分為測試集,用基學習器訓練后得到的模型來預測測試集指紋圖像,得到的預測結果作為元學習器的測試數據。指紋數據集劃分如表2所示。

Table 2 Fingerprint data set partition
由于傳感器本身對指紋的提取能力有限,再加上被采集的手指上可能有污漬或者存在脫皮的現象,導致指紋圖像中存在一些干擾信息,會對后續指紋識別造成影響,所以有必要進行指紋圖像預處理。本文主要處理步驟如下:
(1)指紋圖像歸一化;
(2)指紋紋路增強;
(3)去除空洞和毛刺;
(4)圖像細化。
通常指紋采集設備采集到的指紋都具有較大的灰度值差距,導致強烈的明暗效果,進行歸一化處理之后,指紋圖像灰度均值和灰度方差均相同,圖像間灰度場強顯著減少。將指紋圖像增強,通過計算得到指紋的脊線方向,并對圖像進行二值化,進一步降低噪聲的影響。去除指紋中的空洞和毛刺,消除指紋粘連及斷裂的影響。指紋的粗細對識別也有干擾,所以最后一步進行圖像細化,去除指紋粗細對指紋識別的影響。經過上述步驟處理后得到的指紋圖像如圖8所示。

Figure 8 Processed fingerprint image
本文實驗涉及卷積神經網絡的訓練和測試,還包括運用Stacking集成學習算法結合不同的卷積神經網絡模型的實驗,以及對測試集預測結果賦權的實驗。實驗的硬件環境為筆記本電腦和服務器,其中服務器配置為英特爾第八代i5 CPU,頻率為2.80 GHz,內存為16 GB,顯卡為NVIDIA GeForce RTX 2080Ti。實驗的軟件平臺為PyCharm,編程語言為Python 3.6,深度學習框架為TensorFlow和Keras。將卷積神經網絡各類參數盡量設置得一致,損失函數選擇Softmax Loss,優化器選擇Adam。Batch設置為64,即每次訓練從樣本中取64幅圖像。網絡進行200次迭代,準確率取最后5次均值。使用ReduceLROnPlateau函數,根據損失值自適應調整學習率。
第1組實驗是為了驗證改進AlexNet的性能提升程度。對指紋數據集預處理之后,按訓練數據與測試數據3∶1來劃分,實驗得到的準確率曲線如圖9所示,損失值曲線如圖10所示。其中圖9和圖10的橫坐標表示迭代步數,圖9的縱坐標表示指紋識別準確率,圖10的縱坐標表示損失值。此外,表3展示了網絡準確率曲線和損失值曲線收斂之后各網絡的損失值及準確率。

Figure 9 Accuracy curves

Figure 10 Loss curves
本文選擇了AlexNet、DenseNet和Im-AlexNet[27]作為改進AlexNet(也就是GS-AlexNet)的對比模型。從圖9和圖10可以看出,GS-AlexNet的收斂相對較慢,約迭代75步左右收斂,而Im-AlexNet與DenseNet則收斂得稍快一些。但是,GS-AlexNet最終獲得的識別準確率是最高的,損失值是最低的,說明通過在AlexNet中加入深度可分離卷積、金字塔池化、全局平均池化及批歸一化的改進是十分有效的。從圖中還可以看出,得益于ReduceLROnPlateau的使用,4種卷積神經網絡的識別準確率和損失值最終都收斂到了一個較小的范圍內,十分穩定,并且均在迭代約100步以內就能收斂。

Table 3 Experimental results of different convolutional neural networks
第2組實驗引入Stacking集成學習算法,分別嘗試將DenseNet與AlexNet、Im-AlexNet、GS-AlexNet結合以研究性能不同的基學習器算法對Stacking集成學習算法最終準確率的影響。實驗內容是將實驗數據中的訓練集采用K折交叉驗證方法劃分為6份,將其中1份作為測試數據,其余5份作為訓練數據,選擇DenseNet卷積神經網絡來進行訓練。然后選擇另1份數據作為測試數據,重復上述步驟共6次,得到6個訓練數據的預測結果,置于同一數組中。再將訓練好的模型用來預測測試集數據得到6個預測結果,并將預測結果取均值。然后再選用AlexNet、Im-AlexNet與GS-AlexNet中一種卷積神經網絡作為另一個基學習器,重復上述步驟,將2種卷積神經網絡的預測結果結合輸入元學習器隨機梯度下降分類器中,得到整個模型的預測結果。本實驗的實驗結果如表4所示,從實驗結果可以看出,3種不同的卷積神經網絡與DenseNet結合后,原本識別準確率最高的GS-AlexNet的識別準確率依然最高,即97.64%,原本識別準確率最低的AlexNet的識別準確率還是最低,即94.73%,并且3組實驗采用Stacking后準確率都高于任一一卷積神經網絡。這說明在實驗采用的數據集上,采用Stacking方法融合后均能利用2種卷積神經網絡各自的優點,取得更高的準確率,而本身性能較優的網絡,融合后會取得更好的效果。因此,之前對AlexNet的改進是具有重要意義的。

Table 4 Experimental results of combining different convolutional neural networks
第3組實驗將3種不同的卷積神經網絡分別與DenseNet結合,并在使用訓練好的模型預測測試集數據時,將預測結果以賦權的方式相加,以驗證改進的Stacking集成學習算法的優越性,最終得到的實驗結果如表5所示。從表5可以看出,在所采用的數據集上,對3種不同的卷積神經網絡組合,改進的Stacking集成學習算法都能夠取得更好的效果。其中,DenseNet與GS-AlexNet結合的最終準確率達到了98.43%,與單獨使用任一卷積神經網絡模型相比至少提升了0.95%,與將測試集預測結果取均值時相比提升了0.79%。表明對同一基學習器訓練所得各模型預測結果按對指紋正確預測的概率賦權,能夠提升好的模型對后續分類的影響,降低差的模型的影響,從而得到比單純取均值時更好的效果。
Xception是He等[21]提出的一種卷積神經網絡,它是完全基于深度可分離卷積的網絡結構。Xception網絡結構中包含36個卷積層,前2個為普通卷積層,其余為深度可分離卷積。36個卷積層構成14個模塊,除第一個和最后一個模塊,其余模塊周圍均使用了殘差連接方法,以加強特征傳播。NASNet[28]是谷歌AutoML項目產出的模型,該項目致力于讓計算機設計出性能可與人類專家設計的神經網絡相媲美的神經網絡。通過在CIFAR-10數據集上尋找最佳的模塊堆疊組合方式,最終獲得NASNet。將其應用于ImageNet上,得到的Top-1準確率比人類發明的最好的神經網絡高1.2%。在多傳感器指紋數據庫上,Xception算法相對本文算法準確率降低5.82%,NASNet相對本文算法準確率降低5.19%,說明本文算法相對單一卷積神經網絡方法具有較大優勢。PCA-Stacking算法[29]對基學習器輸出的預測結果進行PCA降維后再輸入元學習器中,該算法能夠利用樣本的統計特性,提升分類精度。使用DenseNet與GS-AlexNet作為基學習器,本文CW-Stacking算法與PCA-Stacking相比準確率提升了0.71%,充分說明了本文算法的優越性。

Table 5 Experimental results of improved Stacking ensemble learning algorithm
實驗結果表明,本文通過指紋圖像預處理、改進AlexNet卷積神經網絡,融合本文中性能最優的2種卷積神經網絡模型,以及將測試集預測結果賦權,獲得了較高的指紋識別準確率,相比傳統的單一卷積神經網絡有較大提升。
本文針對傳統的單一卷積神經網絡指紋識別算法性能無法突破網絡本身結構限制的問題,提出了一種改進Stacking集成學習的指紋識別算法。首先對指紋圖像進行預處理,提高指紋圖像質量,并且采用深度可分離卷積、金字塔池化、全局平均池化及批歸一化對AlexNet進行改進。然后采用Stacking集成學習將模型融合進行指紋識別,并將改進的AlexNet卷積神經網絡引入Stacking模型中,把DenseNet和GS-AlexNet 2種卷積神經網絡作為Stacking模型的基學習器,另嘗試進一步改進Stacking集成學習算法,將測試集預測結果賦權相加,最后采用隨機梯度下降分類器對所有基學習器輸出預測結果分類。該算法在山東大學公開的指紋數據集——多傳感器指紋數據庫上進行實驗,獲得了98.43%的識別準確率。實驗結果表明,本文對AlexNet的改進使其性能得到了顯著提高,采用Stacking集成學習算法將不同的卷積神經網絡結合起來能夠得到比單一卷積神經網絡更好的識別結果,對Stacking集成學習算法進行改進,對測試集預測結果賦權,可以使識別效果再次提升。本文采用的是隨機梯度下降分類器作為元學習器,進一步的研究方向是對元學習器進行改進。