


摘? 要: 針對傳統神經網絡識別算法易丟失指紋信息的問題,提出了一種基于膠囊網絡(Capsule Network)的指紋識別算法。CapsNets在空間位置上對指紋特征的保留能力顯著。實驗采用30000個指紋圖像作為訓練集,并且使用5000個指紋圖作為測試集,在對指紋圖像增強,裁剪和尺寸縮放后進行網絡學習。實驗表明,CapsNets的網絡結構特征在處理脊線區域時效果優異,不僅大大縮短了訓練時間,而且精確度增加了13.6%,loss值也收斂到0.01。實驗表明CapsNets對指紋圖像的分類具有較好的結果。
關鍵詞: 膠囊神經網絡;指紋識別;MATLAB
中圖分類號: TP391.41? ? 文獻標識碼: A? ? DOI:10.3969/j.issn.1003-6970.2019.10.020
本文著錄格式:袁穎. 基于MATLAB實現的膠囊神經網絡指紋識別[J]. 軟件,2019,40(10):8992
Research on Capsule Network Fingerprint Recognition Based on MATLAB
YUAN Ying
(Guizhou Police College GUI Zhou GUIYANG 550005)
【Abstract】: The traditional neural Network recognition algorithm is easy to lost fingerprint feature information, this paper proposes a Network based on Capsule Network algorithm of the fingerprint identification. CapsNets has ability to retain the fingerprint characteristics on dimensional position significantly. This research using 30000 fingerprint image as the training set, and use 5000 fingerprint as the test set, the fingerprint image enhancement, cropping and size scale for Network learning. Experiments show that CapsNets' network structure features have an excellent effect in processing ridge areas, which not only greatly reduces the training time, but also increases the accuracy by 13.6%. The loss also converges to 0.01. Experiments also show that CapsNets has a good result in the classification of fingerprint images.
【Key words】: CapsNets; Fingerprint recognition; MATLAB
0? 引言
傳統的指紋識別在進行指紋匹配的過程中將指紋圖像預處理、二值化、樣化、骨架化,對指紋特征點進行提取標記,最后進行指紋圖像匹配,然而隨著社會的發展高速增長的指紋圖像使傳統的指紋比對面臨大庫衰減等問題,同時受到計算機硬件發展限制的制約,在過去很長一段時間指紋的識別依然停留在傳統標記細節特征點進行比對的階段。
近年來隨著AlexNet[1] VGG[2]、GoogleNet[3]、ResNet[4]等網絡的誕生,使指紋識別熱點從傳統的特征點提取算法擴展到了指紋圖像提取分類算法。在以上各種網絡的測試過程中,測試數據顯示卷積神經網絡可以通過對標準高質圖像的訓練,達到良好的容錯率和高效率的實驗結果,該結果也證明了相對于其他網絡而言,卷積神經網絡適合用于圖像的識別,但也存在一些實際問題,卷積神經網絡對于全局指紋圖像沒有良好的效果。為了解決這一問題,2017年12月Geoffrey E. Hinton提出了CapsNets的網絡結構[5],并在multi MINIST上進行訓練,訓練精確度為99.23%,在affinist測試集的精確度達到了79%,遠遠超過了CNN的66%,測試數據顯示,CapsNets的花費的時間更少,是目前精確度最高的網絡[6]。在指紋識別過程中,識別的指紋圖像常存在指紋重疊,這一問題在指紋識別的實際過程中是個普遍現象,就使用指紋自動識別系統頻繁的公安領域來說,犯罪現場指紋很多是重疊殘缺的指紋,傳統指紋識別算法導致無法識別重疊指紋圖像的情況。而CapsNets在學習的過程中以類似于膠囊的形式將數據從底層傳遞至高層,封裝多維特征,從而神經網絡的訓練時間,提高效率。本文將該網絡用于指紋圖像的識別,實驗結果發現該網絡保留了指紋細節特征,解決如上問題。
1? CapsNets
1.1? 網絡結構
膠囊網絡的網絡結構如圖1所示,膠囊網絡算法的特征是提取到的每一個特征都對應一個向量,輸入目標圖像后用原始卷積層將圖像特征存儲入基礎膠囊層,再由動態路由轉換成下一層的對應膠囊結構的存儲層,最后使用全連接層進行圖像的解碼與重建[7]。
CapsNets結構可以使用較少的訓練數據進行訓練達到較好的識別效果,即使在圖像特征密集的場景下,也可以有出色的表現,膠囊網絡可以在不同的視覺任務中使用相同的、簡單的和一致的架構。Capsule用Dynamic Routing,使膠囊網絡可以實時選取識別圖形中的特征,決定不同的膠囊網絡之間提取哪一個特征更為顯著,因此膠囊網絡更加適合于去表征像指紋這類高級的圖像。
1.2? squash函數
在CapsNets中需用到squash 函數,神經網絡的前一層網絡以向量的形式進行輸送,在激活時需要對“膠囊”做方向處理, CapsNets的激活函數命既為squash,表達式如公式(1)所示,其中j表示第j個capsule膠囊,Vj表示第j個capsule膠囊的輸出向量,Sj表示第j個capsule膠囊的輸入向量,||Sj?||即S向量的模長,此函數作用主要是使得Vj輸出向量的長度不超過 1,同時使得Vj輸出向量和Sj輸入向量的方向保持一致。公式(1)的第一部分為壓縮函數,該函數的作用是使當Sj輸出向量很大的時候,第一部分的值能無限趨近于1;如果Sj輸出向量的值很小,第一部分的值會約等于0;公式的第二部分的作用是單位化向量Sj,第二部分長度為1。當輸出向量Vj的長度是在0和1之間,即表示VN給定特征的概率數值。此部分保留了輸入向量的方向,并將輸入向量的模壓縮到了0-1之間,用向量的模的大小衡量某個實體出現的概率,模值越大,概率越大。
(1)
1.3? 動態路由
膠囊網絡得動態路由由預測向量激活向量[8]等組成。
預測向量,如公式(2)所示
(2)
激活向量 是膠囊第ij個的輸出如公式(3)所示
(3)
步驟為:
(1)膠囊網絡將輸入的圖片封裝,輸出第ij位置得向量,r為路由迭代次數;
(2)定義為l層連接下一層的可能性,初始值為0;
(3)循環執行第4-7行r次;
(4)對l層的,將用softmax轉化成概率 ;
(5)對l+1層的,加權求和;
(6)對l+1層的,激活函數激活得到;
(7)根據和的關系來更新;
當和的點積值相似時,點積值就大,值也會變大,低層連接到高層的可能性就變大;當和的點積值差距較大時,點積就小,也就變小,低層連接高層的可能性就變小。
1.4? 損失函數
Capsule的損失函數如公式(4)所示。
(4)
該公式表明了最大化正負樣本到超平面的距離,其中表示損失希望正例樣本、表示損失希望負例樣本表示標定點,=0.9和=0.1。損失希望正例樣本預測在0.9,超過這一數值就沒必要繼續運算,負例在0.1,低于這一數值也就沒必要繼續運算。
1.5? Tensor Flow軟件庫
Tensor Flow是一個用于數值計算的開源軟件庫[9],該軟件庫具有高度的靈活性、具有自動求微分的功能,支持多語言編輯,能實現真正的可移植性,采用數據流圖在節點間建立相互聯系的多維? 數組。
使用Tensor Flow構建可訓練的神經網絡,首先使用使用NumPy生成假數據(phony data),總共100個點,構造一個線性模型,如下所示:
b = tf.Variable(tf.zeros([1]))
W = tf.Variable(tf.random_uniform([1, 2], –1.0, 1.0))
y = tf.matmul(W, x_data) + b
然后使用最小化方差,使用initialize初始化變量,啟動graph,擬合平面如下所示[10]:
for step in xrange(0, 201):
sess.run(train)
if step % 20 == 0:
print step, sess.run(W), sess.run(b)
運用神經元搭建完整的神經網絡,使用輸入層、隱藏層、輸出層、損失函數、參數求取搭建完整的神經網絡。
2? 實驗
2.1? 實驗環境
本實驗使用的是4個NVIDIA 1080 TI 11G Pascal CPU、2個Intel i7-6900K 26核56線程CPU,三星DDR4 2666 32 G內存,Asus X99-E WS/USB 3.1主板,4塊1080TI 11G顯卡,2個CPU 64 G? ? ?內存。
軟件環境Microsoft Windows 10、Matlab 2018b矩陣實驗室。
2.2? 數據集
本次實驗采集的數據集是由海鑫HX-R8062U活體指紋采集儀采集得到的滾動捺印指紋,每個數據集包含有10人拇指的指紋數據,在不同方向上采集的同一個人的5張指紋圖像,一共55張訓練集,為了增加數據,本文采用數據增強的方式對原始指紋數據集進行旋轉和模糊,擴增得到每一類500張數據集,一共5000數據集。
2.3? 圖像預處理
(1)指紋圖像數據增強
圖像進行訓練前通過高斯高通濾波器來增強圖像數據量。如公式(5)[11]所示:
(5)
其中,
(6)
D(x,y)表示中心點與點(x,y)的距離,如公式(6)所示。卷積模板的中心點為D(x0,y0),其中D0為截止頻率,通過更改系數a,b的值來調節濾波器的濾波效果[7]。
通過實驗對比,增強后的圖像對比度明顯高于原圖像,提高了圖像質量,正如圖2所示。
經不同方向下隨機旋轉指紋得到最終數據集:
2.4? 實驗結果
利用tensorflow開源框架設計和實現深度神經網絡。進行3次路由循環,迭代訓練31000次。識別率與LOSS值如表1所示。
實驗需要在NVIDIA 1080TI上10小時訓練以生成CapsNet網絡。從圖8可以看出,橫坐標是CapsNets的迭代次數,縱坐標是CapsNets的準確度和損失值。當迭代達到2000次時,精度開始接近90%。與此同時,損失一直低至0.02。隨著迭代次數的增加,振動逐漸減小,最終達到穩定水平。它收斂到98.6%,損失價值也收斂到0.0107。當迭代達到200時,網絡接近98%,最終精度為98.5%,而損失值緩慢下降,最終總損失值為0.021,如圖3所示。
3? 結論
實驗結果顯示CapsNets適合指紋識別,CapsNets網絡結構的簡易使得訓練速度得到了大幅度的提升。同時根據是實驗結果可知膠囊網絡效果穩定,精度與loss與訓練結果接近,CapsNets的空間特性使得指紋特征更完整的提煉出,增加了識別精確度。雖然CapsNets在圖像背景復雜的情況下,從復雜的背景中分離出想要識別的特征也依然存在困難,在以后的工作當中,也許在出現龐大的數據集的時候會出現其他問題,CapsNets仍處于起步階段,不過CapsNets的出現使得我們在對于指紋識別的研究提供了新穎的算法。
參考文獻
[1]Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton. Ima geNet Classification with Deep Convolutional[J]. International Conference on Neural Information Processing Systems, 2012, 60(2): 1097-1105.
[2]Karen Simonyan, Andrew Zisserman. Very Deep Convolutional Networks for Large-Scale Image Recognition[J]. Computer Science. 2014.
[3]C Szegedy, W Liu, Y Jia, P Sermanet, S Reed. Going deeper with convolutions[J]. IEEE Conference on Computer Vision & Pattern Recognition. 2015: 1-9.
[4]Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Deep Residual Learning for Image Recognition[J]. IEEE Computer Society. 2015.
[5]林少丹, 洪朝群, 陳雨雪. 結合膠囊網絡和卷積神經網絡的目標識別模型[J]. 電訊技術. 2018.
[6]Hyung Gil Hong, Min Beom Lee and Kang Ryoung Park. Convolutional Neural Network-Based Finger-Vein Recognition Using NIR Image Sensors. sensors[J]. 2017.
[7]鄭遠攀, 李廣陽, 李曄. 深度學習在圖像識別中的應用研究綜述[J]. 計算機工程與應用. 2019, 55 (12) : 20-36.
[8]岡薩雷斯, 伍茲, 阮秋琦, 等. 數字圖像處理[M]. 電子工業出版社. 2007.
[9]佚名. 谷歌推出 TensorFlow 機器學習系統[J]. 電信工程技術與標準化, 2015, 28(11) : 92-92.
[10]劉帆, 劉鵬遠, 李兵, 等. TensorFlow平臺下的視頻目標跟蹤深度學習模型設計[J]. 光學學報, 2017, 54(9): 1-1.
[11]曹妍, 陳偉. 基于 MATLAB GUI 的指紋圖像增強技術研究[J]. 軟件, 2018, 39(11): 30-32.