《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于人臉識別的應(yīng)用程序登錄助手設(shè)計
基于人臉識別的應(yīng)用程序登錄助手設(shè)計
2014年微型機(jī)與應(yīng)用第12期
文成玉,金 欣,董 良
成都信息工程學(xué)院,四川 成都
摘要: 為了提高移動智能終端中應(yīng)用程序登錄過程的快捷性和安全性,設(shè)計了一種基于人臉識別技術(shù)的應(yīng)用程序自動登錄方法。通過事先注冊人臉特征信息,并與應(yīng)用程序及其登錄信息關(guān)聯(lián),這些關(guān)聯(lián)信息經(jīng)加密后以本地文件存放;當(dāng)啟動應(yīng)用程序時,只要通過了人臉特征信息認(rèn)證,就能自動提取并填寫登錄信息。應(yīng)用表明,該方法增強(qiáng)了應(yīng)用程序登錄過程的便捷性和安全性。
Abstract:
Key words :

  摘  要: 為了提高移動智能終端中應(yīng)用程序登錄過程的快捷性和安全性,設(shè)計了一種基于人臉識別技術(shù)的應(yīng)用程序自動登錄方法。通過事先注冊人臉特征信息,并與應(yīng)用程序及其登錄信息關(guān)聯(lián),這些關(guān)聯(lián)信息經(jīng)加密后以本地文件存放;當(dāng)啟動應(yīng)用程序時,只要通過了人臉特征信息認(rèn)證,就能自動提取并填寫登錄信息。應(yīng)用表明,該方法增強(qiáng)了應(yīng)用程序登錄過程的便捷性和安全性。

  關(guān)鍵詞: 人臉識別;人臉特征信息;應(yīng)用程序登錄

  智能手機(jī)和平板電腦等移動智能設(shè)備日益普及,系統(tǒng)處理數(shù)據(jù)的能力也越來越強(qiáng),以前很多在PC上的應(yīng)用,如登錄郵件系統(tǒng)、網(wǎng)上銀行等,都移植到這些移動智能設(shè)備上,極大地滿足了人們隨時隨地使用這些服務(wù)的需求。但是,每次登錄這些應(yīng)用程序都需要輸入賬號/用戶名、密碼(甚至第二個密碼)等,這就需要用戶準(zhǔn)確地記憶數(shù)量眾多的各種應(yīng)用程序的登錄信息。如果設(shè)置的用戶名和密碼又都是比較復(fù)雜的字符串序列,雖然安全性高,但用戶要完全準(zhǔn)確地記憶這些信息是比較困難的。此外,智能手機(jī)這類設(shè)備的虛擬鍵盤相對比較小,輸入這些信息速度較慢,容易被人偷窺造成泄密。如果選擇應(yīng)用程序自動登錄,在這類設(shè)備遺失后,更容易造成安全隱患,尤其是手機(jī)銀行、網(wǎng)上支付等這類賬戶。

  如何幫助用戶便捷地登錄各類應(yīng)用程序,同時保證登錄信息的安全性,是一個有待解決的問題。目前關(guān)于應(yīng)用程序自動登錄的方法[1-5]中,采用集中帳號管理或其他方式實(shí)現(xiàn)應(yīng)用程序自動登錄,部分解決了該問題,但本身的便捷性及安全性不夠理想。

  人臉識別技術(shù)是利用計算機(jī)基于人的臉部特征進(jìn)行人臉圖像分析,并從中提取出所蘊(yùn)涵的有效身份特征信息用以識別人的身份的技術(shù)。經(jīng)過多年的發(fā)展,已經(jīng)有了多種比較成熟的人臉識別算法,使該技術(shù)開始從理論探討進(jìn)入適用階段。如今,各種移動智能終端都具有分辨率較高的視頻裝置,能夠很容易采集到這些設(shè)備使用者的高質(zhì)量的面部圖像信息;同時,設(shè)備的數(shù)據(jù)處理和存儲能力都有了非常大的提高,可以滿足圖像識別過程對系統(tǒng)資源的需要。因此,將人臉識別技術(shù)應(yīng)用到這類設(shè)備是一種必然。

  本文采用基于本地視頻的人臉識別認(rèn)證方式提取并自動填寫用戶登錄信息來解決上述問題,使應(yīng)用程序的登錄過程更便捷、更安全。

  1 應(yīng)用程序登錄助手設(shè)計

  1.1 基本功能及結(jié)構(gòu)設(shè)計

  基于人臉識別的應(yīng)用程序登錄助手的基本功能是:通過設(shè)備的攝像裝置獲取使用者的面部圖像信息,經(jīng)過圖像檢測處理,與事先注冊的人臉特征信息進(jìn)行比較;在通過人臉特征信息認(rèn)證后,根據(jù)用戶信息和待登錄應(yīng)用程序的信息提取出唯一的登錄信息,并依次填充到該應(yīng)用程序登錄界面的相應(yīng)位置,登錄應(yīng)用程序。

  根據(jù)上述基本功能,將應(yīng)用程序登錄助手分為以下功能模塊:圖像采集與處理、人臉信息注冊與檢索、應(yīng)用程序與登錄信息關(guān)聯(lián)注冊及檢索和登錄信息提取與填充。這些模塊的子模塊劃分以及模塊/子模塊間的關(guān)系如圖1所示。

001.jpg

  (1)圖像采集與處理模塊:完成從設(shè)備的視頻攝像裝置采集人臉圖像以及采用人臉識別算法從中提取人臉特征信息。

  (2)人臉信息注冊與檢索模塊:在注冊過程中,將人臉特征信息寫入人臉特征信息注冊文件,并生成用戶ID;在提取登錄信息過程中,根據(jù)人臉特征信息檢索人臉特征信息注冊文件,完成人臉信息認(rèn)證。

  (3)應(yīng)用程序與登錄信息關(guān)聯(lián)注冊及檢索模塊:在注冊過程中,將用戶的應(yīng)用程序與登錄信息關(guān)聯(lián)數(shù)據(jù)以及用戶ID寫入應(yīng)用程序與登錄信息關(guān)聯(lián)數(shù)據(jù)文件;在提取登錄信息過程中,根據(jù)用戶認(rèn)證信息檢索出與用戶ID和應(yīng)用程序相關(guān)聯(lián)的登錄信息。

  (4)登錄信息提取與填充模塊:將檢索到的登錄信息提取出來并自動填寫到應(yīng)用程序登錄界面的相應(yīng)位置。

  1.2 運(yùn)行過程分析

  功能運(yùn)行分為注冊過程和提取登錄信息兩個過程。

  1.2.1 注冊過程

  啟動注冊過程后,自動啟動視頻裝置:(1)從視頻裝置獲取的人臉圖像,經(jīng)過圖像識別算法處理后生成人臉特征數(shù)據(jù);(2)用上述人臉特征數(shù)據(jù)與人臉信息注冊文件中已注冊的人臉特征數(shù)據(jù)進(jìn)行比對,檢查是否為已經(jīng)注冊的用戶。如果沒有檢測到人臉信息注冊文件或該文件中沒有匹配的人臉特征數(shù)據(jù),表示該用戶沒有注冊,這時自動按規(guī)則生成一個用戶標(biāo)識與人臉特征數(shù)據(jù)關(guān)聯(lián)并寫入人臉信息注冊文件,如果該文件不存在,需要首先創(chuàng)建;(3)完成用戶注冊后,才能夠進(jìn)行應(yīng)用程序與登錄信息的關(guān)聯(lián)注冊。從設(shè)備的操作系統(tǒng)中獲取應(yīng)用程序安裝信息,人工選擇應(yīng)用程序,然后根據(jù)其安裝信息生成應(yīng)用程序標(biāo)識用來唯一標(biāo)識該應(yīng)用程序;之后,將用戶標(biāo)識、應(yīng)用程序標(biāo)識、登錄應(yīng)用程序需要的帳號/用戶名、密碼1和密碼2以非明文形式寫入應(yīng)用程序與登錄信息關(guān)聯(lián)數(shù)據(jù)文件(簡稱登錄信息關(guān)聯(lián)文件),如果該文件不存在,要首先創(chuàng)建該文件。在一個設(shè)備中可以有多個用戶注冊,一個用戶可以注冊多個應(yīng)用程序與登錄信息的關(guān)聯(lián)數(shù)據(jù)。注冊功能流程如圖2所示。

002.jpg

  由于應(yīng)用程序標(biāo)識是根據(jù)應(yīng)用程序的安裝信息生成的,具有唯一性,因而如果重新安裝了某個應(yīng)用程序,這時可能需要在登錄助手中刪除原來的注冊信息并重新注冊,以保證應(yīng)用程序標(biāo)識的唯一性。因此,登錄助手提供對用戶本人的應(yīng)用程序與登錄信息的關(guān)聯(lián)數(shù)據(jù)進(jìn)行管理的功能。

  此外,應(yīng)用程序的登錄信息設(shè)置了3個字段:用戶名、密碼1和密碼2,但并不是所有的應(yīng)用程序都需要,如:有的應(yīng)用程序登錄只需要輸入一個密碼,而不需要用戶名,而有的則需要用戶名、密碼,甚至第2個密碼。因而,在登錄信息關(guān)聯(lián)文件中寫入登錄信息時,必須保證每個字段都存在,沒有內(nèi)容的寫入特殊字符。

  1.2.2 提取登錄信息過程

  當(dāng)用戶啟動應(yīng)用程序登錄界面并選中用戶名或密碼字段對應(yīng)的文本框時,自動觸發(fā)以后臺進(jìn)程運(yùn)行登錄助手,并啟動設(shè)備的視頻裝置:(1)從視頻裝置獲取人臉圖像,經(jīng)過圖像識別算法處理后生成人臉特征數(shù)據(jù);(2)用上述人臉特征數(shù)據(jù)與人臉信息注冊文件中已注冊的人臉特征數(shù)據(jù)進(jìn)行比對,檢查是否為已經(jīng)注冊的用戶。如果用戶已注冊,從中取出用戶標(biāo)識(表示通過人臉信息認(rèn)證),之后獲取成為應(yīng)用程序標(biāo)識;(3)根據(jù)用戶標(biāo)識和應(yīng)用程序標(biāo)識檢索登錄信息關(guān)聯(lián)文件,如果檢索到多條關(guān)聯(lián)數(shù)據(jù),表明該用戶在這個應(yīng)用程序中有多條登錄帳戶信息,如:郵件程序中一個用戶可以用不同的帳號登錄,這時需要提示用戶手工選擇其中一條作為登錄信息;若只有一條關(guān)聯(lián)數(shù)據(jù),則不進(jìn)行提示,直接讀出登錄信息;(4)根據(jù)獲取的登錄界面文本框的位置,自動將用戶名、密碼1、密碼2依次填入其中,如果這3個字段中的某個字段值為特殊字符,表示登錄界面中沒有該字段。例如,如果帳戶/用戶名字段的值為特殊字符,表示應(yīng)用程序的登錄界面中不需要輸入用戶名,直接輸入密碼即可,如某些手機(jī)銀行軟件。字段“密碼2”根據(jù)需要選用,如某些手機(jī)股票軟件需要輸入兩個密碼,如果該字段為特殊字符,則表示不需要第2個密碼。此外,如果用戶是非注冊用戶,或者是注冊用戶但沒有該應(yīng)用程序的關(guān)聯(lián)數(shù)據(jù),這時都需要登錄助手啟動其他的輸入法,使用戶能輸入信息。因此,登錄助手中還需要設(shè)置一個操作系統(tǒng)中已存在的文字輸入法,作為解決上述問題的方案。提取登錄信息功能流程如圖3所示。

003.jpg

  2 功能實(shí)現(xiàn)

  目前,移動智能終端設(shè)備中運(yùn)行的操作系統(tǒng)有多種,本文的實(shí)現(xiàn)是基于Android平臺、Java語言及OpenCV(Open Source Computer Vision)函數(shù)庫。OpenCV是一種開源的計算機(jī)視覺函數(shù)庫,實(shí)現(xiàn)了圖像處理和計算機(jī)視覺方面的很多通用算法,如:常用的人臉識別方法[6]主成分分析PCA、線性判別分析LDA等。在Android平臺下,利用JNI等技術(shù)可以調(diào)用OpenCV函數(shù)完成人臉識別的相關(guān)處理[7]。

  2.1 圖像采集與處理

  利用攝像設(shè)備獲取圖像并進(jìn)行人臉檢測。這個過程需要使用OpenCV函數(shù)庫中的相關(guān)功能來完成圖像檢測處理。

  (1)圖像獲?。簭臄z像裝置獲取圖像,既可以使用Android系統(tǒng)內(nèi)置的攝像頭應(yīng)用程序,也可以自己定義。這里使用前者來實(shí)現(xiàn):首先創(chuàng)建一個請求圖像或視頻的intent,然后用startActivityForResult()方法啟動攝像頭intent,這樣就可以在應(yīng)用程序中接收從攝像頭intent返回的數(shù)據(jù)。主要的函數(shù)調(diào)用:

 ?、買ntent(String action):創(chuàng)建指定類型的攝像頭,這里指定的是MediaStore.ACTION_ IMAGE_CAPTURE,即向內(nèi)置攝像頭程序請求圖像。

  ②startActivityForResult(Intent intent,int requestCode):執(zhí)行定義的攝像頭并獲取圖像。在注冊時,需要將獲取的圖像顯示在注冊界面中;而在提取應(yīng)用程序登錄信息過程時,則不需要,直接將獲取的圖像存放到緩存中。

  (2)圖像處理:獲取圖像后,首先需要將彩色圖像轉(zhuǎn)換為灰度圖像,然后對圖像進(jìn)行直方圖均衡化,最后利用分類器檢測圖像區(qū)域是否存在人臉特征,并作歸一化處理。主要涉及OpenCV的以下函數(shù)調(diào)用:

 ?、賤oid cvCvtColor(const CvArr* src,CvArr* dst, int code):將彩色圖像轉(zhuǎn)換為灰度圖像,其中參數(shù)code設(shè)置為CV_BGR2GRAY表示轉(zhuǎn)換為灰度圖。

 ?、趘oid cvEqualizeHist(const CvArr* src,CvArr* dst):對輸入灰度圖進(jìn)行直方圖均衡化處理,能對圖像的細(xì)節(jié)部分起到明顯的突出增強(qiáng)效果。

  ③cvHaarDetectObjects(…):使用人臉/人眼的Haar特征級聯(lián)分類器進(jìn)行相關(guān)目標(biāo)區(qū)域的檢測,找到包含人臉的矩形區(qū)域,并且將該區(qū)域作為一序列的矩形框返回。使用均衡化后的灰度圖可以加快檢測速度。

  2.2 人臉信息注冊與檢索

  根據(jù)圖像采集與處理模塊中檢測到的人臉圖像,調(diào)用cvCalcEigenObjects()函數(shù)進(jìn)行PCA操作,計算輸入目標(biāo)的正交特征基向量和目標(biāo)平均值,計算出的特征臉 (Eigenface)都存放在向量組成的數(shù)組中;再利用cvEigenDecomposite()函數(shù)將每一個訓(xùn)練圖片投影在PCA 子空間上,最后得到處理后的人臉在低維子空間(即訓(xùn)練人臉特征信息的子空間)中的投影向量。

  在注冊過程中,首先檢查是否已存在該特征臉,若沒有,則調(diào)用注冊函數(shù)將信息寫入人臉信息注冊文件,并生成用戶標(biāo)識。對于提取登錄信息過程,則調(diào)用人臉識別函數(shù),檢查是否是合法用戶,若是則從人臉信息注冊文件讀出用戶標(biāo)識,傳遞給下一功能模塊。

  (1)人臉特征信息注冊:將計算機(jī)處理后的矩陣數(shù)據(jù)(即特征臉數(shù)據(jù))寫入以本地文件形式存放的數(shù)據(jù)庫中。特征臉數(shù)據(jù)存放在OpenCV提供的結(jié)構(gòu)體CvFileStorage中。注冊時,先使用cvOpenFileStorage()函數(shù)以參數(shù)CV_

  STORAGE_READ打開人臉信息注冊文件,再通過cvWrite()函數(shù)將內(nèi)存中存放特征臉數(shù)據(jù)和相關(guān)信息的對象寫入人臉信息文件,返回標(biāo)識信息,實(shí)現(xiàn)人臉特征信息注冊。

  (2)人臉特征識別:使用自定義函數(shù)int MoseNearestFace(float * pReconFace,float * pConfidence)計算待識別的人臉向量和數(shù)據(jù)庫中的所有人臉向量的相似度,返回相似度最高的已注冊人臉信息,則實(shí)現(xiàn)了人臉識別的過程。其中參數(shù)pReconFace是當(dāng)前輸入的人臉向量,參數(shù)pConfidence是相似度的數(shù)值表述。

  人臉識別方法的最大缺點(diǎn)是計算量大,識別速度慢。這里選用的特征臉(Eigenface)方法采用了PCA降維方法,有效減少了計算量,提高了識別速度。

  2.3 應(yīng)用程序與登錄信息關(guān)聯(lián)注冊及檢索

  在注冊過程中,從列表選擇需要注冊的應(yīng)用程序,生成應(yīng)用程序標(biāo)識。之后將用戶標(biāo)識、應(yīng)用程序標(biāo)識及登錄信息關(guān)聯(lián),生成關(guān)聯(lián)數(shù)據(jù)并調(diào)用加密函數(shù)對數(shù)據(jù)加密,再寫入登錄信息關(guān)聯(lián)文件。在提取登錄信息過程中,根據(jù)用戶認(rèn)證成功返回的用戶標(biāo)識以及應(yīng)用程序標(biāo)識檢索登錄信息關(guān)聯(lián)文件,若查找到結(jié)果,則需要調(diào)用解密函數(shù),得到應(yīng)用程序的登錄信息,傳遞給下一操作。主要涉及以下函數(shù)調(diào)用:

  (1)生成應(yīng)用程序標(biāo)識函數(shù):createAppID(String packageName,String label)。利用Android系統(tǒng)的PackageManager類,可以獲取系統(tǒng)中已安裝的應(yīng)用程序包的信息,根據(jù)包名和標(biāo)簽,調(diào)用該函數(shù)生成應(yīng)用程序標(biāo)識,可以唯一標(biāo)識該應(yīng)用程序。

  (2)加/解密函數(shù):考慮到登錄信息的安全性,對關(guān)聯(lián)數(shù)據(jù)內(nèi)容采用AES算法進(jìn)行加/解密,密鑰長度為128 bit,完全可滿足該文件中信息加密的安全需要[9]。

 ?、偌用芎瘮?shù):encrypt(byte[] key, byte[] src):用指定的密鑰加密源數(shù)據(jù)。

 ?、诮饷芎瘮?shù):decrypt(byte[] key, byte[] encrypted):用密鑰解密數(shù)據(jù)。

  (3)讀/寫登錄信息關(guān)聯(lián)文件

 ?、賹懭牒瘮?shù):bool writeRelatedeData(String fileName,String userid,AppInfo app),其中類AappInfo定義了應(yīng)用程序的相關(guān)屬性,包括:應(yīng)用程序ID(appID),登錄該應(yīng)用程序的用戶名(appUser)、 密碼1(appPwd1)及密碼2(appPwd2)。

 ?、诓檎液瘮?shù):AppInfo  findRelatedData(String fileName, String userid, String appID)。

  2.4 登錄信息提取與填充

  從SDK1.5版本以后,Android系統(tǒng)開放了IMF(Input Method Framework)框架,使得開發(fā)人員可自行開發(fā)輸入法;同時由于EditText控件可以自動獲得焦點(diǎn),則只要Activity中包含EditText控件,通過長按文本框,便會自動觸發(fā)指定的應(yīng)用程序。

  本文將應(yīng)用程序登錄助手看作一個輸入法程序,通過設(shè)計一個繼承Activity的子類LoginActivity便可實(shí)現(xiàn)觸發(fā)。為了保證將檢索的應(yīng)用程序登錄信息準(zhǔn)確填寫入EditText控件中,通常要求用戶長按登錄界面的第一個EditText控件,然后根據(jù)用戶名、 密碼1及密碼2字段的值,按規(guī)則自動填入。這樣就實(shí)現(xiàn)了登錄信息的提取與自動填充,并觸發(fā)應(yīng)用程序登錄操作。

  本文將人臉識別技術(shù)應(yīng)用在應(yīng)用程序自動登錄中,既方便快捷,又增加了登錄信息的安全性;同時給人一種科技感,增強(qiáng)了用戶的使用樂趣。人臉識別技術(shù)必將成為未來信息技術(shù)的重要組成部分。但仍需要進(jìn)一步改進(jìn),解決系統(tǒng)不能識別登錄助手與其他輸入法而需要手工切換等問題。

  參考文獻(xiàn)

  [1] 陳魯,王明宇.用于應(yīng)用程序自動登錄的方法和設(shè)備:中國,2008102223263[P].2008-09-17.

  [2] 陳雯.一種應(yīng)用程序登錄方法及登錄管理系統(tǒng):中國,201110172345[P].2011-10-19.

  [3] 呂中雷.移動終端及其應(yīng)用程序登錄方法:中國,201110251233[P].2011-12-14.

  [4] 岳風(fēng)順.一種應(yīng)用程序登錄方法及裝置:中國,2012105664353[P].2012-12-21.

  [5] 范志超.一種自動登錄用戶賬號的方法及系統(tǒng):中國,2012105689539[P].2012-12-25.

  [6] 王偉,馬建光.人臉識別常用方法及其發(fā)展現(xiàn)狀[J].兵工自動化,2002,21(1):49-51.

  [7] 韓露,李祖樞,陳東義.一種Java與OpenCV結(jié)合實(shí)現(xiàn)的目標(biāo)檢測模塊[J].計算機(jī)應(yīng)用,2008,28(3):773-775.

  [8] 黎松,平西建,丁益洪.開放源代碼的計算機(jī)視覺類庫OpenCv的應(yīng)用[J].計算機(jī)應(yīng)用與軟件,2005,22(8):134-136.

  [9] FERGUSON N,KELSEY J,LUCKS S,et al.Improved cryptanalysis of rijndael[A].Fast Software Encryption[C]:7thInternational Workshop,F(xiàn)SE 2000,in New York,USA,April,2000:P213-230.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。