根據研究發現,在平均 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 開發者社群共同發起的開發者互動創新實踐活動。透過工程師視角的技術分享、交流碰撞、專案共建等多種形式,匯聚開發者的力量,挖掘和傳遞最具價值的技術內容和專案,全面釋放技術的創造力。