DeepID2 強大的人臉分類演算法

2021-07-26 09:32:06 字數 2597 閱讀 6987

這篇文章是**deep learning face representation by joint identification-verification的筆記。

這篇**使用deep learning學習特徵,使用聯合貝葉斯模型作為分類器,選取七組特徵分別訓練分類器,得到的結果使用svm進行組合,得到的最終模型在lfw(labeled face in the wild)資料集上的人臉驗證任務中,達到了99.15%的準確率,目前排名第一。

face identification,人臉識別,將乙個輸入影象進行分類,類別集合會很大。

face verification,人臉驗證,對兩個影象進行判斷,確認是不是同乙個人的影象。

**的主要創新點就是利用deep learning學習影象特徵,具體的創新點就是通過擴大類間距離和縮小類內距離。

**提出的人臉識別演算法流程如下:

首先,使用sdm演算法抽取人臉上的21個標記,然後根據得到的標記對人臉進行對齊。通過變化位置、尺度、顏色通道,得到200個face patch,對每個face patch,使用該patch及其水平反轉的影象進行特徵學習。所以,一共需要200個深度卷積神經網路。

注:因為lfw是wild資料,不像ar資料集那樣是對齊好的資料,所以需要通過sdm尋找landmark來分patch;sdm演算法是cvpr2023年提取的。

第二步,學習特徵,**提出一種學習特徵的卷積神經網路框架,稱之為deepid2。構建200個deepid2來學習上一步得到的patch。每個deepid2都將輸入影象表示成乙個160維的向量。

第三步,對每張影象而言,經過200個deepid2學習到的特徵數目為200*160,特徵數目太大了。所以**中使用前向後向貪心演算法來選取一些有效且互補的deepid2向量,以節約時間。注意,特徵選擇在每個deepid2向量間進行,也就是乙個deepid2輸出的向量,要麼全被選中,要麼全不被選中。選中的向量對應的patch如圖。

第四步,選中25個向量後,每張影象的維度是25*160=4000維。仍然太大,因而使用pca進行降維,降維後大約有180維。

第五步,對於輸出後的向量,就可以使用來進行人臉驗證任務了。**構建了乙個聯合貝葉斯模型來進行分類。聯合貝葉斯模型如下:

即使用類間距除以類內距的對數值來衡量乙個影象對是不是同乙個人。在訓練集上可以得到乙個閾值,當結果值大於閾值時,不是同乙個人;當結果值小於閾值時,是同乙個人。

deepid2的創新點在於在學習特徵的時候,該網路不僅考慮分類準確率,還考慮類間差距。具體的做法就是在目標函式中新增一項類間差距。該新增的創新就在於類間差距是在兩個樣本間進行衡量的,因而新增類間差距後,訓練過程需要變化。

deepid2所做的第二點小創新就是將卷積層的倒數第一層和倒數第二層都作為最終層的輸入。(因為新增了類間差距,所以最終層不能再成為是softmax層了)

deepid2學習特徵的整體卷積神經網路結構圖如下:

四層卷積,前三層後面都跟著max-pooling層,第三層卷積的神經單元的引數在2*2的區域性區域內共享;第四層卷積則是全連線,引數在神經單元之間不共享。

第三卷積層的輸出和第四卷積層的輸出以全連線的方式連線到最後一層,最後一層也稱為deepid2層。因為第四層學習到的特徵比第三層的更全域性一些,所以這樣的連線方式被稱為是多尺度卷積神經網路。

在本**中,使用deepid2進行學習的目的是得到輸出向量,並不是為了使識別率最大化。因而**新增了類間距項。使用卷積層得到輸出向量可用函式表示:

正確分類的函式就是softmax的目標函式,目的是使交叉熵最小化。

樣本間距最大化的目標函式如下。

該公式的作用是,當兩個樣本相同時,則需要最小化它們之間的距離,當兩個樣本不同時,則需要最小化m與它們的距離值之差,m是乙個需要手動調整的引數,提出m的目的在於目標函式需要最小化,而不是最大化。

當樣本之間的距離函式時余弦距離時,樣本間距最大化的目標函式如下。

在最終組合目標函式時,將ident與verif加權。

訓練過程如下圖。

lfw是最終使用模型的資料集,共13233張臉,分屬於5749個人。但此資料集太小,所以需要引入外部資料集celebface+,擁有202599張臉,分屬於10177個人。

將celebface+資料集分為celebface+a資料集和celebface+b資料集。celebface+a有8192個人的資料,隨機從celebface+中選取,用於訓練deepid2學習特徵。celebface+b是剩餘的1985個人的臉,用來進行特徵選取和聯合貝葉斯概率模型的學習。

在學習deepid2的時候,celebface+a是訓練集,celebface+b是驗證集來確定學習速率,訓練迭代次數,目標函式的融合引數lambda。

在特徵選擇的時候,celebface+b中分出500個人的資料作為驗證集。

最後,在整個celebface+b中訓練聯合貝葉斯模型。

在lfw上使用訓練好的模型進行實驗。

**進行了如下幾組實驗:
[1] sun y, chen y, wang x, et al. deep learning face representation by joint identification-verification[c]//advances in neural information processing systems. 2014: 1988-1996.

DeepID2 強大的人臉分類演算法

這篇文章是 deep learning face representation by joint identification verification的筆記。這篇 使用deep learning學習特徵,使用聯合貝葉斯模型作為分類器,選取七組特徵分別訓練分類器,得到的結果使用svm進行組合,得到的...

剪枝 再訓練 稀疏化DeepID2

本次介紹的依然是壓縮網路的方法,不過有了具體的應用場景 壓縮的模型是deepid2 方法 於 2015 arxiv sparsifying neural network connections for face recognition 文章是王曉剛 湯曉鷗團隊的,所以結果依舊很漂亮,但誰又能保證沒點...

基於2D的人臉跟蹤顯示

facetrack.cpp 定義控制台應用程式的入口點。include stdafx.h include opencv2 opencv.hpp include kinect.h include kinect.face.h using namespace cv using namespace std ...