火山引擎 live4D 體積視頻方案入選 SIGGRAPH Asia 2023,支持互動體驗
近期,SIGGRAPH Asia 2023(The 16th ACM SIGGRAPH Conference and Exhibition on Computer Graphics and Interactive Techniques in Asia)會議在澳大利亞悉尼舉辦。來自火山引擎多媒體實驗室三維視頻團隊的論文成功入選、并在大會上做展示匯報:
Live4D: A Real-time Capture System for Streamable Volumetric Video (https://dl.acm.org/doi/10.1145/3610543.3626178)
該論文介紹了一種可傳輸的實時體積視頻解決方案:Live4D。該技術利用了深度學習和計算機視覺技術,通過將多個攝像機的圖像進行同步處理,重建出捕獲對象帶有紋理信息的網格模型,將其進行壓縮編碼傳輸后分發(fā)給各個客戶端進行渲染顯示。
Live4D可以根據應用場景和精度需求配置不同數量和位置的雙目RGB相機,能以更低的成本實現體積捕獲系統,并能夠實時地將重建出的數據發(fā)送給用戶;同時還支持互動和沉浸式體驗,用戶可以通過與視頻進行互動,獲得更加身臨其境的體驗。該技術在全息通信、虛擬現實、增強現實和遠程教育等領域具有廣泛的應用前景。
Live4D Showcase
技術挑戰(zhàn)
體積視頻可以看做是傳統視頻的升級。傳統視頻播放每秒30幀的畫面,而體積視頻則播放每秒30個3D模型。因此,觀眾可以自由選擇從任意視角、任意距離(6 degrees of freedom,即6Dof)觀看體積視頻中的內容;可以在手機或電腦屏幕上觀看、也可以通過VR/AR眼鏡觀看。
當前已有的一些體積視頻方案,其場景設置需要上百個相機同時捕獲數據,成本高昂且大部分實時重建方案效果仍有較大瑕疵。
Live4D解決方案
三維數據的獲取
在實驗配置中,技術團隊使用了10組雙目RGB相機來同步捕獲全身數據,以此來獲取實驗數據。為了獲取相機視角下的深度信息,團隊采用了基于深度學習的雙目立體匹配方法,這是目前常用的方法之一。由于現有的方法在耗時和質量上不能完全滿足技術團隊的要求,團隊基于RAFT-Stereo[1] 對其進行了蒸餾訓練,以此來獲取實時推理中更準確的深度。同時,技術團隊還利用TensorRT和自定義的CUDA算子對整個框架進行加速,以此來達到所需的時間和精度。
Live4D Pipeline
為了進一步提升人臉區(qū)域的深度精度,在雙目立體匹配中,技術團隊設計了一種基于強化感興趣區(qū)域 (Region of Interest, ROI)的方法來更精細地獲取該區(qū)域的深度信息,并將其與原先圖像進行融合,以得到質量更高的深度圖。技術團隊還設計了背景摳圖和深度置信度檢測的方法,將背景和不可信的深度進行過濾,以此來得到最終的深度圖,并將其與對應的RGB一起送入后續(xù)的重建流程。
無ROI | ||
強化ROI |
TSDF重建與補全
獲取多個視角的RGB和深度圖后,技術團隊在空間中構建一個容器,離散化分割成更小的體素。為了獲取更精細的結果,需要大量且細小的體素,但身體等非ROI區(qū)域會浪費較多空間和計算資源。因此,團隊采取了層級式的數據結構,讓ROI區(qū)域有更細粒度的體素分布,而在其他區(qū)域每個體素可以有更大的物理尺寸。這樣可以在減少資源消耗的情況下增加ROI區(qū)域的細節(jié)表達。
Left: Same Voxel@[8mm], Right: Hierarchy Voxel@[4m
技術團隊將多個視角的深度圖反投到容器中,將其轉換為截斷符號距離,并通過多視角融合和幾何一致性校驗等方式,將這些深度圖轉換為基于截斷符號距離的表示,即截斷符號距離場(Truncated Signed Distance Field, TSDF)。由于視角稀疏、觀測模型存在自遮擋等問題,重建出的TSDF場存在很多缺失。因此,技術團隊提出了一種基于TSDF Volume的補全方法,利用在構造的數據集中預訓練好的三維深度神經網絡,快速地對缺失的區(qū)域進行補全。相比于其他基于Occupancy的方法,該團隊的方法擁有更好的補全效果,并且相比于Function4D[2] 等提取圖片信息處理的方案來說,該團隊提出的方法速度也有所提升。
補全方法對比
非剛性追蹤
體積視頻和視頻一樣,也需要追求其時域穩(wěn)定性。由于體積視頻每一幀實際上是一個包含貼圖的三維網格模型,因此技術團隊利用非剛性追蹤 (Non-Rigid Tracking) 的方法來保持三角形網格在時序上的一致性。
技術團隊基于嵌入形變關鍵點(Embedded Deformation Nodes (EDNodes))[3] 來表達重建物體表面整體的形變場(deformation field)。整個計算過程通過在GPU上使用LM(Levenberg-Marquard)算法來求解局部ICP問題來高效地計算。利用形變場,技術團隊將每個體素拆分成的四面體 (Tetrahedra) 柵格,進行時域上的TSDF場的混合,來完成時域的均值濾波,使得隱表面重建在時域穩(wěn)定。
Left->Right: 隨時序Mesh變穩(wěn)定
另一個問題是如Fusion4D[4] 等tracking方法在前后幀運動差距過大時會出現tracking失敗的情況,而出現這種情況會導致最終重建出的三角形網格有非常嚴重的錯誤。具體來說,技術團隊會評估變形后的TSDF場與補全后的TSDF場之間的每個體素對齊誤差,對于未對齊的voxel認為其是追蹤失敗的部份,對于這些voxel,團隊更信賴補全的結果而不是tracking的結果。用這種融合方式,對于上述提到的運動差距過大導致追蹤失敗的場景也能有較好的結果。
追蹤失敗情況與Fusion4D方法的對比
紋理生成
紋理生成需要解決兩個問題,一個是計算出網格模型表面任意一點的顏色;另外就是計算出三維網格到二維圖像的映射,將計算出的顏色存放在二維圖像上便于傳輸與圖形管線的渲染。
多視圖紋理混合
首先是計算網格模型表面的顏色。技術團隊使用多視圖混合算法來計算紋理,綜合考慮著色邊界及法線方向來設計了一種混合權重,消除了多視角混合中的色差、接縫等紋理生成質量的問題。
曲面重參數化圖片
同時技術團隊設計了一個可并行的高效重參數化算法,通過對球面采樣來預設正交投影方向,重建模型執(zhí)行深度剝離(depth peeling)算法來劃分可視層級。通過投影方向和可視層級來標記面片所屬的標簽。對所有面片的所有候選標簽執(zhí)行圖割(Graph-cut)算法來劃分網格模型表面的連通域。團隊對網格模型構建半邊結構,并實現并行帶環(huán)信念傳播(Loopy blief propagation)算法來優(yōu)化求得近似最優(yōu)解。對于所有連通域,技術團隊使用平面重參數方法并將其映射并排列得到最終的紋理貼圖。
壓縮及傳輸
直接重建出的網格點面數量巨大,可達百萬面片, 為了便于網絡傳輸,減少帶寬占用,需要對三維重建結果進行簡化和壓縮。除了簡化的時候盡量保持原有的幾何特征要求以外,在當前場景下,對簡化算法的實時性,臉部等ROI區(qū)域的幾何特征保持都有著要求。
- 團隊開發(fā)了一套帶ROI信息的GPU簡化算法, 并行取多組邊評估其二次方度量誤差,選出每組中誤差最小的邊進行坍縮。同時提高ROI區(qū)域內的邊的誤差等級以減少ROI區(qū)域的簡化損失。
- Draco&H265壓縮傳輸,網格信息同步于SEI中
采用Draco[5] ,利用連通性、量化、熵編碼等手段,進一步對簡化的mesh的面和點的信息壓縮成二進制流。紋理貼圖則采用H.265進行圖像編碼。技術團隊將同步的網格信息存放在視頻流的SEI中,復用現在的RTC管線就可以完成三維數據的傳輸。
幀率 | 整體帶寬 | Mesh帶寬 | 紋理帶寬 | 算法延時 |
~30fps | 15~20Mbps | ~12Mbps | ~8Mbps | ~100ms |
應用落地和展望
該技術方案支持多種終端設備實時觀看,有著廣泛的落地前景,如基于3D電視實現全息通信,提升遠程辦公、遠程交流的效率與沉浸感;如自由視角直播,加強主播與觀眾的聯系,創(chuàng)造各種互動玩法;在文娛、教育等場景中也提供了新的媒體形式。
關于火山引擎多媒體實驗室
火山引擎多媒體實驗室是字節(jié)跳動旗下的研究團隊,致力于探索多媒體領域的前沿技術,參與國際標準化工作,其眾多創(chuàng)新算法及軟硬件解決方案已經廣泛應用在抖音、西瓜視頻等產品的多媒體業(yè)務,并向火山引擎的企業(yè)級客戶提供技術服務。實驗室成立以來,多篇論文入選國際頂會和旗艦期刊,并獲得數項國際級技術賽事冠軍、行業(yè)創(chuàng)新獎及最佳論文獎。
Reference
[1] RAFT-Stereo: Multilevel Recurrent Field Transforms for Stereo Matching, 3DV 2021
[2] Function4D: Real-time Human Volumetric Capture from Very Sparse Consumer RGBD Sensors, CVPR 2021
[3] Embedded Deformation for Shape Manipulation, SIGGRAPH 2007
[4] Fusion4D: Real-time Performance Capture of Challenging Scenes, ToG 2016
[5] Draco, https://github.com/google/draco