摘? 要: 針對傳統(tǒng)神經(jīng)網(wǎng)絡(luò)識別算法易丟失指紋信息的問題,提出了一種基于膠囊網(wǎng)絡(luò)(Capsule Network)的指紋識別算法。CapsNets在空間位置上對指紋特征的保留能力顯著。實驗采用30000個指紋圖像作為訓(xùn)練集,并且使用5000個指紋圖作為測試集,在對指紋圖像增強,裁剪和尺寸縮放后進行網(wǎng)絡(luò)學(xué)習(xí)。實驗表明,CapsNets的網(wǎng)絡(luò)結(jié)構(gòu)特征在處理脊線區(qū)域時效果優(yōu)異,不僅大大縮短了訓(xùn)練時間,而且精確度增加了13.6%,loss值也收斂到0.01。實驗表明CapsNets對指紋圖像的分類具有較好的結(jié)果。
關(guān)鍵詞: 膠囊神經(jīng)網(wǎng)絡(luò);指紋識別;MATLAB
中圖分類號: TP391.41? ? 文獻標識碼: A? ? DOI:10.3969/j.issn.1003-6970.2019.10.020
本文著錄格式:袁穎. 基于MATLAB實現(xiàn)的膠囊神經(jīng)網(wǎng)絡(luò)指紋識別[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? 引言
傳統(tǒng)的指紋識別在進行指紋匹配的過程中將指紋圖像預(yù)處理、二值化、樣化、骨架化,對指紋特征點進行提取標記,最后進行指紋圖像匹配,然而隨著社會的發(fā)展高速增長的指紋圖像使傳統(tǒng)的指紋比對面臨大庫衰減等問題,同時受到計算機硬件發(fā)展限制的制約,在過去很長一段時間指紋的識別依然停留在傳統(tǒng)標記細節(jié)特征點進行比對的階段。
近年來隨著AlexNet[1] VGG[2]、GoogleNet[3]、ResNet[4]等網(wǎng)絡(luò)的誕生,使指紋識別熱點從傳統(tǒng)的特征點提取算法擴展到了指紋圖像提取分類算法。在以上各種網(wǎng)絡(luò)的測試過程中,測試數(shù)據(jù)顯示卷積神經(jīng)網(wǎng)絡(luò)可以通過對標準高質(zhì)圖像的訓(xùn)練,達到良好的容錯率和高效率的實驗結(jié)果,該結(jié)果也證明了相對于其他網(wǎng)絡(luò)而言,卷積神經(jīng)網(wǎng)絡(luò)適合用于圖像的識別,但也存在一些實際問題,卷積神經(jīng)網(wǎng)絡(luò)對于全局指紋圖像沒有良好的效果。為了解決這一問題,2017年12月Geoffrey E. Hinton提出了CapsNets的網(wǎng)絡(luò)結(jié)構(gòu)[5],并在multi MINIST上進行訓(xùn)練,訓(xùn)練精確度為99.23%,在affinist測試集的精確度達到了79%,遠遠超過了CNN的66%,測試數(shù)據(jù)顯示,CapsNets的花費的時間更少,是目前精確度最高的網(wǎng)絡(luò)[6]。在指紋識別過程中,識別的指紋圖像常存在指紋重疊,這一問題在指紋識別的實際過程中是個普遍現(xiàn)象,就使用指紋自動識別系統(tǒng)頻繁的公安領(lǐng)域來說,犯罪現(xiàn)場指紋很多是重疊殘缺的指紋,傳統(tǒng)指紋識別算法導(dǎo)致無法識別重疊指紋圖像的情況。而CapsNets在學(xué)習(xí)的過程中以類似于膠囊的形式將數(shù)據(jù)從底層傳遞至高層,封裝多維特征,從而神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時間,提高效率。本文將該網(wǎng)絡(luò)用于指紋圖像的識別,實驗結(jié)果發(fā)現(xiàn)該網(wǎng)絡(luò)保留了指紋細節(jié)特征,解決如上問題。
1? CapsNets
1.1? 網(wǎng)絡(luò)結(jié)構(gòu)
膠囊網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,膠囊網(wǎng)絡(luò)算法的特征是提取到的每一個特征都對應(yīng)一個向量,輸入目標圖像后用原始卷積層將圖像特征存儲入基礎(chǔ)膠囊層,再由動態(tài)路由轉(zhuǎn)換成下一層的對應(yīng)膠囊結(jié)構(gòu)的存儲層,最后使用全連接層進行圖像的解碼與重建[7]。
CapsNets結(jié)構(gòu)可以使用較少的訓(xùn)練數(shù)據(jù)進行訓(xùn)練達到較好的識別效果,即使在圖像特征密集的場景下,也可以有出色的表現(xiàn),膠囊網(wǎng)絡(luò)可以在不同的視覺任務(wù)中使用相同的、簡單的和一致的架構(gòu)。Capsule用Dynamic Routing,使膠囊網(wǎng)絡(luò)可以實時選取識別圖形中的特征,決定不同的膠囊網(wǎng)絡(luò)之間提取哪一個特征更為顯著,因此膠囊網(wǎng)絡(luò)更加適合于去表征像指紋這類高級的圖像。
1.2? squash函數(shù)
在CapsNets中需用到squash 函數(shù),神經(jīng)網(wǎng)絡(luò)的前一層網(wǎng)絡(luò)以向量的形式進行輸送,在激活時需要對“膠囊”做方向處理, CapsNets的激活函數(shù)命既為squash,表達式如公式(1)所示,其中j表示第j個capsule膠囊,Vj表示第j個capsule膠囊的輸出向量,Sj表示第j個capsule膠囊的輸入向量,||Sj?||即S向量的模長,此函數(shù)作用主要是使得Vj輸出向量的長度不超過 1,同時使得Vj輸出向量和Sj輸入向量的方向保持一致。公式(1)的第一部分為壓縮函數(shù),該函數(shù)的作用是使當(dāng)Sj輸出向量很大的時候,第一部分的值能無限趨近于1;如果Sj輸出向量的值很小,第一部分的值會約等于0;公式的第二部分的作用是單位化向量Sj,第二部分長度為1。當(dāng)輸出向量Vj的長度是在0和1之間,即表示VN給定特征的概率數(shù)值。此部分保留了輸入向量的方向,并將輸入向量的模壓縮到了0-1之間,用向量的模的大小衡量某個實體出現(xiàn)的概率,模值越大,概率越大。
(1)
1.3? 動態(tài)路由
膠囊網(wǎng)絡(luò)得動態(tài)路由由預(yù)測向量激活向量[8]等組成。
預(yù)測向量,如公式(2)所示
(2)
激活向量 是膠囊第ij個的輸出如公式(3)所示
(3)
步驟為:
(1)膠囊網(wǎng)絡(luò)將輸入的圖片封裝,輸出第ij位置得向量,r為路由迭代次數(shù);
(2)定義為l層連接下一層的可能性,初始值為0;
(3)循環(huán)執(zhí)行第4-7行r次;
(4)對l層的,將用softmax轉(zhuǎn)化成概率 ;
(5)對l+1層的,加權(quán)求和;
(6)對l+1層的,激活函數(shù)激活得到;
(7)根據(jù)和的關(guān)系來更新;
當(dāng)和的點積值相似時,點積值就大,值也會變大,低層連接到高層的可能性就變大;當(dāng)和的點積值差距較大時,點積就小,也就變小,低層連接高層的可能性就變小。
1.4? 損失函數(shù)
Capsule的損失函數(shù)如公式(4)所示。
(4)
該公式表明了最大化正負樣本到超平面的距離,其中表示損失希望正例樣本、表示損失希望負例樣本表示標定點,=0.9和=0.1。損失希望正例樣本預(yù)測在0.9,超過這一數(shù)值就沒必要繼續(xù)運算,負例在0.1,低于這一數(shù)值也就沒必要繼續(xù)運算。
1.5? Tensor Flow軟件庫
Tensor Flow是一個用于數(shù)值計算的開源軟件庫[9],該軟件庫具有高度的靈活性、具有自動求微分的功能,支持多語言編輯,能實現(xiàn)真正的可移植性,采用數(shù)據(jù)流圖在節(jié)點間建立相互聯(lián)系的多維? 數(shù)組。
使用Tensor Flow構(gòu)建可訓(xùn)練的神經(jīng)網(wǎng)絡(luò),首先使用使用NumPy生成假數(shù)據(jù)(phony data),總共100個點,構(gòu)造一個線性模型,如下所示:
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)
運用神經(jīng)元搭建完整的神經(jīng)網(wǎng)絡(luò),使用輸入層、隱藏層、輸出層、損失函數(shù)、參數(shù)求取搭建完整的神經(jīng)網(wǎng)絡(luò)。
2? 實驗
2.1? 實驗環(huán)境
本實驗使用的是4個NVIDIA 1080 TI 11G Pascal CPU、2個Intel i7-6900K 26核56線程CPU,三星DDR4 2666 32 G內(nèi)存,Asus X99-E WS/USB 3.1主板,4塊1080TI 11G顯卡,2個CPU 64 G? ? ?內(nèi)存。
軟件環(huán)境Microsoft Windows 10、Matlab 2018b矩陣實驗室。
2.2? 數(shù)據(jù)集
本次實驗采集的數(shù)據(jù)集是由海鑫HX-R8062U活體指紋采集儀采集得到的滾動捺印指紋,每個數(shù)據(jù)集包含有10人拇指的指紋數(shù)據(jù),在不同方向上采集的同一個人的5張指紋圖像,一共55張訓(xùn)練集,為了增加數(shù)據(jù),本文采用數(shù)據(jù)增強的方式對原始指紋數(shù)據(jù)集進行旋轉(zhuǎn)和模糊,擴增得到每一類500張數(shù)據(jù)集,一共5000數(shù)據(jù)集。
2.3? 圖像預(yù)處理
(1)指紋圖像數(shù)據(jù)增強
圖像進行訓(xùn)練前通過高斯高通濾波器來增強圖像數(shù)據(jù)量。如公式(5)[11]所示:
(5)
其中,
(6)
D(x,y)表示中心點與點(x,y)的距離,如公式(6)所示。卷積模板的中心點為D(x0,y0),其中D0為截止頻率,通過更改系數(shù)a,b的值來調(diào)節(jié)濾波器的濾波效果[7]。
通過實驗對比,增強后的圖像對比度明顯高于原圖像,提高了圖像質(zhì)量,正如圖2所示。
經(jīng)不同方向下隨機旋轉(zhuǎn)指紋得到最終數(shù)據(jù)集:
2.4? 實驗結(jié)果
利用tensorflow開源框架設(shè)計和實現(xiàn)深度神經(jīng)網(wǎng)絡(luò)。進行3次路由循環(huán),迭代訓(xùn)練31000次。識別率與LOSS值如表1所示。
實驗需要在NVIDIA 1080TI上10小時訓(xùn)練以生成CapsNet網(wǎng)絡(luò)。從圖8可以看出,橫坐標是CapsNets的迭代次數(shù),縱坐標是CapsNets的準確度和損失值。當(dāng)?shù)_到2000次時,精度開始接近90%。與此同時,損失一直低至0.02。隨著迭代次數(shù)的增加,振動逐漸減小,最終達到穩(wěn)定水平。它收斂到98.6%,損失價值也收斂到0.0107。當(dāng)?shù)_到200時,網(wǎng)絡(luò)接近98%,最終精度為98.5%,而損失值緩慢下降,最終總損失值為0.021,如圖3所示。
3? 結(jié)論
實驗結(jié)果顯示CapsNets適合指紋識別,CapsNets網(wǎng)絡(luò)結(jié)構(gòu)的簡易使得訓(xùn)練速度得到了大幅度的提升。同時根據(jù)是實驗結(jié)果可知膠囊網(wǎng)絡(luò)效果穩(wěn)定,精度與loss與訓(xùn)練結(jié)果接近,CapsNets的空間特性使得指紋特征更完整的提煉出,增加了識別精確度。雖然CapsNets在圖像背景復(fù)雜的情況下,從復(fù)雜的背景中分離出想要識別的特征也依然存在困難,在以后的工作當(dāng)中,也許在出現(xiàn)龐大的數(shù)據(jù)集的時候會出現(xiàn)其他問題,CapsNets仍處于起步階段,不過CapsNets的出現(xiàn)使得我們在對于指紋識別的研究提供了新穎的算法。
參考文獻
[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]林少丹, 洪朝群, 陳雨雪. 結(jié)合膠囊網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的目標識別模型[J]. 電訊技術(shù). 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]鄭遠攀, 李廣陽, 李曄. 深度學(xué)習(xí)在圖像識別中的應(yīng)用研究綜述[J]. 計算機工程與應(yīng)用. 2019, 55 (12) : 20-36.
[8]岡薩雷斯, 伍茲, 阮秋琦, 等. 數(shù)字圖像處理[M]. 電子工業(yè)出版社. 2007.
[9]佚名. 谷歌推出 TensorFlow 機器學(xué)習(xí)系統(tǒng)[J]. 電信工程技術(shù)與標準化, 2015, 28(11) : 92-92.
[10]劉帆, 劉鵬遠, 李兵, 等. TensorFlow平臺下的視頻目標跟蹤深度學(xué)習(xí)模型設(shè)計[J]. 光學(xué)學(xué)報, 2017, 54(9): 1-1.
[11]曹妍, 陳偉. 基于 MATLAB GUI 的指紋圖像增強技術(shù)研究[J]. 軟件, 2018, 39(11): 30-32.