人臉關鍵點檢測是諸如人臉識別、表情分析、三維人臉重建等其它人臉相關任務的基礎。近些年來,深度學習方法已被成功應用到了人臉的關鍵點檢測,本章將介紹深度學習方法在人臉關鍵點檢測方向的研究。包括人臉關鍵點任務,包括其關鍵點檢測資料集的發展、核心演算法以及未來展望。

1、什麼是關鍵點檢測?

人臉關鍵點檢測是指給定人臉影象,定位出人臉面部的關鍵點,包括眉毛、眼睛、鼻子、嘴巴、臉部輪廓區域的點,由於受到姿態和遮擋等因素的影響,人臉關鍵點檢測是一個富有挑戰性的任務。人臉關鍵點是人臉各個部位的重要特徵點,通常是輪廓點與角點,下圖是使用OpenCV Dlib庫對一張正臉影象的68個面部關鍵點檢測結果。

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

其中

點代表位置,數字代表序號

。人臉關鍵點可以有以下主要應用:(1) 人臉姿態對齊,人臉識別等演算法都需要對人臉的姿態進行對齊從而提高模型的精度。(2) 人臉美顏與編輯,基於關鍵點可以精確分析臉型、眼睛形狀、鼻子形狀等,從而對人臉的特定位置進行修飾加工,實現人臉的特效美顏,貼片等娛樂功能,也能輔助一些人臉編輯演算法更好地發揮作用。(3)人臉表情分析,基於關鍵點可以對人的面部表情進行分析,從而用於互動娛樂,行為預測等場景

2、人臉關鍵點標註點數發展

關鍵點能夠反映各個部位的臉部特徵,隨著技術的發展和對精度要求的增加,人臉關鍵點的數量經歷了從最初的5個點到如今超過200個點的發展歷程,在人臉等演算法上擁有領先技術優勢的商湯科技先後定出過106個關鍵點等行業標準。2。1 4點、5點、6點標註人臉面部最關鍵的有5個點,分別為左右兩個嘴角,兩個眼的中心,鼻子,這5個關鍵點屬於人臉內部關鍵點,根據它們就可以計算出人臉的姿態。當然早期也有標註4個點以及6個點的方案。2005年釋出的 FRGC-V2(Face Recognition Grand Challenge Version2。0)中標註了雙眼、鼻子、嘴巴、下巴共5個關鍵點。2007年釋出的Caltech 10000 Web Faces資料集中標註了雙眼、鼻子和嘴巴共4個關鍵點。2013年的AFW資料集中標註了雙眼、鼻子、嘴唇共6個關鍵點,其中嘴唇有3個點。2014年釋出的MTFL/MAFL資料集中標註了雙眼、鼻子和2個嘴角共5個關鍵點。

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

2。2 21點,29點標註2011年釋出的AFLW(Annotated Facial Landmarks in the wild)資料集是一個人臉關鍵點檢測領域裡非常重要的評測基準,它包含多姿態、多視角,有25993幅從Flickr網站採集的人臉影象,其中每個人臉標定21個關鍵點。這21個關鍵點的描述如下:眼睛和眉毛相關的總共有12個點:左眉毛左角(Left Brow Left Corner)、左眉毛中心(Left Brow Center)、左眉毛右角(Left Brow Right Corner)、右眉毛左角(Right Brow Left Corner)、右眉毛中心(Right Brow Center)、右眉毛右角(Right Brow Right Corner)、左眼睛左角(Left Eye Left Corner)、左眼睛中心(Left Eye Center)、左眼睛右角(Left Eye Right Corner)、右眼睛左角(Right Eye Left Corner)、右眼睛中心(Right Eye Center)、右眼睛右角(Right Eye Right Corner)。嘴唇相關的有3個,左嘴角(Mouth Left Corner)、右嘴角(Mouth Center)、嘴角中心(Mouth Right Corner)。鼻子相關的有3個,左鼻角(Nose Left)、鼻尖中心(Nose Center)、右鼻角(Nose Right)。耳朵相關的有3個,左邊耳垂下方(Left Ear)、右邊耳垂下方(Right Ear)。下巴相關的有1個,下巴最低點。

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

從這個標註我們可以看出,相對於5點,分別增強了眼睛、鼻子、嘴巴的標註,將原來的只標註人臉內部拓展到了邊界,同時增加了對耳朵,下巴的定位。如果某些點看不見,則不進行標註。還有一些與AFLW標註點數和規則類似的資料集,簡介如下:1998年釋出的AR Face資料集包含了130個人,13種不同表情的3000幅影象,標註了22個關鍵點,不同之處在於對耳朵,眉毛等處的標註。2011年釋出的LFPW人臉資料庫有1132幅訓練人臉影象和300幅測試人臉影象,大部分為正面人臉影象,每個人臉標定29個關鍵點。對於左右眼睛,LFPW各自標註了5個關鍵點,此時區分了眼瞼的上下位置,眼睛的定位更加的準確,因此眼睛共5×2=10個點。對於眉毛,各自標註了4個關鍵點,分別是左右上下,所以眉毛的定位相對於21個點其實也更加準確,眉毛共4×2=8個點。對於鼻子,標註了4個關鍵點,分別為左右上下,考慮了鼻尖和鼻底。對於嘴巴,標註了6個關鍵點,分別是左右嘴角,以及上嘴唇的上下位置,下嘴唇的上下位置。同時也標註了下巴關鍵點,如果再加上左右耳朵的上下中總共6個位置,就發展成了35個關鍵點。COFW人臉資料庫包含LFPW人臉資料庫訓練集中的845幅人臉影象以及其他500幅遮擋人臉影象,而測試集為507幅嚴重遮擋(同時包含姿態和表情的變化)的人臉影象,每個人臉標定29 個關鍵點。

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

2。3 68點標註68點標註是現今最通用的一種標註方案,早期在1999年的Xm2vtsdb資料集中就被提出,300W資料集和XM2VTS等資料集也都採用了68個關鍵點的方案,被OpenCV中的Dlib演算法中所採用。68個關鍵點的標註也有一些不同的版本,這裡我們介紹最通用的Dlib中的版本,它將人臉關鍵點分為內部關鍵點和輪廓關鍵點,內部關鍵點包含眉毛、眼睛、鼻子、嘴巴共計51個關鍵點,輪廓關鍵點包含17個關鍵點。

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

Dlib所採用的68個人臉關鍵點標註可以看上圖,單邊眉毛有5個關鍵點,從左邊界到右邊界均勻取樣,共5×2=10個。眼睛分為6個關鍵點,分別是左右邊界,上下眼瞼均勻取樣,共6×2=12個。嘴唇分為20個關鍵點,除了嘴角的2個,分為上下嘴唇。上下嘴唇的外邊界,各自均勻取樣5個點,上下嘴唇的內邊界,各自均勻取樣3個點,共20個。鼻子的標註增加了鼻樑部分4個關鍵點,而鼻尖部分則均勻採集5個,共9個關鍵點。臉部輪廓均勻取樣了17個關鍵點。如果把額頭部分也加上去,就可以得到更多,比如81個關鍵點。2。4 96/98點標註公開的資料集比較少超過68個關鍵點,其中比較有名的是Wider Facial Landmark in the Wild(WFLW),它提供了98個關鍵點。WFLW 包含了 10000 張臉,其中 7500 用於訓練,2500 張用於測試。除了關鍵點之外,還有遮擋、姿態、妝容、光照、模糊和表情等資訊的標註。

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

2。5。 106與186點標註106個關鍵點標註是商湯科技提出的在業內被廣泛採用的方案,包括Face++等企業開放的API多采用這個標註方式,具體資訊如下:

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

外輪廓,33個均勻取樣點,比Dlib更加密集。

嘴巴20個關鍵點,與Dlib標註的相同。鼻子15個關鍵點,與Dlib相比增加了兩側鼻樑部位。眼睛20個關鍵點,每隻眼睛輪廓點共8個,眼球中心點2個。眉毛18個關鍵點,區分了上眉毛邊界。後續又在106個關鍵點的基礎上提出了更加稠密的186個關鍵點,如今各個開發團隊使用的點數可能會有差異,比如百度使用過72和150個點的方案。除了以上這些常用的方案,還有很多的資料集也有自己的標註標準,比如BioID Face Dataset包含20個關鍵點,BUHMAP-DB包含52個關鍵點,MUCT包含76個關鍵點,PUT大部分影象包含30個關鍵點,其中正面人臉包括了194個點。2。6 1000個以上關鍵點前面介紹的關鍵點標註都是針對二維人臉影象,超過200個點的標註已經是非常的密集,而對於3D人臉影象,相關的開源三維人臉資料集以及Face++,美圖等企業都使用了超過1000個以上的稠密關鍵點,相關內容在三維人臉重建章節會詳細講述。

3、深度學習關鍵點檢測方法

2013年,基於CNN模型的深度學習方法被研究者首次應用到人臉關鍵點檢測任務,從此深度學習演算法在關鍵點檢測上的效能遠超傳統演算法。目前基於深度學習的人臉關鍵點檢測演算法有幾個重要的思路。

3。1 級聯框架

2013年,研究者首次將 CNN 應用到人臉關鍵點檢測,提出了一種級聯的框架。作者透過精心設計擁有三個層級的級聯卷積神經網路,不僅改善了初始不當容易導致模型陷入區域性最優的問題,而且藉助於CNN強大的特徵提取能力,獲得了更為精準的關鍵點檢測,框架流程如下圖。

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

DCNN由三個Level構成。Level-1由3個CNN 組成,Level-2由10個CNN組成(每個關鍵點採用兩個CNN),Level-3同樣由10個CNN組成。Level-1包括3個CNN,分別是F1(Face 1)、EN1(Eye,Nose)、NM1(Nose,Mouth)。F1輸入尺寸為39×39,輸出5個關鍵點的座標;EN1輸入尺寸為39×31,輸出3個關鍵點的座標;NM1輸入尺寸為39×31,輸出3個關鍵點。Level-1的輸出是由三個CNN輸出取平均得到,可以看出EN1和NM1的輸入大小不同,一個是取了人臉偏上的位置,一個是取了人臉偏下的位置。Level-2由10個CNN構成,輸入尺寸均為15×15,每兩個組成一對,一對CNN對一個關鍵點進行預測,預測結果同樣是採取平均。Level-3與Level-2一樣,由10個CNN構成,輸入尺寸均為15×15,每兩個組成一對。Level-2和Level-3是對Level-1得到的粗定位進行微調,得到精細的關鍵點定位。Level-1之所以比Level-2和Level-3的輸入要大,是因為作者認為,由於人臉檢測器的原因,邊界框的相對位置可能會在大範圍內變化,再加上面部姿態的變化,最終導致輸入影象的多樣性,因此在Level-1應該需要有足夠大的輸入尺寸。Level-1與Level-2和Level-3還有一點不同之處在於,Level-1採用的是區域性權值共享(Lcally Sharing Weights),全域性權值共享是考慮到某一特徵可能在影象中任何位置出現,然而對於類似人臉這樣具有固定空間結構的影象而言,全域性權值共享並不有效,作者採用區域性權值共享的實驗證明了它可以給網路帶來效能提升。DCNN採用級聯迴歸的思想,從粗到精地逐步得到了精確的關鍵點位置,最終的檢測結果是三個網路的融合,第一個網路檢測絕對值,後面兩個網路預測偏移量。DCNN不僅設計了三級級聯的卷積神經網路,還引入區域性權值共享機制,從而提升了網路的定位效能,最終在資料集BioID和LFPW上均獲得當時最優結果。2013年Face++在DCNN模型上進行改進,實現了68個人臉關鍵點的高精度定位。類似的框架還有DAN,大家可以去閱讀書籍。

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

3。2 多工聯合框架

人臉關鍵點檢測任務常與其他的任務進行聯合,比如MTCNN框架就可以同時進行人臉檢測和關鍵點檢測,不過這裡我們介紹專門用於人臉關鍵點檢測的框架。2014 年Zhang等人提出了TCDCN(Tasks-Constrained Deep Convolutional Network),作者認為在進行人臉關鍵點檢測任務時,結合一些輔助資訊可以幫助更好的定位關鍵點,這些資訊包括性別,是否帶眼鏡,是否微笑和臉部的姿勢,這些子任務結合起來構成了一個多工學習框架,如下圖所示。

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

網路輸入為40×40的灰度圖,經過CNN最終得到2×2×64的特徵圖,再透過一層含100 個神經元的全連線層提取特徵。該特徵為所有任務共享,對於關鍵點檢測問題,採用線性迴歸模型,對於分類問題,則採用邏輯迴歸模型。在多工學習中,往往不同任務的學習難易程度不同,若採用相同的損失權重,會導致學習任務難以收斂。因此在該多工學習框架中,作者提出了帶權值的目標函式,由於關鍵點檢測是主任務,相應的權重更大。針對多工學習的另外一個問題,即各任務收斂速度不同,該框架中提出了簡單的經驗準則。當某個子任務達到最好表現以後,就停止該任務的訓練。人臉的邊緣資訊和人臉關鍵點有很明顯的關係,因此基於邊緣感知的人臉關鍵點檢測演算法Boundary-Aware Face Alignment也被提出,它將13條人臉邊緣線所描述的結構資訊融入到關鍵點檢測中,極大地提升了演算法在大側臉、誇張表情、遮擋、模糊等極端情況下的檢測精度,其整個流程圖如下。

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

Boundary-Aware Face Alignment的整體思想是使用hourglass網路初步估計經過人臉檢測後的輸入人臉邊緣熱圖,然後使用一般級連回歸模型進行關鍵點預測。

人臉輪廓線共包括13條:即外輪廓、左眉、右眉、鼻樑、鼻邊界、左上眼皮、左下眼皮、右上眼皮、右下眼皮、上嘴唇上邊、上嘴唇下邊、下嘴唇上邊、下嘴唇下邊。基於輪廓線可以產生邊緣熱圖,具體的方式就是首先對離散的關鍵點進行插值得到密集線條和對應的二進位制邊界特徵圖,然後計算周圍畫素到非零邊界畫素的高斯距離得到距離變換圖,最後根據閾值得到邊緣熱圖。為了更好的利用邊緣資訊,在迴歸模型中分步多次將邊緣熱圖新增到特徵層進行特徵融合,其融合模型(Feature Map Fusion)如下圖:

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

可以看出首先將邊界熱圖進行下采樣,然後與特徵圖進行相加,經過一個hourglass子網路T將通道變換到特徵圖相同,然後經過Sigmoid函式歸一化得到機率,對背景區域進行弱化。將機率圖與輸入特徵逐個畫素相乘後得到新的特徵,最後與原輸入特徵進行通道拼接得到改進後的特徵。關鍵點檢測任務和姿態估計問題是一脈相承的,因此姿態資訊也常被用於輔助關鍵點檢測。2019年騰訊AILab提出的PFLD框架使用了3維的位姿資訊作為輔助,同時對樣本不平衡進行了損失函式的最佳化,其框架示意圖如下。

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

因為輸入模型的人臉已經被中心化和歸一化,所以只需要3個角度資訊作為監督。關鍵點檢測任務中一個典型能夠處理不平衡樣本的損失函式設計如下:

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

其中M表示人臉樣本的數量,N表示每張人臉預設的需要檢測的特徵點數目, 表示權重,d表示關鍵點的距離。PFLD框架綜合了幾何約束和資料不平衡問題後提出瞭如下的損失函式:

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

這裡的c表示不同類別的人臉: 包括正臉、側臉、抬頭、低頭、表情以及遮擋等類,採用分類的倒數 cn作為權重。 表示yaw、pitch、roll 三種角度之間的偏差,角度越大其 cos值越小,權重則越大,說明要給大姿態的人臉更多的權重。

4、小結

深度學習技術的出現使得人臉關鍵點演算法效能不斷提升,但是還存在一些難點,其中最經典的就是人臉姿態和遮擋。雖然近年來出現了一些處理該問題的方法,但目前在實際應用中,尤其在實時低影象質量條件下,當姿態發生劇烈改變,以及遮擋比例較大時,現有方法的精度距離實際應用還有較大差距,需要進一步研究和提升。另外,光照、表情、妝造也會對人臉關鍵點定位精度造成一定的影響,當前除了豐富資料集中各類樣本外,也有使用生成對抗網路模型來增強模型泛化能力的一些研究思路。人臉關鍵點檢測是很多人臉任務的基礎,在工業應用中往往還需要進行跟蹤以提升關鍵點的穩定性,目前對人臉關鍵點進行跟蹤有兩個主要的思路。第一個就是基於一些傳統的跟蹤演算法,如卡爾曼濾波等進行平滑跟蹤,第二個就是基於深度學習模型直接預測影片人臉關鍵點,相關的技術就留待讀者去自行拓展學習。

本次我們給大家介紹了

人臉關鍵點相關的核心技術

,人臉影象屬於最早被研究的一類影象,也是計算機視覺領域中應用最廣泛的一類影象,其中

需要使用到幾乎所有計算機視覺領域的演算法

,可以說掌握好人臉領域的各種演算法,基本就玩轉了計算機視覺領域。

那麼如何長期學習相關知識呢?下面介紹我們的兩個內容。

(1) 2020年7月,有三的新書

《深度學習之人臉影象處理:核心演算法與案例實踐》

在機械工業出版社出版,這是一本講述在人臉各個方向中的深度學習演算法的書籍,同時配套有大量實戰案例。

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

書中各章節內容如下:

第1章 人臉影象和特徵基礎

第2章 深度學習基礎

第3章 人臉資料集

第4章 人臉檢測

第5章 人臉關鍵點檢測

第6章 人臉識別

第7章 人臉屬性識別

第8章 人臉屬性分割

第9章 人臉美顏和美妝

第10章 人臉三維重建

第11章 人臉屬性編輯

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

這是市面上唯一一本將人臉各領域這幾年的核心演算法講清楚的書,而且在可預見的幾年內都可能如此。

(2) 有三AI秋季劃人臉演算法組和GAN組,這是集

教材,圖文程式碼實踐,影片課程和直播,知識星球社群,線上微信群,線下活動為一體的終身有效學習小組

,詳細可以閱讀以下文章。

【技術綜述】人臉關鍵點檢測的資料集與核心演算法

最後總結一句,人臉影象演算法領域,技術成熟,又有許多需要長期研究的內容,學習它,難道不香嗎?