【蜂口 | AI人工智慧】關鍵點檢測——龍鵬 深度學習與人臉影像應用連載(三)

絵飛的魚發表於2018-09-29

Hi,我是龍鵬。這次我將給大家帶來關鍵點檢測的分享。

本次分享主要回顧一下關鍵點檢測演算法,包括傳統方法和深度學習的方法。將包含以下幾個方面的內容:

1)我們會簡單的講述一下關鍵點是什麼,以及它的一個發展的簡史,

2)我們對傳統方法做一個簡單的瞭解,主要包括ASM,AAM等模型。

3)我們講一下深度學習的思路。深度學習的思路將包含迴歸網路的講述以及多尺度,多工的學習等相關的內容。

4)對人臉關鍵點檢測的應用以及它的發展趨勢做一個總結。

下面開始我們第一部分的分享:人臉關鍵點

所謂關鍵點它到底是什麼呢?下面是我們的一個關鍵點的影像

我們從這裡可以看出來,所謂人臉的關鍵點就是我們人臉中從眉毛到眼睛到鼻子到嘴唇,到人臉的輪廓,這樣一些特徵區域的外部的輪廓點。基於這些點,我們就能完整地描述一個人臉的一個影像,我們把它對應到我們人臉的一個影像上面去就可以看到,有了關鍵點之後,他就是人臉形狀的一個稀疏的表達,如下圖:

人臉關鍵點它這樣的一個特徵向量,實現了畫素到語義級別的轉換。也就是說我們之前理解人臉,只能理解是一個一個的RGB畫素。當我們有了關鍵點之後,關鍵點的一個向量就是我們人臉的一個形狀的表達,我們就可以利用關鍵點來對人臉做一些簡單的一些區分和分類。

人臉關鍵點檢測經歷了20多年的發展,最先開始是使用ASM這樣一個主動形狀模型。隨後對ASM主動模型進行了改進,得到了主動外觀模型。經過了十年的發展,ASM這樣的一個系列最終發展到了CLM這樣的一個方法,它是一個帶區域性約束的ASM模型。隨後cascaded Regression這樣的一個思路被引進到關鍵點的檢測。直到近幾年深度學習開始被廣泛應用於人臉關鍵點的檢測。

到現在幾乎所有的方法都是使用深度學習來進行人臉的關鍵點檢測,因為深度學習用於人臉關鍵點檢測,它的檢測精度已經遠遠超過了傳統的方法。傳統的方法在自然環境下已經無法滿足關鍵點檢測這樣的需求。

下面我們開始分別對傳統方法和深度學習的方法進行簡單的介紹:

一、傳統模型:

以ASM方法和AMM方法作為代表。它的基本思路是這樣:

首先,利用形狀向量來描述訓練集人臉的形狀。所謂形狀向量就是我們前面提到的關鍵點的座標的串聯,

然後,因為人臉有各種各樣的姿態,所以我們要對這些人臉的形狀進行一個對齊,對齊之後我們可以利用PCA等方法進行統計的特徵建模。

接下來,當我們有一張新的測試影像的時候,我們就用我們前面建立好的一個區域性紋理模型,在新的人臉的影像區域上去搜尋,滿足我們這樣的統計描述的就是特徵點,從而定位到這些影像特徵點。

最後因為區域性紋理模型可能會受到一些初始化、一些光照等的干擾,會有點不穩定,所以我們會採用全域性的統計模型對形狀來進行修正,保證它在可控的可變的範圍內。

以上就是ASM方法的一個整體流程。

而AAM方法,它就是將ASM的區域性紋理模型擴充為了全域性紋理模型。

總結來說這兩個方法,AAM方法是ASM方法的一個改進,它的檢測精度相對來說更高,但是它的速度也會相比更慢。

傳統的模型進行關鍵點檢測,它的核心的思想就是利用了全域性的形狀,加全域性的紋理或者區域性的紋理來進行融合。

下面對我們的傳統模型進行一個簡短的總結。

1)它的速度比較快,實時性比較強。

2)它是一個引數化的可變模型。因為人臉是一個柔性模型,我們前面已經給大家進行過講述,利用這樣的一個引數化的可變模型,方便對人臉特徵點進行跟蹤。

3)它的速度和精度都比較依賴於初始的形狀。如果初始的形狀非常不好的話,它有可能會搜尋失敗。

4)它受噪聲和光照等干擾比較嚴重。因為它是依賴於傳統的紋理特徵。

傳統方法的後續研究主要包括CLM方法以及NPD方法。目前在傳統方法中,NPD方法是一個比較具有代表性,效能比較具有優勢的方法,大家可以線下去做更多的瞭解,我們這裡就不再做詳細的介紹。

二、我們開始對深度學習的思路進行講述。

深度學習的思路,主要我們會分析兩個方面。

1)級聯迴歸的定位框架。

我們會介紹一下DCNN框架,它是第一個用cnn來進行關鍵點檢測的框架。

這是DCNN的一個模型圖。我們可以看到DCNN這個框架總共包含三個模組,這三個模組分別包含了許多的卷積。level 1 這樣的模組,總共包含了三個卷積,level 2和level 3都是包含了十個卷積。

DCNN這個框架他只檢測人臉的五個關鍵點,包括兩個眼睛中心點,鼻尖以及兩個嘴巴,以及嘴巴的兩個關鍵點。

我們看level 1這個框架它總共包含了三個網路,level 2和level 3模組總共包含了十個網路,其中每一個特徵點它都使用了兩個網路來進行迴歸。

實際上DCNN它這個框架也是一個級聯的cnn的思想,它也實現了從粗到精的檢測。

level 1這樣的一個模組,它會使用解析度比較大的影像去進行人臉的關鍵點的檢測。level 2跟level 3會使用解析度更小的一個輸入來進行關鍵點的定位。

這次我們可以看到基於多解析度的一個級聯的思想,在人臉檢測和人臉關鍵點檢測中都已經被非常廣泛地使用。

2)我們會介紹一個多工學習的框架。因為多工學習目前在人臉檢測和關鍵點檢測是一個主流的思路。這裡我們會介紹一下MTCNN框架。

MTCNN方法,它總共包含了三個階段,分別是P-net,R-net和O-net。

上圖是三個模組的網路結構圖。我們可以看到,與前面介紹的級聯框架的人臉檢測方法非常類似,它也包含了三個解析度不同的網路。P-net是一個12×12的影像輸入,R-net是一個24×24的影像輸入。O-net是一個48×48的影像輸入,它也實現了從粗到精的這樣的一個思想。

同時,P-net,R-net,O-net他們三個,每一個模組,它們都包含了三個不同的網路。這三個不同的網路就是分別處理人臉的分類,邊框的迴歸以及關鍵點的定位。

在MTCNN方法中,它對難樣本做了一些技巧上的處理。不同於以往,我們選擇難樣本可能是線上下做訓練的時候去手動的去進行分類。

MTCNN它使用了線上的學習,它透過自動挑選每一次進行訓練的時候,其中損失較大的一些樣本作為難樣本去進行學習,而簡單的樣本不進行學習。

MTCNN它對損失函式做了一些處理,因為有很多的影像,它沒有人臉,它不需要進行人臉分類的損失。MTCNN它這個網路定義的LOSS,它可以自適應不同的影像輸入。

下面我們對基於深度學習的方法做一個總結:

首先,我們看看這些關鍵點的應用。它的應用非常的廣泛,包含人臉的跟蹤,人臉的編輯,美容美妝以及三維人臉重建。

我們看上邊這樣一個圖,它實現的是人臉的編輯功能,也就是實現了兩張人臉影像的融合。它的基本流程就是我們要分別檢測到兩張人臉的上的關鍵點,然後我們利用關鍵點來進行變形,最後進行紋理的融合。

再看一個與美容有關的圖:

利用關鍵點我們可以得到人臉的不同的區域,得到了人臉的不同的區域之後,我們對不同的區域進行分割槽的美顏的操作。因為人臉的皮膚的美顏與嘴唇的美顏、人臉面部的美顏與嘴唇區域的美顏,肯定是要採用不同的方法,這樣能夠更加精細,更加個性化。

當我們在美顏的時候,我們希望皮膚光滑,但是我們仍然希望能夠保留眉毛眼睛等地方的邊緣的清晰。

接下來是一個三維人臉重建的示意圖:

人臉關鍵點的檢測,對於三維人臉重建也是一個比較關鍵的步驟。

最早期的人臉三維重建的方法,就是透過檢測到2D影像上的一個關鍵點,然後利用關鍵點來進行人臉的重建。

最後我們對人臉關鍵點檢測的趨勢,給大家做一個介紹。

1)關鍵點不斷增加。前面我們分享的第一個用CNN進行關鍵點檢測的模型,它只使用了五個關鍵點,而現在在我們工業界的應用中,關鍵點已經從五個增長到21個,29個,68個,96個,192個,甚至傳聞有公司已經超過了200個關鍵點。關鍵點越多,我們就可以利用關鍵點做越精細的一些操作。

2)是大姿態的關鍵點檢測。因為對於很多大姿態的人臉,尤其是側臉,我們是無法檢測到關鍵點的,因為關鍵點本身是缺失的。但是我們有時候又需要關鍵點的資訊,這個時候就可以利用3D的人臉檢測、3D的人臉重建這樣的一個思想來進行關鍵點的檢測與補全。

關於人臉關鍵點的檢測分享,主要內容就到此為止。人臉關鍵點仍然是一個非常具有挑戰性的問題,大家可以線下去做更多的瞭解。

免費領取技術大咖分享課,加蜂口V信: fengkou-IT    
感謝您的閱讀,更多精彩請持續關注蜂口微信小程式!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31553577/viewspace-2215276/,如需轉載,請註明出處,否則將追究法律責任。

相關文章