抖音大型直播的畫質優化實踐
面臨挑戰
隨著抖音內容生態的不斷豐富,越來越多的大型賽事在抖音平臺進行直播,世界杯/春晚/亞運會等各項賽事節目引來大量用戶觀看。卡塔爾世界杯期間,抖音提供的穩定高質直播畫面為觀眾帶來了完美的觀賽體驗,決賽的 PCU 高達 3700W+。
如何應對挑戰?
畫質優化鏈路
大型賽事直播涉及鏈路較長,不同賽事鏈路存在一些差異,整體可簡化為下圖流程,現場信號經過演播室的制作傳輸給 CDN 再進一步分發到用戶側。從畫質角度來看整個鏈路可分為畫質檢測與畫質優化兩個部分,對于 CDN 之前的鏈路以畫質監測為主,以發現問題/定位問題/推動對應鏈路人員解決問題為目的。畫質優化在 CDN 和客戶端兩側進行,下面的內容主要介紹畫質優化部分。
圖片
隨著賽事錄制技術的提升,越來越多的大型賽事都用上了4K HDR錄制標準,畫質清晰度也不斷提升,隨之而來的是更大的帶寬壓力。同時為了兼容消費端不同的看播設備和不同的帶寬條件,服務端需要轉出多種不同分辨率不同碼率的版本供看播端選擇,為了保障用戶在不同帶寬與設備下都能取得最佳的畫質體驗,我們做了大量的優化工作。團隊通過自研的自適應 ToneMapping,視頻降噪,ROI編碼,視頻插幀,BAS采樣,端上超分等算法有效地提升了賽事畫質。
自適應ToneMapping: 目前大型賽事大都使用HDR(高動態范圍)設備錄制,團隊對支持 HDR 看播的設備增加了 HDR 檔位,同時提供了多種不同分辨率/幀率的檔位。HDR 拍攝的片源擁有更廣的色域,更大的動態范圍。但對很多終端顯示設備而言,并不支持 HDR 信號播放,所以通過 ToneMapping 算法將 HDR 信號轉換為 SDR(標準動態范圍)信號是十分必要的。
圖片
相比 SDR 信號,HDR 信號擁有更廣的色域和更大的動態范圍,在轉換到 SDR 信號的過程中不可避免會產生一些信息損失。常用的一些 ToneMapping 方法,不論是 Reinhard,Filmic 或者 Hable,其本質都是設計固定的映射曲線實現從 HDR信號 到 SDR信號的轉換,同時盡量保持對 HDR 效果的還原。但直播賽事場景多變,且現場動態范圍跨度極大,如世界杯比賽中場館的燈光/草地/球員亮度差異明顯,不同鏡頭跨度極大,而在亞運會游戲類比賽中的CG畫面較為穩定,現有的ToneMaping算法無法在多變的場景中取得優秀穩定的效果,而手動調節每場比賽的轉換參數也不現實。為了解決這一問題,團隊提出了內容自適應 ToneMapping 算法,通過統計視頻內容的實際光照情況動態地進行 ToneMapping,從而得到更優效果。
左: 內容自適應 ToneMapping,右: Hable 算法
圖片
圖片
在主觀眾測中優化之后的內容自適應 ToneMapping 算法遙遙領先于現有的TonaMpaping算法結果(對照任務為團隊自研結果)
圖片
BAS 采樣: BAS(Byte AI Scaling)算法是字節自研的一種基于深度學習的圖片/視頻下采樣算法,近些年來,深度學習驅動的視頻處理算法已經廣泛應用于各類點播、直播服務中,涵蓋抖音、西瓜視頻等諸多業務線。在實際的流媒體傳輸鏈路中,依據用戶實際網絡延遲、終端性能等因素,源流將通過自適應碼率(Adaptive Bit-Rate)策略傳輸到終端設備,優化用戶實際體驗。其中,視頻流往往會被采樣到多個標準分辨率,例如藍光(1080p)、高清(720p)、標清(480p)等。隨著音視頻行業和攝影設備的發展,高分辨率的視頻源占比日益增多,大部分視頻需要在服務端進行降采樣來配合自適應碼率策略,因此降采樣算法的優化也是提升QoE的關鍵。在過去的業界實踐中,視頻處理算法往往專注于提高分辨率(如超分算法)或者保持分辨率(如降噪算法)的處理范式,而幾乎忽視了對降低分辨率方法的研究。不同于固定算子的bicubic等降采樣算法,BAS算法基于深度學習使用高精度數據訓練模型,緩解傳統方法帶來的頻域混疊與頻域截斷問題,降低鋸齒感、減少細節丟失。如下圖所示,對于4K的超高清圖源降采樣到480p分辨率的任務,左圖為BAS算法處理結果,右圖為傳統bicubic算法處理結果。可以明顯看到,BAS算法處理結果中緩解了邊緣鋸齒(左下),消除了摩爾紋(右下),并且燈牌、觀眾席等方面的細節紋理更加清晰,視覺觀感更好。
左圖為BAS采樣結果,右圖為Bicubic采樣結果
圖片
在與bicubic算法的定量對比中,BAS基于PSNR指標取得了-20.32%的BD-Rate收益,意味著相同重建誤差水平下可以節省20%以上碼率,而同等碼率下則可以提升畫質水平。而對于更符合人眼感知特性的VMAF指標,BAS同樣取得了-20.89%的BD-Rate收益。
圖片
在常用的編碼條件下,BAS算法在UGC視頻上能做到在降低6.12%平均碼率的同時,提升多項關鍵主客觀畫質指標,既可以降低一部分傳輸帶寬,也可以帶來畫質上的提升,取得成本和體驗上的雙贏。
視頻插幀: 抖音大型賽事實踐中會遇到各種不同的錄制標準,其中也存在1080P 25fps的錄制標準,現在消費者已經習慣高幀率的流暢視頻體驗,對于低幀率的視頻會明顯感受到畫面的流暢度降低,影響用戶觀看體驗。針對低幀率場景,我們使用了智能插幀技術,通過對前后幀的內容進行光流估計,根據光流信息將前后幀像素都轉換到中間幀,然后進行整合,生成中間幀,提升視頻幀率,減少觀看時的卡頓感。而針對電競類對幀率要求較高的場景,我們做了以下的額外優化。
圖片
faster光流模塊和faster修正模塊使用partial conv代替普通卷積,能在保持效果的同時減少卷積運算;在計算光流時,采用內容自適應下采樣去對輸入進行下采樣,用于計算光流、殘差和遮擋掩碼, 再將其上采回原分辨率,用于原始輸入的warp和整合 ,由于光流模塊和修正模塊這兩個運算較多的模塊接收的是較小的分辨率,從而達到進一步減少計算量的效果;工程上,團隊通過算子融合、半精度的方式,減少IO和浮點運算,相比工程化前加速1倍多。同時,通過多GPU部署的方式拓展了智能插幀的能力,使得在更高分辨率(4k)的場景下能實施部署。另一方面,電競場景中,比如王者榮耀,每個英雄上面都會有選手的名字,而這些文字較小,文字會隨著英雄的復雜運動而運動,也就是會導致出現小文字的復雜運動,智能插幀通常會在這些復雜運動的小文字上因為光流估計不夠準確而導致插出來的幀文字的位置不夠準確,導致偽像出現,我們在訓練過程中加入更多的隨意移動或者靜止的較小文字,使得模型能夠在訓練過程中更多地注意處理小文字的復雜運動,從而達到更好的插幀效果,如下圖所示,左邊為優化后的插幀結果。
左邊為優化后結果,右邊為優化前結果
圖片
ROI 編碼: 為了兼顧視頻碼率和主觀畫質,團隊使用了基于 LSTM(長短期記憶網絡)的時域 ROI 技術,通過人眼顯著性區域檢測和編碼相結合的方式,讓碼率在畫面上的分配更加合理。除了模型設計之外,ROI算法中另一大難點是saliency(顯著性物體檢測)數據的獲取,通用的saliency數據集在大型賽事中的表現并不理想。針對這一問題,團隊收集制作了自己的專用數據集,并且對一些大型賽事做了專用數據集,例如針對世界杯賽事,團隊專門制作了足球場景的 saliency 數據集,通過眼動儀追蹤球迷觀看球賽時的關注區域得到足球比賽的專用 saliency 數據集,從而極大增加了模型的準確性。針對足球場景中顯著性物體較多,顯著性區域分散的特點,團隊對檢測模型進行了專門的優化,在保證檢測速度的前提下,提高了模型的召回率和不同場景的魯棒性,從而實現更優的主觀質量。
注:紅色框內表示 ROI 區域,左邊為通用方案結果,右邊為優化結果
圖片
圖片
同時團隊使用視頻降噪算法,根據視頻信息對其進行空域、時域噪聲的去除,將帶有噪聲的視頻處理成干凈、沒有噪聲的視頻。由于去除了視頻的噪聲,在提升視頻質量的基礎上同時降低了傳輸的碼率。由于用戶側網速的限制,端上存在多個檔位,當看播端網速較慢時,可能會切換到 480P/720P 等低分辨檔位,此時會觸發端上超分算法提升畫面清晰度。超分辨率技術指的是,基于機器學習/深度學習方法,根據視頻信息對其進行空域、時域建模重構出缺失的細節,將低分辨率的視頻重建出高分辨率視頻的技術。這樣即使是在低分辨檔位也能體驗到更清晰的畫質。
左:視頻降噪前,右:視頻降噪后
圖片
除此之外團隊還提供大分辨率、高幀率、廣色域,并使用色彩增強、自適應銳化等多種畫質增強技術,呈現更加沉浸感的超高清畫面。
左:未過端上超分,右:經過端上超分。
圖片