人臉辨識 — 基本流程/測試標準

張凱喬
11 min readMar 8, 2019

--

「facial recognition 1:n preprocess」的圖片搜尋結果

因工作關係投入研究人臉辨識
此篇主要為網路資料整理
若有問題或指教歡迎留言或來信

人臉辨識流程

從一張圖輸入開始,如果是影片的話就切成每秒很多張圖

然後就會開始經過一臉串的數據圖形與處理囉

source ccw1986.blogspot

Pre-Precessing 是預處理,可能針對光線、顏色、雜訊等方面處理,當然,光線會很大的影響人臉辨識結果,基本上就是光線充足、不逆光為最主要的訴求,不過有些廠商會把顏色降頻、甚至是用灰階來做,這樣子可以讓系統的loading減輕一些。

相關功能包含:光線補償,灰度變換、直方圖均衡化、幾何矯正 等

Face Detection 就是在抓臉的框框,先知道這邊有人,再來做數據的計算。透過這一層的過濾,可以幫助電腦以很快的速度知道”有沒有人臉”。常見的是haar特徵和Adaboost算法,這個部分已經在機器視覺發展了一段時間。
(遙記十幾年前的相機就已經有一個綠色的小框框做人臉偵測)

Feature Extraction 特徵擷取

alignment來處理照片不同的角度,把它轉到較為一致的基準上

再來就是要將人臉轉換成一串精準的數字,譬如基於幾何特徵法和模板匹配法,人臉器官的形狀描述以及它們之間的距離特性來獲得有助於人臉分類的特徵數據,其特徵分量通常包括特徵點間的歐氏距離、曲率、和角度等。

到這邊就是數據與矩陣,再把這些資料與資料庫裡進行比較
數學問題,運用距離、分類 等方法找出最好的配對對象

補充在這邊有一個很重要的設定值:閥值

輸入兩個人臉特徵(譬如 在鏡頭出現的A人,電腦正在比對他是否跟資料庫裡的B人是不是同一個人),透過人臉比對獲得兩個人臉特徵的相似度。藉由與預設的閾值比較來驗證這兩個人臉特徵是否屬於同一人,即相似度大於閾值,為同一人;小於閾值為不同。

閥值會影響到人臉辨識的一些指標,先介紹指標之後,再繞回來談

人臉辨識指標 — 1

人臉辨識指標分為兩種,一個是偵測指標、另一個是辨識指標

偵測指標指的是”有沒有偵測到人”,參考下圖

  1. 檢測率:識別正確的人臉/圖中所有的人臉。檢測率越高,代表檢測模型效果越好。
  2. 誤檢率:識別錯誤的人臉/識別出來的人臉。誤檢率越低,代表檢測模型效果越好。
  3. 漏檢率:未識別出來的人臉/圖中所有的人臉。漏檢率越低,代表檢測模型效果越好。
  4. 速度:從採集圖像完成到人臉檢測完成的時間。時間約短,檢測模型效果越好。

例子:在攝像頭某張抓拍圖像中,一共有100張人臉,算法檢測出80張人臉,其中75張是真實人臉,5 張是把路標誤識為人臉。

在這個實際案例中:
檢測率=75/100
誤檢率=5/80
漏檢率=(100–75)/100

人臉辨識指標-2

從這邊開始,就是人臉識別的指標,這邊會更複雜一些,因為我們要測試同一個人不同照片可不可以都辨識為同一個人,更重要的是,同一個人沒有辨識成功沒關係,但不可以被錯認為另外一個人。

精確率:所有預測為正的樣本中,實際也為正的比例有多少
Precision = TP / ( TP + FP )

真正類率TPR true positive rate 將正例分對為正類的概率,也稱Recall召回率 Recall = TPR = TP/(TP+FN)

假正類率FPR false positive rate 將負例錯分為正類的概率
FPR = FP/(FP+TN)

準確率ACC
Accuracy = (TP+TN)/(P+N) = (TP+TN) / (TP + FN + FP + TN)

其他
真負類率TNR true negative rate
假負類率FNR false negative rate

往下再贅述一些更深入的指標,以另外一個範例來解釋

錯誤接受率/認假率/誤識率(FAR False Accept Rate)

假定有110個人,每人各有8張圖片,共110*8=880張的人臉資料庫,即110類,每類8張圖片。

當然,我們希望類內(同一人)的任意兩張圖片匹配成功,類間的任意圖片匹配失敗。

現在我們讓圖庫中的每一幅圖片除開它自身之外與其他的所有圖片進行匹配,分別計算誤識率與拒識率。

理論情況下,來自同一個人的人臉都成功匹配,次數為7*8*110=6160次,匹配的總次數,即880×(880–1)=773520次。

誤識率(FAR)=(本應FALSE的判錯 / 所有FALSE )

假定由於指紋識別演算法效能的原因,把本應該匹配失敗的判為匹配成功,若假定這種錯誤次數為1000次。

匹配失敗次數應為773520–6160=767360次。則誤識率FAR為1000/767360*100%=0.13%。

拒識率(FRR):=(本應TRUE的判錯 / 所有TRUE )

假定由於指紋識別演算法效能的原因,把本應該匹配成功的判為匹配失敗,若這種錯誤次數為160次。則拒識率為160/6160=2.6%.

FAR決定了系統的安全性,FRR決定了系統的易用程度,在實際中,FAR對應的風險遠遠高於FRR,因此,生物識別系統中,會將FAR設置為一個非常低的範圍,如萬分之一甚至百萬分之一,在FAR固定的條件下,FRR低於5%,這樣的系統才有實用價值。

閥值與指標

閾值的高低,直接影響到“識別率”,“通過率”的表現:

一是誤識率、通過率和閾值具有相關性

閾值越高,通過率和誤識率越低,閾值越低,通過率和誤識率越高。這就引出了一個常見的誤區,有種說法叫“通過率越高越好”,初衷是好的,通過率越高客戶體驗越好,但這種說法犯了兩個錯誤,一方面,通過率和誤識率要有閾值這個前提,單純講通過率和誤識率意義不大;另一方面,誤識率和通過率互相掣肘,不能追求單邊數據的漂亮,高通過率的另一面是高誤識率,防風險能力會下降,所以要綜合考慮客戶體驗和防風險能力兩個因素,來確定閾值以及相應的誤識率和通過率。較準確的說法應該是在指定閾值下,公司A的誤識率比其他公司低,通過率比其他公司高,就說明公司A的人臉識別算法好。

二是誤識率、通過率和閾值屬於非線性關係

閾值不斷提高後,通過率和誤識率急速下降。這說明閾值不能設置過高,但閾值只要量足夠大,一定會出現誤識。

所以如果你看到某某公司宣傳他們的人臉識別算法有超過99.9%的識別率,那麼你不要輕易就以為,他們的人臉識別算法就一定好,因為好不好,就這一個指標,是不夠的,他必須結合誤識率,通過率,閾值等結合起來,才能更客觀的判定。

閥值與指標 — 2

除了基本的通過率之外,其實還有數個更深入的指標會透過固定閥值,來做一個比較有標準的比較

設定一個分數閾值T,FAR=非同人分數>T/非同人比較的次數,FRR=同人比較分數<T/同人比較的次數。即FAR和FRR都是一個關於T的函數

一般,FAR=0.001時,FRR的值作為參考。值越小,性能越好。

EER:FAR=FRR時,對應的T值。

一般畫兩條曲線,看看交點。

以上,都還是一些基本的指標
有些機器視覺的比賽,需要更全面的指標
也就是開始將一些基本的數據來給模型、加權
產出一個較為公平公正的結果

譬如 F-score

P和R指標有的時候是矛盾的,那麼有沒有辦法綜合考慮他們呢?我想方法肯定是有很多的,最常見的方法應該就是F-Measure了,有些地方也叫做F-Score,其實都是一樣的。

F-Measure是Precision和Recall加權調和平均:

當參數a=1時,就是最常見的F1了:

很容易理解,F1綜合了P和R的結果,當F1較高時則比較說明實驗方法比較理想。

另一個常見的是AP Average Precision,有兩種算法

第一種算法
首先設定一組recall閾值,[0, 0.1, 0.2, …, 1]。然後對每個recall閾值從小到大取值,同時計算當取大於該recall閾值時top-n所對應的最大precision。這樣,我們就計算出了11個precision。AP即為這11個precision的平均值。這種方法英文叫做11-point interpolated average precision。
第二種算法
該方法類似,新的計算方法假設這N個樣本中有M個正例,那麼我們會得到M個recall值(1/M, 2/M, …, M/M),對於每個recall值r,該recall閾值時top-n所對應的最大precision,然後對這M個precision值取平均即得到最後的AP值。

附上參考資料出處

大概先這樣,ㄅㄅ

--

--