從開源模型、框架到自研,聲網 Web 端虛擬背景算法正式發佈

語言: CN / TW / HK

根據研究發現,在平均 38 分鐘的視頻會議裏面,大概會有 13 分鐘左右的時間用於處理和干擾相關的事情。同時研究也表明在參加在線會議的時候,人們更加傾向於語音會議,其中一個關鍵原因就是大家不希望個人隱私暴露於公眾的視野。

如何在視頻會議中突出演講者,減少背景當中的干擾信息,並提升人們對視頻會議的參與熱情成為了實時音視頻技術所要解決的問題,而實時虛擬背景正是一項這樣的技術。不同於綠幕等傳統技術手段,虛擬背景通過機器學習推理對實時視頻內容當中的人像進行分割,實現對人像外內容的替換。因此用户無需對現實環境中的背景進行佈置即可使用,具有便捷高效的優點。

2021 年 8 月, 聲網落地了基於 Web SDK 的第一個虛擬背景插件版本 ,實現了背景替換與背景虛化功能。在近期發佈的虛擬背景插件更新中,該功能得到進一步提升,目前已可支持圖片虛擬背景、基於 CSS 色值的純色背景、3 檔不同程度的虛化背景。機器學習推理引擎也從通用機器學習框架升級為 Agora AI 實現,不僅整體包增量從 3M 降低至 1M,運算性能實現了 30% 以上的提高,新的 API 也更為易用。

回顧聲網 Web SDK 虛擬背景功能的研發過程,主要經歷了三個階段:

第一階段 開源模型 + 開源機器學習框架

在這一階段,我們基於 MediaPipe selife 人像分割模型和TFlite機器學習框架完成了虛擬背景在 Web 平台的工程化實踐。實現了從圖像採集、實時處理到編碼發送的完整管線。在這一個過程中,我們對影響處理性能的關鍵因素進行了大量分析,並對這些性能瓶頸進行了針對性的優化。同時我們也對不同機器學習框架在 Web 人像分割的應用場景進行了定製和優化,這其中包括對 MediaPipe 和 TFlite 框架的定製。

MediaPipe 使用 TFlite 作為機器學習推理引擎,MediaPipe 的 TFlite 人像分割模型所使用的算子除了包含 TFlite 支持的通用算子,還包含 MediaPipe 提供的特殊算子。在實踐中,我們將 MediaPipe 人像分割模型所依賴的 MediaPipe 特殊算子直接移植到 TFlite,實現了 selife segmentation 模型脱離 MediaPipe 框架直接在 TFlite 上的運行。同時使用自研 WebGL 算法替代 Mediapipe 提供的圖形處理功能。這樣就消除工程對 MediaPipe 的依賴,不僅降低了 MediaPipe 帶來的整體包增量,同時使機器學習運算和圖像處理解耦,整體方案更具靈活性。

由於 TFlite 在 Web 平台採用 WebAssembly 移植實現,而 WebAssembly VM 環境和真實系統架構存在較大區別。這就需要對支撐 TFlite 運算的不同矩陣/向量運算後端框架的性能進行評估。TFlite 提供了 XNNPACK、Eigen、ruy 三種矩陣運算後端。經分析對比他們在 WebAssembly 下單幀推理時間表現如下:

■TFlite 不同運算後端下的性能表現

依據分析結果將 TFlite 在 WebAssembly 上的運算後端調整為 XNNPACK 後,整體運算性能得到了大幅提升。

第二階段 自研模型 + 開源機器學習框架

在第二階段的研發重點是自研模型及算法的研發和工程化,通過海量訓練樣本對各類場景的覆蓋,聲網逐步實現了自研人像分割模型的算法迭代,輸出的自研模型和算法在人像分割精度、畫面穩定性、計算性能等方面對比開源模型形成了較大的綜合優勢。出於對機器學習生態和模型兼容性的考慮,工程化所用的機器學習框架也從 TFlite 切換到了 Onnxruntime。在進行 onnxruntime 的 WebAssembly 移植的過程中,Web 團隊使用了包含了 SIMD 和多線程在內的多項優化手段對運算性能進行提升。值得一提的是,我們將 Onnxruntime WebAssembly SIMD 優化過程中的部分工作成果提交至 Onnxruntime 開源社區,並被合入項目主線。

至此,聲網發佈了 Web SDK v4.5.0,並在 npmjs 上線了獨立的 Web 虛擬背景插件,成為音視頻雲 toB 行業中首先在 Web SDK 產品中支持該功能的服務商。

第三階段 自研模型 + Agora AI 機器學習框架

在人像分割模型逐步演進同時,出於對計算性能的無限探索和對用户體驗的無止境追求,聲網高性能計算團隊同時也對基於 Agora AI 框架的人像分割模型工程化開展了研究,在使用了包含計算圖優化,內存自動複用,算子 WebAssembly 優化在內的多項技術手段後,將原模型處理算法在 Web 平台上的整體性能提升了 30% 左右。

■Agora 人像分割模型在某測試設備上的單幀推理時間

Web SDK 團隊在使用 Agora AI 對 onnxruntime 進行替換後,虛擬背景插件的整體包大小從之前的 3M 降低至 1M,有效提升了用户在 Web 環境下的插件加載速度,實現了用户體驗的較大提升。

■Agora Web SDK 媒體處理管線

在近期發佈的 WebSDK v4.10.0 中,我們同時對虛擬背景插件進行了更新,新的虛擬背景插件不僅包含上述提升,同時它也基於 WebSDK 新的插件機制實現,提供了更易用 API。目前新的虛擬背景插件使用了新的包名通過 npm 發佈,如果對該功能感興趣可點擊** 「此處」 **訪問 Agora 官網文檔進行了解。

■npmjs上的聲網Web虛擬背景插件

展望

技術無止境、需求恆久遠。在未來的研發過程中,聲網虛擬背景在效果方面將針對強光照、背景暗光、複雜背景等更豐富應用場景進行研究和突破,並針對高分辨率場景下的人像邊緣、髮絲等細節的保留進行優化。

■高清圖像人像分割的細節保留

在算法方面將實現從單幀圖像推理到視頻連續幀推理的嘗試。從而滿足用户在各類更復雜環境下的虛擬背景體驗需求。讓我們拭目以待!

最後,如果大家想體驗目前 Web 端的虛擬背景,可以訪問 videocall.agora.io ,創建房間後,在設置中開啟。

Dev for Dev專欄介紹

Dev for Dev(Developer for Developer)是聲網Agora 與 RTC 開發者社區共同發起的開發者互動創新實踐活動。透過工程師視角的技術分享、交流碰撞、項目共建等多種形式,匯聚開發者的力量,挖掘和傳遞最具價值的技術內容和項目,全面釋放技術的創造力。