「乾貨」影象演算法之3D人臉識別技術原理概述

dicksonjyl560101發表於2019-08-02
2019-08-01 10:27:22


隨著深度學習技術的進步,面部相關任務的研究也成為學術界和工業界的熱門話題。眾所周知的面部任務通常包括面部檢測,面部識別,面部表情識別等,其主要使用2D RGB面部(通常包括一些紋理資訊)作為輸入; 3D掃描成像技術的出現為面部相關任務 - 3D面部開發了一條新的探索路線。

與許多2D面部相關的任務介紹性文獻/評論文章相比,3D面部的入門知識還不夠好。本文將回顧和介紹三維人臉相關的基礎知識,並總結一些關於三維人臉識別與重建的基礎入門文獻。


「乾貨」影象演算法之3D人臉識別技術原理概述



3D人臉基礎知識

一般而言,RGB,灰度和紅外人臉影象是2D人臉,其主要是在特定視角下表示顏色或紋理的影象,並且沒有空間資訊。用於訓練深度學習的影象通常是2D。

2.5D是在某個視角下拍攝的面部深度資料,但由於角度問題,它顯示的表面不連續,也就是說,當你試圖旋轉面部時,會有一些像溝壑一樣的空隙區域。這是因為拍攝時未捕獲被遮擋部分的深度資料。

那麼3D面孔呢?它通常由不同角度的多個深度影象組成,完全顯示面部的表面形狀,並且在具有一定深度資訊的密集點雲中的空間中呈現面部。


「乾貨」影象演算法之3D人臉識別技術原理概述


相機模型

相機模型包括四個座標系:畫素座標,影象座標,攝像機座標,世界座標(高中物理老師的頭部沒有閃光燈談論參考系統),攝像機成像過程是三維的 真實三維空間中的點對映到成像平面(二維空間)的過程也稱為投影變換。

  • 相機座標→影象座標


相機座標系到影象座標系的過程可用小孔成像解釋,本文藉助相似原理可清楚描述相機座標系中點

「乾貨」影象演算法之3D人臉識別技術原理概述

到像平面點

「乾貨」影象演算法之3D人臉識別技術原理概述

的過程,其中 f 為相機焦距。


「乾貨」影象演算法之3D人臉識別技術原理概述


「乾貨」影象演算法之3D人臉識別技術原理概述


相機座標到影象座標的齊次表示

  • 影象座標→畫素座標


一般使用畫素值表示 2D 影象,座標原點通常是影象的左上角,因此畫素座標和成像平面座標之間,相差了一個縮放和原點的平移


「乾貨」影象演算法之3D人臉識別技術原理概述


通過用相機座標表示影象座標,可以得到畫素座標與相機座標的關係:


「乾貨」影象演算法之3D人臉識別技術原理概述


為保證齊次性(一般很多變換矩陣有這個特性),這裡稍作改寫:


「乾貨」影象演算法之3D人臉識別技術原理概述


「乾貨」影象演算法之3D人臉識別技術原理概述


即經常說的相機內參矩陣(Camera Intrinsics),K 有 4 個未知數和相機的構造相關,f_x,f_y 和相機焦距、畫素大小有關,c_x,c_y 是平移的距離,和相機成像平面的大小有關。

  • 世界座標→相機座標


其實,相機座標系並不是一個特別“穩定”的座標系,因為相機會隨著自身移動而改變座標的原點以及各個座標軸的方向,這時就需要一個更穩定的座標系來更好地表示射影變換,而我們通常採用的恆定不變的座標系為世界座標系。


「乾貨」影象演算法之3D人臉識別技術原理概述


相機座標系與世界座標系之間相差一個旋轉矩陣和平移向量

「乾貨」影象演算法之3D人臉識別技術原理概述

同樣為了保證齊次性,其改寫形式如下:


「乾貨」影象演算法之3D人臉識別技術原理概述


「乾貨」影象演算法之3D人臉識別技術原理概述


即常說的相機外參(Camera Extrinsics)。

從世界座標系到畫素座標系相當於弱投影過程。總之,有必要將攝像機座標系轉換為畫素座標系。攝像機內部引數需要從攝像機座標系轉換為世界座標系。


「乾貨」影象演算法之3D人臉識別技術原理概述


3D相機

根據相機的工作模式,它可以分為單目相機(Monocular),雙目相機(Stereo)和深度相機(RGB-D),而相機的精髓也在於反映三者 二維的維度世界。

單目攝像機,即單個攝像機的攝像機,會丟失場景的深度,因為它只能同時捕獲某個視角的影象。例如,如果已知某個影象點P在成像平面上,由於特定距離未知,投影的畫素點可以是連線相機原點和P的線上的任何位置,因此在旅行或畢業時, 可以採取。精心挑選的人放錯了效果圖。


「乾貨」影象演算法之3D人臉識別技術原理概述


那你怎麼用深入的資訊拍照呢?一種方法是通過雙目相機獲得深度。雙目相機顧名思義“雙眼”,左眼相機和右眼相機的光圈中心和基線,空間中的點P將投影在雙目相機影象的總和上 因此,P原理可以通過相似原理來解決。到基線的距離是點P的深度(參見下面的公式)。在實際應用中,更容易計算物體紋理豐富的地方的視差,並且考慮到計算量,雙目深度估計通常由GPU或FPGA計算。


「乾貨」影象演算法之3D人臉識別技術原理概述



「乾貨」影象演算法之3D人臉識別技術原理概述

,其中

「乾貨」影象演算法之3D人臉識別技術原理概述


隨著技術的不斷髮展,深度相機的出現使我們更容易捕捉到影象的深度。其中一款深度相機是基於結構光的RGB-D相機。以人臉為例,掃描器在目標面上發出光圖案(例如光柵),並根據其變形計算表面的形狀,從而計算面部深度資訊.


「乾貨」影象演算法之3D人臉識別技術原理概述


圖片中還有一個RGB相機,那麼如何實現深度和RGB之間的一對一對應?在測量深度之後,RGB-D相機通常根據製作時每個相機的位置完成深度和彩色影象畫素之間的配對,並輸出一對一對應的彩色圖和深度圖。我們可以在相同的影象位置讀取顏色資訊和距離資訊,計算畫素的3D相機座標,並生成點雲。

還有一個基於飛行時間(ToF)的深度相機,它向目標發射脈衝光,然後根據光束在傳輸和返回之間的飛行時間確定物體與其自身的距離。與鐳射感測器不同,ToF相機可以在發射脈衝光的同時捕獲整個影象的畫素深度,而鐳射通常通過逐點掃描獲取深度資訊。


「乾貨」影象演算法之3D人臉識別技術原理概述


綜上所述,3D人臉任務通常使用深度相機來獲取人臉的深度資訊。深度相機通常包括雙目相機,基於紅外結構光原理(例如Kinect 1代)的RGB-D相機或基於光時間的原理。ToF相機(如Kinect 2代)。

3D 人臉資料

3D面部相關任務通常有三種表徵資料的方法:點雲,網格圖和深度圖。


「乾貨」影象演算法之3D人臉識別技術原理概述


點雲(Point cloud)

在三維點雲中,每個點對應於三維座標。許多3D掃描裝置使用該資料格式來儲存所獲取的3D面部資訊。有時,面部的紋理屬性也可以縫合到形狀資訊,並且點的表示式變為,其中p,q是稀疏座標。

點雲的缺點在於,由於點儲存通常是無序的,因此不能很好地獲得每個點的鄰域資訊。通常,點雲資料用於擬合平滑表面以減少噪聲的影響。

網格(Mesh)

3D網格由3D表面上的預先計算和索引資訊表示。與點雲資料相比,它需要更多的記憶體和儲存空間,但由於3D網格的靈活性,它更適合做一些三維變換,如仿射變換,旋轉和縮放。每個3D網格資料由以下元素組成:點,線和三角形面。二維紋理的座標資訊也可以儲存在點資訊中,這有利於重建更精確的三維模型。

深度(Depth/Range)

深度影象也稱為2.5D或範圍影象。將3D面的z軸值投影到2D平面上,類似於平滑的3D表面。由於這是二維表示,因此可以直接應用許多處理二維影象的現有方法。該資料可以使用三角測量原理直接以灰度顯示或轉換為3D網格。


「乾貨」影象演算法之3D人臉識別技術原理概述


3D人臉相關任務

常用Pipeline

2D 人臉相關任務的 Pipeline 一般分為資料預處理、特徵提取、特徵分析等過程,那麼 3D 人臉的 Pipeline 呢?這裡本文引用《3D Face Analysis: Advances and Perspectives》


「乾貨」影象演算法之3D人臉識別技術原理概述


上面顯示了一個通用的3D / 2.5D面部分析框架。我們通過裝置獲得面部(網格,點雲,深度)的3D / 2.5D表示,並在經過一些預處理操作(如球面剪下,噪聲消除,深度缺失修復,點)後獲得一些可用的3D / 2.5D 雲登記等人臉。

接下來,預處理面的特徵在於許多方法,例如表面法線,曲率,UV-Map或常用的CNN方法; 在提取特徵之後,可以執行各種面部任務,例如識別,表達分析,性別分類,年齡分類等。

鑑於本文的目的是梳理三維人臉介紹的相關知識,下面簡要介紹三維人臉重建與識別的相關工作,包括開發過程和一些相對易用的論文。

3D人臉識別

在3D人臉識別的最初幾十年中,面部設計的特徵和分類或測量方法被用於面部驗證和識別。近年來,隨著深度學習方法的興起,一些工作已經被資料和3D人臉識別模型訓練所驅動。本文簡要總結了三維人臉識別方法,具體如下:


「乾貨」影象演算法之3D人臉識別技術原理概述



1.傳統的識別方法

基於點雲資料的三維人臉識別

這種方法通常不考慮3D空間中的面部特徵,而是直接使用3D點雲進行匹配。常用方法是ICP(迭代最近點,連結:https://en.wikipedia.org/wiki/Iterative_closest_point)和Hausdorff距離(連結:https://en.wikipedia.org/wiki/Hausdorff_distance)。

作為一種剛性匹配演算法,ICP可以校正三維點雲本身的平移和旋轉變換,但對於由表示式和遮擋引起的表面凹凸變化不夠穩健,且時間開銷相對較大。

ICP使用面部表面取樣的法向向量進行匹配。由於正常資訊具有更好的可辨識性,因此這裡簡要介紹ICP演算法。ICP是一種迭代最近點的方法,可以實現兩個雲的匹配。確切地說,這種型別與2D面的關鍵點對齊。

假設有兩組點雲:

「乾貨」影象演算法之3D人臉識別技術原理概述

,通過迭代的方法找到一組

「乾貨」影象演算法之3D人臉識別技術原理概述

「乾貨」影象演算法之3D人臉識別技術原理概述

,滿足

「乾貨」影象演算法之3D人臉識別技術原理概述

,即求解

「乾貨」影象演算法之3D人臉識別技術原理概述


Hausdorff距離通過計算兩個面的三維點雲之間的最近點對之間的最大值來評估空間中不同真實子集之間的距離。但是,該演算法仍然存在表達和遮擋問題。改進的Hausdorff距離演算法使用3D面的輪廓來過濾資料庫中的物件。

模板面部方法由三維人臉上的種子點變形,適合待測人員的面部,使用擬合引數進行人臉識別,並且可以生成特定的密集三者生成的 - 維麵點雲對齊方法。變形的臉模型。

基於人臉特徵的三維人臉識別

基於人臉特徵的三維人臉識別可分為區域性特徵和全域性特徵。有關詳細資訊,請參閱3D Face Analysis:進展和展望。

本地功能有兩個方面。一種是基於面部區域元件資訊的特徵,例如鼻子,眼睛和嘴巴區域。這些特徵可以大致分為基於面部關鍵點,曲率和塊的特徵提取方法; 描述子演算法提取的特徵,如在深度影象上提取小波特徵,SIFT,2D-LBP,MRF,LSP,以及對3D資料進行特徵提取,如3D-LBP。全域性特徵可以轉換整個面部並提取特徵。面部資料可以以不同的方式儲存,例如點雲,影象,網格型3D面部資料,例如3D面部模型作為球面諧波特徵。(SHF),或者使用稀疏係數作為特徵將3D面部表面對映到用於稀疏表示的二維網格中。

2.深度學習識別方法

CNN在2D人臉識別方面取得了很大進展。然而,2D臉部很容易受到化妝,手勢,燈光和表情的影響。3D面本身包含面部的空間形狀資訊,受外部因素的影響較小。與2D面部相比,3D面部資料攜帶更多資訊。然而,由於難以獲得3D面部資料和一些面部資料缺乏準確性,3D面部識別的發展不是很熱。

基於深度圖的人臉識別

深度圖中人臉識別的常用方法包括提取LBP,多幀深度圖融合,深度圖歸一化等特徵。這裡,簡要介紹了兩個與深度圖相關的人臉識別論文。

《Robust Face Recognition with Deeply Normalized Depth Images 》

本文被認為是一種比較常見的深度圖人臉識別管道,它分為兩個網路:規範化網路和特徵提取網路。歸一化網路負責將輸入深度圖轉換為HHA影象並通過CNN網路返回3DMM的引數(如下面的3D重建中所述),其可在重建3D點雲之後投影到歸一化深度中。。特徵提取網路基本上類似於普通的2D人臉識別網路,並且獲得表徵深度圖面部的特徵向量。


「乾貨」影象演算法之3D人臉識別技術原理概述


《Led3D: A Lightweight and Efficient Deep Approach to Recognizing Low-quality 3D Faces 》

本文是CVPR 2019的低質量深度圖人臉識別文章。深度圖面向預處理和資料增強操作的一些文字值得參考。在本文中,球面的法線的法線用作網路輸入。實驗表明,可以更好地表徵深層。同時,作者還精心設計了輕量級識別網路(主要是多層特徵融合和關注)。機制),可以參考。


「乾貨」影象演算法之3D人臉識別技術原理概述


基於RGB-D的人臉識別

基於RGB-D的人臉識別基本上基於2D人臉識別方法。與RGB對齊的深度圖作為頻道傳送到CNN網路。RGB-D的一個優點是增加面部的空間形狀資訊。RGB-D影象有很多面部識別論文,但基本思想是融合在要素層或畫素層中。

《Accurate and robust face recognition from RGB-D images with a deep learning approach 》

2016年,本文提出了一種基於深度學習的RGB-D影象人臉識別演算法。本文通過RGB影象和多幀融合深度影象進行預訓練和遷移學習,並在特徵層融合,增強識別能力。


「乾貨」影象演算法之3D人臉識別技術原理概述


基於深度/ RGB-3DMM的人臉識別

在過去的兩年中,出現了使用3DMM進行深度或RGB影象的人臉模型迴歸,並應用於識別任務。這類工作的總體思路是通過迴歸3DMM引數(表情,姿勢,形狀)來實現3D人臉資料增強,並應用於CNN培訓,代表性工作如FR3DNet(連結:https:/ / arxiv.org/) abs / 1711.05942),3D人臉識別(連結:https://arxiv.org/abs/1703.10714)。

《Deep 3D Face Identification》

本文是將深度神經網路應用於三維人臉識別任務的第一種方法。主要思想是利用3DMM + BFM將深度圖擬合成3D人臉模型,實現深度資料放大,最後將資料增強(如隨機遮擋和姿態變換)傳送到Finetune的2D人臉識別網路。


「乾貨」影象演算法之3D人臉識別技術原理概述


《Learning from Millions of 3D Scans for Large-scale 3D Face Recognition》

本文是3D人臉識別的傑作,真正實現了數百萬個人臉資料的建立,提出了一個3D人臉識別網路FR3DNet,最終在現有公共資料集上進行了測試,效果非常好(資料方式) 駕駛基本上是完全刷牙的狀態)。 建立新ID的方法是在作者的私有資料集中找到兩個具有最大彎曲能量差異的3D面,並通過新增獲得新的3D面(有關詳細資訊,請參閱原始文字); 還提出了臉部3D。 在點雲識別網路中,使用大卷積核有助於更好地感知點雲的形狀資訊。


「乾貨」影象演算法之3D人臉識別技術原理概述


還有許多資料驅動的3D人臉識別,如3DMMCNN(連結:https://arxiv.org/abs/1612.04904),總結基於深度學習的3D人臉識別方法受到資料和現有資料不足的限制。精度不夠。研究人員的第一項任務是進行大量資料增強或生成大量虛擬3D人臉。但是,這些方法是否具有很強的泛化效能仍值得討論,屬於3D人臉識別時代也許還未到來。

3D人臉重建

3D面部研究中另一個有趣的方向是3D面部重建,其是通過一個或多個RGB面部影象重建面部的3D模型。它有許多應用場景,例如Face Animation,密集Face。事實上,RGB到3D人臉重建是一個病態的問題,因為RGB影象實際上代表了紋理特徵並且沒有空間資訊,但考慮到實際應用價值,已經提出了一些三維重建方法。這些年來。

「乾貨」影象演算法之3D人臉識別技術原理概述


「乾貨」影象演算法之3D人臉識別技術原理概述


基於傳統方法的人臉重建

傳統的3D人臉重建方法通常通過影象本身表示的資訊完成3D人臉重建,例如影象的視差和相對高度。通過雙目視覺實現3D重建更為常見。困難在於如何在不同的視角下匹配相應的特徵。對於此類文章,您可以參考“不同3D面部重建方法的調查”(連結:https://pdfs.semanticscholar.org/d4b8/8be6ce77164f5eea1ed2b16b985c0670463a.pdf)。

基於模型的面部重建

3D面部重建中有兩種常用的模型,其中一種是通用模型CANDIDE,另一種是3DMM。

在眾多常見型號中,CANDIDE-3最為著名,包括113個頂點和168個面。簡單地說,通過修改這些頂點和麵,它們的特徵與要重建的影象相匹配。通過整體調整,面部特徵等面部特徵儘可能對齊;進行區域性調整以使面部的區域性細節更精確,之後,執行頂點插值,並且可以獲得重建的人臉。

該模型的優缺點是顯而易見的。模板的頂點數量太少,重建速度快,但重建精度嚴重不足,面部細節特徵重建不好。


「乾貨」影象演算法之3D人臉識別技術原理概述


入門 3D 人臉一定會接觸的演算法是 3D Morphable Model (3DMM),這是 1999 年由 Volker Blanz 在《A Morphable Model For The Synthesis Of 3D Faces》一文中提出的一種人臉模型的線性表示,可以將一張 2D 的人臉圖片生成其對應的 3D 人臉模型,表示方法為:

「乾貨」影象演算法之3D人臉識別技術原理概述

其中

「乾貨」影象演算法之3D人臉識別技術原理概述

「乾貨」影象演算法之3D人臉識別技術原理概述

分別為通過統計分析 PCA 得到的 shape 和 expression 基,使用 3DMM 模型重建人臉首先需要這兩組基,目前使用較多的是 BFM 基【下載地址】(https://faces.dmi.unibas.ch/bfm/main.php?nav=1-2&id=downloads)【論文地址】(https://ieeexplore.ieee.org/document/5279762)。

那麼如何從二維重建三維呢?首先要了解三維模型是如何投影到二維平面的,上文最開始講的相機模型,把三維模型投影到二維平面可以表示為:

「乾貨」影象演算法之3D人臉識別技術原理概述

通過使用面部資料庫構建平均面部變形模型。在給出新的面部影象之後,將面部影象與模型匹配,並且修改模型的相應引數以使模型變形直到模型和麵部影象。差異被最小化,紋理被優化和調整以完成面部建模。

一般的2D到3D重建過程使用監督方法來處理2D面部關鍵字和3D頂點的正交投影上的關鍵點。


「乾貨」影象演算法之3D人臉識別技術原理概述


基於 CNN 端到端的人臉重建

利用3DMM模型,可以執行單個2D面的3D重建,但是真正的問題是傳統的3DMM重建是迭代擬合過程,其效率低,因此不適合於實時3D面。重建。分析3DMM原理,我們需要調整3DMM的199維引數(這個不同的基數是不同的),為什麼不使用CNN迴歸基引數?通過這種方式,我們可以通過網路預測引數,實現3DMM的快速重建。

但是有一個問題,我們如何獲得培訓資料?為此,大多數論文選擇使用3DMM線來擬合大量的人臉影象作為地面實況,然後將它們傳送到神經網路進行訓練。雖然這是一個病態的問題,但效果還不錯。本文將介紹幾種易於理解的CNN端到端3D人臉重建方法。

《Disentangling Features in 3D Face Shapes for Joint Face Reconstruction and Recognition 》

本文使用CNN返回Identity Shape和Residual Shape引數。表示式類似於3DMM。不同之處在於,除了普通的重建損失(通常是元素方式的L2損失)之外,還增加了識別損失以確保重建的面部。ID特徵不變。


「乾貨」影象演算法之3D人臉識別技術原理概述


《End-to-end 3D face reconstruction with deep neural networks》

本文的思想也是返回3DMM引數。作者認為,高階語義特徵可以表示ID資訊,而中間層特徵可以表示表達特徵,因此可以從不同層次返回相應的引數來實現3D人臉重建任務。


「乾貨」影象演算法之3D人臉識別技術原理概述


《Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network 》

另一種常見的端到端3D人臉重建方法是位置迴歸網路(PRN),強推!(使用開原始碼PRN:https://github.com/YadiraF/PRNet)。

本文提出了一種用於三維人臉重建和密集人臉對齊的端到端位置迴歸網路。

作者介紹了UV位置圖,它可以通過2D影象儲存人臉的3D點雲座標。假設包含65536個點的3D點雲可以通過UV位置圖(每個畫素點)表示為256 * 2563 2D影象。儲存點雲的空間座標,因此可以通過編碼器 - 解碼器網路返回原始影象的UV位置圖來實現3D面部重建。

通過設計不同區域不同權重的損失函式,作者最終實現了更高精度的人臉重建和密集的關鍵點對齊。


「乾貨」影象演算法之3D人臉識別技術原理概述


《3D Dense Face Alignment via Graph Convolution Networks》

上述迴歸UV位置圖的方法存在問題。當最終的UV影象對映到3D面網格的影象時,會出現一些條紋。在最近的一些3D面部重建工作中,通過多級迴歸3D面部網格也有很好的重建效果。

本文作者逐步增加了網格頂點的迴歸,從而完成了多個監督任務下的最終網格迴歸。同時,採用圖卷積的形式,點之間的對映關係可以更加必要,最終實現。良好的重建效果。


「乾貨」影象演算法之3D人臉識別技術原理概述


3D人臉重建是近年來的熱門話題。每年在各種會議上有很多文章提出各種3D面部重建程式。但是,從入門的角度來看,掌握上述常用方法將是下一步的研究,將打下良好的基礎。

https://www.toutiao.com/a6720019399383728652/


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

相關文章