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