最近研究活體檢測,主要是針對防止身份證**攻擊,通過提示使用者完成某些動作進行識別;
想要檢測使用者的動作,最基礎的乙個前提,必須將人臉的特徵點提取出來,才能做之後的判斷;opencv自帶的方法貌似只能畫出矩形的人臉框,我們必須要準確檢測出眼睛鼻子和人臉的輪廓,從網上找了兩個人臉特徵提取庫:
1.intrafacedll
2.libfacedetect
兩個庫的共同點是,都能提取人臉68個關鍵點,這對我們的檢測提供了很有利的條件;
也各有利弊,intrafacedll提取相對準確,尤其是針對眨眼,張嘴等動作時,相當靈敏,但是當前網上我只找到了lib庫,沒有找到原始碼,其只支援opencv246版本(和我的專案衝突);libfacedetect對於眨眼並不靈敏,張嘴效果還行,主要是引入方便,相容性好;
好,提取68個點之後,效果大概是這樣:
好,現在我說一下活體檢測的思路把,
第乙個張嘴,首先要找出嘴巴上下左右嘴唇的位置,通過上下的絕對距離/左右的絕對距離,得到乙個比例,設定乙個闕值,大於此值時,為張嘴,小於則為閉嘴;
眨眼,和張嘴的邏輯一樣,不過要分左眼和右眼;
搖頭,檢測左右臉的晃動,需要三個點,鼻子,臉最左位置,臉最右位置,鼻子到左絕對距離為left,到右絕對距離為right, 總距離記為w=left+right; 當leftw/3則判斷為向右晃動,其他情況 為正臉;
以上是我通過實驗總結出來的幾種方法,效果比較理想,**這裡就不貼了,畢竟原理最重要
物體檢測的一些概念(1)
1 遷移學習 遷移學習也即所謂的有監督預訓練 supervised pre training 我們通常把它稱之為遷移學習。比如你已經有一大堆標註好的人臉年齡分類的資料,訓練了乙個cnn,用於人臉的年齡識別。然後當你遇到新的專案任務是 人臉性別識別,那麼這個時候你可以利用已經訓練好的年齡識別cnn模型...
關於記憶體洩漏檢測的一些方法
define crtdbg map alloc 顯示記憶體塊型別和記憶體塊分配編號 include 在輸出視窗檢視記憶體洩漏資訊,在程式結束前加入 crtdumpmemoryleaks 退出程式位置固定時 或者 crtsetdbgflag crtdbg alloc mem df crtdbg lea...
關於異常檢測的一些介紹
三種概念 異常檢測 有乙個和正常樣本不同的感興趣的點,比如網路攻擊。去噪 對資料的干擾,去除不想要的資料。新奇檢測 資料中的新模式,比如說乙個團體中出現的新的主題。乙個基本的想法 表示出正常樣本的樣子,不符合這個規律的就是異常。存在挑戰 完全表示正常樣本困難 異常偽裝為正常的樣子 正常樣本的進化,可...