Netflix提出了一種基于感知視頻編碼優化框架,在非峰值流時間期間,將此編碼系統應用于AVC-High和VP9數據流,提高了用戶的視頻質量的同時并節省了帶寬。LiveVideoStack對本文進行了編譯,感謝英特爾資深軟件開發工程師趙軍對本文的審校。
文 / Loannis Katsavounidis,Netflix視頻算法高級研究科學家
譯 / 王月美
審校 / 英特爾資深軟件開發工程師 趙軍
動機
視頻編碼推動了過去25年的學術研究,并且推出了引人注目的產品與服務。眾多公司都圍繞視頻編碼和傳輸而構建---?Netflix和Google的YouTube是兩個最好的例證。
多年以來,視頻編碼的基本原理改變不多。產生現代視頻流的編碼參數類型自MPEG-1視頻標準[1]發布時后就甚少改動;選擇特定的幀分辨率,連同一組 (GOP)結構,并在該結構(GOP)上應用周期性的幀內(Intra picture)圖片;通過在輸入視頻幀上的單遍(single pass)或雙遍(two pass)來(近似地)滿足目標比特率。
這些公司努力微調視頻編解碼器中的附加參數,從而創造業界通常稱贊為良好“配方”的內容。這些配方通常是通過人為檢查一組選定主題上的編碼結果而創立和定制,且多年未變。
與此同時,核心視頻編解碼器工具的改進導致了比特率上的驚人節省 ?—一個HEVC [2]編碼器僅需MPEG-1所用比特的小部分(約30%)就可以達到與之相同的畫面質量。但是,衡量這些改進通常使用均方差(MSE)方法,MSE在由人來觀察評估時,結果并不總是令人印象深刻。而當一個新的編解碼器被開發時,這個被要求的神奇數字已經是“50%”。H264/AVC [3] 聲稱比MPEG-2 [4] 節省50%的比特,HEVC 聲稱比AVC節省50%的比特。然而,在實際的系統中,這些節省從未實現過-對視頻編解碼器增量變化帶來的效益的最佳評估是接近40%[5]。
在ISO和ITU標準化工作的同時,Google一直在開發他們自己的一系列免版權稅的視頻編解碼器;其最新研發的VP9[6],于2013年首次推出,2014年完成。VP9是基于早前成功的VP8以及Google在2010年收購的On2 Technologies公司開發的“True Motion”系列編解碼器。
要牢記,大多數的視頻編解碼器的改進給解碼器和----更多的是編碼復雜度上帶來非常繁重的計算開銷。一個已被弄清楚的是,為了能在商業視頻傳輸服務中被部署,更新更高效的編解碼器需要不斷增加的復雜度。很明顯,每一代視頻編解碼器都伴隨5-10倍的編碼器復雜度的增加,而解碼器復雜度的增加通常是2倍。
如果接受了更新更高效的編解碼器帶來的復雜度增加,那么更大的問題是:我們在系統級別可以做什么?例如將視頻幀作為輸入連接到編碼器的方式,或者我們如何使用視頻解碼器的輸出來呈現在屏幕上,以進一步提高視頻質量,而這些提升將會被現在這些花費大量時間在視頻上的人所感知。
這里介紹的新方法中的關鍵詞如下:
-
感知:視頻編解碼的整體目標是以一種令人賞心悅目的方式壓縮視覺信息;通常而言用于編碼器決策的均方差(MSE)并不總是一個與人類感知關聯匹配得很好的數字。
-
復雜度:就像我們增加了視頻編解碼的復雜度,我們也可以減少復雜度。
-
預見性:VOD與廣播電視不同,廣播電視需要及時的或在最小延遲中進行編碼決策,而在視頻點播服務中,視頻序列在整個過程均是可用的,這就可以被預先分析多次以提高視頻質量。
基于鏡頭(Shot-based encoding)的編碼
對于這個技術博客的余下部分,我們假設讀者熟悉自適應流媒體的基礎知識,例如:
-
使用基本處理單元,以不同分辨率和/或質量,對相同視覺內容進行多重編碼表示,稱為“流式傳輸段”
-
為了適應不同的通道條件(比特流切換),按照流媒體客戶端的要求,從服務器傳送編碼的段屬于不同的表示方式。
-
相同視覺內容的不同編碼表示之間的段的時間對齊以允許比特流切換。
有興趣的讀者可以參考一些可用的自適應流媒體教程,例如this Wiki page [7]。
分塊編碼(Chunked encoding)
在Netflix 2015年12月發布的技術博客[8]中,我們介紹了分塊編碼對云編碼的巨大益處。這意味著打碎了一個長的視頻序列,例如持續1小時,以多個組塊,每個組塊持續一定時間 - 例如20個組塊,每個組塊3分鐘時長。然后我們用特定的編碼配方,獨立地編碼每個塊,連接或“組合”編碼塊,從而獲得整個視頻序列的編碼版本。
在分塊編碼的眾多優勢中,最重要的是它允許使用視頻編碼軟件在云上構建一個強大的系統。如果云實例未能完成某個編碼,它只需要重新處理相應的塊,而不是重新啟動整個長達幾小時大的視頻編碼程序。因為可以并行編碼不同的塊,人們還可以看到端到端的延遲的減少, 從而在整個編碼系統中實現幾乎無限的可擴展性。
當然,分塊編碼也帶來一些弊端-即運行在整整一個小時的序列上,尤其是在兩通模式下的視頻編碼器,可以預覽隨后的內容并做出更好的長期的比特率分配; 從而以相同的比特率實現更好的整體質量。然而,分塊編碼的利大于弊。
按主題和按塊編碼的優化(Per-title and per-chunk encode optimization)
Netflix一直在不斷提高全球會員的視頻質量。期間一個重要的里程碑是發布于2015年12月[9] 的“按主題編碼優化”,在我們的技術博客上有詳細介紹。按主題編碼優化引入了根據復雜度定制編碼的概念,這轉換為我們目錄中每個視頻序列的正確分辨率和比特率選擇。相對于我們以前的固定分辨率/比特率梯形圖,通過考慮視頻的特征,產生顯著的改進。特征包括: 運動量、細節水平、色彩,以及選擇更適合每個主題的編碼參數來優化編碼效率,。另一個重要的里程碑是2016年12月推出的“按塊編碼優化”,作為我們“移動編碼下載”計劃的一部分,這個在Netflix技術博客[10]中有更詳細的介紹。 在下一節中將更詳細地討論的均衡R-D斜率的概念也用于這項工作,并提供了重大改進。 事實上,人們可以將當前的工作視為“按主題編碼優化”和“按塊編碼優化”的自然延伸; 我們可以稱之為“感知per-shot編碼優化”。
從塊編碼到shot編碼
在理想的世界中,人們希望將視頻分塊,并賦予每個塊不同的參數集合,以優化最終組合的視頻。實現這種完美比特分配的第一步是以自然而原子的方式分割視頻,把彼此非常相似的幀組成一個序列,因此編碼參數的變化類似 - 這些就是構成長視頻的“shot”序列。這些shot是持續時間相對較短的視頻部分,它來自相當恒定的照明和環境條件下的同一臺相機。它捕獲相同或相似的視覺內容。例如,一位站在樹前演員的臉。最重要的是,當更改編碼參數時,其變化是一致的。shot的自然邊界由相對簡單的算法確定,即稱為shot變化檢測算法。該算法檢查屬于連續幀的像素之間的差異量以及其他的統計量。當該差異量超過某個固定的或動態調整范圍的閾值時,一個新的shot邊界被確定。有些可以在兩個連續shot之間的邊界上應用交叉漸變或其他視覺效果,這類情況則可以通過更復雜的算法來處理。
shot變化檢測算法的最終結果是shot列表和它們的時間戳。人們可以使用這些生成的shot作為基本編碼塊,而不是固定長度的塊。這提供了一些非常獨特的機會:
-
現在Intra幀的放置可以“始終不規則”,這個術語意味著:
(a)Intra幀可以放置在“隨機”的位置。例如前4幀I幀可以是在時間0,2,5,7秒。
(b)然而,時間位置總是在相同主題的編碼之間對齊,換言之,前4個intra幀的位置保持在0,2,5,7秒。對于這個主題的所有編碼都是這樣。
-
Intra幀的不規則位置會帶來最小的編碼開銷;請記住,在視頻編碼所使用的3種不同類型(I / P / B)的幀中,intra幀的效率最低,因此希望在編碼視頻中盡量減少它們的存在。
-
在一個很長的視頻序列中尋找產生的自然興趣點,這些興趣點標記出了shot邊界。
-
當獨立編碼各shot時沒有預測懲罰:如果將一intra幀放置于shot中間,則會將shot分割成若干部分。當獨立編碼而非單個單元編碼時,則需要更多位數。這是因為Intra之后的像素無法在Intra幀之前的幀中參考它們的類似對應物。
-
連續拍攝之間的任何重要的編碼參數變化都不太可能被人眼察覺,這是因為不同shot中的不同視覺內容所引起的中斷對人類視覺系統的破壞比任何可能的編碼參數的變化(例如分辨率和質量)都要大得多。
-
由于非常簡單的編碼方案,例如固定量化參數(“fixed QP”)模式,被幾乎現在所有的視頻編碼器所支持,且提供了非常一致的視頻質量,具有幾乎最小的比特率變化。故而在同類幀集合內,如屬于同一shot的那些幀,使用速率控制的需求就少得多。事實上,在視頻編解碼器開發過程中一直使用“fixed QP”,因為在MPEG,ITU和其他標準機構中用于測試的所有序列幾乎都由單shot視頻塊組成。
圖一:“始終不規則”放置在shot邊緣的intra 幀(關鍵幀)。關鍵幀在時間上與所有編碼的鏡頭邊界對齊。
VMAF作為感知視頻質量指標
在2016年6月發布的另一個Netflix技術博客[11]中,我們解釋了視頻多方法評估融合(VMAF)質量指標,VMAF是由內部開發,后為整個視頻社區獲益而開源。
VMAF的主要特征如下:
-
它是一個完整的參考指標,這意味著它可以應用于任何原始的、未失真的或已失真視頻序列的版本。
-
它考慮到壓縮和向上/向下縮放的影響,通過上采樣解碼視頻幀到一個普通的參考幀大小(1920x1080)。這樣,就可以使用VMAF來評估不同分辨率的編碼視頻的質量,尤其可以用來比較不同分辨率下相同內容的編碼版本,并幫助判斷出哪一個編碼效果更好。
-
它依賴于現有的圖像質量指標(VIF, DLM),且經過適當修改以覆蓋多個分辨率,以及視頻序列中連續視頻幀之間的移動量,這些移動量作為輸入到機器學習權重集中的特征。最后的得分是在支持向量機(SVM)回歸器中結合這些基本特征所得的結果。
-
在VMAF中使用的權重校準和訓練是通過收集實際觀察者的主觀數據來進行的,而觀察者提供的是VMAF當時適合的基礎真實數據。用于training VMAF的內容是Netflix目錄的一個有代表性的子集,因此我們了解到它的性能與我們的使用情況一致。然而,VMAF框架是通用的,并且允許其他人根據自己的情況對其進行再training。事實上,大量的研究人員已經使用他們自己的主觀數據集驗證了VMAF的準確性。
圖2:VMAF的工作原理:將像素級數據匯聚以生成幀級特征;利用SVM回歸方法融合不同時空特征,來建立幀級質量分數;連續幀的分數被匯集以產生最終的視頻序列VMAF分數。
率失真曲線的凸包
Ortega和Ramchandran [12]在1998年的一篇開創性論文展示了在處理圖像和視頻編碼中的多種選擇時如何解決最優性問題。
假設圖像由N個需要編碼的單元組成
-
分別編碼每個單元,為每個可能性獲取的(速率,失真)對,稱之為“工作點”;
-
將所有可用的工作點放在率失真圖上;
-
提取它的凸包和邊界輪廓;
-
可以從每個單元的凸包上選取一個點,以便不同單元的點具有(大致)相同的distortion-rate斜率。
圖3:工作點、R-D凸包的示例,以及源R-D曲線。轉載自[12]
組合
因此可以考慮以下系統:
-
一個長的視頻序列在shot中分割開
圖4:來自“El Fuente”測試序列代表性鏡頭的縮略圖;這個主題包括96個鏡頭。
-
每個shot使用不同的編碼參數進行多次編碼,如分辨率和質量(QP等)
-
每個編碼都使用VMAF進行評估,并與其比特率一起生成(R,D)點。 可以使用不同的映射將VMAF質量轉換為失真; 我們針對線性和反比例映射這兩種進行了測試。將在下一節討論這些映射產生的不同的時間聚合策略。
圖5:使用一組參數如分辨率和QP對一個shot進行編碼,并獲得一個單獨的(R,D)點。
-
計算每個shot的(R,D)點的凸包。 在以下示例圖中,失真是(VMAF + 1)的倒數。
圖6:使用VP9(libvpx)以各種編碼分辨率和量化參數(QP)獲得的來自“El Fuente”的特定shot的多個(R,D)點。
圖7:使用VP9(libvpx)從“El Fuente”拍攝同一shot的(R,D)操作點的凸包
-
來自每個shot的凸包中的點,通過遵循恒定斜率原則并在Trellis中構建端到端路徑來組合,為整個視頻序列創建編碼。
圖8:結合shot編碼以產生最佳編碼; 示例網格路徑顯示固定的QP編碼,針對給定的平均質量來最小化比特率或針對給定的平均比特率來最大化編碼質量。 選定的shot編碼在(R,D)空間中具有大致相等的斜率。
-
為了能夠覆蓋到期望的比特率/質量范圍,要根據需要來改變R-D曲線的斜率參數,以便產生盡可能多的聚合編碼(最終動作點)。
-
最終結果是整個視頻序列的完整R-D曲線或速率-質量(R-Q)曲線。
圖9:對于整個“El Fuente”視頻序列獲得的最終的R-Q曲線。 基線則是最好的fixed-QP編碼;在這種情況下,動態優化器將比特率平均降低了30%。
這個完整的系統被稱為“動態優化器”,該框架產生了Netflix最新一代的編碼。
測試方法-結果
使用VP9-libvpx視頻編解碼器并編碼了來自Netflix目錄的10個代表性主題。
就時間聚合而言,我們實施了各種池化方法,其中兩種方法對應于前面已介紹的質量與失真映射,即線性和反比例映射。 我們稱它們為算術平均平均VMAF(LVMAF)和調和平均平均VMAF(HVMAF)。
這兩種方法即LVMAF和HVMAF時間質量聚合,產生了非常高質量的編碼序列 - 允許分別在組合的視頻序列中更激進或更保守的時間質量波動。
VP9編碼方法
在VP9-libvpx中使用的編碼參數取自以前的研究; 其研究結果發布于2016年10月舉行的Netflix的“免版稅編解碼器開放日”。基于該研究,使用的最佳配置是“fixed-QP, AQ-mode=0, CPU=0, best”,在PSNR和VMAF質量度量方面顯示出最高質量。我們在附錄中重現該研究的主要結果。
我們將動態優化器獲得的結果與VP9-libvpx的最佳固定QP編碼的結果進行了比較。 下表總結了所采用的方法和本實驗所選擇的各種參數。
表1:用于動態優化器實驗1的參數
動態優化器獲得的相應增益,在以相同視覺質量下的%比特率節省方面以及在相同平均比特率下HVMAF分數改善方面的表示如下:
表2:實驗1的結果。在動態優化器和最佳的固定qp編碼之間大約256kbps在Netflix目錄的10個代表性主題。
當使用HVMAF作為質量指標時,結果是整個視頻序列的平均比特率比最佳固定的QP編碼節省了17.1%。 而當使用PSNR時,改進甚至更高:平均節省22.5%的比特率。
在這個比較中,由于為整個序列獲得固定QP編碼的凸包,需要與動態優化器相同的復雜性,所以基線和動態優化器結果之間的計算復雜度保持不變。 因此,這代表了動態優化器帶來的改進量的下限。
如果我們使用更常見的基線,如VP9-libvpx中,擁有CPU=1, good, AQ-mode=2編碼配方的2-pass VBR配置,則動態優化器的改進要更高:就HVMAF而言,平均節省50%以上的比特率。盡管如此,需要記住的是動態優化器解決方案的計算復雜度也非常高。
其他視頻編解碼器有多好?
根據前面介紹的內容,可立即明白動態優化器框架中并沒有特殊的編解碼器。為了證實這一點,一組較短的剪輯使用了H.264 / AVC,HEVC和VP9-libvpx進行編碼,實驗設置如下:
表3:用于動態優化器實驗2的參數
圖10:實驗2 的結果。在VMAF和PSNR方面,動態優化器相對于AVC-High(x264),VP9(libvpx)和HEVC(x265)的固定QP / CRF編碼提高了BD-rate。
表4:實驗2 的結果。使用不同的視頻編解碼器和質量度量,相對于固定QP / CRF編碼,動態優化器提高了BD-rate。
可以看到,動態優化器將這三種編解碼器的編碼效果均提高了大約28-38%。 請牢記,這些改進并不是比較編解碼器之間的性能,而是通過使用動態優化器框架來改進各編解碼器的性能。在即將到來的幾周內,將使用動態優化器作為高級編碼框架來對最先進的視頻編解碼器進行更徹底的比較。
動態優化器總結
動態優化器是對視頻編碼的優化框架。 其主要特點如下:
-
基于shot的編碼
-
在不同分辨率和質量參數下進行多重編碼
-
通過使用VMAF作為其核心指標進行感知評估和質量調整
-
大規模并行處理,非常適合基于云的視頻編碼軟件流水線
其主要優勢如下:
-
它可以應用于任何現有的或未來的視頻編解碼器,將它視為視頻編碼優化框架
-
它可以通過對每個測試視頻序列的編碼分辨率和質量(QP)進行識別“感知相關”范圍來幫助未來的編解碼器開發,這也可以在開發和評估新編碼工具的性能時使用
-
它消除了視頻編解碼器實現中的很多速率控制因素,從而實現視頻編解碼器更公平地比較
-
它與shot編碼配方的改進是正交的,如更好的I-B-P編碼結構,空間自適應QP選擇; 在shot級別執行的任何改進都是動態優化器帶來的
-
根據計算資源的數量,其復雜性可以放大或縮小,在復雜性和率失真效率之間提供權衡
-
它生成完全兼容的比特流
-
它可以與VMAF,PSNR或其他任何視頻質量指標一起使用。
-
它有利于用于下載和離線消費的獨立的比特流創建,以及用于適應流媒體的完整的比特率階梯創建
云實現
我們已經在編碼管道中實施了動態優化器框架。在非峰值流時間期間,利用我們的可擴展云基礎架構和未充分利用的云實例[13],[14]。 我們將此編碼系統應用于AVC-High和VP9數據流,在提高了我們成員的視頻質量的同時節省了帶寬。請繼續關注另一個描述了我們的安裝過程和結果的技術博客!
致謝
這項工作是Netflix整個視頻算法團隊的集體成果。 我想親自感謝Anne Aaron,Chao Chen,Jan De Cock,Rich Gerber,Liwei Guo,Zhi Li,Megha Manohara,Aditya Mavlankar,Anush Moorthy,Andrey Norkin,Kyle Swanson和David Ronca所做出的所有貢獻。
參考文獻
[1] ISO/IEC 11172–2:1993 “Information technology?—?Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s?—?Part 2: Video”
[2] ISO/IEC 23008–2:2013 “Information technology?—?High efficiency coding and media delivery in heterogeneous environments?—?Part 2: Video”
[3] ISO/IEC 14496–10:2014 “Information technology?—?Coding of audio-visual object?—?Part 10: Advanced Video Coding”
[4] ISO/IEC 13818–2:2013 “Information technology?—?Generic coding of moving pictures and associated audio information?—?Part 2: Video”
[5] J. De Cock, A. Mavlankar, A. Moorthy and A. Aaron, “A large-scale video codec comparison of x264, x265 and libvpx for practical VOD applications”, Proc. of the SPIE 9971, Applications of Digital Image Processing XXXIX, 997116 (27 Sep. 2016)
[6] A. Grange, P. de Rivaz, and J. Hunt, “VP9 Bitstream and Decoding Process Specification”, Google, 2016
[7] “Adaptive bitrate streaming”, Wikipedia?—?The Free Encyclopedia, https://en.wikipedia.org/wiki/Adaptive_bitrate_streaming
[8] A. Aaron and D. Ronca, “High quality video encoding at scale,” The NETFLIX tech blog, Dec. 9, 2015, link: http://techblog.netflix.com/2015/12/high-quality-video-encoding-at-scale.html
[9] A. Aaron, Z. Li, M. Manohara, J. De Cock and D. Ronca, “Per-title encode optimization”, The NETFLIX tech blog, Dec. 14, 2015, link: http://techblog.netflix.com/2015/12/per-title-encode-optimization.html
[10] A. Norkin, J. De Cock, A. Mavlankar and A. Aaron, “More Efficient Mobile Encodes for Netflix Downloads”, The NETFLIX tech blog, Dec. 1, 2016, link: https://medium.com/netflix-techblog/more-efficient-mobile-encodes-for-netflix-downloads-625d7b082909
[11] Z. Li, A. Aaron, I. Katsavounidis, A. Moorthy, and M. Manohara, “Toward a practical perceptual video quality metric,” The NETFLIX tech blog, June 5, 2016, link: http://techblog.netflix.com/2016/06/toward-practical-perceptual-video.html
[12] A. Ortega and K. Ramchandran, “Rate-distortion methods for image and video compression: An overview,” IEEE Signal Processing Magazine, vol. 15, no. 6, pp. 23–50, 1998
[13] A. Park, D. Derlinger and C. Watson “Creating your own EC2 spot market,” The NETFLIX tech blog, Sep. 28, 2015, link: http://techblog.netflix.com/2015/09/creating-your-own-ec2-spot-market.html
[14] R. Wong, D. Derlinger, A. Shiroor, N. Mareddy, F. San Miguel, R. Gallardo and M. Prabhu “Creating your own EC2 spot market?—?part 2,” The NETFLIX tech blog, Nov. 23, 2015, link: http://techblog.netflix.com/2015/11/creating-your-own-ec2-spot-market-part-2.html
附錄:VP9配方測試
在VP9-libvpx中使用的編碼參數取自以前的研究; 其研究結果發布于2016年10月舉行的Netflix的“免版稅編解碼器開放日”。基于該研究,使用的最佳配置是“fixed-QP, AQ-mode=0, CPU=0, best”,在PSNR和VMAF質量度量方面顯示出最高質量。下圖顯示了在VP9-libvpx編碼中選擇不同參數時,對平均BD速率損失的影響。
圖11:VP9-libvpx編碼中AQ-mode = 0/1/2的作用; AQ-mode = 0效果最佳(摘自2016年10月Netflix的“Open House on Royalty Free Codecs”的 “VP9 Encoding Opportunities @ Netflix”演示文稿)
圖12:VP9-libvpx編碼中CPU0 / best的影響; CPU0 / best是最慢的,但提供的結果始終優于其他設置(2016年10月發布的關于““VP9 Encoding Opportunities @ Netflix”,摘自Netflix“Open House on Royalty Free Codecs”)
圖13:VP9-libvpx中2-pass VBR/ fixed-QP的BD率損失(2016年10月,Netflix的“Open House on Royalty Free Codecs”的節選,“VP9 Encoding Opportunities @ Netflix”演示文稿)
-
英特爾
+關注
關注
61文章
9953瀏覽量
171700 -
編碼器
+關注
關注
45文章
3639瀏覽量
134437 -
視頻編碼
+關注
關注
2文章
113瀏覽量
21018
原文標題:動態優化器—一種感知視頻編碼優化框架
文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論