TELA: 最先進文本描述生成3D穿衣人體方案!支持虛擬試衣,上海AI Lab&網易等聯合發布 精華
論文鏈接:https://arxiv.org/pdf/2404.16748
今天和大家分享的這個工作,核心是解決了從文本描述生成3D穿著衣物的人體的任務。先前的工作通常將人體和衣物編碼為一個整體模型,并在單階段優化中生成整個模型,這使得它們在進行服裝編輯時困難重重,同時失去了對整個生成過程的細粒度控制。為了解決這個問題,本文提出了一種分層式的穿著人體表示方法,結合漸進優化策略,可以生成解耦的3D人體模型,同時提供對生成過程的控制能力。基本思想是逐步生成一個穿著最少的人體和分層的衣物。在衣物生成過程中,提出了一種新的分層組合渲染方法來融合多層次的人體模型,并利用新的損失函數幫助將衣物模型與人體解耦。所提出的方法實現了高質量的解耦,從而為3D服裝生成提供了一種有效的方式。大量實驗表明,本文的方法在實現最先進的3D穿著人體生成的同時,也支持諸如虛擬試穿等服裝編輯應用。
引言
在諸如AR/VR、沉浸式遠程會議和虛擬試穿等各種應用中,生成3D穿著人體非常必要。在這些應用中,希望生成過程具有高度可控性和可分離性,即人體模型及其一組衣物可以獨立創建,并同時支持自由更換和轉移衣物。這需要對人體模型和衣物進行忠實的解耦。雖然手動生成這種分解的穿著人體可能耗時費力,但根據復雜采集系統(例如3D掃描和多視角視頻)的輸入進行自動生成也是不可伸縮且難以訪問的。在實際應用中,用戶通常希望可以使用簡單的輸入,如文本描述,來創建穿著衣物的人體。
受益于大語言模型和擴散模型的快速發展,一些工作已經開始探索各種文本到3D的任務。最近,DreamFusion提出了利用預訓練的文本到圖像擴散模型,在Score Distillation Sampling(SDS)的指導下,通過基于優化的流程生成3D對象。然而,由于缺乏人體先驗知識,他們仍然在高質量的穿著人體生成方面遇到困難。為了解決這個問題,一些工作將線性混合蒙皮算法整合到基于優化的流程中,極大地提高了生成的穿著人體的質量。然而,這些方法通常將人體模型及其一組衣物表示為一個整體模型,并在單階段優化中生成整個模型。這不僅使得服裝編輯(如衣物更換)不可行,還導致了對整個生成過程的控制喪失(例如,無法指定衣物的內外順序),從而限制了它們的適用性。
本文提出了TELA,一種用于從文本生成衣物解耦的3D人體模型的新方法。所提出的方法引入了一種逐層的穿著人體表示,其中人體和每件服裝分別用獨立的神經輻射場(NeRFs)表示。然后,提出了一種漸進優化策略,按順序生成最小的穿著人體和逐層服裝,這有效地輸出了一個解耦的穿著人體模型,并且提供了足夠的控制使用戶可以控制生成過程,如下圖1所示。
然而,實現高質量的解耦服裝生成是具有挑戰性的。首先,現有的多層表示方法通常在相同空間中定義所有的NeRF層,然后采用Max或Mean操作來合成多層輸出,這可能導致相鄰層之間的穿透,如實驗所示。更合理的做法是在每個NeRF的自己的層空間中定義。然而,如何劃分不同層的區域是未知的。其次,與那些需要準確的部分mask作為輸入的解耦重建方法不同,本文的目標是只使用文本實現解耦,這使得任務更加困難。本文的實驗表明,僅使用基于身體級別的SDS損失不能獲得高質量的衣物解耦。
為了解決這些挑戰,本文首先提出了一種新穎的分層合成方法。在體素渲染過程中,該方法可以根據沿每條射線的每個點的透明度自動劃分不同層的區域。在特定層的劃分區域中,僅利用相應的NeRF來生成密度和顏色,避免了相鄰層之間的相互穿透。對于衣物解耦,本文提出了新穎的雙重SDS損失,同時監督渲染的穿著人體圖像和僅衣物圖像,這給衣物模型增加了更多的規范化,鼓勵它與人體解耦。
大量實驗證明,TELA有效地解耦了人體和每件衣物。由于解耦建模,本文的方法支持虛擬試穿等服裝編輯應用,在先前的方法中很難實現。值得一提的是,從另一個角度來看,本文提出了一種通過同時考慮基礎人體實現高質量3D服裝生成的新方法。
總之,本工作的主要貢獻包括:
- 本文提出了一個新穎的框架,用于從文本輸入生成解耦服裝的3D人體模型,同時也提供了一種有效的方式進行3D服裝生成。
- 本文提出了一種新穎的解耦式衣物生成算法,引入了分層合成方法用于多層渲染,以及雙重SDS損失用于衣物解耦。
- 與整體建模方法相比,本文的方法在實現更好的3D穿著人體生成質量的同時,解耦建模釋放了許多下游應用的潛力(例如虛擬試穿)。
相關工作
文本引導的3D內容生成。利用文本到圖像(T2I)生成模型的顯著進展[39, 41, 42],許多研究已經深入探討了文本到3D生成領域。某些方法[19, 29]主張利用配對的3D和文本數據開發文本條件的3D生成模型。然而,與其圖像-文本對應物相比[46],現有的配對3D-文本數據集規模有限,限制了這些方法的泛化能力。因此,許多研究已經探討了利用預訓練的2D生成模型生成3D內容而無需任何3D數據的方法。早期的研究提出利用CLIP模型[36]優化底層的3D表示(例如神經輻射場[17]或網格[20]),通過最小化渲染圖像與相應文本描述之間的嵌入差異。由于CLIP空間容量有限,這些努力通常導致生成不現實的3D模型。最近,[23, 35]提出利用強大的文本到圖像擴散模型進行帶有分數蒸餾采樣(SDS)的優化,取得了令人印象深刻的結果。此外,[50]提出了一種基于粒子的變分方法,即變分分數蒸餾,以增強3D生成的質量。盡管這些方法在一般對象生成方面取得了成功,但它們在實現高質量的穿著人體模型生成方面仍面臨挑戰。
文本引導的3D人體生成。在2D預訓練生成模型的基礎上,有幾項研究旨在通過引入人體先驗來增強3D人體生成。Avatar-CLIP [13]通過將神經輻射場集成為3D人體表示來增強參數化人體模型SMPL [3],然后利用CLIP模型進行優化。同樣,利用參數化人體模型作為人體先驗,一些工作[5]利用預訓練的文本到圖像擴散模型和分數蒸餾采樣進行3D人體生成。DreamHuman [21]引入了一個可變形和姿態條件的NeRF模型,實現了可動畫的3D穿著人體生成。最近,為了緩解Janus(多面)問題,DreamWaltz [16]引入了3D一致的分數蒸餾采樣。該方法涉及將標準3D人體骨架投影到每個視圖,并采用2D人體骨架條件的擴散模型 [58] 進行視圖對齊優化,取得了令人印象深刻的結果。AvatarVerse [57] 將人體骨架條件替換為密集姿態映射。此外,TADA [22] 將NeRF模型替換為可變形的SMPL-X [31] 網格和紋理貼圖,將結果無縫集成到現有的計算機圖形工作流程中。HumanNorm [15] 提出通過微調擴散模型來生成法線貼圖,實現了顯著的人體幾何生成。GAvatar [55] 引入了高斯飛濺表示法進行高效且高質量的人體渲染。盡管這些方法在穿著人體生成方面取得了顯著成功,但它們通常將穿著人體表示為一個整體模型,忽略了分層性質,并面臨著在服裝編輯方面的挑戰。
穿著人體建模。早期方法[1,2,25]通常依賴于參數化人體網格,并結合額外的頂點偏移來進行穿著人體建模。受到隱式函數[26,27,30]的進展的影響,近期的方法[7, 10, 32, 33, 44, 45, 47, 49, 52]展示了令人印象深刻的從圖像和3D掃描中重建或生成穿著人體。通常,這些方法將人體和服裝視為一個整體實體。為了解開人體和服裝的表示,一些研究[6,11,34,53,54]提出了一個多層次的人體表示,實現了從3D掃描、深度傳感器甚至單眼視頻中的高質量重建。這些技術依賴于參數化人體模型[3],然后為服裝重建單獨的層。此外,還有一些作品提出從3D服裝數據集中學習3D生成的穿著模型。BCNet [18]提出了學習基于參數網格的服裝模型,利用網絡來預測對于穿著人體重建至關重要的參數。此外,SMPLicit [9]采用隱式無符號距離函數來表示服裝模型。盡管產生了有希望的結果,但3D服裝數據的受限可用性導致這些服裝模型的不真實和多樣性有限。最近,一些并行的工作[14, 56]也嘗試探索多層次人體生成。HumanLiff [14]從2D圖像中學習分層次的人體生成。然而,他們的服裝模型與人體沒有解耦,這限制了服裝編輯的應用。[56]主要專注于將頭發和頭飾與上半身解耦,而本文探索多層次服裝和人體解耦的生成。[48]提出使用SMPL模型上的偏移網格構造生成解耦的服裝。然而,由于SMPL的拓撲約束,他們無法生成松散的服裝類型,如裙子和裙子。相比之下,TELA支持各種服裝類型,并且可以實現更逼真的渲染。
方法
根據服裝人物的文字描述作為輸入,TELA旨在生成解耦的3D人體模型,其中每件服裝與人體分離。下圖2展示了本文方法的概述。為了解耦每個組件,本文提出了一個由多個神經輻射場(NeRFs)參數化的多層次穿著人體模型,并引入了一種新穎的基于透明度的分層組合渲染方法。然后,設計了一種逐層生成方法,根據文本prompt生成每個組件。
多層次穿著人體模型
與先前的方法不同,本文將穿著的人體分解為最少衣物的人體和多個衣物(例如襯衫、外套和褲子)。衣物的幾何形狀和外觀被表示為神經輻射場 F,這些場由 MLP 網絡實現。為了更好地表示人類的頭發,本文還使用 NeRF 作為最少衣物的人體的表示,而不是網格 [3]。每個組件都表示為一個單獨的網絡。具體來說,對于組件p ,模型可以寫成如下形式:
其中,σ(x) 和 c(x) 表示樣本點 x 的預測密度和顏色。hp(x) 表示可學習的哈希編碼函數 [28]。
此外,與先前的工作類似,本文在 NeRF 空間中定義了一個‘A-pose’人體網格(即 SMPL),以引入人體先驗。具體來說,本文利用 SMPL 網格來確定不同服裝的粗略 3D 區域,例如上半身和下半身的衣物。此外,在 NeRF 優化過程中,3D SMPL 骨架被投影到每個視點,并將生成的 2D 人體骨架與 ControlNet [58] 進行結合進行訓練(詳見下文)。
基于透明度的分層組合
根據預測的密度和顏色,可以通過體積渲染合成新的視圖圖像:
訓練
采用多層服裝人體表示,本文提出了一個漸進生成框架,按順序獲取每個組件模型。該框架不僅確保了每個組件的解耦,還在服裝人體生成過程中提供了增強的靈活性和可控性。具體而言,本文首先生成一個最小化的人體身體,然后逐漸向外部生成服裝。
得分蒸餾抽樣(SDS)。在詳細介紹組件生成之前,本文首先簡要描述一下得分蒸餾抽樣[35]。為了利用文本描述提供的監督,提出了SDS損失來利用預訓練的擴散模型 ?? 進行訓練。給定由 θ 參數化的 3D 模型以及其可微分的渲染圖像 u = g(θ),則 3D 模型參數 θ 的 SDS 梯度可表示如下:
其中,w(t) 表示一個依賴于時間步長 t 的加權函數,ut 為加入噪聲的圖像,y 為輸入的文本prompt。? 是添加到渲染圖像 u 中的注入噪聲。
生成最小穿著身體。生成的第一個組件是最小穿著的身體。與先前的工作類似[16],本文采用了2D人體骨骼條件擴散模型來提高多視圖的一致性。具體來說,依靠預定義的“A姿勢”SMPL網格,本文可以獲得一個3D人體骨骼。然后,當輻射場渲染圖像時,可以通過將3D骨架投影到相同的視點來獲得相應的2D人體骨架。在2D人體骨架s的條件下,SDS損失可以寫成如下形式:
其中yb表示身體的相應文本prompt。此外,本文還引入了一個正則化損失來防止浮動的“輻射云”:
其中,M表示NeRF模型的渲染mask。第一項二進制熵函數BE(·)鼓勵mask二值化,第二項引入稀疏性正則化。λ和λ是常數。
因此,最小服裝身體生成的完整訓練損失如下所示:
服裝生成。給定最小服裝身體,本文旨在逐漸生成每件衣服模型。
當僅使用組合渲染圖像進行訓練時,本文最終可以獲得一個穿著衣服的人的高質量模型。然而,學到的服裝模型往往與身體模型耦合,即得到的服裝模型可能包含人體的部分,如手臂和腿(見下圖7)。為了解決這個問題,本文引入了額外的純衣服 SDS 損失,它鼓勵衣物模型僅包含衣物。具體來說,基于分層組合,本文另外渲染一個只使用衣物模型的圖像,如下所示:
請注意,這里固定了身體模型的參數。
實驗
實現細節。本文對每個 NeRF 模型進行了 10k 次迭代的訓練,使用了batchsize為 1,在單個 A100 GPU 上大約需要 3 小時。NeRF 模型在前 5k 次迭代時以 256 × 256 的分辨率渲染圖像,在后 5k 次迭代時以 512x512 的分辨率渲染圖像。給定描述著衣著人的文本prompt,例如“一個穿著衣物 A、B 的男人”,本文可以通過編程方式生成相應的優化文本prompt,如“一個只穿內衣的男人”用于生成最小衣著體,以及“一個只穿著衣物 A 的男人”和“一件衣物 A”用于生成衣物 A。
與整體建模方法比較
定性比較。為了評估生成的著衣人物的質量,本文將TELA與最先進的整體建模方法DreamWaltz [16]進行比較,后者引入了3D一致性分數蒸餾采樣并取得了令人印象深刻的結果。請注意,雖然存在其他文本到人類生成的方法,但本文關注的是衣物解耦的3D人體生成。這些方法與本文的工作是正交的,本文的方法也可以適應它們的框架。
本文在下圖3中展示了定性結果。DreamWaltz [16]生成的著衣人物衣物模糊且扭曲。相比之下,得益于解耦建模,本文的方法產生了高質量的衣物細節。盡管本文單獨對人體和每件衣物建模,但所提出的方法實現了每個組件的自然組合。此外,第二個人物(即黑人女性)的結果顯示,解耦建模還有助于緩解多面問題。此外,在下圖4中展示了更多著衣人物和解耦的衣物的定性結果。
定量比較。對生成的3D人體模型進行定量評估是具有挑戰性的。本文采用了Fréchet Inception Distance(FID)度量標準,該標準比較了兩個圖像數據集的分布。本文計算了生成模型的渲染圖像與穩定擴散模型產生的圖像之間的FID。如下表1所示,本文實現了較低的FID分數,表明本文的渲染更接近于SD模型的高質量2D圖像。
用戶研究。本文還進行了用戶研究,進一步評估生成的著裝人體與基線[16]的質量。本文隨機選擇了30個文本prompt,并將生成的著裝人體模型渲染為旋轉視頻。在給定這些視頻的情況下,本文要求26名志愿者評估(1)整體著裝人體質量,(2)衣物質量,和(3)與文本輸入的一致性,并選擇其偏好的結果。定量結果如下表2所示,表明所提出的方法在所有三個指標上都比基線獲得了更高的偏好。
定性的衣物生成比較
由于對人體和每件衣物進行了解耦建模,本文的方法還實現了高質量的3D衣物生成。為了評估生成的衣物質量,本文將其與最先進的文本到3D方法進行了比較:DreamFusion [35]、Magic3D [23]和ProlificDreamer [50]。
定性結果如下圖5所示,表明本文提出的方法明顯優于基線方法。首先,如第一行所示(即牛仔褲),即使使用了依賴視角的文本增強技術 [35],基線方法 [23,35,50] 在衣物生成方面仍然存在多面問題。相比之下,通過與人體結合,本文的方法另外引入了基于2D人體骨骼的條件擴散模型來增強多視角一致性,這極大地減輕了多面問題。其次,基線方法通常生成與人體耦合的衣物,而本文的方法實現了高質量的解耦。第三,由于采用了分層的合成渲染,如第二行所示(即無袖連衣裙),本文的方法生成的衣物具有類似真實衣物的中空結構,這對于服裝遷移等應用非常重要。
消融研究
透明度基礎的合成渲染。如前文所述,為了防止相鄰組件的 NeRF 之間的穿透,本文的方法利用透明度基礎的合成渲染來組合多個 NeRF。在這里,本文將其與基線[40,51]進行比較,基線沒有進行這種合成渲染,即直接使用最大操作來融合不同模型的密度,然后使用相應的顏色進行體積渲染。生成的著裝人體模型的定性結果如下圖6所示。正如第一列所示,沒有提出的合成渲染,人體和連衣裙之間存在嚴重的穿透。此外,如第二列所示,本文的合成渲染可以幫助將服裝模型與具有適當尺寸的人體對齊。
雙 SDS 損失。如前文所述,本文提出了用于服裝優化的雙 SDS 損失,即額外引入服裝 SDS 損失。在這里,本文分析了額外服裝 SDS 損失函數的效果。定性結果如上圖7所示。結果顯示,當不使用服裝 SDS 損失時,生成的服裝模型將與人體糾纏在一起。原因是 2D 人體骨架條件的 SDS 損失僅監督著穿著衣物的人體的合成渲染與文本輸入一致,這并不限制服裝模型只包含衣物。相比之下,服裝 SDS 損失為服裝模型提供了額外的約束,可以消除不希望的偽影。此外,正如上文所示,僅使用服裝 SDS 損失,服裝模型無法與人體對齊,而且服裝質量也會下降。因此,提出的雙 SDS 損失對于高質量的服裝生成是有效的。
正則化損失。如前文所述,本文引入了一個正則化損失來防止浮動的“輻射云”。本文分析了這個正則化損失的影響,結果如上圖7所示。去除這個損失會導致在生成的人體和服裝周圍出現浮動偽影。
應用
由于解耦建模,本文的方法支持在同一個人身上自由組合不同的衣物。本文在下圖8中展示了三件衣服(深灰色夾克、珊瑚色T恤和棕色衛衣)和三條褲子(牛仔褲、運動褲和卡其色短褲)的自由組合。
此外,本文的目標還包括促進具有相似體形的個體之間的服裝轉移,考慮到服裝尺碼的相似性,這是一個有價值的追求。雖然 NeRF 模型在表示各種類型的服裝方面表現出色,但在 NeRF 表示下的服裝轉移面臨挑戰。[56] 提議手動調整 NeRF 模型的大小。如下圖9所示,盡管他們可以避免穿透,但調整大小的服裝不能很好地適應新的人。為了解決這個問題,本文引入了一個服裝變形場。具體來說,對于每個服裝模型 p 的樣本點 x,本文使用 MLP 網絡Dp預測其非剛性變形,并利用與服裝生成相同的損失函數(10)。變形場訓練了2.5k步。注意,這里只訓練了變形場的參數。基于變形場,本文的方法可以實現更好的服裝轉移。
此外,本文可以集成線性混合皮膚模塊來生成可動的人體模型。采用類似于 DreamWaltz 的動畫模塊,所提出的方法可以在新的人體姿勢下產生高質量的渲染結果。結果見下圖10。
限制
本文所提出的方法仍然存在以下局限性。首先,本文的生成過程需要幾個小時的優化時間,這比文本到圖像的生成要慢得多。探索更高效和通用的模型 [24] 用于解耦的人體生成可能會顯著提升其適用性。其次,雖然本文的方法可以通過引入線性混合皮膚模塊來支持可動人體生成,就像之前的工作 [16, 21] 那樣,但更有趣的是探索解耦的組件(即身體和衣服)的著裝人體動畫,而不是一個整體模型,這留作未來的工作。第三,當前的人體和衣服都是以 NeRFs 表示的。像 [23] 那樣,可以進一步引入帶紋理的網格表示,這可以無縫地集成到現有的計算機圖形系統中。
結論
總的來說,本文提出了一種新穎的方法,用于從文本輸入中生成解耦的著裝三維人體模型。與以往的方法不同,本文提出了一種多層次的著裝人體表示,并逐步生成每個組件。為了實現更好的解耦,本文首先引入了基于透明度的分層組合渲染,有助于分離相鄰層次。然后,本文提出了新穎的雙 SDS 損失,幫助衣物模型與人體解耦。由于有效的解耦,本文的方法實現了高質量的三維服裝生成。實驗表明,本文的方法不僅實現了更好的著裝人體生成,還支持著裝編輯應用,如虛擬試穿。
本文轉自 AI生成未來 ,作者:Junting Dong等
