人臉關鍵點檢測綜述

本文轉自:https://zhuanlan.zhihu.com/p/42968117

人臉關鍵點

人臉關鍵點檢測是人臉識別和分析領域中的關鍵一步,它是諸如自動人臉識別、表情分析、三維人臉重建及三維動畫等其它人臉相關問題的前提和突破口。近些年來,深度學習方法由於其自動學習及持續學習能力,已被成功應用到了圖像識別與分析、語音識別和自然語言處理等很多領域,且在這些方面都帶來了很顯著的改善。因此,本文針對深度學習方法進行了人臉關鍵點檢測的研究。

<img src="https://pic2.zhimg.com/v2-33ecb0b20b527db571c6724392bb905d_b.jpg" data-caption="" data-size="normal" data-rawwidth="439" data-rawheight="377" class="origin_image zh-lightbox-thumb" width="439" data-original="https://pic2.zhimg.com/v2-33ecb0b20b527db571c6724392bb905d_r.jpg">

人臉關鍵點數據集

傳統人臉關鍵點檢測數據庫爲室內環境下采集的數據庫,比如 Multi-pie、Feret、Frgc、AR、BioID 等人臉數據庫。而現階段人臉關鍵點檢測數據庫通常爲複雜環境下采集的數據庫.LFPW 人臉數據庫有 1132 幅訓練人臉圖像和 300 幅測試人臉圖像,大部分爲正面人臉圖像,每個人臉標定 29 個關鍵點。AFLW 人臉數據庫包含 25993 幅從 Flickr 採集的人臉圖像,每個人臉標定 21 個關鍵點。COFW 人臉數據庫包含 LFPW 人臉數據庫訓練集中的 845 幅人臉圖像以及其他 500 幅遮擋人臉圖像,而測試集爲 507 幅嚴重遮擋(同時包含姿態和表情的變化)的人臉圖像,每個人臉標定 29 個關鍵點。MVFW 人臉數據庫爲多視角人臉數據集,包括 2050 幅訓練人臉圖像和 450 幅測試人臉圖像,每個人臉標定 68 個關鍵點。OCFW 人臉數據庫包含 2951 幅訓練人臉圖像(均爲未遮擋人臉)和 1246 幅測試人臉圖像(均爲遮擋人臉),每個人臉標定 68 個關鍵點。

<img src="https://pic2.zhimg.com/v2-efe6d6bcbd176466b630cf3b4f184d95_b.jpg" data-caption="" data-size="normal" data-rawwidth="554" data-rawheight="459" class="origin_image zh-lightbox-thumb" width="554" data-original="https://pic2.zhimg.com/v2-efe6d6bcbd176466b630cf3b4f184d95_r.jpg">

傳統方法

An Introduction to Active Shape Models

ASM(Active Shape Model) 是由 Cootes 於 1995 年提出的經典的人臉關鍵點檢測算法,主動形狀模型即通過形狀模型對目標物體進行抽象,ASM 是一種基於點分佈模型(Point Distribution Model, PDM)的算法。在 PDM 中,外形相似的物體,例如人臉、人手、心臟、肺部等的幾何形狀可以通過若干關鍵點(landmarks)的座標依次串聯形成一個形狀向量來表示。ASM 算法需要通過人工標定的方法先標定訓練集,經過訓練獲得形狀模型,再通過關鍵點的匹配實現特定物體的匹配。

ASM 主要分爲兩步:第一步:訓練。首先,構建形狀模型:蒐集 n 個訓練樣本(n=400);手動標記臉部關鍵點;將訓練集中關鍵點的座標串成特徵向量;對形狀進行歸一化和對齊(對齊採用 Procrustes 方法);對對齊後的形狀特徵做 PCA 處理。接着,爲每個關鍵點構建局部特徵。目的是在每次迭代搜索過程中每個關鍵點可以尋找新的位置。局部特徵一般用梯度特徵,以防光照變化。有的方法沿着邊緣的法線方向提取,有的方法在關鍵點附近的矩形區域提取。第二步:搜索。首先:計算眼睛(或者眼睛和嘴巴)的位置,做簡單的尺度和旋轉變化,對齊人臉;接着,在對齊後的各個點附近搜索,匹配每個局部關鍵點(常採用馬氏距離),得到初步形狀;再用平均人臉(形狀模型)修正匹配結果;迭代直到收斂。

<img src="https://pic4.zhimg.com/v2-e3705648ba6feac90d264c407677e82b_b.jpg" data-caption="" data-size="small" data-rawwidth="608" data-rawheight="570" class="origin_image zh-lightbox-thumb" width="608" data-original="https://pic4.zhimg.com/v2-e3705648ba6feac90d264c407677e82b_r.jpg">

ASM 算法的優點在於模型簡單直接,架構清晰明確,易於理解和應用,而且對輪廓形狀有着較強的約束,但是其近似於窮舉搜索的關鍵點定位方式在一定程度上限制了其運算效率。

<img src="https://pic4.zhimg.com/v2-7d35345a9c1a31b222c656ff74e9cd97_b.jpg" data-caption="" data-size="small" data-rawwidth="862" data-rawheight="1030" class="origin_image zh-lightbox-thumb" width="862" data-original="https://pic4.zhimg.com/v2-7d35345a9c1a31b222c656ff74e9cd97_r.jpg">

Active Appearance Models

1998 年,Cootes 對 ASM 進行改進,不僅採用形狀約束,而且又加入整個臉部區域的紋理特徵,提出了 AAM 算法。AAM 於 ASM 一樣,主要分爲兩個階段,模型建立階段和模型匹配階段。其中模型建立階段包括對訓練樣本分別建立形狀模型 (Shape Model) 和紋理模型 (Texture Model),然後將兩個模型進行結合,形成 AAM 模型。

<img src="https://pic4.zhimg.com/v2-c4dbfd30ea74917375ba8c40bff9de7f_b.jpg" data-caption="" data-size="small" data-rawwidth="772" data-rawheight="600" class="origin_image zh-lightbox-thumb" width="772" data-original="https://pic4.zhimg.com/v2-c4dbfd30ea74917375ba8c40bff9de7f_r.jpg">

Cascaded pose regression

2010 年,Dollar 提出 CPR(Cascaded Pose Regression, 級聯姿勢迴歸),CPR 通過一系列迴歸器將一個指定的初始預測值逐步細化,每一個迴歸器都依靠前一個迴歸器的輸出來執行簡單的圖像操作,整個系統可自動的從訓練樣本中學習。

人臉關鍵點檢測的目的是估計向量,其中 K 表示關鍵點的個數,由於每個關鍵點有橫縱兩個座標,所以 S 得長度爲 2K。CPR 檢測流程如圖所示,一共有 T 個階段,在每個階段中首先進行特徵提取,得到ft, 這裏使用的是 shape-indexed features,也可以使用諸如 HOG、SIFT 等人工設計的特徵,或者其他可學習特徵(learning based features),然後通過訓練得到的迴歸器 R 來估計增量ΔS( update vector),把ΔS 加到前一個階段的 S 上得到新的 S,這樣通過不斷的迭代即可以得到最終的 S(shape)。

<img src="https://pic2.zhimg.com/v2-5244a0daeef224a8b919e406aa0c592d_b.jpg" data-caption="" data-size="small" data-rawwidth="636" data-rawheight="630" class="origin_image zh-lightbox-thumb" width="636" data-original="https://pic2.zhimg.com/v2-5244a0daeef224a8b919e406aa0c592d_r.jpg">

深度學習方法

Deep Convolutional Network Cascade for Facial Point Detection

2013 年,Sun 等人首次將 CNN 應用到人臉關鍵點檢測,提出一種級聯的 CNN(擁有三個層級)——DCNN(Deep Convolutional Network),此種方法屬於級聯迴歸方法。作者通過精心設計擁有三個層級的級聯卷積神經網絡,不僅改善初始不當導致陷入局部最優的問題,而且藉助於 CNN 強大的特徵提取能力,獲得更爲精準的關鍵點檢測。

如圖所示,DCNN 由三個 Level 構成。Level-1 由 3 個 CNN 組成;Level-2 由 10 個 CNN 組成(每個關鍵點採用兩個 CNN);Level-3 同樣由 10 個 CNN 組成。

<img src="https://pic3.zhimg.com/v2-89231b8a096dac2e196f406bd59fe3d2_b.jpg" data-caption="" data-size="normal" data-rawwidth="1136" data-rawheight="686" class="origin_image zh-lightbox-thumb" width="1136" data-original="https://pic3.zhimg.com/v2-89231b8a096dac2e196f406bd59fe3d2_r.jpg">

evel-1 分 3 個 CNN,分別是 F1(Face 1)、EN1(Eye,Nose)、NM1(Nose,Mouth);F1 輸入尺寸爲 39*39,輸出 5 個關鍵點的座標;EN1 輸入尺寸爲 39*31,輸出是 3 個關鍵點的座標;NM11 輸入尺寸爲 39*31,輸出是 3 個關鍵點。Level-1 的輸出是由三個 CNN 輸出取平均得到。

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),作者認爲傳統的全局權值共享是考慮到,某一特徵可能在圖像中任何位置出現,所以採用全局權值共享。然而,對於類似人臉這樣具有固定空間結構的圖像而言,全局權值共享就不奏效了。因爲眼睛就是在上面,鼻子就是在中間,嘴巴就是在下面的。所以作者借鑑文獻 [28] 中的思想,採用局部權值共享,作者通過實驗證明了局部權值共享給網絡帶來性能提升。

DCNN 採用級聯迴歸的思想,從粗到精的逐步得到精確的關鍵點位置,不僅設計了三級級聯的卷積神經網絡,還引入局部權值共享機制,從而提升網絡的定位性能。最終在數據集 BioID 和 LFPW 上均獲得當時最優結果。速度方面,採用 3.3GHz 的 CPU,每 0.12 秒檢測一張圖片的 5 個關鍵點。

<img src="https://pic4.zhimg.com/v2-e21d7cafb8c29f172db54dd67cacc90f_b.jpg" data-caption="" data-size="normal" data-rawwidth="1128" data-rawheight="468" class="origin_image zh-lightbox-thumb" width="1128" data-original="https://pic4.zhimg.com/v2-e21d7cafb8c29f172db54dd67cacc90f_r.jpg">

Extensive Facial Landmark Localization with Coarse-to-fine Convolutional Network Cascade

2013 年,Face++在 DCNN 模型上進行改進,提出從粗到精的人臉關鍵點檢測算法,實現了 68 個人臉關鍵點的高精度定位。該算法將人臉關鍵點分爲內部關鍵點和輪廓關鍵點,內部關鍵點包含眉毛、眼睛、鼻子、嘴巴共計 51 個關鍵點,輪廓關鍵點包含 17 個關鍵點。

針對內部關鍵點和外部關鍵點,該算法並行的採用兩個級聯的 CNN 進行關鍵點檢測,網絡結構如圖所示。

<img src="https://pic1.zhimg.com/v2-1fbf050b73b8a0c78fc4571de4e25450_b.jpg" data-caption="" data-size="normal" data-rawwidth="1146" data-rawheight="432" class="origin_image zh-lightbox-thumb" width="1146" data-original="https://pic1.zhimg.com/v2-1fbf050b73b8a0c78fc4571de4e25450_r.jpg">

針對內部 51 個關鍵點,採用四個層級的級聯網絡進行檢測。其中,Level-1 主要作用是獲得面部器官的邊界框;Level-2 的輸出是 51 個關鍵點預測位置,這裏起到一個粗定位作用,目的是爲了給 Level-3 進行初始化;Level-3 會依據不同器官進行從粗到精的定位;Level-4 的輸入是將 Level-3 的輸出進行一定的旋轉,最終將 51 個關鍵點的位置進行輸出。針對外部 17 個關鍵點,僅採用兩個層級的級聯網絡進行檢測。Level-1 與內部關鍵點檢測的作用一樣,主要是獲得輪廓的 bounding box;Level-2 直接預測 17 個關鍵點,沒有從粗到精定位的過程,因爲輪廓關鍵點的區域較大,若加上 Level-3 和 Level-4,會比較耗時間。最終面部 68 個關鍵點由兩個級聯 CNN 的輸出進行疊加得到。

算法主要創新點由以下三點:(1)把人臉的關鍵點定位問題,劃分爲內部關鍵點和輪廓關鍵點分開預測,有效的避免了 loss 不均衡問題;(2)在內部關鍵點檢測部分,並未像 DCNN 那樣每個關鍵點採用兩個 CNN 進行預測,而是每個器官採用一個 CNN 進行預測,從而減少計算量;(3)相比於 DCNN,沒有直接採用人臉檢測器返回的結果作爲輸入,而是增加一個邊界框檢測層(Level-1),可以大大提高關鍵點粗定位網絡的精度。

Face++版 DCNN 首次利用卷積神經網絡進行 68 個人臉關鍵點檢測,針對以往人臉關鍵點檢測受人臉檢測器影響的問題,作者設計 Level-1 卷積神經網絡進一步提取人臉邊界框,爲人臉關鍵點檢測獲得更爲準確的人臉位置信息,最終在當年 300-W 挑戰賽上獲得領先成績。

<img src="https://pic3.zhimg.com/v2-b73a424e41a92f45e0872d2900257fb2_b.jpg" data-caption="" data-size="normal" data-rawwidth="1114" data-rawheight="432" class="origin_image zh-lightbox-thumb" width="1114" data-original="https://pic3.zhimg.com/v2-b73a424e41a92f45e0872d2900257fb2_r.jpg">

TCDCN-Facial Landmark Detection by Deep Multi-task Learning

優點是快和多任務,不僅使用簡單的端到端的人臉關鍵點檢測方法,而且能夠做到去分辨人臉的喜悅、悲傷、憤怒等分類標籤屬性,這樣跟文章的標題或者說是文章的主題貼合——多任務。

<img src="https://pic4.zhimg.com/v2-49740115919f1bb042869f81ed1600f7_b.jpg" data-caption="" data-size="normal" data-rawwidth="1124" data-rawheight="322" class="origin_image zh-lightbox-thumb" width="1124" data-original="https://pic4.zhimg.com/v2-49740115919f1bb042869f81ed1600f7_r.jpg">

我們可以從下圖看到,缺點容易漂移,也就是對於人臉關鍵點的檢測上面,並不能做到很好的精度或者很高的精度,因此有待進一步修改網絡的雛形。另外一點是對於人臉關鍵點的檢測上,檢測關鍵點小,如果增加其人臉關鍵點的檢測,或降低精度,這是神經網絡模型的通病。

<img src="https://pic4.zhimg.com/v2-2ce6d6e84833ed8219e2f8a662b682ff_b.jpg" data-caption="" data-size="normal" data-rawwidth="1098" data-rawheight="534" class="origin_image zh-lightbox-thumb" width="1098" data-original="https://pic4.zhimg.com/v2-2ce6d6e84833ed8219e2f8a662b682ff_r.jpg">

Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

2016 年,Zhang 等人提出一種多任務級聯卷積神經網絡(MTCNN, Multi-task Cascaded Convolutional Networks)[9] 用以同時處理人臉檢測和人臉關鍵點定位問題。作者認爲人臉檢測和人臉關鍵點檢測兩個任務之間往往存在着潛在的聯繫,然而大多數方法都未將兩個任務有效的結合起來,本文爲了充分利用兩任務之間潛在的聯繫,提出一種多任務級聯的人臉檢測框架,將人臉檢測和人臉關鍵點檢測同時進行。

MTCNN 包含三個級聯的多任務卷積神經網絡,分別是 Proposal Network (P-Net)、Refine Network (R-Net)、Output Network (O-Net),每個多任務卷積神經網絡均有三個學習任務,分別是人臉分類、邊框迴歸和關鍵點定位。網絡結構如圖所示:

<img src="https://pic1.zhimg.com/v2-30d3b1027fe5b095177a12cbb9317504_b.jpg" data-caption="" data-size="small" data-rawwidth="892" data-rawheight="1098" class="origin_image zh-lightbox-thumb" width="892" data-original="https://pic1.zhimg.com/v2-30d3b1027fe5b095177a12cbb9317504_r.jpg">

MTCNN 實現人臉檢測和關鍵點定位分爲三個階段。首先由 P-Net 獲得了人臉區域的候選窗口和邊界框的迴歸向量,並用該邊界框做迴歸,對候選窗口進行校準,然後通過非極大值抑制(NMS)來合併高度重疊的候選框。然後將 P-Net 得出的候選框作爲輸入,輸入到 R-Net,R-Net 同樣通過邊界框迴歸和 NMS 來去掉那些 false-positive 區域,得到更爲準確的候選框;最後,利用 O-Net 輸出 5 個關鍵點的位置。

爲了提升網絡性能,需要挑選出困難樣本(Hard Sample),傳統方法是通過研究訓練好的模型進行挑選,而本文提出一種能在訓練過程中進行挑選困難的在線挑選方法。方法爲,在 mini-batch 中,對每個樣本的損失進行排序,挑選前 70% 較大的損失對應的樣本作爲困難樣本,同時在反向傳播時,忽略那 30% 的樣本,因爲那 30% 樣本對更新作用不大。

實驗結果表明,MTCNN 在人臉檢測數據集 FDDB 和 WIDER FACE 以及人臉關鍵點定位數據集 LFPW 均獲得當時最佳成績。在運行時間方面,採用 2.60GHz 的 CPU 可以達到 16fps,採用 Nvidia Titan Black 可達 99fps。

2016 年,Wu 等人研究了 CNN 在人臉關鍵點定位任務中到底學習到的是什麼樣的特徵,在採用 GMM(Gaussian Mixture Model, 混合高斯模型)對不同層的特徵進行聚類分析,發現網絡進行的是層次的,由粗到精的特徵定位,越深層提取到的特徵越能反應出人臉關鍵點的位置。針對這一發現,提出了 TCNN(Tweaked Convolutional Neural Networks)[8],其網絡結構如圖所示

<img src="https://pic1.zhimg.com/v2-3e9ec020d70218a70d6f1b20b68c5b28_b.jpg" data-caption="" data-size="normal" data-rawwidth="1106" data-rawheight="250" class="origin_image zh-lightbox-thumb" width="1106" data-original="https://pic1.zhimg.com/v2-3e9ec020d70218a70d6f1b20b68c5b28_r.jpg">

上圖爲 Vanilla CNN,針對 FC5 得到的特徵進行 K 個類別聚類,將訓練圖像按照所分類別進行劃分,用以訓練所對應的 FC6K。測試時,圖片首先經過 Vanilla CNN 提取特徵,即 FC5 的輸出。將 FC5 輸出的特徵與 K 個聚類中心進行比較,將 FC5 輸出的特徵劃分至相應的類別中,然後選擇與之相應的 FC6 進行連接,最終得到輸出。

作者通過對 Vanilla CNN 中間層特徵聚類分析得出的結論是什麼呢?又是如何通過中間層聚類分析得出靈感從而設計 TCNN 呢?

作者對 Vanilla CNN 中間各層特徵進行聚類分析,並統計出關鍵點在各層之間的變化程度。越深層提取到的特徵越緊密,因此越深層提取到的特徵越能反應出人臉關鍵點的位置。作者在採用 K=64 時,對所劃分簇的樣本進行平均後繪圖如下

<img src="https://pic2.zhimg.com/v2-ee488eb09b17a92883c345c901171f29_b.jpg" data-caption="" data-size="normal" data-rawwidth="480" data-rawheight="956" class="origin_image zh-lightbox-thumb" width="480" data-original="https://pic2.zhimg.com/v2-ee488eb09b17a92883c345c901171f29_r.jpg">

從圖上可發現,每一個簇的樣本反應了頭部的某種姿態,甚至出現了表情和性別的差異。因此可推知,人臉關鍵點的位置常常和人臉的屬性相關聯。因此爲了得到更準確的關鍵點定位,作者使用具有相似特徵的圖片訓練對應的迴歸器,最終在人臉關鍵點檢測數據集 AFLW,AFW 和 300W 上均獲得當時最佳效果。

<img src="https://pic3.zhimg.com/v2-d9d622d8899196e3b5f74203c7b7b0e6_b.jpg" data-caption="" data-size="normal" data-rawwidth="1118" data-rawheight="222" class="origin_image zh-lightbox-thumb" width="1118" data-original="https://pic3.zhimg.com/v2-d9d622d8899196e3b5f74203c7b7b0e6_r.jpg">

DAN(Deep Alignment Networks)

2017 年,Kowalski 等人提出一種新的級聯深度神經網絡——DAN(Deep Alignment Network)[10],以往級聯神經網絡輸入的是圖像的某一部分,與以往不同,DAN 各階段網絡的輸入均爲整張圖片。當網絡均採用整張圖片作爲輸入時,DAN 可以有效的克服頭部姿態以及初始化帶來的問題,從而得到更好的檢測效果。之所以 DAN 能將整張圖片作爲輸入,是因爲其加入了關鍵點熱圖(Landmark Heatmaps),關鍵點熱圖的使用是本文的主要創新點。DAN 基本框架如圖所示:

<img src="https://pic3.zhimg.com/v2-d362d87afdc3798b298d653b6a2bdf9a_b.jpg" data-caption="" data-size="small" data-rawwidth="962" data-rawheight="544" class="origin_image zh-lightbox-thumb" width="962" data-original="https://pic3.zhimg.com/v2-d362d87afdc3798b298d653b6a2bdf9a_r.jpg">

DAN 包含多個階段,每一個階段含三個輸入和一個輸出,輸入分別是被矯正過的圖片、關鍵點熱圖和由全連接層生成的特徵圖,輸出是面部形狀(Face Shape)。其中,CONNECTION LAYER 的作用是將本階段得輸出進行一系列變換,生成下一階段所需要的三個輸入,具體操作如下圖所示:

<img src="https://pic2.zhimg.com/v2-94a927b31c6324e877ad55535bb5e4c1_b.jpg" data-caption="" data-size="normal" data-rawwidth="414" data-rawheight="530" class="content_image" width="414">

從第一階段開始講起,第一階段的輸入僅有原始圖片和 S0。面部關鍵點的初始化即爲 S0,S0 是由所有關鍵點取平均得到,第一階段輸出 S1。對於第二階段,首先,S1 經第一階段的 CONNECTION LAYERS 進行轉換,分別得到轉換後圖片 T2(I)、S1 所對應的熱圖 H2 和第一階段 fc1 層輸出,這三個正是第二階段的輸入。如此周而復始,直到最後一個階段輸出 SN。文中給出在數據集 IBUG 上,經過第一階段後的 T2(I)、T2(S1)和特徵圖,如圖所示:

<img src="https://pic3.zhimg.com/v2-10ba66473fce566cd74b6000968bfeba_b.jpg" data-caption="" data-size="normal" data-rawwidth="406" data-rawheight="300" class="content_image" width="406">

從圖中發現,DAN 要做的「變換」,就是把圖片給矯正了,第一行數據尤爲明顯,那麼 DAN 對姿態變換具有很好的適應能力,或許就得益於這個「變換」。至於 DAN 採用何種「變換」,需要到代碼中具體探究。

接下來看一看,St 是如何由 St-1 以及該階段 CNN 得到,先看 St 計算公式:

其中是由 CNN 輸出的,各階段 CNN 網絡結構如圖所示:

<img src="https://pic1.zhimg.com/v2-ef71823c81782ef61c6c1b706af2eb40_b.jpg" data-caption="" data-size="small" data-rawwidth="872" data-rawheight="666" class="origin_image zh-lightbox-thumb" width="872" data-original="https://pic1.zhimg.com/v2-ef71823c81782ef61c6c1b706af2eb40_r.jpg">

該 CNN 的輸入均是經過了「變換」——的操作,因此得到的偏移量是在新特徵空間下的偏移量,在經過偏移之後應經過一個反變換還原到原始空間。而這裏提到的新特徵空間,或許是將圖像進行了「矯正」,使得網絡更好的處理圖像。

關鍵點熱度圖的計算就是一箇中心衰減,關鍵點處值最大,越遠則值越小,公式如下:

<img src="https://pic4.zhimg.com/v2-7a85932d8866d617952a7c7270fd91c3_b.jpg" data-caption="" data-size="normal" data-rawwidth="560" data-rawheight="102" class="origin_image zh-lightbox-thumb" width="560" data-original="https://pic4.zhimg.com/v2-7a85932d8866d617952a7c7270fd91c3_r.jpg">

總而言之,DAN 是一個級聯思想的關鍵點檢測方法,通過引入關鍵點熱圖作爲補充,DAN 可以從整張圖片進行提取特徵,從而獲得更爲精確的定位。

<img src="https://pic2.zhimg.com/v2-c1c9cd2723fd2656273363bb9e607fb5_b.jpg" data-caption="" data-size="small" data-rawwidth="662" data-rawheight="650" class="origin_image zh-lightbox-thumb" width="662" data-original="https://pic2.zhimg.com/v2-c1c9cd2723fd2656273363bb9e607fb5_r.jpg">

Robust Facial Landmark Detection via a Fully-Convolutional Local-Global Context Network

網絡的設計思路特別,非常特別。下面在CVPR中的一篇論文Look at Boundary: A Boundary-Aware Face Alignment Algorithm具有相同的思路,都是利用heatmap作爲引導進行神經網絡的監督信號進行引導。不過這裏需要preprocess進行熱圖的產生,即根據標記的數據和高斯模型產生heatmap,然後利用heatmap作爲引導進行卷積神經網絡的監督學習去逼近人臉關鍵點。

<img src="https://pic3.zhimg.com/v2-0ac479b49de35f2823f225aa04aa3eaa_b.jpg" data-caption="" data-size="small" data-rawwidth="994" data-rawheight="964" class="origin_image zh-lightbox-thumb" width="994" data-original="https://pic3.zhimg.com/v2-0ac479b49de35f2823f225aa04aa3eaa_r.jpg">

問題是根據產生的人臉關鍵點是無差的,只是根據函數的映射關係找到相對應的標記點,缺點是人臉關鍵點之間並不具有可區別性,也就是不知道哪裏是眼睛,哪裏是嘴巴,哪裏是輪廓,與分層(或者說是級聯)的神經網絡具有本質性的差異。雖然說設計思路或者概念具有本質性的差異,但是並不妨礙這種方法具有很高的精度。

<img src="https://pic1.zhimg.com/v2-db79664978e63c2897cb9ded58124f5c_b.jpg" data-caption="" data-size="normal" data-rawwidth="1140" data-rawheight="572" class="origin_image zh-lightbox-thumb" width="1140" data-original="https://pic1.zhimg.com/v2-db79664978e63c2897cb9ded58124f5c_r.jpg">

Supervision-by-Registration: An Unsupervised Approach to Improve the Precision of Facial Landmark Detectors

這篇文章一開始看標題覺得非常有意思,通過非監督學習去提升人臉檢測關鍵點的精確率,非監督學習?just kidding?後來細看了一下,確實有意思的是使用CNN模型去檢測人臉關鍵點位置,然後使用光流(flow tracking)跟蹤視頻流的下一幀圖片人臉關鍵點位置作爲融合信息給CNN檢測器去作爲人臉關鍵點的輔助信息。

<img src="https://pic1.zhimg.com/v2-e2aea68f3cc9444426a23ba1f22efe18_b.jpg" data-caption="" data-size="small" data-rawwidth="968" data-rawheight="840" class="origin_image zh-lightbox-thumb" width="968" data-original="https://pic1.zhimg.com/v2-e2aea68f3cc9444426a23ba1f22efe18_r.jpg">
<img src="https://pic4.zhimg.com/v2-2a2b0b902ccc26d94c6c8545961c1473_b.jpg" data-caption="" data-size="small" data-rawwidth="990" data-rawheight="580" class="origin_image zh-lightbox-thumb" width="990" data-original="https://pic4.zhimg.com/v2-2a2b0b902ccc26d94c6c8545961c1473_r.jpg">

最後對於連續視頻幀的檢測效果如下所示:

<img src="https://pic2.zhimg.com/v2-f8fb60231b7e3b5d60676678b26b8e55_b.jpg" data-caption="" data-size="normal" data-rawwidth="1136" data-rawheight="622" class="origin_image zh-lightbox-thumb" width="1136" data-original="https://pic2.zhimg.com/v2-f8fb60231b7e3b5d60676678b26b8e55_r.jpg">

最新研究

ICCV在下一次舉行時間爲19年,上一次舉行時間爲17年,因此不太具有參考性。CVPR在2018年剛舉行完畢,因此參考CVPR大量的文獻,其中關於人臉的有56篇,32篇與2D人臉圖像相關,其中與人臉關鍵點檢測相關的只有6篇。因此在這裏做簡單的文獻閱讀綜述。

CVPR: Beyond Trade-off: Accelerate FCN-based Face Detector with Higher Accuracy

參考FCN和SSD網絡模型,利用多層FCN特徵層對大小不一的人臉進行檢測,並且添加有SSCU算法層(基本原理是基於NMS非極大值抑制算法)作爲FCN人臉熱圖判斷,然後利用不同層檢測的結果進行合併,對於背景中小人臉有較好的檢測效果。文中並沒有給出時間效率,並且SAP層的實現具有一定難度。

<img src="https://pic4.zhimg.com/v2-27b4cb855bee6ad1f71075a87bdeeaab_b.jpg" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="790" class="origin_image zh-lightbox-thumb" width="1080" data-original="https://pic4.zhimg.com/v2-27b4cb855bee6ad1f71075a87bdeeaab_r.jpg">

CVPR:Direct Shape Regression Networks for End-to-End Face Alignment

使用Doubly convolutional neural networks提出的卷積層進行卷積,然後將得到的特徵圖經過該論文提出的傅里葉池化層,損失函數使用normalized mean error。對比TCDCN精度有所提高,但是並沒有給出時間效率。特點是簡單易懂,實現成本客觀。

<img src="https://pic3.zhimg.com/v2-fb315359bee37c5938bca876732762de_b.jpg" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="714" class="origin_image zh-lightbox-thumb" width="1080" data-original="https://pic3.zhimg.com/v2-fb315359bee37c5938bca876732762de_r.jpg">
<img src="https://pic4.zhimg.com/v2-164e9c6d965e37c79da5172351353f1f_b.jpg" data-caption="" data-size="normal" data-rawwidth="1124" data-rawheight="672" class="origin_image zh-lightbox-thumb" width="1124" data-original="https://pic4.zhimg.com/v2-164e9c6d965e37c79da5172351353f1f_r.jpg">

Real-Time Rotation-Invariant Face Detection with Progressive Calibration Networks

旋轉人臉檢測,利用自定義的PCN網絡模型,每一次檢測旋轉角度、boundingbox、分類得分進行判斷,通過級聯的方式對boundingbox和分類進行過濾,旋轉角度作爲下一層的輸入信息進行累加,從粗到精的一個過程,該文章之前已經見過一次在neurcomputting2017上發表的。

<img src="https://pic1.zhimg.com/v2-408daf87a6acdd32fdcebfcfdccce350_b.jpg" data-caption="" data-size="normal" data-rawwidth="1118" data-rawheight="770" class="origin_image zh-lightbox-thumb" width="1118" data-original="https://pic1.zhimg.com/v2-408daf87a6acdd32fdcebfcfdccce350_r.jpg">
<img src="https://pic4.zhimg.com/v2-0dab5a710cc797f780e6abc8d0e53aff_b.jpg" data-caption="" data-size="normal" data-rawwidth="638" data-rawheight="958" class="origin_image zh-lightbox-thumb" width="638" data-original="https://pic4.zhimg.com/v2-0dab5a710cc797f780e6abc8d0e53aff_r.jpg">

CVPR:Look at Boundary: A Boundary-Aware Face Alignment Algorithm

直接對關鍵點進行預測會存在過擬合問題,特別是對一些具有具有扭曲表情,誇張表情,遮擋表情的人臉關鍵點檢測使用現有的算法是非常不準確的。爲了更好地解決這個問題,這篇文章提出了使用boundary邊界的檢測方法融合人臉關鍵點檢測方法,使得人臉關鍵點檢測更加精準(特殊情況下),在論文實驗部分給出的精確度進步並不是很大。

對於網絡模型是把人臉關鍵點轉換成爲連接的人臉邊界,然後網絡同時訓練關鍵點和人臉邊界(注意是有順序的),然後把人臉邊界獲得Heatmaps信息往下傳遞給人臉關鍵點檢測作爲FMF層融合參考信息,最終使得人臉關鍵點被控制在人臉邊界heatmap上,從原理上可以看出對於關鍵點漂移的情況會減少,更好地擬合人間關鍵點。

<img src="https://pic3.zhimg.com/v2-08107b8c3e96e6112f6f38ec7a85a87a_b.jpg" data-caption="" data-size="normal" data-rawwidth="1126" data-rawheight="572" class="origin_image zh-lightbox-thumb" width="1126" data-original="https://pic3.zhimg.com/v2-08107b8c3e96e6112f6f38ec7a85a87a_r.jpg">

CVPR:A Prior-Less Method for Multi-Face Tracking in Unconstrained Videos

爲了解決在視頻流中人臉變化複雜,黑暗情況變化差異大的問題,文章並沒有直接使用一個大統一的模型去解決這個問題,而是結合三個模塊分別使用不同的數學模型去檢測人臉。對於第一階段使用一個Co-occurentce model對人體姿態和人臉進行估計,因爲人體基本姿態和人臉是相互作用的關係,特別是對於連續幀來說,因此使用Co-occurentce模型作爲第一階段;第二階段使用VGG特徵作爲強關聯信息進行聚類提取人臉特徵出來;最後階段使用高斯處理模型對深度特徵進行補充和提取精細化的結果。因爲設計到的數學理論和模型較多,因此如果想要細節理解需要閱讀原論文。

<img src="https://pic2.zhimg.com/v2-fce99e687ed44a22e61ff354eaf280e5_b.jpg" data-caption="" data-size="normal" data-rawwidth="1128" data-rawheight="724" class="origin_image zh-lightbox-thumb" width="1128" data-original="https://pic2.zhimg.com/v2-fce99e687ed44a22e61ff354eaf280e5_r.jpg">

Disentangling 3D Pose in A Dendritic CNNfor Unconstrained 2D Face Alignment

提出一個Pose Conditioned Dendritic Convolution Neu-ral Network (PCD-CNN)網絡。這個網絡從原理來看效果不會太好,會存在漂移問題,因爲根據heatmap會存在較粗的定位,但是最後(b)階段引入了Proposed dendritic structure進行彌補,可是這種彌補方式是根據數學公式進行結構特徵點計算的方式能否真正地減少誤差讀者抱着一定的疑惑,如果是基於檢索的方式或者搜圖的方式可能會效果更好。

<img src="https://pic2.zhimg.com/v2-1fabfab7f2bd1b2cb1f370c42577f079_b.jpg" data-caption="" data-size="normal" data-rawwidth="1166" data-rawheight="402" class="origin_image zh-lightbox-thumb" width="1166" data-original="https://pic2.zhimg.com/v2-1fabfab7f2bd1b2cb1f370c42577f079_r.jpg">
<img src="https://pic1.zhimg.com/v2-3f07633ebc27ad1e019b78eff237ea2c_b.jpg" data-caption="" data-size="normal" data-rawwidth="632" data-rawheight="672" class="origin_image zh-lightbox-thumb" width="632" data-original="https://pic1.zhimg.com/v2-3f07633ebc27ad1e019b78eff237ea2c_r.jpg">

Style Aggregated Network for Facial Landmark Detection

這篇文章主要聚焦在對於不同style的圖像中,人臉關鍵點的檢測效果是不一樣的,爲了更好地統一檢測效果或者說爲了更好地更精確的提高檢測效果,因此可以對樣本進行一個風格聚合網絡Style Aggregated Network,通過該網絡模型可以產生各種不同風格的圖片,然後利用這些圖片融合信息一起送入CNN網絡中進行檢測。如下圖所示,根據上面的描述,這裏使用到了兩個網絡模型,一個是GAN網絡模型,一個是CNN網絡模型。

<img src="https://pic2.zhimg.com/v2-77eb226a991402a81fb6037d9a797b69_b.jpg" data-caption="" data-size="normal" data-rawwidth="1120" data-rawheight="572" class="origin_image zh-lightbox-thumb" width="1120" data-original="https://pic2.zhimg.com/v2-77eb226a991402a81fb6037d9a797b69_r.jpg">

上面的style-aggregated face generation module就是使用GAN模型,具體下面的圖會給出更加詳細的解析。下面的facial landmark predicction module就是使用CNN網絡模型。最後輸出heatmap熱圖的位置點,通過高斯分佈獲得最佳預測位置。

<img src="https://pic1.zhimg.com/v2-7299a81d1339dcc6670184f0b86cb51c_b.jpg" data-caption="" data-size="normal" data-rawwidth="1006" data-rawheight="852" class="origin_image zh-lightbox-thumb" width="1006" data-original="https://pic1.zhimg.com/v2-7299a81d1339dcc6670184f0b86cb51c_r.jpg">

文章中使用不同的風格style主要是3哥,一個是草圖sketch,一個是強光下light,另外一個是gray灰度圖,合成一個[12, width, hegih]的矩陣作爲網絡模型的輸入,增加了算法的抗敏性。

<img src="https://pic1.zhimg.com/v2-d7e3bc83928e5f55a9524f8aaae428ac_b.jpg" data-caption="" data-size="normal" data-rawwidth="590" data-rawheight="834" class="origin_image zh-lightbox-thumb" width="590" data-original="https://pic1.zhimg.com/v2-d7e3bc83928e5f55a9524f8aaae428ac_r.jpg">

總結

深度學習技術的出現,有效促進了不同尺度和不同任務信息之間的融合,使得信息的結合方式由平面開始向立體方法發展,對於人臉關鍵點提取模型的發展,具有突出的實際意義。正因爲如此,本文對目前人臉關鍵點檢測任務中常用的深度學習方法進行綜述。

儘管深度學習方法在人臉關鍵點檢測任務上已經獲得了長足的發展,算法性能不斷提升,與實際應用的要求也越來越接近。然而,該任務的研究還遠未結束,目前還有一些關鍵性難題亟待解決。在此總結三點:

(1)輸入樣本多樣性問題:多變的人臉姿態和遮擋。姿態和遮擋是人臉關鍵點檢測所面臨的經典難題,近年來也出現了很多處理這兩方面問題的思路和方法,但目前在實際應用中,尤其在實時低圖像質量條件下,對於這兩類難題的處理還難以令人滿意. 尤其當姿態發生快速和劇烈改變,以及遮擋比例較大時,現有方法的精度距離實際應用的要求還有較大差距,需要進一步研究和提升。

<img src="https://pic4.zhimg.com/v2-2492dfb5409f3ba2d000a8125535ac93_b.jpg" data-caption="" data-size="normal" data-rawwidth="1136" data-rawheight="656" class="origin_image zh-lightbox-thumb" width="1136" data-original="https://pic4.zhimg.com/v2-2492dfb5409f3ba2d000a8125535ac93_r.jpg">

(2)大場景小樣本問題:在圖像中非常多的小人臉。小人臉檢測是人臉關鍵點檢測所面臨的經典難題,近年來出現了很多論文去解決小人臉檢測,但是對於小人臉的關鍵點檢測的思路和方法並不常見。主要受制於一個很嚴重的問題就是圖像的質量不夠高,小圖像中的單張人臉圖像質量低,一個像素包含的內容非常少,圖片模糊。因此對於這類型的人臉關鍵點檢測依然是個非常困難的話題;另外一個主要原因是受制於前一個步驟——小場景的人臉檢測準確率低的問題,既然人臉檢測的準確率低,那麼在基於人臉檢測下的人臉關鍵點檢測問題會更加凸顯和嚴重。

<img src="https://pic3.zhimg.com/v2-40fc986a898f079e54d84eb086f141d6_b.jpg" data-caption="" data-size="normal" data-rawwidth="1144" data-rawheight="624" class="origin_image zh-lightbox-thumb" width="1144" data-original="https://pic3.zhimg.com/v2-40fc986a898f079e54d84eb086f141d6_r.jpg">

(3)方法衆多但是百變不離其中:深度學習的方法百花齊放,但是在衆多的方法當中沒有一個非常outstanding的論文能夠統一所有的方法,或則凸顯出來。因爲在深度學習當中,其主要思路是利用神經網絡的非線性映射關係在標註的數據和輸入的數據之間找到一個最優映射路徑,通過這個映射關係去逼近我們的目標,但是這種方法的缺點是肯定會存在過擬合的問題。究其原因是人臉相似度很高(即使說是千人千臉,但是對比起其他動物的臉,其他物體和人臉對比其人臉與人臉之間的相識度依然非常高),在高相似度中間找到不同人臉之間的細微差別是非常困難的,因此出現了很多方法去解決這個問題,但是各論文分別去解決各自所在細分領域或者細分問題上,並沒有一個很好的框架或者算法去解決這問題。

本文針對近年人臉關鍵點檢測方法中的深度學習方法進行了綜述研究。本文對人臉關鍵點檢測任務進行了詳細描述,並將具有代表性的深度學習網絡模型,從模型設計思路到模型框架均進行較爲深入的探究。在所面臨的挑戰性問題和開展相關研究所需的基礎知識方面,本文亦拋磚引玉,希望本文能對相關科研人員瞭解人臉關鍵點檢測問題並開展相關研究起到微薄的作用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章