騰訊技術開放日 | 全面解析騰訊會議的視頻前處理算法

 

 

在視頻通話中,視頻前處理模塊能夠有效提高用戶參與實時視頻時的體驗,並保護用戶隱私,主要包括虛擬背景、美顏和視頻降噪等。騰訊會議在視頻前處理場景下,遇到哪些技術難點,如何進行優化?【騰訊技術開放日 · 雲視頻會議專場】中,騰訊雲高級工程師李峯從算法和工程優化的角度進行了分享。算法

 

視頻前處理場景探索性能優化

 

視頻是連續的,在轉播的時候須要通過編碼和解碼的流程,因此視頻處理須要分爲前處理和後處理。所謂前處理就是指編碼前的視頻處理,好比背景虛化。所謂後處理就是指解碼後的視頻處理,好比視頻超分。服務器

 

有哪些前處理算法能夠應用在視頻會議的處理場景下呢?理想狀況下,多多益善,可以想到的均可以落地,可是考慮到會議場景的計算資源很是有限,並且要不影響其它高優先級的服務,因此須要挖掘用戶最迫切的需求,利用有限的計算資源爲用戶提供更好的視頻體驗。網絡

 

數據分析發現會議場景下你們開攝像頭的比例不是很高,咱們分析主要有三個緣由:第一擔憂泄漏隱私,第二不夠自信,第三畫質很差。針對這幾個點騰訊會議陸續推出了虛擬背景、美顏、視頻降噪、暗場景加強等一系列的處理算法。框架

 

虛擬背景能夠很好的保護用戶隱私,創造一個公平的環境,這裏貼了一個用戶的反饋,這是一個在線課堂老師反饋虛擬背景能夠爲許多孩子取消歧視,讓家庭背景、家庭條件再也不成爲孩子的負擔。美顏的話,相信你們都是很是瞭解,也是常常用的,它能夠鼓勵你們參與到視頻通話的場景中來。視頻降噪能夠下降攝像頭的噪聲,消除燈光形成閃爍的問題,進而提高視頻畫面的質量。暗場景加強能夠提高暗光場景下的視頻體驗。分佈式

 

 

虛擬背景的算法探索與實踐函數

 

所謂虛擬背景是指容許用戶在使用騰訊會議期間上傳自定義的圖片或者視頻,做爲視頻場景下的虛擬背景或者將視頻背景模糊掉,知足用戶保護隱私和個性化視頻的需求。性能

 

虛擬背景的框架主要包括數據、模型、損失、訓練和前向推理引擎五大模塊。學習

 

對於深度學習任務,你們都知道數據的數量和質量是效果的關鍵。因爲騰訊會議中的數據很是敏感,涉及很是多的隱私,咱們拿不到用戶使用時的真實數據,因此騰訊會議採起了自採和精細標註兩種方案,目前數據流程是一種閉環式的迭代優化。訓練過程當中數據也會作一系列的增廣,好比說顏色變換、隨機噪聲、隨機模糊等等來增長數據的多樣性。測試

 

從模型層面,利用編碼器獲得輸入圖像的多層特徵表示,其中第一層分辨率比較高,編碼了人像的邊緣細節信息,而高層特徵空間分辨率比較低,只能編碼人像的抽象語義信息。若是咱們將高層特徵表示送到解碼器裏進行融合學習,解碼過程當中分辨率又會逐級回升。騰訊會議還會在解碼以後接一個輕量級的調優模塊,這樣就能夠在高分辨率上恢復更多的細節。

 

網絡輸出後還要通過一系列的膨脹、腐蝕、邊緣、羽化等等多項後處理算法的優化。損失函數也是訓練流程的關鍵,它決定了這個網絡可以聚焦在哪一些目標上進行學習,騰訊會議目前採用了多損失約束的方式來指導網絡的學習。

  1. 交叉熵損失是對每一個象素點進行約束,分割任務中的一項基礎損失。
  2. 爲了增長時域的平滑性,要約束網絡對輸入通過輕微干擾和原輸入的距離,這樣能夠在必定程度上模擬實際運行中先後幀之間的穩定性和連續性。
  3. 邊緣準確性對於人像分割的直觀體驗影響很是大,因此騰訊會議還利用了一個單獨的分支和邊緣損失來提高網絡邊緣處理的準確性。
  4. 虛擬背景是跑在各個端上,而不是服務器上,這就對神經網絡的高效、輕量提出很是高要求,這也使得網絡的深度和寬度很是受限,學習能力相比服務器端的模型有較大程度的降低。爲了彌補網絡帶來的準確率的降低,騰訊會議採用了多種蒸餾方式,約束線上的小模型與服務器之間大模型的距離,使得小模型與服務器模型之間的輸出分佈儘可能靠近。這種多蒸餾損失能夠提高蒸餾的有效性,從而提高線上小模型的準確率與融貫性。實際訓練的過程當中,騰訊會議還採用了分佈式等能夠快速提高訓練速度的多種優化的方式,而且支持在線和離線兩種蒸餾方式。

 

最後是前向推理引擎,它能夠對算法模型進行鍼對性的異構和並行計算優化,從而達到性能和效果之間良好的平衡,是算法最終可以落地的一個關鍵技術。

 

1. 數據

 

數據流程閉環是怎麼造成的?具體來說,首先是創建一個自採池,存放自採的數據。須要注意的是,因爲用戶數據的敏感性,騰訊會議拿不到任何線上實際的數據,因此只能模擬線上會議的場景來進行採集,好比你們一塊兒進行自採,若是說這時候有用戶反饋的話,會根據用戶反饋的文字或者圖片、或者視頻的描述,來增長模擬佈置相似的場景進行採集補充。

 

對於池子裏面的數據會不斷進行標註,而且把標註的數據提交到標註池,而後將標註後的數據提供給線上模型進行迭代訓練。對於線上模型,會將自採的數據抽樣進行自測和壓測,將分割不達標的圖片添加到自採池和badcase池。而且咱們會對badcase池裏的全部badcase經過分析特色進行存量分佈歸類,對歸類的數據再進行特定的補充採集。

 

這就是整個數據流程的閉環式迭代優化,它有效推進了線上模型質量的持續提高。

 

 

2. 模型

 

騰訊會議目前採用了經典的編碼、解碼、refine的結構。編碼器會不斷地下降分辨率並逐級抽象,而解碼模塊則是對多級特徵進行融合學習,實現分辨率回升。同時騰訊會議還採用了多任務約束,下面的圖中能夠看到實驗結果,通過多損失約束限制,輸出的圖會更加準確,邊緣的一致性也獲得了提高。

 

 

3. 損失

 

前面提到爲了彌補網絡帶來的準確率的降低,騰訊會議採用了多種蒸餾方式約束線上的小模型與服務器之間大模型的距離。

 

爲何要作蒸餾?蒸餾做爲一種只增長訓練耗時而不增長線上測試耗時的方法,在損失約束中被大量採用,對於線上超輕量的小模型來講,蒸餾能夠比較好的縮小服務器、教師網絡和學生網絡之間的差距。而且在實際操做過程當中發現通過蒸餾後的學生網絡可以比蒸餾前的網絡具備更好的穩定性。

 

目前騰訊會議支持離線蒸餾和在線蒸餾兩種方式。其中離線蒸餾是單獨訓練老師網絡,而後固定老師網絡的參數,經過老師網絡指導學生網絡進行學習。在線蒸餾是教師網絡帶着學生網絡一塊兒學習,這樣對網絡而言既包括了教師網絡的自我學習,還有同步指導學生模型的蒸餾學習,也包括學生網絡的自我學習。

 

 

 

經常使用的蒸餾損失包括下面圖中列出來的三種。Pixelwise蒸餾是象素級的,Affinity蒸餾是臨近關係的方式,Attention蒸餾是注意力的方式。

  1. 象素級的蒸餾主要做用在輸出層,也就是說利用教師網絡的輸出做爲軟標籤約束學生網絡的輸出。
  2. 基於Affinity矩陣的蒸餾的時候,教師網絡和學生網絡分別計算各自的Affinity矩陣,這種可以建模象素間的關係,而後該領域的信息知識從教師網絡就遷移到了學生網絡裏面。雖然信息遷移能有效補充單象素點獨立建模信息不足的問題,可是計算量相對比較大。
  3. 騰訊會議目前採用的是第三種,注意力蒸餾的方式,它是一種高效的約束中間特徵層的蒸餾方法。從圖中能夠看出,通過建模空間注意力特徵圖從三維直接降到了二維,以後再進行約束,這樣能夠大幅下降計算量,提高蒸餾的效率。

 

 

4. 前向推理引擎

 

深度學習算法落地的過程當中,前向推理加速是很是重要的一環。前向推理簡單來講,如圖所示,以輸入數據爲出發點,通過一層層的神經網絡獲得最終的輸出數據。層之間的數據一般是用tensor表示,每一個tensor就表示了一個多維矩陣。

 

騰訊會議自研推理引擎主要有三個方面的優點:

  • 音頻是騰訊會議的核心能力之一,自研推理引擎在音頻算法性能優化方向積累豐富,並已經上線了量化和量化訓練的支持;
  • 桌面端是騰訊會議的核心場景之一,自研推理引擎在桌面端的異構計算和並行計算優化方向積累豐富,有力的支撐了桌面端的音視頻算法。
  • 自研推理引擎能夠快速定製化和響應業務的需求,特別是對於騰訊會議這種快速迭代的產品來講,快速定製化和迭代的能力很是重要。

 

目前騰訊會議前向推理框架主要分爲三層:引擎層、邏輯層、接口層,從下到上。其中引擎層主要負責對各類神經網絡算子進行計算優化,而邏輯層封裝了與各個業務相關的邏輯,接口層是提供了跨平臺的業務接口。

 

下面列了一些目前騰訊會議前向推理引擎支持的加速方案,因爲不一樣的硬件或者處理器、設計理念不一樣,應用場景也不一樣,所以不一樣的方法在不一樣的處理器上會有不一樣的性能瓶頸,因此須要具體問題具體分析。舉個例子,一般來講CPU適合處理邏輯比較複雜的計算,而GPU適合處理數據並行的計算密集型運算。並且還須要考慮在不一樣處理器之間的數據交互可能給性能帶來的影響,這個消耗有時候會成爲總體算法性能的一個瓶頸。以虛擬背景爲例,視頻人像分割深度學習模型適合運行在GPU上,然後處理的一些算法就更適合運行在CPU上。

 

看一下跟友商的虛擬背景效果的直觀體驗對比視頻,在某些場景下騰訊會議的體驗要稍好一些,好比擡手的場景,騰訊會議要分割的更準確,左邊是騰訊會議。

 

 

美顏功能的算法探索與實踐

 

你們常常用美顏。它能夠提高用戶的視頻體驗,鼓勵用戶參與到語視頻通話的場景中來。從技術的角度來講,美顏一般包括磨皮、美形和美妝三個部分。

 

看一下美顏總體解決方案的框架,它包括三個部分:預處理模塊、全局美化模塊、局部調整模塊。輸入圖像首先進入預處理模塊,經過全局降噪圖像處理提高圖像質量,在實際應用中若是檢測到人臉就能夠進行全局美化或者局部美化,不然就直接輸出降噪後的圖像。全局美化模塊實現圖片總體美化效果,好比全局磨皮、非皮膚區域的潤化色調調節,通過全局美化後的圖片是能夠具有比較好的總體視覺,是能夠直接輸出的。固然,也能夠進一步進行局部調整,在這裏是基於人臉關鍵點配準設計的一套算法,主要是實現五官立體、化妝等局部內容調整,最後是將調整後的圖片輸出。

 

 

在不斷優化美顏解決方案的實踐過程當中,咱們會遇到一些困難,好比:

 

如何在性能和效果之間取得平衡?

目前騰訊會議上線的是全局美化,仍是由於性能問題要作出取捨。咱們會有更多的針對不一樣機型採用不一樣的美顏策略,好比中低端的機型採用磨皮美白,高端機型能夠放開美形、美妝這樣的能力。

 

強噪聲的攝像頭數據下如何保證美顏體驗?

在進行美顏磨皮的時候須要考慮三個因素,一個是光滑皮膚的區域,二是保留人臉五官的細節,三是抑制噪聲。目前騰訊會議是在圖像預處理的時候會採用降噪的方式先對總體的圖像進行總體預處理。要注意的是,要避免使用銳化的細節強化的處理,那樣有可能致使噪聲更加凸顯。

 

爲何人臉檢測和人臉配準要分開設計?

一方面是基於性能的考慮,沒有人臉的時候考慮降噪和加強的基本操做,有人臉的時候才須要進行美化處理。另一方面是模型的穩定性,直接對圖像進行人臉配準每每包含大量背景冗餘信息,會形成關鍵點配準難度加大並且不穩定,若是通過人臉檢測以後,只對人臉區域進行人臉配準的話,一般結果是比較穩定的。

 

美顏策略如何適配巨大的分辨率跨度?在視頻會議裏面分辨率跨度大,好比網絡的因素就會使得圖像分辨率會在必定的範圍之間波動。這裏騰訊會議主要分了三種場景:第一種就是在分辨率很低的時候,會直接放棄磨皮,由於這時候整個畫面比較糊,再使用磨皮每每致使整個畫面更糊。第二是在中段的分辨率裏面,那麼採用一種叫作上採樣而後進行美化以後再進行下采樣的方式,這樣會有優化效果,可是會增長必定的計算開銷。第三是高分辨率,那就能夠直接使用前面講的那些美顏算法。

    

應用場景中如何精簡美顏處理複雜度?

若是前面背景虛化已經把人像分割出來了,那麼這時候其實不須要浪費計算資源對背景進行磨皮的操做,相似這種都是能夠下降美顏處理複雜度的方式。

相關文章
相關標籤/搜索