黃奕棋,黃起豹,楊民強
1(蘭州大學 信息科學與工程學院,蘭州 730000)
2(凱迪雷拉大學 經濟管理學院,碧瑤 2600)
增強現實技術的興起讓越來越多的非實體信息能夠在真實世界中虛擬化體現,隨著日常生活場景不斷信息化、虛擬化(如網絡購物的普及、各類云端體驗的興起),增強現實技術的應用一直是計算機視覺領域經久不衰的話題,因為這些應用可以將虛擬化場景不斷深化從而改變人們的一些固有的生活習慣.例如,在網絡購物時,用戶無法體驗商品的適合度,只能憑借臆測來決定是否下單.通過虛擬穿戴技術,用戶能夠在缺少試戴的情況下對商品有一個更好的感知,并輔助用戶進行決策[1].
但是由于相關子技術過于分散并缺乏整合,且相關虛擬試戴技術一直未有一個明確的方案路線.此外,部分與擬議的虛擬試戴技術相關聯的子技術尚未成熟,或其關注的重點與擬議技術相距甚遠,還存在有如面部區域的識別易受姿態與表情的影響、面部姿態的角度表達無法對應于模型文件的觀測視角等問題,這些問題都給虛擬試戴技術的研究與發展帶來了重大的挑戰.但是,放眼于未來,增強現實相關領域的發展、相關子技術的完善、以及技術側重點的更改是十分必要的.
在人臉檢測標注中,Ghenescu 等人提供的通用DNN 目標檢測方法提供了一種魯棒的人臉檢測方法[2].本文基于此方法調用集成的OpenCV 接口對實時視頻流中的人臉檢測,但這種方法缺乏對于瞳孔中心的定位.結合Chen 等人提供的眼部定位方法[3],縮小待操作區域以減少誤差.此外,文獻[4]中提供的帶有深度信息的姿態估計方法結合n點透視位姿求解法,為本方法得到人臉姿態參數提供了一種良好的思路,將參數運用文獻[5]中所述的矩陣關系進行運算,將矩陣轉換成相關角度.
對于某些系統[6],其虛擬試戴技術主要關注于2D圖像的3D 重建過程,該操作需要大量算力與運行時間,本文簡化了重建過程,采用映射方式在圖像上進行操作,為實時視頻流操作提供了可能.而系統[7]對于操作區域與模型關鍵特征的定位操作存在偶然性,文獻[3]和文獻[8]中提供了一種眼部定位與眼睛檢測的方法,本文結合兩種方法并通過實時檢測的面部坐標差值縮小操作范圍,文獻[9]中采用HSV 顏色空間的方法為本文提供了一個很好的圖像分割思路.
結合上述子技術并為解決現有系統的不足,本文嘗試提供一種方法路線,結合相關子技術提出一種基于增強現實與面部姿態估計的虛擬試戴技術.此方法主要是一種用于加合實時面部場景與3D 模型文件的虛擬試戴技術,利用深度神經網絡人臉標志檢測器,估計實時場景中的人臉位態信息,返回對應的方位角與旋轉角[5].在此方法中,相關姿態參數會被用于調整3D 模型文件相對于攝像機坐標系的位置,從而將模型文件映射至屏幕坐標系中.同時采取圖像分割技術,以68 個標志點為基準,定向分割出待加合區域,模型文件還將根據成像坐標系與攝像機坐標系的相對位置進行自適應.
圖1顯示了擬議方法的示意圖,該方法主要針對于人臉部分的虛擬佩戴.對于輸入的原始實時視頻流(real-time video streaming,RVS),使用預先訓練的深度神經網絡進行人臉檢測.檢測人臉存在后,通過初始化相關關鍵點標識面部輪廓,采用Perspective-N-Point 方法估計面部的姿態信息,并返回相關角度參數.由相應的數學關系實現角度向elev 與azim的轉化,將轉化后的參數傳入view_init 方法對3D 模型文件進行視角轉換.在不同的視角下,利用相關數學原理對矩陣進行歸一與消元操作實現3D 文件的映射降維.基于面部關鍵點標注框選眼部區域,基于深度顏色空間設定閾值并構建掩碼位圖,提取出的細化區域與框選區域進行加合,得到部分加合結果.并依此法對RVS 逐幀操作,實現面部虛擬試戴.
首先對于輸入的實時視頻流中的每一幀進行檢測,使用傳統視覺方法中的由Papageorgiou 等人提出的Haar 特征[10],以及Viola和Jones 提出的Haar-like 小波特征和積分圖方法進行人臉檢測[11,12],本方法選擇直接使用改進后的OpenCV的Haar 分類器.基于對靜態圖的檢測方法,在視頻中的每一幀均重復相同操作,實現對視頻流的人臉檢測,并對相應面部區域進行框選,返回置信度.
緊接著對框選區域進行關鍵點檢測,繪制出68 個面部關鍵點并以此為基準對人臉進行對齊,即對于某些具有初始姿態的面部圖像,進行相應的仿射變換以返回正對于屏幕坐標軸的對齊圖像,仿射關系可表示為:
圖像進行仿射變換后,在面部檢測器中初始化一個DNN,將對齊后的面部圖像輸入到該檢測器中,并提取layer6 中名為final_dense的張量,將其用于面部預測,得到尺寸為136×1的矩陣,將其轉換為68×2的矩陣,分別對應于人臉68 個關鍵點的像素坐標,并由這些坐標定向至像素坐標系下對應的人臉位置,進行標注,圖2展示了在某一個姿態下的向量與矩陣以及對應的面部標注情況.
本方法主要是針對于面部的虛擬試戴,而面部朝向的角度信息則是虛擬佩戴適應度與真實性的基礎,因此我們將在DNN 網絡人臉檢測器標識的基礎下,求解所有面部標志的姿態信息[2].面部的姿態估計主要分析3 個維度的角度信息,分別是俯仰角Pitch,偏航角Roll和滾轉角Yaw 三個歐拉角,如圖3所示,分別對應于實際場景中頭部的上下抬低、左右搖擺和立軸轉動,面部的所有姿態均可分解為這3 個方面的變化.
基于上述描述,本文選擇采用5 點透視位姿求解的方法,利用點云配準方法求解攝像機坐標系相對于世界坐標系的平移矩陣(T)以及旋轉矩陣(R)[5].假設世界坐標系用X、Y、Z 表示,像素坐標系用U、V、W 表示,由攝像機成像原理可知,繞各自軸旋轉一定角度和平移一段距離,能夠獲得世界物體呈現在以光心為原點的相機坐標下.而針對像平面,其間存在著投影透射關系,是由三維坐標向像素點的轉換,針對相應的數學運算,我們可建立屏幕坐標系下映射的坐標與世界坐標系中實際點的關系,可用于求解矩陣R和矩陣T:
其中,s表示尺度參數(scale parameter),fx和fy表示各自方向上的焦距,cx和cy表示光學中心,x和y為圖像上各自點的橫縱坐標.所述的5 點透視位姿求解的方法,只能得到T矩陣和R矩陣,而本文設定得到的姿態信息應由圖2所示的3 個歐拉角表示,因此對于得到R矩陣還需進行相應計算得到最終的3 個歐拉角.T矩陣作為人臉平移量的表示,直接加合至3D 模型文件矩陣中,表示平移量.旋轉矩陣到歐拉角的關系如式(3):
其中,φ,?,γ分別對應于Pitch,Roll和Yaw.依據上述求得的歐拉角,可將面部姿態的關系數值化,并依此將最終經姿態變換后的人臉標注映射至屏幕坐標系,得到對應的2D 成像,如圖4所示,其中相機坐標系的z軸指向相面的中心,也稱為光心.
依據上述姿態估計方法,任意世界坐標系下的人臉姿態都將被準確估計,即每個人臉可檢測范圍內的朝向信息都將被轉換為相應的歐拉角信息,所有人臉的姿態信息將被用于標注該朝向的人臉關鍵點,并分別在3D 空間中與2D 平面上呈現.
計算人臉姿態信息的目的是得出人臉在該姿態下所對應的3D 模型物體的視角信息,因此,本步驟主要聚焦于將歐拉角向視角信息轉化.由上述步驟可知,人臉姿態信息最終體現為俯仰角Pitch,偏航角Roll和滾轉角Yaw 三個歐拉角.我們假設以人臉鼻尖作為原點,垂直紙面向外為u軸,豎直向上為w軸,垂直u-o-w平面向右為v軸,如圖4中的世界坐標系,我們易知俯仰角為人臉姿態與v軸的夾角,偏航角為人臉姿態繞u軸轉動,滾轉角則為姿態信息與w軸分量的夾角.
然而,對于3D 模型文件,其方向信息主要由觀測者的視角進行體現,分別對應于view_init 方法中的elev 參數(方位視角)和azim 參數(海拔視角).假設初始視角為3D 模型文件的正視圖,圖5(a)以眼鏡3D 模型為例展現了視角變化過程.在不同的視角下,均有相對應的面部姿態,圖5(b)中的人臉分別對應于圖5(a)中的5 個視角.
通過大量試驗,我們得出了在不同姿態下,3D 模型文件的視角與人臉姿態歐拉角的關聯關系,式(5)–式(9)展現出了部分視角與歐拉角的等價關系,其中,Yaw的值均為0:
由此類等價關系,我們可推得azim 與elev 對應于Roll 與Pitch的等價關系.對于Yaw,它是相對于w軸的變化,即為視角上的遠近關系,這類關系并非由視角與滾轉角直接對應.
本步驟是為了將3D 模型文件通過映射變換,轉換為2D 圖像渲染的形式.本文采取投影方法進行映射,此處成像面為一個二維平面,此處不考慮3D 模型向規范視域體(canonical view volume)的投影.相較于2D 平面圖形,3D 模型包含有深度信息,在投影的過程中,原本的3D 物體會失去一些角度和距離信息,只會保留原物體中的一些屬性.
在常見的相機模型中,光線將經由三維物體的各個點通過小孔模型投影在像平面上,假設世界坐標系中存在有一個三維物體,其某個面上的頂點坐標為(x,y,z),若要將其映射至二維平面,則該點在投影時將對應著一個投影矩陣,此投影矩陣通常為這個頂點向量提供了一個點乘運算,從而實現3D 齊次坐標向2D 齊次坐標轉換[5].
3D 模型文件經過映射變換后,在像素平面上得到了對應文件的二維圖像形式.為了確保虛擬試戴的準確性,我們需要根據所操作模型的特征對操作區域進行縮小,即只對輸入幀的局部進行加合操作.
以眼鏡模型為例,本方法會將操作區域縮小至眼睛區域[3,8],上至眉毛,下至眼袋,并以左右眼角作為兩側邊界,如圖6所示.基于第1.1 節中得到的面部關鍵點標注,依據標注點與面部區域的對應關系選擇出所要規劃邊界的關鍵點.對于眼部區域而言,將起始標注記為1 (對應面部左側太陽穴),兩眉最高點(對應于標注19和25)為上邊界,左右眼角外側(對應于標注37和46)與左右眉毛邊緣點內側(對應于標注18和27) 豎線作為左右邊界,過鼻梁位置(對應于標注29)與臉頰外側關鍵點(對應于標注2)連線作為下邊界,各邊界構成一個類矩形區域.對于框選出的局部區域,計算該區域的長度和寬度作為模型文件的尺寸,使用OpenCV 中的resize 方法,調整模型文件的相對大小,以自適應人臉在遠近移動時帶來的眼間距寬度的絕對數值變化.
在選取局部圖像后,降維后的模型圖片定向至目標區域,這種做法不僅降低了加合過程中的復雜程度,還消除了無關背景對于虛擬試戴區域定位的影響,可在一定程度上提高佩戴的準確性.
經由前述階段對于人臉視頻流與3D 模型文件的操作后,本階段將在此基礎上對截取后的局部圖像與輸入的人臉視頻流進行加合處理.然而,對于映射降維后的2D 圖像,其大體呈現為以一定視角成像的圖形嵌入白色背景中,直接加合會導致2D 圖像所在圖層將覆蓋人臉對應區域.因此,本文采用生成圖像遮罩層的方法,基于HSV 顏色空間(色調H,飽和度S以及明度V)計算白色背景外的模型圖形各像素點的HSV 值,并繪制如圖7所示的閾值曲線.
此外,根據圖7所示的閾值曲線,我們發現樣例模型文件各點的HSV 顏色閾值主要集中在[100 205 70]–[105 215 170]之間,由此界定上下限并生成掩碼矩陣.由于我們可將圖像視為一系列數組,這些數組的值即為像素值,并對應著不同的顏色.對于重疊部分,我們期望映射后的模型圖形能夠覆蓋對應部位而其余面部區域保持不變,因此我們利用掩碼界定區域將重疊部分的面部像素值設置為1,其余保持不變.在對相應像素值進行修改后,將視頻幀中人臉區域矩陣與模型2D 映射圖像進行點積運算,最終得到局部區域的模型佩戴結果,由此結果反饋至全局幀區域,以得到增強現實下的虛擬試戴效果.
文獻[13]中提出的人臉檢測方法具有較大的局限性,其基于人臉膚色的檢測方法在背景色與膚色十分接近的情況下,會產生較大的偏差,因此該檢測方法對于背景色有較為嚴格的要求.此外,該方法中設定的眼間距是基于經驗確定,這種確定方法并不具有魯棒性,對于某些特殊人群該間距可能并不適合.本文提出的人臉檢測方法,是基于面部關鍵點進行區分,并不受背景色與不同人群的不同特征影響,能夠根據返回的眼部關鍵點坐標進行相應的計算,并自適應于不同特征的人臉.對于文獻[13]中的結果而言,其最終佩戴在人臉面部的眼鏡,其鏡片顏色將遮擋眼部區域,導致佩戴的不真實性,針對此類問題,本文提出了圖像掩碼設定,利用HSV 閾值設定模型文件的框架范圍,將眼部區域取代鏡片內的白色區域,以此增加虛擬佩戴的真實性.
與文獻[13]類似,文獻[7]中所提出的試戴方案,僅測量左、右眼角與鼻梁3 個點的位置,這種定位方法基于人眼對稱的先驗知識,具有一定的偶然性.對于某些具有特殊眼部特征的人群,可能無法達到與文獻[7]中所述的定位效果.而本文中采用多關鍵點的人臉檢測,能夠準確識別眼眶、眼角等關鍵位置,進而為眼部區域的框選提供了可能.不可否認的是,文獻[7]中使用的等腰直角三角形擬合的方式對于眼鏡之于對稱眼部的佩戴有較為良好的效果.
就定位準確性與模型加載的真實性而言,文獻[9]很好地完成此類要求,其基于大量無眼鏡的人臉數據集進行訓練,并使用ROI 提取方法,使得其定位效果良好.而且利用2D 圖像重建令其眼鏡模型具有較強的真實性并能較好地解決因為成像角度而帶來的遮擋問題,但是人臉重建過程對于具體實現而言具有較大的難度[14],且算法通常會存在較大的時延,而此數值已遠超出人眼所能適應延遲的閾值,因此在實時場景下并不適用.本文所提出的技術方案簡化了重建過程,采用圖像映射的方法實現低維度的圖像加合,一定程度上減輕了實時計算時可能因為重建過程而帶來的計算負擔.
本文擬議方法的操作對象為現實場景下包含人臉的實時視頻流,該視頻流中必然包含有多姿態、多表情的面部幀.因此,為了貼近實際應用場景,本次實驗選取了20 名受試者,受試者任意轉動頭部角度并改變面部表情,直接調用本地攝像頭運行本算法.我們通過姿態估計矩形與面部檢測點的穩定程度以及姿態估計準確度來判斷頭部姿態估計效果的好壞,若估計矩形具有明顯抖動,則認為本次測試效果不佳;若姿態估計有明顯偏差,亦認為本次測試效果不佳.圖8表示其中一位受試者的頭部姿態估計結果.經過多次試驗,本方法中所使用到的姿態估計算法具有較強的魯棒性.
本方法能實現在實時場景下利用增強現實技術將選擇的模型文件定向添加至面部區域,該方法具有魯棒性和可擴展性.模型文件可選擇眼鏡、口罩、貼紙等面部修飾品,修改對應佩戴區域的參數即可得到不同類型的模型文件向面部區域的加合,因此本方法具有較強的可擴展性.以眼鏡模型文件為例,圖9展示了受試者在正臉姿態下的佩戴情況.從圖中我們可以看到,受試者佩戴口罩,本方法仍能檢測出人臉區域并向眼部區域添加模型文件,對于不同受試者,本方法均可以針對受試者的面部區域虛擬佩戴模型文件.此外,對于被試者的遠近移動,本方法能夠自適應眼鏡模型大小,以貼合受試者的眼部區域,因此本方法具有較強的魯棒性,圖9展示了本方法的作用下最終的虛擬試戴結果.
本文提出了一種增強現實技術的虛擬試戴方法,主要針對實時場景下的人臉對應區域,在擺脫實體的情況下確保用戶的整體感知,通過對虛擬信息的加載實現相關區域的模型文件試戴.
為了確保準確性,我們基于先前的姿態估計技術進行相應地修改以適應本方法的目標,依據相關參數變換以及模型文件的映射成像實現虛擬佩戴技術,本方法整合并改進現有子技術,較為系統地呈現了一個虛擬試戴方案.未來本方法還可將進行進一步改良,通過載入更完善的紋理與材質信息使得本技術具有更強的真實性,并運用到電子商務、云端體驗等新興領域.