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