人臉識別工作流程

2021-08-21 03:46:11 字數 2406 閱讀 5527

格靈深瞳:人臉識別最新進展以及工業級大規模人臉識別實踐**簡單來講,人臉識別這個問題,就是給定兩個人臉,然後判定他們是不是同乙個人,這是它最原始的定義。它有很多應用場景,比如銀行櫃檯、海關、手機解鎖、酒店入住、網咖認證,會查身份證跟你是不是同乙個人。這個應用的主要特點是,在大多數場景下都需要你先提供乙個證件,然後跟自己的人臉做比對。手機解鎖可能是個例外,但也要求你提前註冊一張人臉,然後再進行比對。這是最原始的形式,由使用者直接提供需要對比的兩個人臉。這也是最簡單的形式,相當於做乙個二分類。

注:1:1

進一步來講,如果想要去做人的搜尋呢?比如我們有乙個大小為 n 的人臉庫,有一張待檢索的,讓我們判斷這個人有沒有在這個人臉庫中出現過。這種情況下,要回答的就有 n 個問題了,分別是:這個人臉是不是庫中的人臉1、是不是人臉2,一直到是不是人臉n。如果這 n 個問題回答都是「否」的話,就意味著這個人不在人臉庫裡面。不在人臉庫是乙個很難的問題,等於 n 個問題都得回答對,然後才能真正確認它並不這個人臉庫里。

當然,在安防或者其他應用場景裡有更難的任務,就是人臉的 n : n 搜尋,這種情況下我們會有大量的攝像頭,每乙個都在實時抓拍,有非常多待確認的抓拍人臉,同時庫也是相對比較大的。舉個例子,在安防領域,假設我們有 100 個攝像頭,然後每個攝像頭每天抓拍 1 萬個人,那麼總的搜尋次數就是 100 萬次。假設這一天有 10 個嫌疑人被攝像頭抓拍到,假設我們需要在乙個 10 萬大小的底庫裡面去搜尋他們。我們有乙個演算法,這個演算法這一天總報警 100 次,警察每乙個都去確認,最後抓到了 9 個嫌疑人,這看起來還不錯,因為總共出現了 10 個人,抓到了 9 個,召回率是 90%。那我們來看看誤報率,100 次報警,對了 9 次,錯了 91 次,誤報率就是91 除以 100萬×10萬,大概算下來是 10億分之0.91,約為 10億分之1 的誤報率。

這個指標在現在的人臉識別演算法裡還算比較不錯的了,但是在公安民警看來沒有那麼理想,因為他們出警了 100次,只抓到了 9 個人,他們非常想出警 10 次就抓到 9 個人,這樣成本就會低很多。那我們來看一下出警 10 次抓到 9 個人的誤報率是多少呢?看起來少了乙個數量級,但實際上要求誤報率要提高兩個數量級,因為這個時候誤報的次數只有 1 次,1 除以 100萬×10萬,就是已經到了千億分之一,這個就非常難達到。即使有乙個千億分之一的演算法也只能支援 100 個攝像頭的需求,在很多城市裡輕輕鬆鬆就有上萬個攝像頭,甚至幾十萬個。所以演算法還要在誤報率方面再降低 n 個數量級,或者要求我們有更聰明的使用方式,在還有很多研究的空間。

注:n:n

人臉識別的基本流程,首先要檢測到人臉,檢測到之後一般會做關鍵點的定位,把他的眼睛、鼻子、嘴角等資訊都定位出來,利用這個資訊對人臉做個矯正,把它變換到比較正情形,便於後面模型分析或者處理時各個部分更好的對齊。最終會提取得到乙個人臉的描述特徵,通常是乙個 100 多維到幾百維的特徵表達,然後我們用不同人臉特徵之間的相似度或者距離,相似度是越高越好,距離是越小越好,去刻畫兩個人之間的關係,再卡乙個域值,來判斷這兩個人是否為乙個人。這次我們講人臉識別主要就是最後的人臉特徵提取的部分。

這裡我標紅了「模型測評」,評測是件非常難的事,我們針對不同的應用場景做了十幾個不同型別的評測 ,因為評測做的不好的話,會影響模型設計,讓你判斷不清楚哪個模型好、哪個模型差。

之所以要做這個事情有幾個原因:

第一,學術界曾經有很多非常有名的測試集,比如 lfw 有 6000 對人臉 1:1 認證。但現在有很多演算法都可以達到 99% 以上甚至 99.8% 的好成績,所以這個效果已經不能很好的衡量演算法的好壞了,可能兩個同樣在 lfw 上達到 99.8% 的演算法,換乙個資料集時結果會差很多。

第二,megaface 在學術界也是非常有名的。它的測試條件是在 100 萬干擾項中找到目標人臉,一開始的時候大家覺得這是個很難的問題,但隨著學術界幾年的研究,排行榜的第一名已經超過 98.9% 了,看起來也有一定的飽和趨勢。這裡面一開始是有些噪音的,後來被一些研究人員發現之後做了些清理,就發現這個測試集沒有想象得那麼難。另外,它提供的正樣本人臉對的比較有限,正樣本每個人的變化並不是特別的大,導致這個問題可能並沒有一開始大家預想的那麼難。

於是,我們想辦法去擴充做乙個更大規模的訓練集,希望做更客觀的評測,幫助在人臉方面做研究的同行們有乙個未來幾年還可以繼續用的測試平台。我們做了兩件事情,第乙個是做乙個比較大的人臉訓練集,第二個是做比較大的人臉測試集。訓練集大概是有 18 萬人,共有 680 萬張左右,測試集大概有 187 萬的人臉。

參考:格靈深瞳:人臉識別最新進展以及工業級大規模人臉識別實踐**

注:博眾家之所長,集群英之薈萃。

人臉識別流程

第一步 編碼 將人臉表示為128為的向量 def face encodings face image,known face locations none,num jitters 1 return 128維人臉編碼向量 param face image 包含人臉影象 param known face ...

人臉識別的流程

記錄一下目前對人臉識別流程及識別方法的理解,以後隨著認識的提公升不斷更新 在整個過程中所使用的都是灰度化之後的。為什麼要轉化為灰度?1.識別物體最關鍵的部分是,找到物體的邊緣,就是的梯度,的梯度計算用到的就是灰度化之後的。2.顏色容易受到光照影響,難以提供關鍵資訊,最重要的是灰度化之後可以加快計算速...

人臉識別工程主要流程

功能 首先將人臉入庫,每個人採集10張人臉影象 然後可以檢測某個人臉是否屬於這個人臉庫中的某個人 一.利用opencv開啟攝像頭並捕捉影象 二.影象預處理 1.影象灰度化 ptr j colorimage width x char 0.072169 colorimage imagedata 3 j ...