做者介紹:姜生,PP雲高級技術經理,10餘年視頻編解碼算法設計優化,流媒體應用等領域開發經驗。git
一 、VMAF 技術介紹:github
VMAF 的全稱是:Visual Multimethod Assessment Fusion,視頻質量多方法評價融合。這項技術是由美國Netflix公司開發的一套主觀視頻質量評價體系。2016年1月,VMAF 正式開源;算法
下載地址:數據庫
https://github.com/Netflix/vmaf網絡
二 、通行視頻質量評價方法的侷限:機器學習
評價一個編碼後的視頻流與壓縮前的視頻流質量對比值,通行的方法是PSNR(峯值信噪比),或者SSIM(結構類似度)。這些是客觀評價方法。這些方法評價的結果與主觀的感覺有時候相差很大,請看下圖(來自Netflix 的官網):ide
圖一學習
上面四幅圖,取自4幅靜態畫面,畸變程度不同。用PSNR指標來評分,上面兩幅圖的PSNR值大約爲31dB, 下方兩個的PSNR值約爲34dB,這代表上面兩幅圖PNSR 值至關,下面兩幅圖的PSNR值也至關。若是讓人眼來主觀評價呢,對於左側上下兩幅「人羣」圖片,很難察覺有何差別,可是右側兩幅「狐狸」視頻的差別就很明顯了。Netflix綜合不一樣觀衆的評價,對上下兩個「人羣」給出的主觀分數是82(上方)和96(下方),而兩個「狐狸」的分數分別是27(上方)和58(下方)。測試
上面的示例說明PSNR一類的客觀評價與實際的主觀感覺相差較大。這說明這種方法不足以全面正確的評價視頻的質量,爲此Netflix 決定尋找新的方法。優化
3、Neflix對視頻源特性的分析:
雖然針對視頻質量指標的設計和測試已經有能夠公開使用的數據庫,但這些數據庫的內容缺少多樣性。而多樣性正是流媒體服務的最大特色。因爲視頻質量的評估遠不只僅是壓縮失真的評估,因此應該考慮更廣範圍的畫質損失,不只有壓縮致使的損失,還有傳輸過程當中的損失、隨機噪聲,以及幾何變形等狀況。
做爲流媒體公司, Netflix 提供了適合各種人羣觀看的大量影視內容,例如兒童內容、動漫、動做片、紀錄片,視頻講座等. 另外這些內容還包含各類底層源素材特徵,例如膠片顆粒、傳感器噪聲、計算機生成的材質、始終暗淡的場景或很是明亮的色彩等。過去通行的質量指標並無考慮不一樣類型的源內容,如動漫或者視頻講座一類,也未考慮膠片顆粒,而在專業娛樂內容中這些都是很是廣泛的信號特徵。
通常而言,流播視頻是經過TCP傳輸的,丟包和誤碼絕對不會致使視覺損失。這就使得編碼過程當中的兩類失真最終影響到觀衆所感覺到的體驗質量(QoE):壓縮失真以及縮放失真。
爲了針對不一樣的用例構建數據集,Netflix選擇了34個源短片做爲樣本(參考視頻),每一個短片長度是6秒,主要來自於流行的電視劇和電影。源短片包含具有各類高級特徵的內容(動漫、室內/室外、鏡頭搖移、面部拉近、人物、水面、顯著的物體、多個物體)以及各類底層特性(膠片噪聲、亮度、對比度、材質、活動、顏色變化、色澤濃郁度、銳度)。將這些源短片編碼爲H.264/AVC格式的視頻流,分辨率介於384x288到1920x1080之間,碼率介於375kbps到20,000kbps之間,最終得到了大約300個畸變(Distorted)視頻。這些視頻涵蓋了很大範圍的視頻碼率和分辨率,足以反映實際生活中多種多樣的網絡環境。
接着,經過主觀測試肯定非專業觀察者對於源短片編碼後視頻畫質損失的評價。參考視頻和畸變視頻將按順序顯示在家用級別的電視機上。若是畸變視頻編碼後的分辨率小於參考視頻,則會首先放大至源分辨率隨後才顯示在電視上。將全部觀察者針對每一個畸變視頻的分數彙總在一塊兒計算出微分平均意見分數(Differential Mean Opinion Score)即DMOS,並換算成0-100的標準分,其中100分是指參考視頻的分數。
4、評價的結果:
Netflix 推出了二維散點圖來講明上面分析的結果,我從中選取四幅有表明性的散點圖。
散點圖中,橫軸對應了觀察者給出的DMOS分數,縱軸對應了不一樣質量指標預測的分數。每個點表明了一個畸變視頻。咱們爲下列四個指標繪製了散點圖:
PSNR亮度份量(Luminancecomponent)
SSIM
Multiscale FastSSIM
圖二
注意:相同顏色的點對應了畸變視頻和相應參考視頻的結果。從圖中能夠看出,這些指標的分數與觀察者給出的DMOS分數並不是始終一致。以左上角的PSNR圖爲例,PSNR值約爲35dB,而「人工校訂」的DMOS值的範圍介於10(存在惱人的畫質損失)到100(畫質損失幾乎不可察覺)之間。
上圖中的專有名詞:
斯皮爾曼等級相關係數(Spearman’srank correlation coefficient,SRCC)
皮爾森積差相關係數(Pearsonproduct-moment correlation coefficient,PCC)
上面的SRCC, PCC屬於機率統計的概念,能夠參考相關文檔,這兩個值越大越好。
爲了找到一個有效的評價標準,必須選定一個有效的指標,指標必須呈現與DMOS 有限的單調性。下圖中選定了三個典型的參考視頻:一個高噪聲視頻,一個CG動漫,一個電視劇,並用每一個視頻的不一樣畸變版本的預測分數與DMOS分數建立散點圖。爲了得到有效的相對質量分數,咱們但願不一樣視頻短片在質量曲線的相同範圍內能夠實現一致的斜率(Slope)。
PSNR散點圖中,在34dB到36dB的範圍內,電視劇PSNR數值大約2dB的變化對應的DMOS數值變化約爲50(50到100),但CG動漫一樣範圍內相似的2dB數值變化對應的DMOS數值變化低於20(40到60)。雖然CG動漫和電視劇短片的SSIM和FastSSIM體現出更爲一致的斜率但表現依然不夠理想。
簡單總結來講,傳統指標不適合用來評價視頻質量。爲了解決這一問題,咱們使用了一種基於機器學習的模型設計能真實反映人對視頻質量感知狀況的指標。下文將介紹這一指標。
5、 VMAF 方法:
基本想法:
面對不一樣特徵的源內容、失真類型,以及扭曲程度,每一個基本指標各有優劣。經過使用機器學習算法(支持向量機(Support Vector Machine,SVM)迴歸因子)將基本指標「融合」爲一個最終指標,能夠爲每一個基本指標分配必定的權重,這樣最終獲得的指標就能夠保留每一個基本指標的全部優點,藉此可得出更精確的最終分數。咱們還使用主觀實驗中得到的意見分數對這個機器學習模型進行訓練和測試。
VMAF可在支持向量機(SVM)迴歸因子中使用下列基本指標進行融合:
VIF是一種得到普遍使用的圖像質量指標,在最初的形式中,VIF分數是經過將四個尺度(Scale)下保真度的丟失狀況結合在一塊兒衡量的。在VMAF中咱們使用了一種改進版的VIF,將每一個尺度下保真度的丟失看做一種基本指標。
LM是一種圖像質量指標,其基本原理在於:分別衡量可能影響到內容可見性的細節丟失狀況,以及可能分散觀衆注意力的沒必要要損失。這個指標最初會將DLM和Additive Impairment Measure(AIM)結合在一塊兒算出最終分數。
這是一種衡量相鄰幀之間時域差分的有效措施。計算像素亮度份量的均值反差便可獲得該值。
下列散點圖對所選參考短片(高噪聲視頻、CG動漫、電視劇)得出的VMAF指標分數。爲了方便對比,咱們也附上了上文提到的結果最理想的PSNR-HVS指標散點圖。無疑VMAF的效果更好。
六 總結:
改善視頻壓縮標準,以更智能的方式肯定最實用的編碼系統和編碼一整套參數,這些要求在當今的互聯網大環境中十分重要。咱們認爲,使用傳統的指標會妨礙到視頻編碼技術領域的技術進步,然而單純依賴人工視覺測試在不少狀況下並不可行。所以咱們但願VMAF能解決這一問題,使用來自咱們內容中的樣本幫助你們設計和驗證算法。
七 、拓展:
咱們但願能利用VMAF 繪製每個clip 的不一樣分辨率下的bitrate vs MOS 的曲線圖,並保存這個曲線圖。在實際點播的時候,根據resolution,MOS 選擇一個最佳的bitrate,來編碼:
下面是我繪製的Bkimono_1920x1080_8_24_240.yuv 的散點圖:
設置編碼參數時,若是須要達到MOS=80的清晰度,bitrate 能夠選擇2.0MB. 能夠看出當bitrate 超過3MB 後,MOS 值變化很是緩慢,對於指定的MOS 值,咱們能夠選擇一個bitrate 降低20%甚至更多的bitrate的編碼參數,可是MOS 不會降低1%。
這中方法相比單純經過優化編碼器的方法,效果要明顯不少,智能不少,同時實現起來要容易。應該就是當前窄帶高清的理念了。
對於每個clip 而言,不一樣的gop,或者不一樣的時間段,視頻流的細節和運動特色不同,能夠用VMAF 的方法爲每個時間段作評價,進而實時調整編碼參數,在一樣的質量前提下,儘可能下降碼率。