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