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