錢 鵬 劉滿華,2*
1(上海交通大學儀器科學與工程系 上海 200240) 2(上海交通大學人工智能研究院 上海 200240)
生物特征識別是如今進行身份識別的重要手段,相較于其他身份識別技術,生物特征識別不易被篡改、偽造,并且具有唯一不變性[1]。指紋識別作為生物特征識別的重要組成部分,研究起步早,發(fā)展迅速,現(xiàn)在已經(jīng)得到了廣泛的研究和應用。盡管如此,指紋識別技術仍然存在許多挑戰(zhàn)性問題,比如現(xiàn)有的自動指紋識別系統(tǒng)對多種低質(zhì)量和低分辨率的指紋并不能很好地完成識別。雖然現(xiàn)在已有許多針對低質(zhì)量指紋進行增強的算法被提出[2-6],但針對低分辨率指紋的研究并不常見[7]。目前針對低分辨率或者嬰幼兒指紋,自動指紋識別系統(tǒng)仍然采用上采樣的方式提高圖像分辨率,圖像在上采樣過程中會出現(xiàn)明顯的信息不足和模糊,影響識別精度。如何在提高指紋圖像分辨率的同時不丟失指紋細節(jié)信息是解決該問題的關鍵。
超分辨率任務主要是通過計算機圖像處理技術,將一幅低分辨率圖像轉(zhuǎn)換成一幅高分辨率圖像。超分辨率算法目前廣泛應用于醫(yī)療圖像和遙感圖像等領域[8-9]。該任務最具挑戰(zhàn)性的問題是如何重建在低分辨率圖像中丟失的細節(jié)。傳統(tǒng)的圖像插值上采樣算法(如最近鄰插值、雙線性插值和雙三次插值)無法重建細節(jié),放大的圖像通常比較模糊。目前已經(jīng)有大量經(jīng)典的超分辨率算法被提出[10],主要有基于預測的方法[20]、基于邊緣的方法[21]、基于統(tǒng)計的方法[22]、基于圖像塊的方法[23]和稀疏表示方法[8,24]等。
隨著深度學習算法的快速發(fā)展,已經(jīng)有多種基于深度學習的超分辨率方法被提出。SRCNN[11]首次將深度卷積神經(jīng)網(wǎng)絡應用于超分辨率任務。近幾年,大量基于卷積神經(jīng)網(wǎng)絡的超分辨率算法被提出。文獻[12]提出了一種改進的FSRCNN,它可以將圖像從低分辨率直接轉(zhuǎn)換為高分辨率。文獻[13]提出使用PixelShuffle層代替反卷積作為上采樣層以提高效率。文獻[14]將ResNet[15]結(jié)構(gòu)引入了超分辨率網(wǎng)絡,并提出了VDSR。他們認為低分辨率圖像和高分辨率圖像在很大程度上共享相同的信息,因此使用殘差網(wǎng)絡可以更充分地利用低分辨率圖像信息以提高超分辨率重建效果。除此之外,文獻[19]提出將條件生成式對抗網(wǎng)絡引入圖像超分辨率任務。
指紋超分辨率任務相關研究仍然較少,文獻[7]和文獻[16]提出了基于字典學習的指紋超分辨率重建算法,該方法使用高分辨率指紋圖像塊作為基本特征構(gòu)建字典,通過字典稀疏表示重建指紋高分辨率特征,效率和效果并不是特別理想。
本文參考其他領域基于深度學習的圖像超分辨率算法,提出了一種基于密集連接卷積神經(jīng)網(wǎng)絡(SRDenseNet)的指紋超分辨率重建方法。首先采集大量高分辨率指紋圖像作為訓練數(shù)據(jù),然后搭建SRDenseNet學習指紋低分辨率到高分辨率的重建,最后將低分辨率指紋圖像輸入已訓練好的SRDenseNet,從而完成端到端的指紋圖像超分辨率重建。
基于SRDenseNet的指紋超分辨率重建是將低分辨率指紋圖像輸入經(jīng)過訓練的SRDenseNet,輸出重建后的高分辨率指紋圖像。圖1展示了基于SRDenseNet的指紋超分辨率重建算法的具體流程,主要分為離線訓練和在線測試部分。離線訓練部分使用低分辨率和高分辨率圖像對訓練SRDenseNet,訓練過程網(wǎng)絡將學習如何從低分辨率圖像中重建高分辨率特征。在線測試部分使用訓練好的SRDenseNet,將待測試數(shù)據(jù)庫低分辨率圖像作為輸入,輸出對應高分辨率圖像。
圖1 基于SRDenseNet的指紋超分辨率重建流程
作為有監(jiān)督學習算法的一種,SRDenseNet的訓練需要大量訓練數(shù)據(jù)。為保證訓練數(shù)據(jù)和測試數(shù)據(jù)保持獨立,本文采集了大量高分辨率指紋圖像用于訓練,測試數(shù)據(jù)采用國際公開FVC指紋數(shù)據(jù)庫[25]。圖2展示了部分采集的高分辨率指紋圖像,為保證神經(jīng)網(wǎng)絡能夠充分學習到各種指紋圖像的高分辨率特征,采集過程中對重壓、輕壓、干濕狀態(tài)等情況進行了模仿。由圖1可知,網(wǎng)絡訓練所需的低分辨率輸入圖像由高分辨率圖像下采樣獲得,與原始高分辨率圖像組成訓練數(shù)據(jù)對。為增加訓練數(shù)據(jù)量,對采集的指紋圖像進行了裁剪、平移和灰度變換等數(shù)據(jù)增強操作。
圖2 訓練用高分辨率指紋圖像
SRDenseNet參考了DenseNet[17]結(jié)構(gòu),網(wǎng)絡結(jié)構(gòu)如圖3所示,其中圖3(a)展示了基礎的SRCNN[11]基本結(jié)構(gòu),圖3(b)展示了本文改進的SRDenseNet結(jié)構(gòu)。表1展示了Dense塊內(nèi)部網(wǎng)絡結(jié)構(gòu)參數(shù)。
表1 Dense塊內(nèi)部網(wǎng)絡結(jié)構(gòu)
圖3 SRDenseNet指紋超分辨率網(wǎng)絡結(jié)構(gòu)圖
SRCNN中卷積層采用3×3卷積核。本文所提出的SRDenseNet將SRCNN中卷積層替換成Dense塊并在Dense塊外部加入Dense跳連接。Dense塊結(jié)構(gòu)如表1所示,每個Dense塊中含有6個卷積層,Dense塊中每個卷積層的輸入是該Dense塊中該層前序所有卷積層輸出的級聯(lián)。例如第6個卷積層的輸入為該Dense塊中前序所有卷積層輸出在第3維度的級聯(lián),前序總計6個128×128×32輸出層,因此輸入尺寸為128×128×192。多層跳連接的加入可以充分利用各層級提取出的特征信息,同時減輕深度網(wǎng)絡所產(chǎn)生的梯度消失和過擬合現(xiàn)象。每個卷積層包含了一組卷積核大小為1×1的卷積和一組卷積核大小為3×3的卷積,每組含有32個卷積核。由于Dense塊中每個卷積層的輸入為前序所有卷積層輸出的級聯(lián),1×1卷積層可以在融合各層信息的同時減少計算量,之后通過3×3卷積層進一步提取特征信息。激活函數(shù)使用LeakyReLU,并且在激活函數(shù)前使用批歸一化以加快收斂速度。另外,本文在每個Dense塊外部加入了跳連接,與Dense塊內(nèi)部相似,每個Dense塊的輸入由之前所有Dense塊輸出的級聯(lián),同樣起到了與Dense塊類似的作用。
網(wǎng)絡經(jīng)過3個Dense塊后,經(jīng)過一組上采樣卷積層擴大圖像尺寸。上采樣卷積層包含了一組3×3的卷積層和PixelShuffle層[13],PixelShuffle層通過將卷積輸出的特征圖矩陣進行重新排布,擴大輸出尺寸。例如一個尺寸為32×32×4的特征圖可以通過PixelShuffle層轉(zhuǎn)換為一個64×64×1的特征圖。相較于反卷積層,PixelShuffle層計算量更小,同時可以避免生成圖像產(chǎn)生棋盤效應。最后經(jīng)過Sigmoid激活層輸出最終超分辨率圖像。
損失函數(shù)用于計算當前網(wǎng)絡輸出與目標之間的差異,通過損失函數(shù)值計算更新網(wǎng)絡參數(shù)以達到訓練網(wǎng)絡目的。作為回歸任務的一種,超分辨率任務常用損失函數(shù)為均方差損失(MSE),其計算公式如下:
(1)
式中:(x,y)為像素坐標,S為生成網(wǎng)絡生成圖像,H為真實高分辨率圖像;w和h分別為圖像的寬和高。
均方誤差損失函數(shù)將生成圖像與真實圖像按像素逐一計算誤差,最終計算全圖的方差均值。均方差損失關注生成圖像與真實圖像之間全局灰度值之間的差異。
除均方誤差外,指紋圖像還需要關注圖像脊線結(jié)構(gòu)和局部細節(jié)之間的差異。因此,本文將平均結(jié)構(gòu)相似度損失(MSSIM)[26]引入SRDenseNet的訓練。平均結(jié)構(gòu)相似度損失公式如下:
(2)
(3)
最后圖像損失函數(shù)線性組合均方誤差損失和平均結(jié)構(gòu)相似度損失,計算如下:
loss=λ1MSE(S,H)+λ2[1-MSSIM(S,H)]
(4)
式中:λ1和λ2為MSE和MSSIM權(quán)重。需要注意的是,式(3)計算獲得的局部結(jié)構(gòu)相似度范圍為[0,1],數(shù)值越大,圖像結(jié)構(gòu)越相似,因此在計算損失函數(shù)時需要將其反轉(zhuǎn),保證圖像越相似損失函數(shù)值越小且接近0。平均結(jié)構(gòu)相似度損失的加入可以使SRDenseNet在訓練過程中學習如何重建圖像灰度信息的同時學習如何重建指紋紋理結(jié)構(gòu)信息,保證指紋最重要的紋理結(jié)構(gòu)和特征點信息不丟失。
SRDenseNet訓練主要包含數(shù)據(jù)生成、前向傳播和反向傳播,步驟如下。
步驟1加載高分辨率指紋訓練數(shù)據(jù)作為目標,對該數(shù)據(jù)進行下采樣作為輸入,并對輸入和輸出圖像做歸一化處理;
步驟2輸入數(shù)據(jù)經(jīng)過神經(jīng)網(wǎng)絡計算超分辨率輸出圖像,根據(jù)式(4)計算輸出超分辨率圖像與真實高分辨率圖像之間的損失函數(shù)值;
步驟3由損失函數(shù)值計算神經(jīng)網(wǎng)絡參數(shù)梯度,更新神經(jīng)網(wǎng)絡參數(shù);
步驟4重復上述步驟,直至損失函數(shù)值收斂至穩(wěn)定。
SRDenseNet采用PyTorch神經(jīng)網(wǎng)絡架構(gòu)進行搭建和訓練,采用Adam優(yōu)化器,初始學習率設置為0.001,訓練塊大小設置為8,總共迭代50次,采用NVIDIA RTX 2080Ti GPU進行訓練,大約6個小時完成訓練。
在SRDenseNet模型訓練后,為對比驗證所提出超分辨率算法的有效性,本文對算法進行了相關實驗。實驗內(nèi)容主要包含網(wǎng)絡結(jié)構(gòu)消融實驗和指紋匹配準確率比較實驗。
實驗數(shù)據(jù)選取FVC公開指紋數(shù)據(jù)庫[25],該數(shù)據(jù)庫包含大量子數(shù)據(jù)庫,為方便與其他文獻進行對比,本文選取了文獻[16]中使用的FVC2004DB3進行對比實驗。該數(shù)據(jù)庫包含10個不同的手指,每個手指采集8幅圖像,總計80幅指紋圖像。
為驗證網(wǎng)絡結(jié)構(gòu)有效性,采用對網(wǎng)絡結(jié)構(gòu)進行消融裁剪的方式進行對比實驗。消融實驗采用圖像相似度作為評價指標,主要包含結(jié)構(gòu)相似度(SSIM)和峰值信噪比(PSNR)。結(jié)構(gòu)相似度和峰值信噪比廣泛應用于圖像超分辨率任務,反映了超分辨率重建圖像與真實高分辨率圖像之間的相似度。其中結(jié)構(gòu)相似度由式(2)計算獲得,峰值信噪比計算公式如下:
(5)
式中:MAX為圖像灰度值最大值,本文中該值為255;MSE(S,H)由式(1)計算得到。為保證消融實驗公平性,除對比所改變的網(wǎng)絡結(jié)構(gòu)外,其余數(shù)據(jù)和參數(shù)均保持一致。結(jié)構(gòu)相似度范圍為[0,1];峰值信噪比范圍為[0,+∞),均為值越大相似度越高。
網(wǎng)絡結(jié)構(gòu)消融實驗部分主要對比三種不同的網(wǎng)絡參數(shù)結(jié)構(gòu)對生成圖像效果的影響,其中結(jié)構(gòu)1采用圖3(a)所示的SRCNN結(jié)構(gòu),損失函數(shù)采用式(1)的均方差損失;結(jié)構(gòu)2如圖3(b)所示,在結(jié)構(gòu)1的基礎上將卷積層替換為Dense塊,Dense塊的內(nèi)部和外部均加入大量Dense跳連接,損失函數(shù)相較于結(jié)構(gòu)1不變;結(jié)構(gòu)3在結(jié)構(gòu)2的基礎上將損失函數(shù)修改為式(4),將平均結(jié)構(gòu)相似度損失引入損失函數(shù),該結(jié)構(gòu)為本文所提出的最終結(jié)構(gòu)。圖4展示了不同結(jié)構(gòu)超分辨率圖像的結(jié)果,并展示了真實高分辨率指紋圖像作為對比參考。表2展示了不同結(jié)構(gòu)超分辨率結(jié)果的圖像相似度指標,其中包含了相似度指標的絕對數(shù)值和相較于上一個結(jié)構(gòu)的相對提升。
表2 不同網(wǎng)絡結(jié)構(gòu)的圖像相似度和峰值信噪比性能比較
圖4 基于不同網(wǎng)絡結(jié)構(gòu)的指紋超分辨率結(jié)果比較
從圖4可以看出,圖4(b)由結(jié)構(gòu)1生成的圖像擁有一定的超分辨率重建能力,對于指紋脊線清晰的部分能夠成功提高分辨率并重建紋理,但對于脊線密集部分并不能很好地重建,甚至出現(xiàn)了嚴重的紋理結(jié)構(gòu)錯誤。圖4(c)由結(jié)構(gòu)2生成的圖像相較于結(jié)構(gòu)1有著更強的重建能力,圖像大部分區(qū)域能夠正確地重建,由此證明Dense塊的加入可以很好地提升網(wǎng)絡的抗噪和重建能力,但圖中框選區(qū)域仍出現(xiàn)了紋理結(jié)構(gòu)錯誤的情況。圖4(d)由結(jié)構(gòu)3生成的圖像相較于結(jié)構(gòu)2擁有了更強的超分辨率重建能力,圖像框選區(qū)域紋理結(jié)構(gòu)走向沒有出現(xiàn)錯誤,能夠很好地完成超分辨率重建,由此證明平均局部結(jié)構(gòu)損失的加入能夠提高網(wǎng)絡對于圖像結(jié)構(gòu)的重建能力。
從表2中可以看到結(jié)構(gòu)2相較于結(jié)構(gòu)1,結(jié)構(gòu)相似度和峰值信噪比均有明顯提升,證明了Dense塊的加入能夠在整體上很好地提升網(wǎng)絡超分辨率重建能力。結(jié)構(gòu)3相較于結(jié)構(gòu)2,結(jié)構(gòu)相似度和峰值信噪比均有一定的提升,其中結(jié)構(gòu)相似度的相對提升比峰值信噪比更大,證明平均局部結(jié)構(gòu)損失的加入能夠提升網(wǎng)絡超分辨率重建的能力,并且對圖像結(jié)構(gòu)重建能力的提升更明顯。
除網(wǎng)絡結(jié)構(gòu)消融實驗外,本文還通過實驗測試了指紋匹配準確率,并與其他文獻進行了比較。為與其他文獻保持相同的實驗環(huán)境,本文采用開源的指紋匹配算法架構(gòu)(http://www.codeproject.com)進行指紋匹配,指紋匹配算法采用由文獻[18]提出的M3gl指紋匹配算法。由于該算法只能處理500 dpi的指紋圖像,因此本文采用文獻[16]中提出的先下采樣降低分辨率,然后使用超分辨率算法將分辨率重新提升至500 dpi的方式進行匹配測試。匹配方案與其他文獻保持一致:相同手指之間匹配,總計280對匹配指紋;不同手指之間同一編號匹配,總計360對不匹配指紋。
指紋自動匹配系統(tǒng)將輸入兩幅待匹配指紋,輸出對應匹配分數(shù),通過設定匹配閾值確定待匹配指紋是否匹配。指紋匹配算法性能一般通過檢測誤差曲線(DET)和等錯誤率(EER)評判。DET曲線橫坐標為錯誤接受率(FMR),縱坐標為錯誤拒絕率(FNMR)。
DET曲線展示了當匹配閾值變化時,錯誤接受率和錯誤拒絕率之間的變化關系。當錯誤接受率等于錯誤拒絕率時,此時的值稱為等錯誤率。實驗過程中,本文使用不同的超分辨率算法對相同數(shù)據(jù)庫進行超分辨率,并使用相同的指紋匹配算法進行性能驗證。最終不同超分辨率算法之間的性能將通過匹配錯誤率進行評價,匹配錯誤率越低,超分辨率算法效果越好。
本文使用雙三次插值上采樣算法作為對比的基準方法,并選取了來自文獻[7-8,16]的指紋超分辨率算法進行對比。圖5展示了低分辨率圖像和不同算法超分辨率之后的圖像,圖6展示了FVC2004DB3中使用不同超分辨率算法放大不同倍率的DET曲線,表3展示了圖6中DET曲線不同放大倍率對應的EER相關結(jié)果。
表3 不同方法在不同放大倍率下EER結(jié)果(%)
圖5 不同超分辨率算法結(jié)果比較
圖6 不同倍率超分辨率DET曲線
從圖5中可以看出,雙三次插值上采樣獲得的圖像模糊,細節(jié)點區(qū)分困難。文獻[7-8]提出的方法生成的圖像相較于雙三次插值上采樣圖像有明顯的清晰度提升,但白框中細節(jié)點仍然存在模糊的情況。文獻[16]方法生成的圖像脊線更加清晰,但脊線灰度值平滑嚴重,且白框中細節(jié)點仍然無法還原。本文提出的基于SRDenseNet的指紋超分辨率重建算法生成的圖像更加清晰,保留了指紋脊線的灰度信息,白框中細節(jié)點能夠很好地還原,圖像整體效果和細節(jié)點還原都更好。由圖6可以看出,SRDenseNet生成的高分辨率圖像在后續(xù)指紋匹配結(jié)果錯誤率明顯低于其他算法,DET曲線更低。從表3中可以看到,SRDenseNet在2、3、4倍率下的匹配等錯誤率從相較于目前最好的文獻[16]的5.456%、8.730%和16.091%下降至4.762%、7.500%和12.540%,并且放大倍率越高,優(yōu)勢越明顯。實驗證明,本文提出的基于SRDenseNet的指紋超分辨率算法能夠有效地提升圖像質(zhì)量以及指紋匹配準確率。
本文提出了一種基于SRDenseNet的超分辨率算法,該算法通過對大量高分辨率指紋圖像進行學習,重建低分辨率指紋圖像紋理結(jié)構(gòu)。網(wǎng)絡結(jié)構(gòu)中加入Dense塊和Dense跳連接以充分利用卷積網(wǎng)絡各層級信息,并在損失函數(shù)中加入平均局部結(jié)構(gòu)相似度。該網(wǎng)絡結(jié)構(gòu)能夠在提升指紋圖像分辨率的同時,重建指紋紋理脊線,保留指紋特征點信息。實驗結(jié)果表明,本文方法生成的超分辨率指紋圖像更加清晰,細節(jié)更完整。Dense塊和平均局部結(jié)構(gòu)相似度的加入能夠有效提升網(wǎng)絡超分辨率重建和抗噪能力。相較于其他超分辨率算法,后續(xù)匹配錯誤率更低,且放大倍數(shù)越大,優(yōu)勢越明顯。下一步的工作將在本文工作基礎上,進一步提高指紋圖像質(zhì)量,以提高指紋匹配準確率。