本發(fā)明屬于數(shù)字圖像處理、人工智能技術(shù)領(lǐng)域,具體涉及一種基于視頻分析的活體檢測方法和系統(tǒng)。
背景技術(shù):
近年來,隨著人臉識別技術(shù)被越來越廣泛地應(yīng)用在各個領(lǐng)域,針對人臉識別的攻擊手段也層出不窮,其中,最常見的攻擊手段包括照片人臉攻擊與視頻人臉攻擊,圍繞攻擊的防范手段圍繞著活體檢測這一中心點(diǎn)展開。在一個攝像頭固定的人臉識別門禁系統(tǒng)中,如何應(yīng)用活體檢測技術(shù)來排查照片攻擊與視頻攻擊,這是本系統(tǒng)需要解決的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種能夠防止人臉識別中各種攻擊手段的基于視頻分析的活體檢測方法和系統(tǒng)。
本發(fā)明提出的基于視頻分析的活體檢測方法,其流程參見圖1所示,具體步驟為:
步驟(1)、采用攝像頭獲取視頻流:
攝像頭必須固定位置,攝像頭連接主機(jī)或局域網(wǎng)中,將攝像頭讀取的視頻流輸入進(jìn)主機(jī)緩存,根據(jù)計(jì)算主機(jī)的性能自定義每秒處理的幀數(shù);對于每一張圖像進(jìn)行分析。
步驟(2)、進(jìn)行系統(tǒng)環(huán)境背景更新:
攝像頭讀取圖像的3秒后的圖像作為系統(tǒng)的初始背景環(huán)境,這樣做是避免在攝像頭開啟時由于攝像頭感光元件未完全激活時產(chǎn)生的圖像亮度差異導(dǎo)致的問題。當(dāng)未檢測人臉時,判斷距離上一次更新系統(tǒng)背景圖像是否超過60秒,如果是,則更新背景。
步驟(3)、提取人臉環(huán)境圖像與系統(tǒng)背景圖像:
在人臉圖像的矩形區(qū)域左側(cè)附近提取一個矩形圖像作為人臉的背景圖像,同時提取系統(tǒng)環(huán)境背景圖像中對應(yīng)位置的矩形區(qū)域作為系統(tǒng)的背景圖像。需要注意的是,包含人臉的圖像中的背景區(qū)域距離人臉區(qū)域不能太遠(yuǎn),否則無法包含照片中或視頻中的人臉背景;也不能太近,否則容易包含人臉旁的頭發(fā)等物,影響檢測的準(zhǔn)確度。所以系統(tǒng)使用一個參數(shù),讓用戶根據(jù)具體的運(yùn)行環(huán)境設(shè)定參數(shù),從而控制背景區(qū)域與人臉的距離。
步驟(4)、對比背景圖像差異性:
使用的感知hash算法來分別計(jì)算人臉背景圖像與系統(tǒng)背景圖像的感知hash值,再計(jì)算感知hash值的差異,得出圖像的差異;當(dāng)差異高于閾值,則認(rèn)為兩個背景不相同,背景分析子系統(tǒng)拒絕通過;當(dāng)差異小于等于閾值,則進(jìn)入眨眼檢測子系統(tǒng)。
步驟(5)、進(jìn)行人眼定位:
人眼定位是眨眼檢測的第一步,精確的人眼定位是眨眼檢測準(zhǔn)確度的重要保障。這里使用區(qū)域增長算法,從人臉區(qū)域的左上半?yún)^(qū)進(jìn)行搜索,定位出人眼的矩形區(qū)域,將人眼圖像傳給下一步驟去處理。注意,由于人眼的對稱性,眨眼檢測只對人眼左眼做檢測。
步驟(6)、判斷人眼的張合狀態(tài):
對人眼圖像進(jìn)行灰度值化、二值化處理,然后,再進(jìn)行形態(tài)學(xué)操作,使得張眼與閉眼狀態(tài)的人眼的特征產(chǎn)生較大的差異,通過計(jì)算處理后的人眼圖像的黑色像素的個數(shù),判斷人眼處于睜開還是閉合的狀態(tài)。
步驟(7)、所述分析張合狀態(tài)序列,判斷是否有眨眼動作:
對視頻流一系列圖像產(chǎn)生的張合狀態(tài)序列進(jìn)行分析,如果序列中包含產(chǎn)生了兩次眨眼動作的子序列時,可以認(rèn)為用戶做出了眨眼動作。之所以需要兩次眨眼,是為了消除偶爾的誤差帶來的誤判。
本發(fā)明步驟(4)中,所述對比背景圖像差異性,當(dāng)?shù)玫较到y(tǒng)背景圖像與人臉背景圖像時,對兩張圖像進(jìn)行相似度比較,通過感知hash算法求出圖像的感知hash值,具體操作過程如下:
(a)將圖像縮小到8×8尺寸,目的是為了去除圖像的細(xì)節(jié),只保留大體的結(jié)構(gòu)以及明暗等信息;
(b)將縮小尺寸后的圖像轉(zhuǎn)換為64級灰度級;
(c)計(jì)算64個像素的平局值;
(d)將每一個像素與平均值進(jìn)行比較,大于平均值則記為1,否則記為0;
(e)按照像素的位置順序排列64個0或1數(shù)字,得到一個64位的二進(jìn)制數(shù),被稱為圖像的“指紋”;
(f)比較兩張圖像“指紋”的漢明距離,距離越小,圖像相似度越高(參見圖3);距離越大,圖像相似度越低(參見圖4)。
本發(fā)明步驟(5)中,所述人眼定位采用區(qū)域增長算法,其具體步驟如下:
(1)首先估計(jì)出鼻尖的坐標(biāo)位置
(2)設(shè)矩形框初始的左下角為
計(jì)算矩形框內(nèi)所有像素的初始平均灰度值
其中,
(3)進(jìn)行迭代,在
其中
(4)平滑處理矩形框,找到矩形框
(5)計(jì)算,若
(6)在
利用這個算法可以精準(zhǔn)地定位人眼位置(參見圖5)。
對應(yīng)于上述基于視頻分析的活體檢測方法,本發(fā)明的基于視頻分析的活體檢測系統(tǒng),包括:環(huán)境背景分析子系統(tǒng)與眨眼檢測子系統(tǒng);其中,環(huán)境背景分析子系統(tǒng)包括:視頻讀取模塊、系統(tǒng)環(huán)境背景更新模塊、人臉環(huán)境背景截取模塊、系統(tǒng)環(huán)境背景截取模塊、感知hash對比模塊;眨眼檢測子系統(tǒng)包括:人眼定位模塊、人眼張合狀態(tài)判斷模塊、人眼張合狀態(tài)序列分析模塊。其中,視頻讀取模塊為一攝像頭,用于獲取視頻流,對應(yīng)于步驟(1)的操作;系統(tǒng)環(huán)境背景更新模塊用于更新系統(tǒng)環(huán)境背景,對應(yīng)于步驟(2)的操作;人臉環(huán)境背景截取模塊和系統(tǒng)環(huán)境背景截取模塊用于提取人臉環(huán)境圖像與系統(tǒng)背景圖像,對應(yīng)于步驟(3)的操作;感知hash對比模塊用于對比背景圖像差異性,對應(yīng)于步驟(4)的操作;人眼定位模塊用于人眼定位,采用區(qū)域增長算法,對應(yīng)于步驟(5)的操作;人眼張合狀態(tài)判斷模塊用于判斷人眼的張合狀態(tài),對應(yīng)于步驟(6)的操作;人眼張合狀態(tài)序列分析模塊用于分析人眼張合狀態(tài)序列,判斷是否有眨眼動作,對應(yīng)于步驟(7)的操作。
本發(fā)明的有益效果是:使用的是基于視頻分析的活體檢測技術(shù),相比于指紋、虹膜識別技術(shù)來說成本較低,而且使用的眨眼檢測與背景分析法中,不需要待測用戶的交互動作,用戶體驗(yàn)友好。檢測算法中的感知hash、區(qū)域增長等算法對光照要求低,光照敏感度不高,魯棒性高,對于照片攻擊與視頻攻擊能夠起到有效的檢測作用。
附圖說明
圖1為活體檢測主要流程圖。
圖2為人臉背景與系統(tǒng)背景。
圖3為相似背景差異值。
圖4為不相似背景差異值。
圖5為人眼定位。
圖6為系統(tǒng)的初始界面。
圖7為配置文件。
圖8為打開攝像頭。
圖9為初始化。
圖10為背景相同。
圖11為背景不同。
圖12為人眼檢測中間結(jié)果。
圖13為眨眼檢測。
圖14為照片攻擊。
圖15為視頻攻擊。
圖16為合法登錄。
具體實(shí)施方式
本發(fā)明提供的基于視頻分析的活體檢測系統(tǒng),根據(jù)固定位置的攝像頭,實(shí)現(xiàn)自動、快速的活體檢測功能,能夠有效地抵御照片人臉與視頻人臉攻擊。
針對照片攻擊手段,本系統(tǒng)根據(jù)照片的靜態(tài)性使用眨眼檢測法將照片攻擊與活體區(qū)分開,而對于同樣擁有眨眼動作的視頻攻擊,本系統(tǒng)采用背景分析算法,通過分析人臉背景與系統(tǒng)背景的差異來排查。
本系統(tǒng)主要包括兩個子系統(tǒng):
(a)眨眼檢測子系統(tǒng)
(b)環(huán)境背景分析子系統(tǒng)
系統(tǒng)的流程:攝像頭固定在某一個位置,讀取攝像頭前的景象作為視頻流輸入,系統(tǒng)獲取視頻流,對每一幀圖像做以下處理:先判斷圖像中是否有人臉,若無,進(jìn)入系統(tǒng)背景更新模塊;若有,則截取人臉的環(huán)境背景,再在系統(tǒng)環(huán)境背景中截取相對應(yīng)區(qū)域的圖像,將兩張圖像進(jìn)行相似性比較。本系統(tǒng)使用的圖像比較算法為感知hash值的計(jì)算,通過計(jì)算感知hash的漢明距離,來判斷圖像的差異性。
當(dāng)差異值小于設(shè)定的閾值,則認(rèn)為兩個背景是相同的,系統(tǒng)進(jìn)入眨眼檢測子系統(tǒng)。對后續(xù)的8秒圖像先用區(qū)域增長算法進(jìn)行人眼定位,然后用灰度值化、二值化后的圖像進(jìn)行開-閉操作,即可判斷人眼的張合狀態(tài)。對一系列的張合狀態(tài)進(jìn)行分析,判斷是否產(chǎn)生眨眼動作,從而判斷是否為活體用戶。
本活體檢測的兩個子系統(tǒng):環(huán)境背景分析子系統(tǒng)與眨眼檢測子系統(tǒng),只有同時通過了兩個子系統(tǒng)的檢測,才判定待測用戶為活體,否則為非活體。
本系統(tǒng)的實(shí)現(xiàn)使用mfc框架,利用第三方庫opencv2.4.9開發(fā)一個基于windows的桌面應(yīng)用程序,系統(tǒng)的初始界面如圖6所示:位于界面的左上角區(qū)域是用來顯示捕捉到的實(shí)時視頻圖像,下方的區(qū)域是用來顯示背景分析子系統(tǒng)的中間結(jié)果、參數(shù)設(shè)置以及檢測結(jié)果的;在界面的右半?yún)^(qū),從上到下,依次是全局設(shè)置區(qū)、控制區(qū)、活體檢測結(jié)果顯示區(qū)以及眨眼檢測子系統(tǒng)的中間結(jié)果顯示、參數(shù)設(shè)定和眨眼檢測結(jié)果顯示區(qū)。界面上有7個參數(shù)可以讓用戶自己設(shè)定分別為:
a)minw:人臉檢測的最小窗口尺寸;
b)maxw:人臉檢測的最大窗口尺寸;
c)widthr:關(guān)鍵區(qū)域右沿距離人臉左沿的距離;
d)hashvt:背景比對結(jié)果差異的閾值;
e)thr:區(qū)域增長算法的閾值;
f)w:形態(tài)學(xué)操作的窗口寬;
g)h:形態(tài)學(xué)操作的窗口高。
這些參數(shù)每一次設(shè)定都將保存在配置文件config.ini中,如圖7,并且每一個參數(shù)都有一個默認(rèn)值,當(dāng)點(diǎn)擊“設(shè)為默認(rèn)值”按鈕,即可將參數(shù)設(shè)為默認(rèn)值。
下面介紹本系統(tǒng)的主要步驟:
1、打開攝像頭
點(diǎn)擊界面右半?yún)^(qū)“打開攝像頭”按鈕,系統(tǒng)將打開連接著的攝像頭,并將讀取到的圖像繪制在界面上的視頻圖像區(qū)域,如圖8所示,如果攝像頭打開失敗,則會彈出錯誤提示消息框;如果打開成功,則“打開攝像頭”按鈕變不可用,“初始化并啟動活體檢測系統(tǒng)”按鈕變?yōu)榭捎谩?/p>
2、初始化并啟動活體檢測
攝像頭成功打開后點(diǎn)擊“初始化并啟動活體檢測系統(tǒng)”,彈出消息框,如圖9,由于系統(tǒng)背景在初始化時不允許有人臉遮擋攝像頭,所以給系統(tǒng)管理員3秒鐘確保攝像頭前無人臉遮擋。三秒后系統(tǒng)啟動成功。
3、背景分析
活體檢測系統(tǒng)啟動后即刻開始對視頻流進(jìn)行分析,如果檢測到人臉,則提取人臉背景區(qū)域圖像與對應(yīng)的系統(tǒng)背景圖像進(jìn)行比對分析,將兩個圖像顯示在系統(tǒng)界面的同時顯示分析的差異結(jié)果,然后根據(jù)設(shè)定的閾值,給出背景分析的結(jié)果,如圖10、圖11所示。
4、眨眼檢測
界面的右半?yún)^(qū)下半部分是關(guān)于眨眼檢測的區(qū)域,系統(tǒng)通過對視頻圖像的分析,在人臉上定位出人眼的位置,將人眼圖像灰度值化與二值化并將結(jié)果繪制在界面上,如圖12所示,下方還包含一個直方圖,該直方圖是統(tǒng)計(jì)形態(tài)學(xué)處理后的黑色素的個數(shù),當(dāng)數(shù)量低于于紅色線時,認(rèn)為是閉眼狀態(tài),否則為睜眼狀態(tài),根據(jù)狀態(tài)序列,判斷是否有眨眼行為,如圖13所示。
5、全局展示
當(dāng)使用靜態(tài)照片放置在攝像頭前時,眨眼檢測與背景分析均不通過,所以活體檢測系統(tǒng)的檢測結(jié)果為不通過,如圖14所示;
當(dāng)使用視頻圖像放置在攝像頭前時,雖然眨眼檢測通過,但背景分析不通過,所以活體檢測不通過,如圖15所示;
當(dāng)合法用戶站在攝像頭前時,眨眼檢測與背景分析均通過,活體檢測的結(jié)果為通過,如圖16所示。
參考文獻(xiàn):
[1]chellappar,wilsoncl,siroheys.humanandmachinerecognitionoffaces:asurvey[j].proceedingsoftheieee,1995,83(5):705-741.
[2]yanj,zhangz,leiz,etal.facelivenessdetectionbyexploringmultiplescenicclues[c]//internationalconferenceoncontrolautomationrobotics&vision.2012:188-193.
[3]komulainenj,hadida,pietik?inenm,etal.complementarycountermeasuresfordetectingscenicfacespoofingattacks[c]//internationalconferenceonbiometrics.2013:1-7.
[4]buldasa,kroonmaaa,laanojar.keylesssignatures’infrastructure:howtobuildglobaldistributedhash-trees[m]//secureitsystems.springerberlinheidelberg,2013:313-320.
[5]phashpoho.phash.org:homeofphash,theopensourceperceptualhashlibrary[j].phash.
[6]yuilleal,hallinanpw,cohends.featureextractionfromfacesusingdeformabletemplates[j].internationaljournalofcomputervision,1992,8(2):99-111.
[7]dengjy,laif.region-basedtemplatedeformationandmaskingforeye-featureextractionanddescription[j].patternrecognition,1997,30(3):403-419.
[8]mohammedaaa,anwermssa.efficienteyeblinkdetectionmethodfordisabled-helpingdomain[j].internationaljournalofadvancedcomputerscience&applications,2014,5(5).
[9]pereiratdf,komulainenj,anjosa,etal.facelivenessdetectionusingdynamictexture[j].eurasipjournalonimage&videoprocessing,2014,2014(1):2.
[10]kimg,eums,suhrjk,etal.facelivenessdetectionbasedontextureandfrequencyanalyses[c]//iaprinternationalconferenceonbiometrics.ieee,2012:67-72.。