發布時間:2019-11-23所屬分類:計算機職稱論文瀏覽:1次
摘 要: 摘要:研究直接系統編程實現人臉識別、基于組件技術的人臉識別和基于云計算的人臉識別三種算法.直接系統編程算法可實現基于膚色的人臉檢測;基于組件方式應用OpenCV庫可實現人臉的檢測和特征比較;云計算方式可實現人臉識別、情感計算等功能.研究人員可根據設
摘要:研究直接系統編程實現人臉識別、基于組件技術的人臉識別和基于云計算的人臉識別三種算法.直接系統編程算法可實現基于膚色的人臉檢測;基于組件方式應用OpenCV庫可實現人臉的檢測和特征比較;云計算方式可實現人臉識別、情感計算等功能.研究人員可根據設計要求選擇算法,滿足識別系統的需求.
關鍵詞:Android;組件技術;云計算;人臉識別;方法對比
人臉識別是應用圖像處理技術分析人臉圖像,提取人臉有效特征信息,確認身份的一門技術.該技術涉及數字圖像處理、機器視覺、模式匹配、認知科學和情感科學等諸多學科,與身份識別以及人機交互技術研究領域有著密切聯系.[1]根據人臉表征,人臉識別方法可以分為三類:第一類,基于幾何特征的識別方法[2],該方法在抽取人臉圖像顯著特征的相對位置及其參數的基礎上進行識別,算法存儲量小,對光照不敏感,對圖像的質量要求很高,圖像中的特征點必須很精確,否則無法識別其中的人臉,所以該算法多用于其他識別方式的輔助識別.第二類,基于統計特征的識別方法[3],該方法利用統計原理,從多張人臉圖像中提取出人臉共有的一些規律,利用這些規律進行人臉識別.這種方法直觀簡單,物理意義明確,提取到的特征值不受類別數影響,但人臉圖像易受外界光照、表情等因素影響,導致識別的精確度下降.[4]第三類,基于連接機制的識別方法,該方法包含神經網絡方法和彈性圖匹配方法.[5]目前神經網絡方法得到研究人員普遍關注,因為神經網絡法較其他方式有其特殊的優勢,避免了繁雜的人工提取特征工作,通過機器學習能夠獲得人臉識別規律和一些隱性表達的特征.缺點是神經網絡的訓練耗時較多,收斂緩慢,容易陷入局部最小.[6]本文討論在Android平臺上高效實現人臉識別功能,使研究人員可以根據項目的要求,選擇不同的實現算法,使人臉識別技術更加適合移動平臺對人臉識別的要求.
1Android平臺實現人臉識別的方法
1.1直接系統編程實現人臉識別
直接系統編程實現人臉識別是在Android開發環境下,不借助第三方控件,直接通過編程實現人臉識別的算法.這樣生成的應用程序不需要安裝第三方運行庫,能夠運行在任何Android平臺下,運行速度快.缺點是開發周期長,工作量大.以Android平臺上基于膚色檢測法的人臉識別為例,說明應用直接系統編程實現人臉識別算法的過程.
基于膚色檢測法的人臉識別算法,通過識別人臉部位的顏色并加以處理,實現人臉位置的分割.光照是影響膚色檢測結果的最大因素,在膚色檢測前必須進行光補償處理.本文應用參考白光補償算法來消除光照影響,提高檢測率.
基于膚色檢測人臉識別方式的實現基于YCgCr色彩空間的顏色分割算法,將光補償處理后的圖片從RGB空間轉換到YCgCr空間,轉換公式為:
人臉圖像進行灰度化處理后,人臉的傾斜度會影響模板匹配,因此要在模板匹配前對人臉傾斜度進行計算,準確定位人臉區域.人臉傾斜角度的計算公式為:
利用公式(2)得到的傾斜度,將圖像調整為正面端正圖像.對調整后的端正圖像進行圖像置灰的均衡化,其指數變換式為:
直方圖均衡化過程中使用的參數分別為a,b,c;f(x,y)為灰度變換前的圖像;g(x,y)為灰度變換后的圖像.均衡化處理后的圖像需要進行腐蝕與膨脹操作,消除類膚色的噪聲干擾,進而實現更準確的人臉檢測.得到的檢測效果如圖1所示.
直接系統編程實現人臉識別方式工作量大,所有功能都需要編程實現,對設備的依賴性小,能夠安裝到任何Android設備,適合于商用軟件的開發.
1.2基于組件技術的人臉識別
基于組件技術的人臉識別是在Android平臺上結合第三方組件,利用第三方組件提供的豐富視覺處理算法,實現人臉檢測和識別功能.這種方式實現簡單,識別的準確度依賴于第三方組件提供的功能.缺點是必須安裝第三方組件,運行速度較慢,內存占有量較大.以Android平臺結合OpenCV實現人臉識別為例,說明基于組件技術實現人臉識別的過程.
首先在工程中導入OpenCV運行庫,加載OpenCV中自帶的Haar人臉檢測器,然后調用手機內置攝像頭,獲取一幀靜態圖片或者動態視頻流,導入Mat(基本圖像容器)中.再從回調的Mat中檢測到符合人臉特征的數據,截取人臉部分,使用cvtColor方法進行人臉置灰,通過人臉的灰度化提高識別的準確度.其次,將置灰后的人臉圖片進行equalizeHist(直方圖均衡化)處理,提取并保存Mat容器中的人臉特征值.最后,調用多尺度檢測函數detectMultiScale實現人臉檢測功能.調用OpenCV實現人臉檢測后,需要使用Ja-vaCV對Mat容器中存儲的特征值進行對比,得到人臉的相似度,實現人臉識別功能.開發的應用程序在客戶的Android平臺上發布時,客戶機需要安裝OpenCVmanger才能使用設計好的人臉識別程序.應用第三方組件OpenCV設計人臉識別應用程序的結果和流程如圖2所示.
基于組件的人臉識別方法由于使用第三方組件提供的算法,因此工作量較小.該方式依賴第三方組件提供的算法,開發周期短,應用靈活,適合算法研究和一般應用.
1.3基于云計算的人臉識別
基于云計算的人臉識別使用遠端服務器提供的圖像處理算法,實現人臉識別功能.由于這些算法技術成熟、功能完善,所以識別準確率高,性能穩定,操作簡單.缺點是使用時必須通過互聯網接入云服務器,大多需要付費使用,算法不開源.[9]以騰訊云提供的人臉識別體驗版為例說明基于云計算的人臉識別過程.Android用戶聯網進入ht-tps://cloud.tencent.com/act/event/ci_demo.ht-ml,上傳本地拍攝的照片,云計算系統將用戶傳送的本地人臉圖像送至服務器,進行人臉識別.該云算法基于高維LBP,PCA,LDA聯合貝葉斯和深度神經網絡等全面算法,使得人臉識別準確度更高.從圖3的檢測結果可以看到,除了人臉檢測,還能實現情感計算、生理年齡測定等功能.
基于云計算的人臉識別系統可使用在門禁系統、攝像監視系統等安防場景,也可以使用于學生考勤系統,通過人臉識別進行出席點名記錄等.
2直接系統編程、基于組件技術和基于云計算的人臉檢測方式對比
直接系統編程、基于組件技術和基于云計算的人臉檢測結果對比見表1.直接系統編程通過顏色分割算法實現人臉區域膚色檢測,相比其他方式,工作量仍然很大,如果實現完善的人臉識別功能,需要大量工作要做.該方式適合技術力量強大的公司做原創性開發,程序運行時占用內存空間很小,不依賴第三方技術支持,具有很強的獨立性,可以應用于任何場合.基于組件技術的人臉識別是應用第三方組件提供的圖像處理方法定位和識別圖像中的人臉,依賴組件提供的功能,編程代碼量較少,占用內存較大,可以在Andorid平臺快速實現人臉檢測,適合算法驗證、科研、教學和一般應用.基于云計算的人臉識別依賴于高科技公司提供的云端服務,結果精確,幾乎不占用內存.但云服務模式的人臉識別并不開源,無法獲取源碼學習研究.
期刊推薦:《電子設計工程》Electronic Design Engineering(半月刊),創刊于1993年,原名《國外電子元器件》,主要介紹具有較高學術水平的、電子領域相關的理論、技術、方法的專業性技術期刊。目前,共設有:計算機技術應用、網絡與通信工程、測控與儀器儀表、圖像與多媒體技術、開發與應用、數字處理技術、嵌入式技術、消費類電子、汽車電子、集成電路應用、新特器件應用、電源技術與應用、信息安全、工業自動化、電力電子等欄目。有投稿需求的作者,可以直接與期刊天空在線編輯聯系。
3、總結
探討了Android平臺實現人臉識別的三種方式,實現了基于膚色檢測的人臉檢測和基于OpenCV的人臉檢測和識別.直接編程方法若想實現完善的人臉識別,需要專業開發人員花費大量時間編程實現,需反復調試才能完善人臉識別功能;應用第三方組件方法借助第三方組件中已提供的人臉檢測、分割、灰度化等接口,只需直接調用組件內的函數即可完成人臉識別功能;云計算方法提供的人臉識別算法應用了先進的機器學習技術,因此功能強大,可滿足任何人臉識別的要求,在打擊犯罪、考勤、加密等領域得到廣泛應用,但需要聯網和付費使用.研究人員可根據人臉識別的目的和要求,選擇具體的實現方式.
SCISSCIAHCI