當前位置:
首頁 > 最新 > 【視頻編碼】Content Aware ABR技術

【視頻編碼】Content Aware ABR技術

在本系列前面的帖子中,我們連續梳理了Netflix、YouTube、Beamr、EuclidIQ、Bitmovin、Harmonic、V-Nova、Cisco、MediaMelon、AWS Elemental及Mux在CAE (Content Aware Encoding) for ABR領域的一些進展,本文將簡要介紹一下編碼優化領域的另一位成員 — ZPEG在這方面的技術動態。

近年來,隨著互聯網和智能終端設備的普及和發展,視頻流數據傳輸已佔到互聯網帶寬的大約80%。而視頻服務提供商每年都需要花費巨額成本用以傳輸和存儲視頻流。雖然當前新一代的視頻壓縮標準能夠有效提升編碼性能,但在實際使用時需要大規模部署新的硬體軟體Codec。目前,比較可行的方法是在不改變現已部署的編碼器或解碼器的情況下利用新的編碼優化技術來降低視頻編碼所消耗的碼率。

ZPEG提出了一種新的視頻編碼預處理技術Pre-Processor,可以在將源視頻送到編碼器之前儘可能地消除視覺冗餘,從而減小壓縮後碼流文件的大小。ZPEG宣稱這項技術為MPEG-2,AVC,HEVC,VP9等編碼器增加了近20%的壓縮增益。該項技術的主要特點是對輸入的視頻信號通過3D變換進行去相關,然後將先進的HVS模型作用於變換域信號上(即去相關後的基矢量,decorrelated basis vectors)。在編碼中所產生的視覺失真還可以被精確地根據觀看距離和幀速率進行優化調整。此外,該技術還結合新的多解析度熵去除演算法(multiresolution entropy removal algorithm),在從伺服器推送視頻流時,可以即時適應不斷變化的信道條件。

ZPEG推出的Pre-Processor預處理技術可以進一步增加視頻壓縮率,從而降低存儲和傳輸成本,同時保持與原來相同的視覺體驗。預處理技術自然不需要對編碼器或解碼器做出修改,可以與兼容不同編碼標準,因此可以將Pre-Processor作為一個預處理模塊無縫添加到現有處理框架中,如下圖所示。ZPEG Pre-Processor是基於HVS模型實現的,該模型支持per-asset optimization編碼優化,壓縮性能更高,並且不會帶來新的可察覺的失真(如塊效應、重像等)。同時,ZPEG Pre-Processor在消除時間冗餘方面的效果要比編碼標準中的演算法更好。ZPEG聲稱可以找到並消除基於運動估計編碼器(H.264,H.265,VP9等)本身無法解決的冗餘問題。主要原因在於這些Codec提取時間冗餘的方式,即找到運動補償向量,然後記錄像素塊之間差異或誤差項。然而,目前沒有較好的理論來量化兩個視頻宏塊之間的差異,這也是效率達到極限的原因所在。

ZPEG官網(www. zpeg. com)提供了一個demo頁面,允許訪問者將視頻文件上傳到後端並進行測試。處理完成後,可以下載並比較視頻內容的原始版本和預處理版本的編碼質量。

具體地,達到這一效果的方式如下:

1. 將源測試視頻壓縮到一個目標碼率,如6Mbps

2. 確定壓縮視頻與源視頻的均方誤差

3. 使用ZPEG技術對源文件進行預處理

4. 壓縮經過預處理的文件,直到達到相同的均方誤差

5. 測量並比較最終編碼的碼率

與只用標準編碼器壓縮的碼流版本相比,當達到相同均方誤差時ZPEG測量了碼率節省,其期望是在達到視覺等效的質量時使用的碼率更低一些。由於HVS模型是非線性的,要比簡單的誤差度量複雜得多。ZPEG最初使用equal-QP方式來開發帶寬節省模型,但是經過技術演進已經可以適用於實際的視頻流傳輸應用。ZPEG將原始的和預處理後的YUV文件壓縮到固定的「目標」帶寬,並提取「平均QP」作為MSE的度量。然後,再將預處理內容重新壓縮到與基準相同的平均QP水平。以下部分舉例說明了平均QP以及期望的碼率節省值的計算。

A.未經過預處理的YUV由x264編碼後輸出的編碼日誌:

x264 [info]: frame I:16 Avg QP:18.20 size:1511247

x264 [info]: frame P:1303 Avg QP:21.44 size:137573

x264 [info]: frame B:2668 Avg QP:24.94 size: 10435

原始文件平均QP計算如下:

((16 * 18.20)+(1303 * 21.44)+(2668 * 24.95))/(16 + 1303 + 2668)= 23.78

B.經過預處理的YUV由x264編碼後輸出的編碼日誌:

x264 [info]: frame I:16 Avg QP:17.44 size:1170226

x264 [info]: frame P:1307 Avg QP:20.61 size:142855

x264 [info]: frame B:2664 Avg QP:25.08 size: 11117

預處理文件平均QP計算如下:

((16 * 17.44)+(1307 * 20.61)+(2664 * 25.08)/(16 + 1307 + 2664)= 23.58

則預期的碼率節省可以計算為:

1 - 2 ^((23.58 - 23.78)/ 6)= 2.3%

因此,前述碼率節省的測試步驟可變為:

1. 將源視頻壓縮到某一預定碼率,取平均QP。

2. 預處理源視頻,並壓縮經過預處理的視頻到同一碼率,取平均QP。

3. 以這個「平均QP」為測度,可以從以下兩個方面來考量:

(1)根據「平均QP」的差異,估計碼率的增益;

(2)反覆調節參數,使得「平均QP」相同,再來看碼率的大小。

ZPEG是如何工作的?

ZPEG預處理技術聲稱實現了與視覺系統的物理過程(包括調製閾值、神經傳導速度、神經系統雜訊等)在數學模型上的等價,這在MPEG壓縮標準中基本沒有被仔細考慮。這些不同技術的互補結合可以產生更加有效的壓縮效果。ZPEG Pre-Processor是一種將HVS模型應用在去相關變換域(decorrelated transform domain)的技術。去相關的變換域在理論上可以支持去除難以察覺的視覺冗餘信息。ZPEG的HVS模型要比常規模型要更精細,可以將模型校準到一個指定的觀看距離,從而在實現所期望視覺質量的同時從視頻流中去除所有不可察覺的信息。

經過預處理過程後,已經去除了不可察覺信息的視頻內容被送到傳統的標準編碼器進行編碼處理並輸出編碼後的比特流。因此,最後得到的視頻內容更加「簡潔」,每個幀所消耗的比特數更少,因而比特率更低。

與此同時,根據ZPEG的介紹,ZPEG Video Codec視頻編解碼器採用與預處理器相同的HVS模型,可以提取所有視覺冗餘信息。其中,ZPEG熵去除技術(entropy removal technique)根據視頻源的統計信息預測熵上下文,以減少編碼視頻文件的大小,因此單個編碼視頻流可在任何所需帶寬或VR視角下提供最佳觀看體驗。作為純變換域編解碼器,ZPEG Video Codec可以提供no-zero-buffering延遲。對於廣播技術而言,格式轉換過程需要對視頻內容進行插值來預測丟失的數據。由於ZPEG在變換域中所產生的視頻信號在統計上比較理想,所以ZPEG技術對缺失數據的預測在統計上也是相對最優的,使得ZPEG格式轉換技術能夠實現較好的視頻質量。此外,ZPEG技術還可以實現全參考主觀質量監測(full reference subjective quality monitor)。

相關測試結果

雖然出於帶寬節省的目的總是期望視頻數據比特率更低一些,但一般更低的比特率意味著會出現可見的編碼失真。ZPEG Engine作為ZPEG預處理技術的完整模塊,可以用來改善MPEG-2、H.264、HEVC、VP9等編碼器的編碼質量。基於HVS模型的預處理技術可以針對每種輸入視頻做出優化,有效去除視覺冗餘信息。目前,ZPEG Engine模塊可以實現對x264等編解碼器的優化升級。

下面給出的測試及其結果主要關注ZPEG Engine作為x264的附加技術模塊進行優化的實際效果(本次測試以x264為例,其他Codec也適用),即確定ZPEG技術能否在不引入視覺失真的情況下有效節省測試序列的編碼比特率。該測試主要由x264 LLC 合作者CoreCodec與Streaming Learning Center(SLC)合作完成。

ZPEG為SLC提供了帶有ZPEG Engine的x264版本,其中ZPEG Engine預處理模塊通過命令「- - ZPEG」與「- -no-zpeg」進行打開或關閉。同時,SLC選取了不帶有ZPEG Engine的x264公開版本作為對標的Codec。

為了測試ZPEG Engine模塊的效果,SLC選取了15個1080p源視頻片段作為測試序列,其中包含Movie類型,Business類型,動畫類型等,可以測試ZPEG Engine在不同類型視頻上的性能表現。SLC分別使用帶和不帶ZPEG Engine的x264編碼器進行編碼,並默認使用constant rate factor(CRF)模式,「- - CRF 23」。CRF簡單來說是一種per-title編碼,會使得編碼碼流達到確定的質量級(target quality level)而不是確定的比特率。根據經驗,CRF取23時可以產生與iTunes上的Hollywood電影和TV show近似的編碼質量。最後,SLC對編碼結果進行了總結,並使用一些工具進行了主觀質量比較。

SLC使用的編碼機器是HP ZBook Studio G3 notebook,配置為2.81GHz Intel Xeon E3-1505M CPU,32 GB RAM。經過測試發現,ZPEG Engine是一個相對CPU密集型的程序,例如對於時長五分鐘左右的Zoolander片段,其處理時間如下如所示,可以看出,ZPEG的處理時間增加了近一倍。

根據ZPEG Engine模塊在所有測試序列上的編碼結果,可以發現ZPEG Engine能夠有效降低比特率帶寬,而幾乎沒有出現可察覺到的塊效應失真。

下表給出了在上述不同類型視頻片段上的詳細測試結果,可以看出平均碼率節省的幅度是比較可觀的,達21%。例如,對於電影剪輯類型的視頻片段,平均碼率節省達27.5%,其中Hunted片段的節省高達33%。對於Business類型的視頻片段,平均碼率節省達24.6%。對於動畫類型的視頻片段,效果不如前種類型,平均只有11.5%。例如,對於Tears of Steel,由於是CG(計算機繪圖)和現實世界內容的混合,ZPEG產生的效果一般(10.4%),而對於純動畫類型的Ironman則只有3.2%的碼率節省。

另外,對於一個Talking Head視頻,比特率降低了38.36%,VMAF降低2.68,PSNR降低1.58dB。通過實時播放和frame-by-frame查看時,沒有發現比較明顯的視覺差異。

下圖給出了Talking Head的Quality Map view (SSIM Plus Quality of Experience Monitor, SQM) 圖,兩者差異也非常小。在ZPEG的結果中,臉部和頭部附近的雜訊要少一些。

下圖展示了PSNR波動圖,其中綠色線表示無ZPEG的編碼結果,紅色線表示含ZPEG的編碼結果。可以看到兩者有一些差異,經過ZPEG處理後的碼流客觀質量有一定的降低,但比特率的節省幅度更大一些。

另外,對於Elektra電影片段,比特率節省高達30%,從side-by-side對比中可以看出色彩和曝光幾乎是相同的,除了臉部的斑點變少以及皮膚更加平滑外沒有發現其他太過明顯的視覺失真,實時播放時不會輕易察覺到這些不同。

參考文獻

http://www.zpeg.com/visual-preprocessor/

https://streaminglearningcenter.com/blogs/zpeg-engine-x264-cuts-data-rate-21-without-artifacts.html

https://streaminglearningcenter.com/wp-content/uploads/2018/04/ZPEG-Technology-Report_final.pdf

https://forum.videohelp.com/threads/380675-Announcing-ZPEG-Demonstration-Site-Works-with-h264-h265%21


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 媒礦工廠 的精彩文章:

高解析度VR視頻直播技術進展

TAG:媒礦工廠 |