陳金文, 王 鑫, 羅煒豪, 梅琛楠, 韋京艷, 鐘躍崎,2
(1. 東華大學 紡織學院, 上海 201620; 2. 東華大學 紡織面料技術教育部重點實驗室, 上海 201620)
近年來,以虛擬現(xiàn)實,增強現(xiàn)實以及混合現(xiàn)實技術為依托的元宇宙概念蓬勃發(fā)展。特別是基于用戶個性化定制的虛擬化身,在虛擬現(xiàn)實中的應用愈發(fā)廣泛。從技術構成的角度而言,三維著裝人體的實現(xiàn)已經(jīng)較為普遍[1-2],但是能夠將用戶的頭面部特征賦予著裝人體,在虛擬現(xiàn)實乃至元宇宙場景中加以應用,依然是一個值得深入探索的命題。有鑒于此,本文提出通過最少量的輸入,僅需用戶的單張面部正面照片重建其三維頭部模型,并通過紋理融合與修復技術,統(tǒng)一面部、頸部與身體部位的紋理膚色,且整個過程無需人工干預,能夠自動實現(xiàn)具有用戶特征的定制化著裝人體,用于各種虛擬現(xiàn)實的應用場景。
在基于單張圖像重建人臉方面,有學者[3]提出了一種使用卷積神經(jīng)網(wǎng)絡(CNN)從單個二維圖像直接重建三維面部的方法,該方法還可以處理從網(wǎng)絡上下載的任意面部圖像,即任意姿勢、面部表情和遮擋的面部圖像,但重建的三維面部精度不高;Hu等[4]和Lattas等[5]認為單張圖像的人臉重建雖然顯示效果良好,但重建的三維人臉包含偽像,在應用上仍具有局限性;文獻[6]提出了一種基于單張圖像重建人臉的方法,通過設計新的細節(jié)連續(xù)損失函數(shù),將人臉細節(jié)中的身份和表情獨立區(qū)分,使得生成的三維用戶人臉的表情可以根據(jù)新的表情系數(shù)進行驅動生成動畫,并且生成的三維人臉重建精度高,對遮擋,光照,姿態(tài)變化都更加魯棒性,但紋理映射只局限在人臉,缺乏整體紋理的補全與映射;何華赟[7]在基于單張照片重建三維人臉的網(wǎng)絡中提出利用特征點求解人臉參數(shù)化模型的參數(shù),利用人臉圖像的高頻信息對細節(jié)增強,利用反照率參數(shù)化模型對貼圖補全,但該參數(shù)化紋理貼圖存在一定的細節(jié)丟失。
在基于頭面部特征的定制化著裝人體方面,李俊等[8]提出一種基于模特和用戶照片的虛擬試衣方法,其中包括膚色替換、頭部替換和體形調節(jié)3個步驟,該方法雖然重建速度快,但是基于二維的虛擬重建用戶的互動性不夠,試衣時不能全方位觀察著裝效果;許艷秋[9]通過對用戶人臉進行三維掃描,編制了面向虛擬試衣的三維臉部特征轉換軟件,建立面向真人三維虛擬試衣的三維臉部特征提取與重構系統(tǒng),最終實現(xiàn)真人與三維虛擬試衣人模之間的臉部特征的有效連接,但重建效果與用戶真人差距大,應用范圍有限。Pinscreen公司推出的基于單張圖片的三維人臉重建技術加上人體重建后,實現(xiàn)了基于頭部重建的三維虛擬著裝人體,但紋理映射只針對臉部進行處理,臉部與身體邊緣有明顯的膚色拼接痕跡。Styleme和Virtisse公司通過用戶手動輸入人體參數(shù)重建大致三維人體,但用戶的膚色、發(fā)型和臉部都用模板代替,用戶真實體驗感仍有待提高。
由此可見,目前的技術進展已經(jīng)可以利用模板人臉或頭部模型,通過深度學習技術,從單張照片推理用戶的三維面部特征。但是所得人臉的紋理,通常與頸部和身體部分的紋理膚色相去甚遠,不能自然融合。針對這個問題,本文提出一種頭面部紋理融合與修復技術,使得所生成的頭面部模型能夠與著裝人體無縫銜接。
DECA(detailed expression capture animation)網(wǎng)絡通過重構損失、特征點映射損失、閉眼損失、光照損失、身份損失以及形狀一致性損失等一系列損失函數(shù),迫使深度神經(jīng)網(wǎng)絡在推理過程中同時關注頭面部的整體及細節(jié)特征;因此,所得三維人臉的幾何模型精度較高,但是該網(wǎng)絡對于局部空間上的紋理映射,以及顏色空間上的膚色變換,缺乏相應的優(yōu)化對象,所得面部的初始紋理需要根據(jù)用戶的頸部以及身體紋理膚色加以處理。
在虛擬現(xiàn)實的應用場景中,著裝人體的紋理通常分為服裝紋理、身體紋理以及面部紋理。圖1示出頭面部紋理融合與修復流程圖。將原始著裝人體的頭頸部紋理中的面部紋理刪除,并令得到的頭頸部模板紋理為Um,根據(jù)用戶(本文涉及的人臉均來自對抗生成網(wǎng)絡合成的虛擬人臉)照片,輸入所得DECA面部初始紋理UO(分辨率為256像素×256像素),本文研究旨在通過一系列的圖像處理,得到二者自然融合的頭面部紋理Ure,并將該紋理映射在三維頭面部模型上進行渲染,如圖1(e)所示,可在不同角度得到很好的渲染效果。
圖1 頭面部紋理融合與修復流程圖Fig. 1 Flow chart of facial texture fusion and repairing. (a) Image input by user; (b) Initial texture U0; (c) Head and neck template texture Um; (d) Texture Ure generated by proposed method; (e) Texture mapping rendering results
用戶輸入的正面人臉照片大多數(shù)情況下會因環(huán)境光和自然光的影響,造成左右兩邊的膚色亮度不一致,若直接作紋理映射,會導致左右面部的顏色差異大,不利于后續(xù)的渲染應用。為解決這個問題,本文在保留用戶原本面部信息的基礎上,采用光照校正算法[10],利用光照分量的分布特性調整二維伽馬函數(shù)的參數(shù),降低光照過強區(qū)域圖像的亮度值,提高光照過暗區(qū)域圖像的亮度值,最終實現(xiàn)對光照不均勻紋理圖像的自適應的校正處理,使兩邊皮膚的亮度差異縮小(見圖2),具體實現(xiàn)步驟如下。
圖2 光照校正流程圖Fig. 2 Flow chart of illumination correction
1)將RGB顏色空間轉換為HSV顏色空間,對亮度通道進行卷積核大小為5×5的高斯卷積濾波,并計算光照分量I(x,y)。所用高斯核函數(shù)如下:
I(x,y)=F(x,y)G(x,y)
2)采用伽馬函數(shù)γ對光照分量進行處理,從而降低光照過強區(qū)域的亮度值,并提高光照過低區(qū)域的亮度值:
式中:γ為用于亮度增強的指數(shù)值(包含了圖像的光照分量特性);m為光照分量的亮度均值。O(x,y)為校正后的輸出圖像的亮度值。為便于后續(xù)應用,再將HSV顏色空間轉換為RGB顏色空間。
DECA網(wǎng)絡生成的初始紋理只有中心區(qū)域的面部紋理,側臉部分的紋理有殘缺(見圖1)。為獲得完整的面部紋理,需要先剔除經(jīng)過前述光照校正后所得紋理圖像U中的頭發(fā)遮擋和背景,提取有效的面部紋理Utex,再進行紋理補全修復。
圖3示出面部紋理提取流程圖。首先根據(jù)紋理中人臉的膚色和輪廓得到二值化的面部掩膜Umask(即面部和眼睛區(qū)域的像素值為0,其余區(qū)域像素值為1)。然后將校正結果U與Umask逐元素相加運算,得到面部紋理Utex。在此基礎上,為使得面部紋理邊緣與頸部的紋理顏色過渡自然,首先計算Utex邊緣像素的RGB均值作為膚色填充值,得到純色圖像Im。再將Im與頭頸部模板紋理Um進行混合相加運算,即可得到膚色轉換后的頭頸部紋理Uhead(如圖4所示)。
圖3 面部紋理提取流程圖Fig. 3 Flow chart of facial texture extraction
圖4 膚色轉換效果Fig. 4 Skin color conversion effect. (a) Solid color image Im; (b) Head and neck template texture Um; (c) Head and neck texture Uhead
qIm+(1-q)Um=Uhead
式中,q為權重系數(shù)。
不難發(fā)現(xiàn),若將代表用戶面容的紋理Utex與Uhead直接疊加,二者間會存在一個空白區(qū)域Ublank如圖5所示。為使得該區(qū)域填色后盡可能與Uhead和Utex自然融合,將其當作一個圖像修復任務(image in-painting),利用深度神經(jīng)網(wǎng)絡,采用兩步修復法對其中的紋理進行補全。
圖5 未補全的紋理圖Fig. 5 Incomplete texture map
圖6為紋理補全流程圖。為補全面部紋理,首先對分辨率為256像素×256像素的Utex放大至286像素×286像素(多次實驗結果表明,眼睛到臉部邊緣的像素差值約為15),并從中心截取分辨率為256像素×256像素的區(qū)域,得到紋理Usym;然后將Utex的背景透明化與Usym進行圖像疊加,對邊緣處采用基于圖像周圍關系輔助的修復方法[11],得到初步補全的紋理Ua。然后將Ua的背景透明化與Uhead進行圖像疊加,對空白區(qū)域使用基于快速行進的方法[12]進行修復,接著使用掩膜提取UO紋理上方的眼部紋理并透明化,與修復的紋理進行疊加即可得到補全的紋理Ure。
圖6 紋理補全流程圖Fig. 6 Flow chart of texture completion
經(jīng)過上述處理,可將用戶頭面部紋理自然融入原始著裝人體的頭頸部紋理Um中。為進一步提高真實感,將此時的頭面部紋理作為輸入風格圖像,而將原始身體紋理作為輸入內容圖像,通過神經(jīng)網(wǎng)絡進行風格遷移(見圖7),將身體紋理的膚色自然轉換為與頭面部膚色差異最小化時的結果。由于該任務的核心在于盡可能保留身體紋理的內容,同時約束轉移前后的區(qū)域一致性和膚色風格質量,因此本文采用PAMA(progressive attentional manifold alignment)網(wǎng)絡[13]予以解決,該網(wǎng)絡通過將內容圖像與風格圖像的流形進行對齊,并使用注意力機制使語義區(qū)域之間的風格達到一致。
圖7 身體紋理風格遷移展示圖Fig. 7 Display diagram of body texture style migration
在光照校正的系數(shù)選擇上,本文使用不同用戶的面部紋理圖像做了對比實驗,不同用戶的實驗數(shù)據(jù)結果趨勢基本一致,本文任選其中一位用戶的實驗結果加以說明。結合面部紋理的實際情況,將高斯核函數(shù)的卷積核大小分別取5×5、15×15、25×25、35×35,對初始紋理UO進行圖卷積運算,計算經(jīng)過伽馬光照校正后的紋理U和UO亮度V的平均差值。然后對左右兩邊的面部紋理U各使用像素大小為25直徑的圓形進行掩膜提取,計算左右兩邊亮度V1的總和差值。圖8、9分別示出不同卷積核的亮度差值及其光照校正后的結果??梢钥闯?當卷積核大小為5×5時,整體亮度V的平均差值最大,說明光照校正后,紋理U比UO的整體亮度提高;兩邊局部亮度V1的總和差值最小,說明左右兩邊的亮度差距縮小了。且初始紋理UO的左右兩邊局部亮度V1的總和差值為163.18,當卷積核為5×5時,左右兩邊局部亮度V1差距減少了23.1%(如圖2所示),說明光照校正確實能縮小用戶面部紋理的亮度差,提高面部的光照均勻度。
圖8 不同卷積核的亮度差值Fig. 8 Brightness difference of different convolution kernels
圖9 不同卷積核光照校正后的結果Fig. 9 Results after illumination correction of different convolution kernels. (a) Convolution kernel of 5×5; (b) Convolution kernel of 15×15; (c) Convolution kernel of 25×25; (d) Convolution kernel of 35×35; (e) Circular mask with diameter pixel of 25; (f) Mask extracted face part
在確定卷積核大小為5×5的前提下,進一步分析驗證尺度因子c的最佳取值,實驗結果如圖10所示??梢姴煌叨纫蜃觕對亮度V和V1的影響較小,但綜合來看,最終選取左右兩邊局部亮度V1的總和差值最小時,即尺度因子c為5用于校正面部紋理的亮度。
圖10 不同尺度因子c的亮度差值Fig. 10 Brightness difference of different scale factors c
面部紋理自動修復的核心是膚色轉換和二次修復。就膚色轉換而言,將Im與頭頸部模板紋理Um進行混合相加運算,本文對不同權重系數(shù)q進行了對比實驗,結果表明權重系數(shù)q=0.4時,得出的頭頸部紋理Uhead與面部膚色最接近且同時能保留頭頸部模板紋理Um的皮膚肌理,如圖11所示。
圖11 不同權重因子q的膚色轉換結果Fig. 11 Skin color conversion results of different weight factors. (a) q=0.1; (b) q=0.2;(c) q=0.3; (d) q=0.4; (e) q=0.5; (f) Extracted texture Utex
對于紋理修復任務而言,當只使用基于圖像周圍關系輔助的修復方法時,面部紋理Utex與頭頸部紋理Uhead的邊緣融合效果差,有偽像,如圖12(a)所示。當只使用基于快速行進的修復方法時,面部紋理Utex與頭頸部紋理Uhead的邊緣雖然融合效果好,但修復的區(qū)域紋理來自頭頸部紋理的邊緣擴散,如圖12(b)所示。只有當2種方式相結合時,效果最佳,如圖12(c)所示。由于在光照校正過程中,用戶的眼部紋理也參與了光照亮度調整,如原始的眼睛顏色由黑色變?yōu)楹稚?故在執(zhí)行紋理修復操作前,預先使用掩膜提取初始紋理的眼部區(qū)域,再與修復后的圖12(c)紋理進行疊加,得到最終的補全紋理Ure,如圖12(d)所示。
圖12 不同方法修復紋理的結果Fig. 12 Results of texture repairing by different methods. (a) Assisted repairing; (b) Rapid repairing; (c) Reparing by two methods; (d) Finally completed texture Ure
圖13示出使用本文方法對不同用戶進行紋理修復的結果??梢钥闯?對原始紋理進行修復補全后,用戶頭面部模型的紋理與原始三維著裝人體模型中的頸部膚色相似,邊界融合自然,且保留了用戶原始的面部信息,整個過程無需用戶干預,說明本文方法是合理有效的。
圖13 紋理修復結果展示Fig. 13 Texture repairing results. (a) User′s frontal view; (b) Initial texture map; (c) Results of proposed method; (d) Initial texture rendering result; (e) Rendering results of proposed method
圖14示出本文方法與其它基于單張圖像的頭面部紋理修復方法的比較結果。可以看出:Avatar SDK網(wǎng)頁生成的用戶膚色與實際差別大,且不能保留用戶眼睛周圍區(qū)域的特征[14];BFM是一種基于DECA的頭面部紋理修復方法[15],但生成的結果不真實,與用戶差異大;本文方法能極大地保留用戶自身的面部特征,而且不受神經(jīng)網(wǎng)絡的影響,針對常規(guī)背景下正臉的修復成功率達到100%,體現(xiàn)出本文的創(chuàng)新性。在修復時間上,本文修復一個用戶的紋理平均耗時1.4 s,以圖14的3個用戶為例,在2臺1080ti顯卡的電腦上,Avatar SDK方法共耗時113.47 s,人均37.82 s;BFM方法共耗時38.50 s,人均12.83 s;DECA方法共耗時19.80 s,本文方法的修復時間是24 s,人均8 s。有效說明了本文方法在修復時間上的優(yōu)越性,能快速根據(jù)用戶輸入的自拍正臉圖像生成對應的全紋理三維頭部模型。
圖14 與其它基于單張圖像的頭面部紋理修復方法的比較Fig. 14 Comparison with other head and face texture repairing methods based on single image. (a)Input image; (b) Results of Avatar SDK; (c) Results of BFM; (d) Results of proposed method
著裝人體的紋理通常分為服裝紋理,身體紋理,以及面部紋理。通過1.1和1.2節(jié)的方法,已經(jīng)得到修復后的用戶面部紋理Ure,為實現(xiàn)在虛擬現(xiàn)實中著裝人體的身體紋理與用戶面部紋理具有相似的皮膚肌理,采用PAMA風格遷移網(wǎng)絡。圖15示出風格遷移結果。圖15(a)所示的著裝人體的原始身體紋理膚色偏白,并不適用于代表用戶的身體紋理;圖15(b)所示的經(jīng)過風格遷移后的用戶身體紋理,與頭面部膚色差異最小,過渡自然;圖15(c)所示的使用1.2節(jié)膚色轉換的方法對身體紋理進行處理的結果,其與面部膚色仍有一定的差距,效果不及風格遷移。
圖15 風格遷移結果Fig. 15 Style migration results. (a) Original body texture; (b) Body texture of style transfer; (c) Body texture converted by weight coefficient method
在生成帶紋理的頭面部模型后,可將其安裝在三維著裝人體上。該過程中主要涉及頭部的仿射變換,姿態(tài)校準,與身體融合的布爾(加)運算等,由于這些內容屬于虛擬試衣領域的常見技術,在此不做贅述。
圖16示出在虛擬現(xiàn)實中的應用效果。根據(jù)單張用戶照片(見圖16(a))所生成的三維頭面部模型與著裝人體(見圖16(b))進行頭面部替換,得到用戶的著裝人體(見圖16(c)),用戶的頭面部模型與著裝人體融合自然,且對用戶替換不同發(fā)型后能夠得到不同的妝發(fā)效果(見圖16(d)、(e))。圖17示出用戶的著裝人體在不同虛擬現(xiàn)實(VR)場景中的渲染結果,可以看出該模型在室內室外不同的光照環(huán)境下,均能呈現(xiàn)真實的光影明暗效果,證明了本文方法用于虛擬場景的實用性。
圖17 虛擬現(xiàn)實渲染效果展示Fig. 17 VR rendering effect. (a) VR scene 1; (b) VR scene 2; (c) VR scence 3
本文從虛擬現(xiàn)實的應用出發(fā),對著裝人體的個性化頭面部紋理生成進行研究,提出一種頭面部紋理融合與修復技術。輸入單張正面人臉圖像,利用DECA神經(jīng)網(wǎng)絡生成初始紋理,并對其進行光照校正和紋理修復,接著利用PAMA神經(jīng)網(wǎng)絡進行風格遷移,最終生成完整的頭面部紋理和對應的身體紋理,解決了不同來源的頭面部紋理與身體紋理膚色的自然融合問題,能滿足各種VR環(huán)境下的虛擬試衣應用。