基於深度卷積神經網路進行人臉識別的原理是什麼?

2021-08-19 06:27:29 字數 2364 閱讀 7622

這裡的人臉識別包括但不限於:人臉檢測,人臉對齊,身份驗證識別,和表情、年齡識別。 cs小白提問,求輕噴。不求多詳細,但求各位大佬講一下基本的過程就好,如…顯示全部

關注者916 被瀏覽

59,851

關注問題寫回答

​分享

​邀請回答

​舉報​

17 個回答

預設排序

​何之源

新書《21個專案玩轉深度學習——基於tensorflow的實踐詳解》已上線京東,天貓~

322 人贊同了該回答

我這裡簡單講下openface中實現人臉識別的pipeline,這個pipeline可以看做是使用深度卷積網路處理人臉問題的乙個基本框架,很有學習價值,它的結構如下圖所示:

輸出:人臉位置的bounding box。

這一步一般我們稱之為「人臉檢測」(face detection),在openface中,使用的是dlib、opencv現有的人臉檢測方法。此方法與深度學習無關,使用的特徵是傳統計算機視覺中的方法(一般是hog、haar等特徵)。

輸入:原始影象 + 人臉位置bounding box

輸出:「校準」過的只含有人臉的影象

對於輸入的原始影象 + bounding box,這一步要做的事情就是要檢測人臉中的關鍵點,然後根據這些關鍵點對人臉做對齊校準。所謂關鍵點,就是下圖所示的綠色的點,通常是眼角的位置、鼻子的位置、臉的輪廓點等等。有了這些關鍵點後,我們就可以把人臉「校準」,或者說是「對齊」。解釋就是原先人臉可能比較歪,這裡根據關鍵點,使用仿射變換將人臉統一「擺正」,盡量去消除姿勢不同帶來的誤差。這一步我們一般叫face alignment。

輸入:校準後的單張人臉影象

輸出:乙個向量表示。

這一步就是使用深度卷積網路,將輸入的人臉影象,轉換成乙個向量的表示。在openface中使用的向量是128x1的,也就是乙個128維的向量。

我們可以先看一下vgg16的模型:

在理想的狀況下,我們希望「向量表示」之間的距離就可以直接反映人臉的相似度:

這種表示實際上就可以看做某種「embedding」。在原始的vgg16模型中,我們使用的是softmax損失,沒有對每一類的向量表示之間的距離做出要求。所以不能直接用作人臉表示。

舉個例子,使用cnn對mnist進行分類,我們設計乙個特殊的卷積網路,讓最後一層的向量變為2維,此時可以畫出每一類對應的2維向量表示的圖(圖中一種顏色對應一種類別):

上圖是我們直接使用softmax訓練得到的結果,它就不符合我們希望特徵具有的特點:

那麼訓練人臉特徵表示的正確姿勢是什麼?其實有很多種方法。一種方法就是使用「center loss」。centor loss實際上是在softmax的loss上再加入乙個損失,這個損失對每一類規定了乙個「中心」點,每一類的特徵應該離這個中心點比較近,而不同類的中心點離的比較遠。加入center loss後,訓練出的特徵大致長這樣:

。上面這兩幅圖同樣是從這篇**中截下來的。

輸入:人臉的向量表示。

有了人臉的向量表示後,剩下的問題就非常簡單了。因為這種表示具有相同人對應的向量的距離小,不同人對應的向量距離大的特點。接下來一般的應用有以下幾類:

以上給大家介紹了openface中處理人臉問題的pipeline。需要特別指出的是,人臉相關的問題是乙個比較大的方向,一篇文章顯然是說不清楚的,這裡只是基於openface,對比較重要的方法還有名詞做了乙個解釋。在openface中,為了速度的考慮,提取人臉特徵之前的face detection和face alignment就是使用的傳統方法。實際上也可以換用精度更高的深度學習相關方法,比如在中科院山世光老師開源的人臉識別引擎seetaface/seetafaceengine中,face alignment使用就是乙個基於autoencoder網路的方法。另外,學習人臉特徵同樣有適合不同場景的不同方法,這些都是要進一步學習的。

使用Siamese神經網路進行人臉識別

本文由 使用siamese神經網路進行人臉識別 作者 firdaouss doukkali 譯者 孫浩 編輯 emily 一次性學習 為了理解為什麼我們有一次性學習的原因,我們需要討論下深度學習和資料。通常,在深度學習中,我們需要大量的資料,而我們擁有的資料越多,結果就越好。可是,假如可以用僅僅很少...

Keras深度學習 卷積神經網路 手寫數字識別

引言 最近在閉關學習中,由於多久沒有寫部落格了,今天給大家帶來學習的一些內容,還在學習神經網路的同學,跑一跑下面的 給你一些自信吧!nice 奧里給!正文 首先該impor的庫就不多說了,不會的就pip install something that you got it 備註 mnist.npz資源...

卷積神經網路文字輸入 使用卷積神經網路進行文字分類

cnn 是卷積神經網路,通常用於影象領域,並且在影象分類取得非常好的效果。2014 年 yoon kim 在 convolutional neural networks for sentence classification 中將 cnn 的思想應用到文字處理中,後續很多把 convnet 用在 n...