揭秘京東基于計(jì)算機(jī)智能和仿真技術(shù)的虛擬試衣系統(tǒng)
虛擬試衣技術(shù)是增加服裝電商銷量,減少退貨率的有力武器,十多年來(lái)全世界不斷有公司在研發(fā)實(shí)用的商業(yè)解決方案,虛擬試衣商業(yè)解決方案的難點(diǎn)主要在于試衣效果(個(gè)性化程度),用戶操作難度(易用性),運(yùn)營(yíng)成本(虛擬試衣模特與服裝的制作)這三者的良好平衡上。
一款實(shí)用的虛擬試衣商業(yè)解決方案應(yīng)該具有良好的個(gè)性化試衣效果(用戶可接受),簡(jiǎn)單的用戶交互(用戶可上手),低廉的運(yùn)營(yíng)成本(商家可接受)。國(guó)內(nèi)外的虛擬試衣產(chǎn)品
德國(guó)弗勞恩霍夫?qū)W會(huì)的科學(xué)家們用三維儀掃描用戶身材,手工建立服裝建模的方式解決虛擬試衣技術(shù)問(wèn)題,試衣效果較好,但易用性低,一般用戶很難獨(dú)立操作,三維掃描儀價(jià)格較高,用戶無(wú)法做到人手一臺(tái),服裝的建模成本也很高,商家難以接受。
H&M公司開(kāi)發(fā)出標(biāo)準(zhǔn)試衣模特加服裝搭配的虛擬試衣產(chǎn)品,但服裝只能在標(biāo)準(zhǔn)模特身上試穿,模特不能調(diào)整身材,也不能換成用戶的頭像,成本低廉,但沒(méi)有達(dá)到個(gè)性化試衣的目的,用戶仍然只能看到別人(標(biāo)準(zhǔn)模特)試衣的效果,用戶接受度低,實(shí)用程度不高。
加拿大MyVirtualModel公司的解決方案是通過(guò)用戶的頭像照片和身材參數(shù)建立三維虛擬試衣模特,試衣模特的長(zhǎng)相和身材與用戶相似,仿真度高,試穿效果好,但用戶建立虛擬試衣模特的操作難度較高,易用性差,服裝制作的難度和成本也較高,商家接受度低。
愛(ài)沙尼亞的Fits.Me公司研究出精確的服裝褶皺仿真算法,服裝的尺碼仿真度很高,已獲得大筆的風(fēng)險(xiǎn)投資(約1000萬(wàn)美元),但服裝適應(yīng)范圍很窄,目前以襯衫為主,服裝制作成本也很高(約150美金/件)。
他們還研究出了試衣機(jī)器人,該機(jī)器人有2000塊不同的身體模塊,可以模擬大部分人的體形特征,在成衣制造商那里收集各種數(shù)據(jù)存成照片匯入數(shù)據(jù)庫(kù),當(dāng)你網(wǎng)購(gòu)的時(shí)候,只需在網(wǎng)站輸入你的穿衣數(shù)據(jù),試衣機(jī)器人會(huì)重現(xiàn)出穿衣情況,這個(gè)方案的難題在于對(duì)海量的服裝需要在機(jī)器人身上逐一拍照,每種服裝需要拍攝各種身材下的試穿效果照片,拍攝工作量大,不能支持服裝搭配(搭配數(shù)據(jù)海量),不能支持用戶頭像,并且目前也只有上半身的機(jī)器人。
國(guó)內(nèi)也有不少公司也推出了虛擬試衣間產(chǎn)品,但基本都是采用簡(jiǎn)單的二維拼圖技術(shù),達(dá)不到個(gè)性化虛擬試衣的目的,效果不好,用戶接受度低。
y京東虛擬試衣系統(tǒng)的特點(diǎn):
我們來(lái)定義一下個(gè)性化虛擬試衣的功能要求:
1、虛擬試衣模特可以使用用戶自己的頭像;
2、虛擬試衣模特的身材可以自由調(diào)節(jié);
3、虛擬試衣模特的姿勢(shì)可以自由調(diào)節(jié);
4、用戶可以在虛擬試衣模特身上自由搭配服裝;
我們?cè)俣x一下個(gè)性化虛擬試衣產(chǎn)品的商業(yè)化要求:
1、試衣效果較好,對(duì)用戶網(wǎng)上購(gòu)衣具有參考價(jià)值;
2、用戶操作難度低,易用性強(qiáng);
3、不依賴特殊硬件,對(duì)用戶沒(méi)有額外的成本要求;
4、服裝制作速度快,成本低,商家可以接受;
我們的研究成果是從智能和仿真兩個(gè)技術(shù)方向解決個(gè)性化虛擬試衣的功能和商業(yè)化要求,目前已經(jīng)做到通過(guò)用戶頭像照片半自動(dòng)建立用戶試衣模特,通過(guò)服裝照片快速生成可以試穿的虛擬服裝,通過(guò)仿真技術(shù)模擬服裝在不同身材,不同姿勢(shì)模特身上的試穿效果,易用性較好,成本低,是目前業(yè)界最接近商業(yè)化的解決方案之一。京東虛擬試衣系統(tǒng)技術(shù)原理
京東虛擬試衣系統(tǒng)實(shí)現(xiàn)了服裝的平拍(或立體拍)正面照片映射到個(gè)性化試衣模特身上的算法,服裝的平拍正面照片包含了服裝正面的全部圖像信息,服裝的袖子和主體之間沒(méi)有重疊,服裝映射到個(gè)性化試衣模特身上時(shí)根據(jù)模特的身材特征做出適當(dāng)?shù)淖冃?,體現(xiàn)出服裝和模特之間的關(guān)系,能夠在服裝尺碼和搭配上給用戶視覺(jué)提示。
虛擬試衣模特是正面3D的,在正面和3D的約束下,服裝只需要提供正面照片,免除3D建模,成本低廉,3D技術(shù)使試衣模特在Z方向具有深度信息,可以感受燈光的影響,產(chǎn)生立體感,比2D技術(shù)的試衣模特更加具有真實(shí)感。
虛擬試衣模特具有關(guān)節(jié)和蒙皮,可以改變姿勢(shì)和身材,姿勢(shì)的改變通過(guò)關(guān)節(jié)旋轉(zhuǎn)實(shí)現(xiàn),身材的改變通過(guò)關(guān)節(jié)位置的變化和蒙皮的變化實(shí)現(xiàn)。
虛擬試衣模特包含,頸關(guān)節(jié),左肩膀,左手肘,左手腕,右肩膀,右手肘,右手腕,腰關(guān)節(jié),左髖關(guān)節(jié),左膝關(guān)節(jié),左踝關(guān)節(jié),右髖關(guān)節(jié),右膝關(guān)節(jié),右踝關(guān)節(jié)共14個(gè)關(guān)節(jié)。
另外注意,LVS需要向托管商至少申請(qǐng)多一個(gè)ip來(lái)做Visual IP,貌似是不能用本身的IP來(lái)做VIP的。要做好LVS管理員,確實(shí)得跟進(jìn)學(xué)習(xí)很多有關(guān)網(wǎng)絡(luò)通信方面的知識(shí),就不再是一個(gè)HTTP那么簡(jiǎn)單了。
為保證關(guān)節(jié)轉(zhuǎn)動(dòng)時(shí)人體的外輪廓過(guò)渡自然,蒙皮之間通過(guò)高次貝塞爾曲線平滑。
虛擬試衣模特需要和人體皮膚配準(zhǔn),關(guān)節(jié)與真實(shí)人體對(duì)應(yīng),網(wǎng)格上的每一點(diǎn)通過(guò)UV坐標(biāo)映射到皮膚上的像素點(diǎn)。
UV坐標(biāo)是指u,v紋理貼圖坐標(biāo)的簡(jiǎn)稱,它定義了圖片上每個(gè)點(diǎn)的位置的信息。這些點(diǎn)與3D模型是相互聯(lián)系的,以決定表面紋理貼圖的位置。就好像虛擬的"創(chuàng)可貼",UV就是將圖像上每一個(gè)點(diǎn)精確對(duì)應(yīng)到模型物體的表面。
在點(diǎn)與點(diǎn)之間的間隙位置由軟件進(jìn)行圖像光滑插值處理.這就是UV貼圖。UV坐標(biāo)的取值范圍一般是[0,1]圖像的左上角UV坐標(biāo)值是[0,0],圖像的右下角UV坐標(biāo)值是[1,1]。
在初始圖中,模特身體圖和虛擬試衣模特骨骼圖是匹配的,輪廓線內(nèi)所有三角形的頂點(diǎn)在圖像的中的位置正好等于其UV坐標(biāo)值,模特身體不發(fā)生任何變形。
U=X/W
V=Y/H
式中:X是頂點(diǎn)到圖片左邊的像素距離,W是圖片在X方向的總像素?cái)?shù)量,Y是頂點(diǎn)到圖片上邊的像素距離,H是圖片在Y方向總像素?cái)?shù)量。
虛擬試衣模特的頭部由128個(gè)點(diǎn)確定邊緣,每個(gè)點(diǎn)向中心連線和旁邊的點(diǎn)組成三角形,所有的三角形組成人臉輪廓包括內(nèi)部填充,人臉邊緣還有一排小三角形使邊緣具有漸淡的虛化效果,使人臉和背景的結(jié)合更加自然融洽。
用戶頭像自動(dòng)從用戶上傳的照片中提取,這里有一個(gè)關(guān)鍵技術(shù):自動(dòng)定位頭像邊緣。
人臉定位通過(guò)OpenCV的“haarcascade_frontalface_alt.xml”模板,調(diào)用detectMultiScale函數(shù)獲取人臉定位矩形框,該矩形框的中點(diǎn)是三角形的中心點(diǎn)。
人臉的邊緣點(diǎn)通過(guò)人臉邊緣檢測(cè)自動(dòng)定位,檢測(cè)的方法是:
***步,自動(dòng)檢測(cè)照片中的頭像位置,以頭像為中心對(duì)照片進(jìn)行自動(dòng)裁剪,保留頭像,裁剪掉其他無(wú)用的部分。
第二步,以用戶頭像為中心畫(huà)兩個(gè)直徑不同的圓圈,***個(gè)圓圈的直徑和頭像的直徑相同,第二個(gè)圓圈的直徑是頭像直徑的1.5倍。
第三步,設(shè)定圓圈內(nèi)部為頭像,***個(gè)圓圈和第二個(gè)圓圈之間的部分可能是頭像,第二個(gè)圓圈的外部為背景,使用GrabCut算法初步獲得頭像范圍。
第四步,將第三步初步獲得的頭像范圍用封閉曲線包圍起來(lái),并在曲線上均勻分布8個(gè)控制點(diǎn)。
第五步,用戶可以微雕曲線上的控制點(diǎn),使曲線更加靠近頭像邊緣,也可以不調(diào)整。
第六步,將曲線的外部設(shè)定為可能是背景,曲線的內(nèi)部設(shè)定為可能是頭像,再次使用GrabCut算法獲得精確的頭像邊緣。
頭像邊緣調(diào)整過(guò)程中,關(guān)鍵點(diǎn)之間的曲線使用Catmull-Rom曲線插值算法生成,Catmull-Rom算法通過(guò)4個(gè)關(guān)鍵點(diǎn)P0,P1,P2,P3獲取位于P1和P2之間的任意點(diǎn),用參數(shù)t來(lái)確定點(diǎn)和P1,P2的位置關(guān)系,t=0表示點(diǎn)和P1重合,t=1表示點(diǎn)和P2重合,t在[0,1]之間表示點(diǎn)位于P1至P2之間。
P1至P2之間的點(diǎn)通過(guò)以下公式求出:
式中,q(t)表示由參數(shù)t確定的位于P1-P2之間的點(diǎn)。t的取值范圍[0,1]
為了使頭像和軟件中事先準(zhǔn)備好的模特身體完整地結(jié)合在一起,需要對(duì)頭像的膚色進(jìn)行檢測(cè),用檢測(cè)的結(jié)果調(diào)整身體的膚色,使兩者的膚色基本一致。
膚色檢測(cè)的算法為:
***步,將虛擬試衣模特身體圖片中的膚色分解成RGB分量并求平均值;
第二步,定位用戶頭像的邊緣,并用曲線將邊緣連接起來(lái)形成封閉區(qū)域;
第三步,將曲線包圍的封閉區(qū)域分成頭發(fā)區(qū)域和臉部區(qū)域兩個(gè)封閉區(qū)域;
第四步,對(duì)臉部區(qū)域內(nèi)每一個(gè)像素點(diǎn)判斷是否為屬于膚色范圍;
第五步,對(duì)臉部區(qū)域內(nèi)屬于膚色范圍的所有像素點(diǎn)求RGB分量平均值;
第六步,將第五步得到的RGB分量平均值除以***步得到的RGB分量平均值得到身體膚色RGB分量調(diào)節(jié)因子;
第七步,將身體圖片中的膚色RGB分量分別乘以第六步得到RGB分量調(diào)節(jié)因子,以匹配用戶頭像膚色;
第八步,將匹配好膚色的身體圖片和用戶頭像組合在一起得到整體感良好的完整虛擬試衣模特。
如果滿足公式的條件,則顏色屬于膚色范圍。虛擬試衣中的服裝分為上衣,褲子和配飾,每種服裝都有相應(yīng)的結(jié)構(gòu),比如上衣結(jié)構(gòu):
結(jié)構(gòu)由關(guān)鍵控制點(diǎn)和3D網(wǎng)格構(gòu)成,關(guān)鍵控制點(diǎn)起到骨架的作用,可以調(diào)節(jié)服裝的尺寸和形狀,3D網(wǎng)格用于渲染出具有立體感和質(zhì)感的服裝效果。京東iPad版虛擬試衣產(chǎn)品
for iPad v1.1版的主界面左側(cè)是虛擬試衣模特,右側(cè)是服裝列表,分成上裝,下裝,鞋子,配飾4類(后續(xù)版本還會(huì)增加其他品類),下面的橫條是工具欄,用戶點(diǎn)擊工具欄上的文字切換相應(yīng)的功能。
用戶可以用內(nèi)置的虛擬試衣模特試衣,也可以體驗(yàn)個(gè)性化試衣,要體驗(yàn)個(gè)性化試衣首先需要用戶提供一張正面免冠頭像照片,就像證件照一樣。點(diǎn)擊工具欄上的“用戶拍照”即可用iPad內(nèi)置的攝像頭拍攝一張頭像照片,拍攝照片的時(shí)候需要注意背景,光線和姿勢(shì),選擇干凈的淺色背景為佳,光線明亮均勻,頭部保持正向,目光平視為好。
照片拍好后幾秒鐘后會(huì)告知用戶識(shí)別結(jié)果,如果識(shí)別成功,用戶可以選擇性別,并進(jìn)入頭像個(gè)性化界面。界面左側(cè)是軟件幫用戶自動(dòng)建立的虛擬試衣模特,界面右側(cè)是用戶的頭像照片和軟件自動(dòng)識(shí)別出的頭像輪廓,如果用戶對(duì)軟件識(shí)別出的輪廓精確度不夠滿意,可以在這個(gè)界面上手動(dòng)修飾一下。
移動(dòng)完小圓點(diǎn),用戶會(huì)發(fā)現(xiàn)小圓點(diǎn)之間的紅色的頭像輪廓線變得非常光滑,缺乏一些頭像的細(xì)節(jié),比如耳朵,頭發(fā)的復(fù)雜邊緣,這時(shí)可以點(diǎn)擊一下下邊工具條上的“美化邊緣”按鈕,軟件會(huì)自動(dòng)幫用戶找到這些細(xì)節(jié)所在,使右邊的虛擬試衣模特看上去更加真實(shí),更加自然。
軟件會(huì)自動(dòng)幫用戶識(shí)別頭像的位置,大小和膚色,準(zhǔn)確地將頭像和虛擬試衣模特的身體結(jié)合在一起,虛擬試衣模特身體的膚色會(huì)和頭像的顏色自動(dòng)匹配。
有時(shí)候,由于用戶頭像照片中的光線,姿勢(shì),發(fā)型的差異,精確度會(huì)有些差異,比如虛擬試衣模特的頭部顯得有點(diǎn)偏,大小不太合適,這時(shí)用戶可以非常方便的在這個(gè)界面進(jìn)行微調(diào)。
好了,現(xiàn)在虛擬模特的頭像調(diào)好了,頭像已經(jīng)個(gè)性化了,但身材還沒(méi)有調(diào)節(jié),請(qǐng)點(diǎn)擊下邊工具條最右邊的“確認(rèn)頭像”按鈕進(jìn)入身材個(gè)性化界面。
在這個(gè)界面中,首先用戶可以用手指滑動(dòng)左側(cè)上邊的兩個(gè)滑動(dòng)條調(diào)節(jié)虛擬試衣模特的身高和體重,身高和體重的變化會(huì)立刻反映在界面中間的虛擬試衣模特身上,調(diào)節(jié)好身高和體重后,如果對(duì)身材還有一些個(gè)性化需求,則可以有8個(gè)體型特征可以調(diào)節(jié),個(gè)性化完畢,請(qǐng)點(diǎn)擊面工具條最右側(cè)的“完成確認(rèn)”進(jìn)入虛擬試衣界面。
現(xiàn)在,你可以盡情地給你的虛擬試衣模特搭配服裝了,點(diǎn)擊虛擬試衣界面右側(cè)的服裝列表上服裝即可給虛擬試衣模特穿脫衣服,衣服含有層次屬性,用戶只要點(diǎn)擊(或者拖拽到虛擬試衣模特身上)即可,服裝會(huì)按正確的層次試穿,比如西裝一定會(huì)穿在襯衫的外面,不管用戶先穿西裝還是襯衫。
本文作者:京東研發(fā)CTO辦公室資深架構(gòu)師 趙剛