吳碧巧,邢永鑫,王天一
(貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴陽550025)
掌紋作為一種重要的生物特征,和指紋一樣,可用于身份驗證、身份識別、公共安全等多個領(lǐng)域。低分辨率掌紋圖像的分辨率介于75~150 dpi之間,以照相機、攝像機等采集為主[1],多為非接觸式采集的掌紋圖像,其研究成果相對較多[2-4]。高分辨率掌紋圖像的分辨率在300 dpi以上,采用掃描儀掃描掌紋,屬于接觸式采集的掌紋圖像。高分辨率掌紋圖像由于其分辨率高,所以尺寸會較大,對其進行處理的計算成本也更高,但細節(jié)特征點很多[5],包含豐富的信息,在公安刑偵領(lǐng)域和法律層面都具有重要的應(yīng)用。在犯罪現(xiàn)場不僅會留下指紋,還會留下殘缺或完整的掌紋信息[6]。
目前,對高分辨率掌紋圖像的識別主要采用對掌紋輪廓、掌紋主線、褶皺線、細節(jié)特征點、三角點等特征點進行特征提取、匹配的方法。Jain等人[7]以細節(jié)為特征,用固定長度的細節(jié)描述符,捕獲每個細節(jié)周圍的獨特信息?;趯R的匹配算法用于匹配掌紋,對實時掃描手掌圖樣和潛在掌紋的識別率分別為78.7%和69%。Feng等人[8]提出了掌紋表示的Gabor幅相模型,將Adaboost算法引入模型訓(xùn)練中,將所選弱分類器的加權(quán)線性組合的響應(yīng)值用于細節(jié)可靠性測量和不可靠的去除。Fei等人[9]提出了圓邊界一致性,使用加長的Gabor濾波器設(shè)計來獲取更可靠的細節(jié)特征點。Liu等人[10]對掌紋匹配設(shè)計了基于細節(jié)簇和細節(jié)匹配傳播的粗略匹配策略,識別準確度為79.4%。由于受到3條主線和噪聲的強烈影響以及圖像采集時的不規(guī)范行為,高分辨率掌紋圖像的部分區(qū)域圖像質(zhì)量較差,傳統(tǒng)的掌紋識別方法在方法設(shè)計上復(fù)雜,識別時間長且識別效果不理想。
深度學(xué)習(xí)能夠通過自動學(xué)習(xí)從大數(shù)據(jù)中獲得有效的特征表示并進行識別,免除了繁雜的特征提取算法和掌紋匹配過程,但對訓(xùn)練數(shù)據(jù)的數(shù)量和質(zhì)量要求較高。目前,高分辨率掌紋數(shù)據(jù)庫大多數(shù)據(jù)量小且單個的掌紋圖像大,直接在深度學(xué)習(xí)網(wǎng)絡(luò)使用難以達到好的識別效果。
針對以上問題,本文以VGG16為基礎(chǔ)網(wǎng)絡(luò),提出基于遷移學(xué)習(xí)的掌紋識別技術(shù)。利用遷移學(xué)習(xí),通過共享特征把從源域?qū)W習(xí)到的信息遷移轉(zhuǎn)換到目標域中,以解決目標域帶標簽樣本數(shù)據(jù)量較少的識別問題。本文使用由自然圖像組成的ImageNet預(yù)訓(xùn)練網(wǎng)絡(luò)模型得到初始化權(quán)重,由于ImageNet訓(xùn)練的神經(jīng)網(wǎng)絡(luò)偏向于紋理,因而適用于對高分辨率掌紋圖像的識別。針對數(shù)據(jù)量小,單個數(shù)據(jù)大的問題,可利用圖像增強技術(shù)將單張的高分辨率掌紋圖像進行等大小的裁剪分塊,得到同一個掌紋的不同塊掌紋作為新的數(shù)據(jù)集,增大了數(shù)據(jù)集進行圖像的識別,對同一張掌紋圖像的不同塊掌紋塊進行投票得到一個更好的識別效果。
卷積神經(jīng)網(wǎng)絡(luò)源自于Lecun等人提出的LeNet[11],包含一系列的卷積層、池化層和全連接層。卷積層使用一組可訓(xùn)練的卷積核對輸入圖像進行特征提取,卷積層的參數(shù)共享機制大大減少了參數(shù)的數(shù)量[12],使得參數(shù)的數(shù)量與輸入圖片的大小無關(guān),增加了網(wǎng)絡(luò)的泛化能力。池化層一般在卷積層后,主要有平均池化和最大池化,池化層在保留特征圖主要特征的情況下,可以通過減少特征圖的大小來減少參數(shù)量,防止網(wǎng)絡(luò)過擬合,提高模型的泛化能力。全連接層的核心操作是矩陣向量乘法,前一層所有神經(jīng)元與后一層的所有神經(jīng)元相連。因為全連接層所有神經(jīng)元都相連的特性,一般全連接層的參數(shù)是最多的,存在著一定的參數(shù)冗余。全連接層一般位于網(wǎng)絡(luò)模型的最后幾層,處理前面卷積層提取到的高級特征,在整個卷積神經(jīng)網(wǎng)絡(luò)中扮演著“分類器”的角色。
VGG模型是由Simonyan等人于2014年提出的[13],模型非常簡單,只有卷積層、最大池化層和全連接層。VGG模型首次提出了小卷積核的優(yōu)勢,在卷積層使用非常小的(3×3)的卷積核,添加更多的卷積層使得網(wǎng)絡(luò)變得更深。使用2個3×3的卷積核可以代替5×5的卷積核,使用3個3×3的卷積核可以代替7×7的卷積核[14]。使用更小的卷積核可以減少網(wǎng)絡(luò)的參數(shù),提升網(wǎng)絡(luò)的深度,增強了網(wǎng)絡(luò)的表達能力;同時更多的使用非線性激活函數(shù),可以提高網(wǎng)絡(luò)的判斷能力。VGG網(wǎng)絡(luò)在圖像識別領(lǐng)域的成功運用,代表著更深層的網(wǎng)絡(luò),可顯著提升圖像識別的效果。
VGG網(wǎng)絡(luò)中所有卷積層的卷積核大小都是(3×3),幾個卷積層后面接一個最大池化層為一個block。VGG16的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。VGG16共有5個block,每個block的通道數(shù)一致,最大池化層減少特征圖的尺寸。隨著卷積層一層層的運算,卷積核輸出的內(nèi)容越來越抽象,保留的信息也越來越少,特征圖的尺寸也越來越小,通道數(shù)越來越多,以提取更多的抽象特征。Block5完成后將特征圖平鋪成一維數(shù)據(jù)作為全連接層的輸入。最后3層為全連接層,前2層每層具有4 096個神經(jīng)元,使用Relu非線性激活函數(shù),第3層有1 000個神經(jīng)元(1 000個類別)使用softmax函數(shù)。
圖1 VGG16網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Network structure of VGG16
遷移學(xué)習(xí)的目的是將源于學(xué)習(xí)到的知識應(yīng)用推廣到目標域中[15]。在深度學(xué)習(xí)中,訓(xùn)練數(shù)據(jù)的獲取至關(guān)重要,當訓(xùn)練樣本不夠時,往往識別效果也不盡如人意。有時因為客觀原因無法獲得足夠的數(shù)據(jù)樣本,或者大量沒有進行標注的數(shù)據(jù)樣本,無法直接使用,需要耗費大量的人力去標注,網(wǎng)絡(luò)無法得到足夠的訓(xùn)練。遷移學(xué)習(xí)則可以將從其它相似數(shù)據(jù)集上訓(xùn)練得到的網(wǎng)絡(luò)權(quán)重遷移到目標網(wǎng)絡(luò),能夠更快更好地進行參數(shù)的訓(xùn)練,而不必從頭訓(xùn)練。
深度遷移學(xué)習(xí)主要有3種方式:使用其它數(shù)據(jù)集訓(xùn)練好的權(quán)重系數(shù),作為初始化權(quán)重參數(shù),進行接下來的訓(xùn)練;使用其它數(shù)據(jù)集的權(quán)重參數(shù),凍結(jié)預(yù)測層之前的所有權(quán)重參數(shù),進行接下來的訓(xùn)練;使用其它數(shù)據(jù)集訓(xùn)練好的權(quán)重參數(shù),有選擇地凍結(jié)一部分層,對其余層進行參數(shù)的更新和訓(xùn)練。
目前存在的高分辨率掌紋圖像數(shù)據(jù)庫主要有2類:一種是公安部門采集的標準掌紋檔案庫(不公開),其次是實驗條件控制下采集的公開用于科研的高分辨率掌紋圖像數(shù)據(jù)庫。本文使用的公開數(shù)據(jù)庫為THU高分辨率掌紋數(shù)據(jù)庫[16],該數(shù)據(jù)庫中采集了80人的左右手掌,共有160個不同手掌的1 280張高分辨率掌紋圖像。其中,單個手掌有8張掌紋圖像。數(shù)據(jù)庫中的每一張高分辨率掌紋圖像的分辨率均為500 ppi,大小為2 040x2 040像素,大部分掌紋圖像是灰度圖像,但有少數(shù)掌紋圖像是彩色圖像。處理數(shù)據(jù)時,將所有的高分辨率掌紋圖像讀取為灰度圖像。圖2中顯示了2張THU數(shù)據(jù)庫中的高分辨率掌紋圖像。數(shù)據(jù)庫中有的掌紋采集的很完整,整個掌紋的脊線、褶皺、谷線、主線都被清楚的采集到,如圖2中的(a)圖所示。但也有少數(shù)的掌紋只采集到一部分掌紋信息,如圖2中的(b)圖,三條主線信息全部丟失。
圖2 高分辨率掌紋圖像Fig.2 High resolution palmprint image
在本文實驗中,將采集到的每個手掌掌紋圖像中的六張圖像,即160×6=960張掌紋圖像作為訓(xùn)練樣本;其余的160×2=320張掌紋圖像作為測試樣本。數(shù)據(jù)集里原本高分辨率掌紋圖像大小為2 040×2 040像素,為了減小運算量,提高運算速度,對數(shù)據(jù)集進行降采樣預(yù)處理,處理后的掌紋圖片大小為510×510像素。
本文使用在imagenet數(shù)據(jù)集上訓(xùn)練得到的權(quán)重參數(shù)作為初始化參數(shù),訓(xùn)練識別高分辨率掌紋圖像。雖然這些參數(shù)并不是針對高分辨率掌紋圖像的,但這些參數(shù)對紋理有很好的分辨能力。高分辨率掌紋圖像主要依靠紋理進行識別而非形狀,理論上此遷移學(xué)習(xí)會有很好的結(jié)果。
將VGG16在imagenet數(shù)據(jù)集上訓(xùn)練得到的參數(shù)信息中卷積層部分的參數(shù),用來初始化本實驗的VGG16模型的卷積層參數(shù)。將原模型中的flatten操作換成全局最大池化操作,可以有效的較少參數(shù)數(shù)量,防止過擬合。將第3個全連接層的softmax激活函數(shù)換成relu激活函數(shù),并在其后接一個全連接層160個神經(jīng)元,代表著160個類別。softmax激活,得到預(yù)訓(xùn)練VGG16模型,如圖3所示。增加一個全連接層能提升模型的非線性表達能力,綜合前面卷積層提取到的特征,更好的完成分類任務(wù)。
圖3 VGG16遷移模型Fig.3 Transfer model of VGG16
預(yù)訓(xùn)練VGG16模型的最后4層全連接層使用隨機參數(shù)初始化方法,前3層的激活函數(shù)為relu非線性激活函數(shù),最后一層是softmax激活函數(shù)。數(shù)據(jù)庫中的掌紋圖像基本為灰度圖像,即圖像的通道數(shù)為1,采用預(yù)訓(xùn)練模型的輸入通道為3,故將高分辨率掌紋圖像的通道復(fù)制3次,變成3通道圖像。
預(yù)處理后的高分辨率掌紋圖像大小為510×510像素,對預(yù)處理后的高分辨率掌紋圖像進行數(shù)據(jù)增強的等分裁剪。
圖4為按照不同的尺寸裁剪后的左上角的第一個掌紋圖像塊,可以看到,圖片裁剪的越小,其包含的有效信息就越少。
圖4 裁剪后的掌紋圖像塊Fig.4 Palmprint image blocks
表1為數(shù)據(jù)增強的數(shù)據(jù),裁剪份數(shù)為將一個完整的高分辨率掌紋圖像有重疊的等分后得到的掌紋塊數(shù)量。分別有4組實驗數(shù)據(jù):4等分、9等分、16等分和25等分。其中,掌紋塊為裁剪后單個的掌紋圖像塊大小,重疊部分為裁剪后2個相鄰的掌紋圖像塊在一個維度上重疊的部分。
表1 數(shù)據(jù)增強數(shù)據(jù)Tab.1 Data of data enhancement
在一組實驗中,如掌紋圖像9等分實驗,將訓(xùn)練集和測試集都進行同樣的9等分裁剪的操作,會得到960×9=8 640個訓(xùn)練掌紋圖像塊,320×9=2 880個測試掌紋圖像塊。訓(xùn)練集會將裁剪后得到的掌紋圖像塊順序打亂,送入VGG16深度遷移模型進行訓(xùn)練,得到訓(xùn)練好的參數(shù)模型。測試集則不打亂順序,一張掌紋圖像的9個掌紋圖像塊都是按順序依次排列。將裁剪得到的掌紋圖像塊放入訓(xùn)練好的VGG16深度遷移模型進行測試,將得到每一張掌紋圖像塊的預(yù)測值。
將得到的預(yù)測結(jié)果進行重新排列。例如,對9等分得到的掌紋圖像塊的預(yù)測值處理為:將所有的預(yù)測值reshape對應(yīng)為(320,9)的隊列。其中320代表測試集的320張掌紋圖像,一行有9個掌紋圖像塊的預(yù)測值,這9個掌紋圖像塊來自于同一張掌紋圖像的不同部分。采用硬投票的方式,即直接用掌紋圖像塊的類別值,對每一行的9個掌紋圖像塊的預(yù)測值進行投票?;谏贁?shù)服從多數(shù)的原則,票數(shù)多的預(yù)測值即為這張掌紋圖像的預(yù)測值,若有2個類別投票結(jié)果一致,則隨機選擇一個預(yù)測值。320行每行都會得到一個預(yù)測值即為測試集的測試結(jié)果,再將該值與每個掌紋圖像的標簽進行比對,若相等結(jié)果為1,否則為0。求取所有結(jié)果的平均值,即為最后的測試準確率。
實驗均在Ubuntu18.04.4LTS操作系統(tǒng)上進行,采用tensorflow深度學(xué)習(xí)框架、i7-9700處理器、RTX 2080Ti顯卡、32GB內(nèi)存。所有實驗都采用VGG16模型,損失函數(shù)默認使用Cross Entropy Loss、Adam優(yōu)化器,Batch Size為8,學(xué)習(xí)率為1×10-5。
將預(yù)處理后的數(shù)據(jù)集分別在隨機初始化參數(shù)的VGG16與使用imagenet比賽中預(yù)訓(xùn)練模型參數(shù)的VGG16上運行。
圖5為隨機初始化參數(shù)的VGG16與使用imagenet比賽中預(yù)訓(xùn)練模型參數(shù)的VGG16的訓(xùn)練結(jié)果對比圖。橫坐標為訓(xùn)練次數(shù),縱坐標分別為準確率和損失值。從圖中可以看出,無論準確率還是損失值,相比于隨機初始化的網(wǎng)絡(luò),采用預(yù)訓(xùn)練權(quán)重網(wǎng)絡(luò)收斂的更快且更加平穩(wěn)。
圖5 VGG16運行結(jié)果Fig.5 VGG16 running results
由圖5(a)可以看到,隨機初始化參數(shù)的VGG16在第38個epoch時,訓(xùn)練達到最好效果。此時訓(xùn)練準確率為99.89%,測試準確率為66.87%。此后,訓(xùn)練準確率和測試準確率沒有明顯的變化,圖5(b)訓(xùn)練損失值不再變化,而測試損失卻開始增加,此時網(wǎng)絡(luò)已經(jīng)過擬合。而使用訓(xùn)練權(quán)重的網(wǎng)絡(luò)在第5個epoch時訓(xùn)練準確率就已達到100%;測試準確率為95%,測試準確率在第17個epoch時達到了96.56%,之后不再變動。
圖6為4組實驗的準確率曲線圖。從左至右分別是4、9、16、25等分掌紋圖像塊。曲線圖的橫坐標為迭代次數(shù),縱坐標為準確率。由圖可知,掌紋圖像塊的尺寸越大,包含的有效信息越多,測試準確率越高,而且曲線越平穩(wěn),波動越小。
圖6 不同掌紋圖像塊的準確率Fig.6 The accuracy of different palmprint image blocks
圖7為裁剪成不同份數(shù)的掌紋圖像的測試準確率。從圖中可以看到,各個準確率曲線都存在一定的波動性,掌紋圖像分的越小最后投票得到的掌紋圖像準確率的波動性越小。因此盡可能地將圖片裁剪,最后投票得到的準確率越高,且結(jié)果更加的穩(wěn)定。25等分的掌紋圖像的識別率最好,16等分略好于9等分,最差的是4等分。
圖7 不同裁剪份數(shù)掌紋圖像測試準確率Fig.7 Test accuracy of palmprint images with different cropped copies
掌紋圖片分的越小,就有越多的掌紋圖像塊參與投票,投票機制的容錯率越高。另一方面,掌紋圖像分的越多,總的重疊部分越多,4等分的重疊部分為90像素,9等分為180像素,16等分為210像素,25等分為240像素,對紋理的特征提取有更多的冗余,雖然有更好的識別精度,但也增加了計算成本。
表2為一張掌紋圖像裁剪為不同的大小后掌紋圖像塊的測試識別率、掌紋圖像的測試識別率與訓(xùn)練時間對比。由表可知,掌紋圖片裁剪的越小,掌紋圖像塊的識別準確率也越低;掌紋圖片裁剪的越小,掌紋圖像塊越小,單張掌紋圖像塊訓(xùn)練的時間也越少,但總的訓(xùn)練時間有所增加,其中,25等分的掌紋圖像塊的訓(xùn)練時間是4等分訓(xùn)練時間的兩倍多。綜合準確率與訓(xùn)練時間,最好的裁剪份數(shù)為9。9等分的圖像準確率為99.06%,相比于沒有裁剪的掌紋圖像準確率增加了2.5%,訓(xùn)練時間增加了一倍。16等分、25等分掌紋圖像準確率相比與9等分只增加了百分之零點幾,訓(xùn)練時間卻增加了28%和49%。
表2 不同裁剪份數(shù)的測試結(jié)果Tab.2 Test results of with different cropped copies
表3為不同算法的識別精度對比,可以看到,遷移學(xué)習(xí)可以極大的提升網(wǎng)絡(luò)的識別精度。表中列舉了4個其它方法得到的高分辨率掌紋圖像識別率,都是采用的傳統(tǒng)的機器學(xué)習(xí),可以看到,本文提出的方法識別精度遠遠高于機器學(xué)習(xí)基于細節(jié)特征匹配的方法。
表3 不同算法識別率對比Tab.3 Comparison of recognition rates of different algorithms
目前深度學(xué)習(xí)的網(wǎng)絡(luò)模型都需要大量的數(shù)據(jù)進行訓(xùn)練,數(shù)據(jù)量不夠會出現(xiàn)網(wǎng)絡(luò)無法訓(xùn)練或者過擬合,本文采用VGG16為基礎(chǔ)網(wǎng)絡(luò),結(jié)合遷移學(xué)習(xí)的方法,對高分辨率掌紋識別的準確率能達到96.56%,采用了遷移學(xué)習(xí)的VGG16網(wǎng)絡(luò)其在準確率、收斂速度和穩(wěn)定性都優(yōu)于隨機初始化的模型。使用圖像增強技術(shù)對高分辨率掌紋圖像進行處理,以掌紋圖像4等分、9等分、16等分、25等分為例,驗證了掌紋圖像分塊識別投票算法的可行性。在實際應(yīng)用中,考慮到計算成本和計算時間,選擇將高分辨率掌紋圖像9等分將會是更好的選擇。