胡 強,張?zhí)t,趙昀杰,迪力夏提·多力昆
(新疆農業(yè)大學 計算機與信息工程學院,新疆 烏魯木齊 830000)
近年來,由于機器學習的快速發(fā)展,同時伴隨著人臉驗證精度的提高,基于該項技術而衍生的產品在大眾生活中呈現(xiàn)“井噴”之勢,如日常生活中應用較廣泛的手機人臉解鎖、小區(qū)門禁、支付寶刷臉支付等。人臉的驗證相對于聲音、指紋、掌紋、虹膜等生物特征,具有以下優(yōu)勢:數(shù)據采集簡單;普遍的可接受性;應用的便捷性;較好的安全性。并且人臉特征具有自然性、方便性和非接觸性等優(yōu)點,使其在人機交互、身份信息驗證、地方安全監(jiān)控等方面具有巨大的應用前景?,F(xiàn)階段大量Web應用中的證件人臉驗證模塊,主要通過簡單的人臉檢測和人臉識別來完成,忽視了證件的質量與相關性,如要求用戶上傳居民身份證及本人照片完成人臉實名認證,但部分用戶并未按要求上傳證件,其通過上傳駕駛證、社??ǖ绕渌C件來變相完成人臉驗證。而融入基于目標檢測的證件判別方法可有效解決該問題。
人臉驗證最關鍵的兩個步驟是人臉檢測和人臉識別,隨著深度學習在計算機視覺領域的快速發(fā)展,越來越多基于卷積神經網絡的人臉驗證方法被相繼提出。其中效果顯著的人臉檢測算法有Joint Cascade[1],Cascade CNN[2],MTCNN[3]。主流的人臉識別算法有:DeepID[4-5]系列、FaceNet[6];DeepID利用卷積神經網絡提取人臉特征,在LFW人臉數(shù)據集上識別率可以達到97.45%,但受限于訓練樣本數(shù)量;在DeepID的基礎上引入了驗證信號的DeepID2表現(xiàn)更好,識別率達到了99.15%;FaceNet采用三元組損失函數(shù)對網絡模型進行訓練,其在LFW人臉數(shù)據集上的識別率可以高達99.63%。典型的目標檢測算法有:SPP-Net[7]、Fast-RCNN[8]、YOLO[9]、Mask R-CNN[10]算法等,YOLO算法的檢測速度很快但精度不是很好,而Mask R-CNN檢測精度相比于YOLO精度好了很多,也是由于Mask R-CNN良好的表現(xiàn),眾多學者將它應用在自己的研究中,如李琦結合雙目視覺來測量牛體尺寸[11],喻立春用它識別火焰圖像[12],姜紅花應用該算法來檢測玉米間的雜草[13],張澤堃用它完成服裝識別與分割[14]等。該文使用Mask R-CNN算法對身份證及其關鍵信息進行檢測,并判別證件質量,聯(lián)合MTCNN模型與FaceNet模型完成人臉的驗證,在不降低人臉識別精度的情況下,保證了上傳證件的有效性和安全性。
新疆馬產業(yè)科技創(chuàng)新平臺共有馬匹記、馬場管理、馬匹競拍、天馬賽事等幾大模塊,用戶想要使用該平臺均需要完成實名認證。該平臺落地于新疆伊犁昭蘇縣,據統(tǒng)計昭蘇縣主要少數(shù)民族為哈薩克族、維吾爾族、蒙古族、柯爾克孜族、回族。占當?shù)厝丝谧畲蟊戎氐墓_克族牧民是養(yǎng)馬業(yè)的主力軍[15]。該文主要研究該平臺的用戶實名認證模塊,將人臉驗證流程分為:證件分類、證件質量檢測、人臉檢測、人臉驗證。
首先使用Mask R-CNN網絡進行身份證的判別和檢測,訓練及測試數(shù)據集為真實環(huán)境下拍攝的照片,通過交叉驗證法[16]反復訓練與測試,選擇誤差最小的模型。其次將Mask R-CNN網絡勾畫出的人像送入MTCNN中進行人臉檢測及對齊,最終在檢測到人臉的基礎上使用FaceNet計算人臉的嵌入向量,通過計算人臉向量間的歐氏距離對人臉進行驗證。整個驗證流程如圖1所示。
圖1 系統(tǒng)整體實現(xiàn)模型
1.1.1 Mask R-CNN框架
Mask R-CNN是何凱明在2017年基于以往的Faster-RCNN構架提出的新卷積網絡,該算法在2016年榮獲微軟大型圖像數(shù)據集處理比賽的冠軍,在有效的檢測目標的同時完成了高質量的語義分割。圖片輸入后,首先通過骨干網絡提取多尺度特征圖,然后根據區(qū)域建議網絡(region proposal network,RPN)選擇出候選區(qū)域目標,接著使用softmax分類器區(qū)分前景目標和背景目標,同時使用邊框回歸器修正候選框位置,生成最終候選框。
1.1.2 證件質量驗證
中國于2004年開始換發(fā)第二代身份證,到2013年1月1日二代身份證全部換發(fā)完畢。中國第二代身份證有壯文、維文、彝文、藏文、蒙文、朝鮮文六種民族文字與漢文字并列的雙文版身份證。新疆馬匹養(yǎng)殖戶大多以少數(shù)民族為主,因考慮到不同民族的身份證存在差異,通過對大量不同民族身份證圖像的觀察,發(fā)現(xiàn)身份證上內容排版樣例分為兩種,一是漢文在下民族文在上,二是漢文在右蒙文在左。
標準身份證長85.6 mm,寬54 mm,由姓名、性別、民族、出生日期、住址、公民身份號碼及本人相片7個登記項目組成,七個登記項位置固定,本實驗對其中三個登記項(姓名、公民身份號碼、本人相片)進行了標注,圖2為三個登記項位置分布,結合圖2所示與實際測量得到表1數(shù)據,W為該長度在AD上的占比,H為該長度AB在上的占比,測量誤差小于1 mm。由于用戶拍照的角度或設備不同,提交上來的身份證照片大小均可能不同,所以采用長度占比進行判斷。
圖2 身份證結構示意圖
表1 身份證登記信息相對位置占比
由A、B、C、D四點坐標根據y=kx+b可以求得,AD、AB、CD、BC四條直線,結合以下公式:
點到直線的距離為d,分別可以求出表1中各點到直線的距離,以及它們在長、寬上的占比。從表1中可以看出,無論是非蒙古族身份證還是蒙古族身份證除居民身份號碼的相對位置差異較大,其他關鍵信息位置基本沒有什么變化。由此可以推斷,若三個登記項存在且距離在閾值內,則認為該身份證照片質量合格,不在閾值內則認為證件質量不合格,系統(tǒng)便要求用戶重新提交本人身份證照片。多次調整閾值區(qū)間并不斷測試,篩選后的照片再次經人工驗證基本合格,詳細數(shù)據見表2。
表2 證件質量檢測
1.2.1 人臉檢測
該文選擇MTCNN網絡來進行人臉的檢測和對齊,MTCNN三個階段使用的卷積神經網絡結構分別是:P-Net,R-Net和O-Net。網絡將送入的圖片生成圖像金字塔[3],第一階段由P-Net獲得候選窗體和邊界回歸向量,候選窗體通過邊界框進行校正,并用非極大抑制算法篩選重疊窗體。第二階段任務由R-Net完成,將經過P-Net確定的包含候選窗體的圖片拿來訓練,使用全連接網絡進行分類,利用邊界框向量微調候選窗體,再用非極大抑制算法去除重疊窗體。第三階段使用O-Net卷積神經網絡進行操作,O-Net是MTCNN里最精細的網絡結構,功能與R-Net類似,在去重后同時標定5個人臉關鍵點的位置,MTCNN網絡通過交叉熵損失函數(shù)來判斷該區(qū)域是否包含人臉,函數(shù)如下:
1.2.2 人臉識別
網絡架構選擇Inception[6]類型網絡,Inception主要在沒有高效的稀疏矩陣乘積設備的情況下,利用現(xiàn)有的密集計算組件來近似視覺卷積網絡中的濾波級別上的局部稀疏結構。
本實驗共采集2 476幅圖像,為模擬馬業(yè)平臺真實需求,人像照片與身份證照片1∶1對應采集,878組圖像由用戶各自的手機拍照所得。由于每個人所屬環(huán)境、光照、拍照時間、拍照設備均可能不同,所以878組圖像復雜多樣。學生卡圖像240張,采集方式與身份證一樣,社???、駕駛證、銀行卡、其他卡圖像各120張且均是網絡下載。將收集好的數(shù)據按每個類別7∶3的比例隨機分配,作為身份證關鍵信息檢測模型的訓練集和測試集。
該文使用圖像標注工具LabelMe[17]對數(shù)據進行標記,標注完成生成json文件,標注后的數(shù)據由LabelMe內的json_to_dataset.py批量生成Mask R-CNN需要的數(shù)據集。實驗共對1 118張圖片進行了標注,并送入模型進行學習。用測試集對模型進行檢驗,發(fā)現(xiàn)該模型未對學生卡、社???、駕駛證和其他卡的姓名、人臉信息進行標注,但將身份證上的關鍵信息進行了標注,并準確地勾畫出目標框。
由于馬業(yè)信息平臺使用Django框架進行開發(fā),所以本實驗選用Python語言進行編程,所用深度學習框架為谷歌TensorFlow-gpu 1.14.0版本,Keras2.1.5,CUDA10.0,操作系統(tǒng)為Ubuntu 18.04.4。計算機CPU為Inter?Xern(R)CPU E5-2620,GPU為TITAN V,內存64 G。
在訓練Mask R-CNN模型時,采用0.000 1的初始學習率,批處理大小(Batch size)設置為4,模型共計訓練50個epoch。在模型訓練過程中記錄各類別的AP(average precision)值并計算mAP(mean average precision),統(tǒng)計結果如圖3所示。訓練集與驗證集損失函數(shù)值的變化曲線如圖4所示。
圖3 各標注項的AP與mAP值隨epoch的變化曲線
圖4 Mask R-CNN訓練損失變化曲線
觀察圖3可以看出,隨著epoch的不斷增長,各類別的AP值逐步提高并達到較高的穩(wěn)定值,并且在圖4中模型穩(wěn)定收斂于較低的Loss值,說明了模型在訓練集與驗證集上有著較好的身份證關鍵信息檢測能力。
基于關鍵信息檢測模型對測試集中共計479張圖片進行二分類,其中身份證263張,非身份證216張,分類結果如表3所示。
表3 證件分類
最后將本實驗方法與原系統(tǒng)方法進行對比,取263組人像與身份證對應的照片,對263張身份證照片中50%做隨機的圖像處理(模糊、隨機遮擋),其中72人各增加一張學生卡照片,系統(tǒng)準確率=(清晰身份證通過數(shù)+其他證件未通過數(shù))/總數(shù)量,將測試數(shù)據送入系統(tǒng)中得到表4實驗結果。
表4 實驗結果對比
從表4中可知,原系統(tǒng)使用學生卡、社??ɑ蝰{駛證也可以完成系統(tǒng)的人臉驗證工作,而使用多模型聯(lián)合判別的方法可以有效地過濾掉非身份證證件。對于經圖像處理過的身份證,該方法提升不是十分明顯,原因是隨機遮擋沒有遮住標注的關鍵信息該系統(tǒng)會認為身份證合格,總體來說多模型聯(lián)合的人臉驗證應用,在沒有降低人臉識別率的基礎上,完成了證件質量的篩選,更加符合實際應用的要求。
在新疆維吾爾自治區(qū)馬產業(yè)科技創(chuàng)新平臺建設中,用戶實名認證模塊仍有部分功能需要完善。根據實名認證要求,用戶需上傳本人照片及身份證照片,來完成實名認證,但一些用戶選擇使用生活照或其他證件照來進行認證。原系統(tǒng)方法未對不合格照片進行審核,致使系統(tǒng)存在隱患。故該文選用Mask R-CNN網絡來訓練身份證判別模型,實驗表明該模型可以很準確地檢測到標注目標,且判別效果良好,訓練過程中網絡模型能夠快速收斂,該模型具有較高的準確性。將模型應用于馬產業(yè)科技創(chuàng)新平臺中可以將非身份證和低質量證件照過濾,并完成人臉驗證工作;目前系統(tǒng)完成的是1對1場景下的人臉驗證工作,將來開展賽馬賽事等活動,若要運用人臉簽到、人臉門禁,要面臨的便是1對N的人臉識別,而該應用可以建立優(yōu)質人臉資源數(shù)據庫,為將來的系列活動實現(xiàn)做基礎。