劉 軒,付東翔
(上海理工大學 光電信息與計算機工程學院,上海 200093)
隨著互聯網時代的發展,方便快捷的線上購物模式逐漸取代了傳統實體線下銷售模式,成為了新的主要消費方式。眼鏡產品不僅具有實用性,其時尚性也受到消費者的重視。網絡配鏡平臺基本缺乏專業化的虛擬試鏡功能,使其欠缺真實化和私人化特征。 因此,提高虛擬眼鏡試戴的時效性和真實性就成為了本文的主要研究目的。
目前已有一些關于虛擬眼鏡試戴的研究與方法,這些方法各有優劣。文獻[1]中的方法可精準確定眼鏡佩戴位置,但其實驗結果僅顯示正面試戴,人臉旋轉后眼鏡不能較好地貼合面部。文獻[2]使用三維人臉模型配合Kinect深度相機進行試戴操作,技術上不具備普適性。文獻[3]中,非正面人臉內人眼定位精確度不高, 抗干擾能力較差,魯棒性差。文獻[4]所提方法利用手勢估計人臉姿態,同時使用OpenGL處理三維眼鏡模型,方法復雜且計算量較大。文獻[5]針對單幅圖像進行試戴,算法高效,適應性強,但試戴效果真實性差,實用性不廣。文獻[6]所提方法試戴速度快,但僅能處理頭部左右旋轉情況,且眼鏡模型處理失真,佩戴效果一般。通過上述方法的對比分析,可知欲實現較為真實的眼鏡虛擬試戴,僅檢測平面人臉圖像關鍵點位置信息是不夠的,還需獲取頭部姿態轉動信息,解決現實的人臉圖像與虛擬的眼鏡圖像之間合理化融合的難題,才能精準實現三維空間內的多角度虛擬眼鏡試戴,增強現實感。
本文虛擬試戴系統設計流程如圖1所示,以下將對各部分原理逐一闡述。

圖1 虛擬試戴系統總體設計流程圖Figure 1. Overall design flow chart of virtual trial system
根據檢驗依據的基本信息類型,人臉檢測大致可以分為以下4類[7]:基于先驗規則的方法、基于灰度信息的方法、基于幾何形狀的方法、基于機器學習[8]和深度學習[9-10]的統計類方法。
本文眼鏡試戴算法的核心是精確的面部特征點定位。該要求對算法的魯棒性要求較高,故本文選用機器學習方法中的級聯回歸樹算法(Ensemble of Regression Trees,ERT)[11]進行人臉對齊,進而通過殘差網絡和支持向量機(Support Vector Machines,SVM)分類器實現對人臉面部特征點的精確定位。
ERT算法通過創建級聯殘差回歸樹(Gradient Boosting Decision Tree,GBDT)逐漸將人臉形狀從當前形狀回歸到真實形狀。每個GBDT的每個葉子節點都存儲著殘差回歸,如果輸入落到一個節點上,則將殘差添加到輸入中以進行回歸, 最后將所有殘差疊加在一起,即可實現面部對齊的目的。
當獲得圖像時,該算法創建初始形狀,即首先估計一個粗糙的特征點位置,然后采用梯度增強算法來減小初始形狀的二次誤差與基本真值之和,使用最小二乘法將誤差最小化,并獲得每個級聯的級聯回歸因子。該算法的核心計算式如式(1)所示。
(1)

與LBF(Local Binary Features)[12]不同,ERT是在學習Tree的過程中,將shape的更新值ΔS直接保存在葉結點leaf node中。所有學習到的樹之后的起始位置S表示形狀加上所有過渡,葉節點的ΔS可以獲取人臉的最終關鍵點位置。
通過建立圖像金字塔,對每一級圖像執行HOG(Histogram of Oriented Gridie)特征提取, 經SVM[13]分類確定圖像中是否存在面部,然后結合GBDT級聯回歸殘差網絡。對單幅人臉圖像特征點定位結果如圖2所示。

圖2 不同角度下的特征點定位Figure 2. Location of feature points at different angles
同時將定位出的68個特征點信息計入CSV文件,部分特征點位置信息如表1所示。

表1 部分特征點位置信息
由圖2可以看出,在輸入單幅人臉圖片時,該算法不僅能精準定位正面圖像的人臉特征點,而且在側面、歪斜、外界光線不佳等背景干擾較多的復雜情況下,仍能較為精準地定位面部特征點。
用3個歐拉角(Pitch、Yaw、Roll)[14]表示本文的頭部姿態信息。

圖3 三維姿態歐拉角Figure 3.Three dimensional attitude Euler angle
章節1.1中已實現二維平面的特征點定位。如果要確定三維人臉的姿態估計,一般都需要人臉3D模型。文獻[4]運用了3D模型來實現虛擬試戴,試戴效果較好,但該方法模型處理棘手且運算復雜,時效性和適用性較差。
本文首先定義一個3D臉部模型,取該模型6個關鍵點(鼻尖、下頜、左眼角、右眼角、左嘴角、右嘴角),然后采用章節1.1ERT算法檢測出二維圖片中對應的6個臉部關鍵點。2D平面與3D模型的映射關系如圖4所示。

圖4 2D平面與3D模型的對應關系Figure 4. Correspondence between 2D plane and 3D model
本文規定俯仰角Pitch為X軸,偏轉角Yaw為Y軸,滾動角Roll為Z軸。臉部完全平行于攝像頭時,Pitch、Yaw、Roll均為0°。隨著臉部的轉動,其余角度下的Pitch、Yaw、Roll值如表2所示。

表2 姿態變化后的Pitch、Yaw、Roll范圍變化
人臉模型的6個關鍵點的3D坐標標定值如表3所示。

表3 3D坐標標定值
在計算機視覺中,物體的姿態是指相對于相機的相對取向和位置,可以通過相對于相機移動對象或移動相機來更改物體的三維姿態。實際上,欲估算3D物體的3個歐拉角,需要3個坐標系, 即世界坐標系、相機坐標系和二維圖像坐標系。世界坐標系存儲3D人臉模型的6個關鍵點坐標,用文獻[15]中所提方法標定完的標準相機,將相機坐標系中的3D關鍵點投影到二維圖像平面上,投影原理如圖5所示。

圖5 成像投影關系Figure 5. Image projection relation
3D物體在空間中相對于相機只有兩種剛體運動:平移和旋轉。如圖5所示,O是相機中心,世界坐標系內存在一個3D點P(U,V,W),相機坐標系存在一個3D點Q(X,Y,Z),P點與Q點的投影關系通過一個3×3的旋轉矩陣R和一個3×1的平移向量t得到,如式(2)所示。

(2)
帶入R和t,即
(3)
在不考慮相機參數畸變的情況下,二維圖像坐標系中的p點坐標(x,y)由式(4)得出
(4)
帶入式(3),即得式(5)。
(5)
相機的4個內參fx、fy、cx和cy可由文獻[15]的方法算出。對實時視頻提取某一幀圖像,對該幀的圖像進行特征點定位,獲取這一幀的6個關鍵點二維平面坐標,帶入式(5)。同時已知三維頭部模型的6個關鍵點坐標,即可求得該幀對應時刻的頭部旋轉矢量R和平移向量t。
求得的旋轉矢量R并非歐拉角Pitch、Yaw、Roll,故還需先將R轉化為四元數,再轉化為Pitch、Yaw、Roll的歐拉角。轉化過程如下。
定義ψ、θ、φ分別代表繞Z軸、Y軸、X軸的旋轉角度,分別為Yaw、Pitch、Roll,空間關系如圖6所示。

圖6 自由度空間表示Figure 6. Space representation of degrees of freedom
該組四元數由旋轉軸和繞該軸的旋轉角度得出
(6)
式中,α是繞旋轉軸旋轉的角度;cos(βx)、cos(βy)、cos(βz)分別為旋轉軸在x、y、z方向上的分量。
將該組四元數轉化為此幀下對應的歐拉角可求得當前幀下的Yaw、Pitch、Roll弧度值。再將弧度值轉化為度,即可得到3個旋轉方向的角度值。
(7)
常見的鏡框處理方法為使用三維建模軟件構建眼鏡的三維模型,根據人臉旋轉角度對三維鏡框進行角度變換,再投影至二維平面與人臉圖像疊加融合。文獻[16~17]使用3Ds MAX軟件繪制眼鏡的三維模型,保存為obj文件,運用OpenGL讀取眼鏡obj文件紋理信息,再投影至二維平面進行圖像融合。 但該方法耗費時間長、計算量大且效率較低。對于不同的眼鏡模型需要對應不同的obj文件,但實際上對于工業生產而言,并不能做到每一幅眼鏡都提供標準的obj文件。若實驗者自己繪制眼鏡模型,則工作量巨大,與虛擬試戴要求的高時效性理念不符。因此,本文提出了一種基于二維圖片的眼鏡三維模型替代方法,使用普通照相機拍攝鏡框作為眼鏡圖像,從前視、左視、右視3個維度垂直拍攝眼鏡圖片。
組成眼鏡的3張圖片為:正面框架、左側支架、右側支架。為了保證眼鏡圖片的真實性,提高三維眼鏡模型的現實感,這3張圖片應能夠剛好實現完整拼接,圖像長寬比應一致。為了提高算法效率,方便對圖片進行透視投影變換,還需人工手動將3張圖片中非眼鏡模型部分進行背景透明化處理,處理結果如圖7所示。

圖7 透明化處理后的眼鏡圖片Figure 7. The picture of the transparent glasses
章節1.2已經通過姿態估計得到了頭部轉動的Yaw、Pitch、Roll角度值,當頭部存在轉動時,眼鏡也會進行相應角度的轉動,產生一定程度上的形變才符合視覺系統。而眼鏡的“遠小近大”需要通過透視變換來實現,需要已知非共面的4對對應點來確定透視變換矩陣。
本文選定正面人臉圖像的鼻梁中線(即圖2中特征點28、29、30、31的擬合直線)作為眼鏡縱向軸,將兩個外眼角的連線作為眼鏡橫向軸,兩個直線交匯處Q為正面鏡框圖片的中心點,特征點1和17的Y軸距離作為眼鏡的寬度,對眼鏡進行適當縮放。眼鏡圖像上的A、B、C、D點與人臉圖像上的A、B、C、D點一一對應,組成4對對應點,如圖8所示。

圖8 面部和眼鏡圖像正四邊形對應關系Figure 8. Face and glasses image quadrilateral corresponding relationship
以左右旋轉為例,當正面面向相機時,人臉的各點和相機的距離均相等,故AB=CD。當人臉發生旋轉時, 離相機近的一側會變長,遠的一側會變短,所以當頭部向左側旋轉時,AB
本文采取己求得的Yaw值,確定Yaw值與AB、CD長度的比例變換關系,求出左右旋轉任意角度后,A′B′與C′D′的長度大小,從而得出4個點的對應坐標。
以圖9中CD邊為例,當頭部向左旋轉30°時,CD發生形變,變為C′D′,式(8)可計算平均每旋轉1°時CD縮小的比例

圖9 旋轉后的透視變化Figure 9. Perspective changes after the rotation
(8)
式中,s為平均每旋轉1°時CD所縮小的比例值。
同理,當頭部上下晃動時,AC與BD隨著晃動角度也存在“遠大近小”的現象,以AC邊為例,變化后的A′C′與AC存在如下關系
(9)
當人臉存在滾動變化時,僅需對正面眼鏡圖像進行旋轉變換即可,旋轉角度等同于Roll值。
處理完眼鏡圖像后需要對要貼合的人臉圖像進行ROI掩膜處理[18],確定人臉圖像的ROI區域,將該區域選做蒙版。提取眼鏡圖像的4通道值,以第4通道Alpha值為判斷,剔除Alpha值為0的眼鏡圖像部分,將Alpha值為1的眼鏡圖像區域的RGB值寫入蒙版區域,即可完成眼鏡模型與對應角度的人臉圖片的疊加融合。圖片合成效果即為虛擬試戴效果圖。
本文選用帶有關鍵點位置和姿態信息數據的AFLW[19](Annotated Facial Landmarks in the Wild)人臉公開數據庫測試姿態估計算法精度。AFLW人臉數據庫包含18 398張現實世界的被采集者圖像,其圖片的分辨率、背景、光線各不相同,被采集者的年齡、種族、表情、姿態均存在變化,其中水平、擺動和豎直方向角度變化范圍均為-90°~90°。
本文測試集為800張隨機抽取的圖像,當面部各關鍵點存在遮擋情況下,算法無法檢測。為保證實驗結果的有效性,剔除了所有存在關鍵點被遮擋的圖像,最后測試集為660張人臉圖像。
本文算法實時動態姿態估計效果如圖10所示。

圖10 姿態估計效果圖Figure 10. Attitude estimation renderings
測試數據如表4和表5所示。表4中統計了頭部不同姿態變化范圍內的平均誤差,角度范圍為±15°~±60°;表5中統計了各誤差范圍內覆蓋的3種頭部姿態變化圖片數量占比。

表4 姿態估計平均誤差

表5 姿態估計誤差統計結果
由表4可知,本文提出的基于ERT算法的姿態估計算法在轉動角度范圍-60°~60°內平均誤差約為8.8°。由表5可知,93%以上的轉動和俯仰圖像角度估計及86%以上的擺動圖像角度估計誤差范圍為±20°,基本滿足虛擬試戴技術的檢測精度要求。
本文實驗算法環境如下:CPU為Intel(R) Core(TM) i5-6300HQ 2.30 GHz,內存16 GB,Windows10操作系統,編程語言Python3.7,PyCharm集成開發環境,OpenCV 4.1.1庫。
在此環境下選取了部分包括3種姿態變化較為典型的視頻幀圖像對虛擬試戴的效果進行測試。實驗結果如圖 11 所示,橫向3張圖片為一組,最左側為視頻原圖,中間為文獻[20]方法效果圖,最右側為本文算法試戴效果圖。
由圖11可知,本文提出的虛擬試戴技術在試戴者頭部相對于采集相機在正面(如第1行)、轉動(如第2行)、俯仰(如第3行)、擺動(如第4行)以及背景復雜有干擾物、光線強度不均勻、存在少量頭發遮擋的情況下均能較為準確地實現三維試戴,對于遮擋關系及虛實融合的處理自然逼真。文獻[20]中的方法僅能實現水平轉動情況下的虛擬試戴,并非三維空間的多角度試戴。而本文提出的算法能實現三維試戴,針對俯仰和擺動情況下仍能較好地實現對應角度的虛擬試戴,三維虛擬試戴精度更高,立體效果較好,虛實基本無縫融合,試戴真實感更強。

(a) (b) (c)圖11 試戴效果對比圖(a)視頻原始圖 (b)文獻[20]方法 (c)本文方法Figure 11. Comparison of trial effect(a) Original video images (b) The method of literature[20](c) The proposed method
本文最后統計各模塊運行時間,處理一幀圖像各模塊的平均運行時間如表6所示。

表6 各模塊運行時間統計
從表6中可以看出,該虛擬眼鏡試戴系統處理一幀圖像的時間約為20 ms,則試戴時視頻的幀率可以到50 frame·s-1,基本滿足系統對實時性的要求。
本文通過對人臉檢測、面部特征點定位及頭部姿態估計的研究,提出了面部特征點精確定位和頭部三維姿態精確估計方法。根據二維圖片替代三維眼鏡模型,提出基于三維旋轉角度的眼鏡透視變換方法。綜合以上兩種方法,提出一種基于三維空間的多角度虛擬眼鏡試戴技術。實驗結果表明,頭部姿態估計精確,虛擬試戴效果逼真,三維立體效果較好,能根據空間旋轉角度實現三維多角度試戴。由于不用讀取特定的三維鏡框模型文件,試戴系統運行速度較快,能較好地滿足當前眼鏡虛擬試戴需求的時效性和真實性,因此具有良好的應用價值。
當前虛擬試穿試戴領域研究主要集中在衣物穿搭方面, 虛擬眼鏡試戴領域研究較少。下一步工作將集中解決兩方面的問題:(1)人臉特征提取精度有待提高,需進一步降低人臉關鍵點定位檢測誤差,提高算法魯棒性和適用性;(2)合成圖像缺少現實中的光照陰影效果,需進一步提高合成圖像的真實感。