1.視頻質(zhì)量評價分類
(1).視頻質(zhì)量評價分為主觀評價和客觀評價
其中通過人眼觀察得出的視頻質(zhì)量評價為主觀評價,通過算法和視覺模型推算出的視頻質(zhì)量評價為客觀評價。因為主觀評價需要耗費大量的人力資源和時間成本,在工業(yè)領域大規(guī)模使用不太現(xiàn)實,因此根據(jù)人眼視覺系統(tǒng)特性建立視頻質(zhì)量評價模型,在此基礎上由計算機自動完成視頻質(zhì)量評價。
(2).按照對原始視頻的依賴程度,視頻質(zhì)量評價方法分為三類:
全參考方法(Full Reference,F(xiàn)R)、部分參考方法(Reduce Reference,RR)和無參考方法(No Reference,NR)。全參考方法需要完整的原始視頻,部分參考方法則利用原視頻相關的部分信息,而無參考方法只根據(jù)待評價視頻得出視頻質(zhì)量。目前大部分的視頻評價方法都是全參考方法并取得了一定的進展,單是全參考方法依賴沒有失真的原始視頻,有很大的傳輸帶寬限制,一般都只能運用于視頻編碼階段進行編碼優(yōu)化。無參考方法則無需原始視頻信息,直接根據(jù)待評價視頻的信息評價視頻質(zhì)量,具有更好的靈活性和通用性,以及更廣泛的應用價值,目前已經(jīng)是視頻質(zhì)量評價領域的研究熱點。
(3).使用哪個
由于無參考方法目前尚處于研究階段,沒有特別好的算法模型和成熟的商用版本,一些研究成果也沒法找到相應的源碼、lib包,所以我們主要討論下全參考方法的視頻質(zhì)量評估。
2.全參考視頻質(zhì)量評價
最常用的全參視頻質(zhì)量評價方法有如下幾種:
PSNR(峰值信噪比):用得最多,但是其值不能很好地反映人眼主觀感受。一般取值范圍:20-40.值越大,視頻質(zhì)量越好。
SSIM(結(jié)構(gòu)相似性):計算稍復雜,其值可以較好地反映人眼主觀感受。一般取值范圍:0-1.值越大,視頻質(zhì)量越好。
MSE(均方誤差)
由于這幾個算法得出的評價與主觀感受有時候相差較大,Netflix發(fā)布了自己的質(zhì)量評價體系VMAF(Visual Multimethod Assessment Fusion),此次介紹的也就是VMAF。
下載地址:
https://github.com/Netflix/vmaf
(1).通行視頻質(zhì)量評價方法的局限:
評價一個編碼后的視頻流與壓縮前的視頻流質(zhì)量對比值,通行的方法是PSNR(峰值信噪比),或者SSIM(結(jié)構(gòu)相似度)。這些是客觀評價方法。這些方法評價的結(jié)果與主觀的感受有時候相差很大,請看下圖(來自Netflix 的官網(wǎng)):

圖一
上面四幅圖,取自4幅靜態(tài)畫面,畸變程度不一樣。用PSNR指標來評分,上面兩幅圖的PSNR值大約為31dB, 下方兩個的PSNR值約為34dB,這表明上面兩幅圖PNSR 值相當,下面兩幅圖的PSNR值也相當。如果讓人眼來主觀評價呢,對于左側(cè)上下兩幅“人群”圖片,很難察覺有何差異,但是右側(cè)兩幅“狐貍”視頻的差異就很明顯了。Netflix綜合不同觀眾的評價,對上下兩個“人群”給出的主觀分數(shù)是82(上方)和96(下方),而兩個“狐貍”的分數(shù)分別是27(上方)和58(下方)。
上面的示例說明PSNR一類的客觀評價與實際的主觀感受相差較大。這說明這種方法不足以全面正確的評價視頻的質(zhì)量,為此Netflix 決定尋找新的方法。
3.Neflix對視頻源特性的分析:
(1).收集與用例密切相關的數(shù)據(jù)集:
雖然針對視頻質(zhì)量指標的設計和測試已經(jīng)有可以公開使用的數(shù)據(jù)庫,但這些數(shù)據(jù)庫的內(nèi)容缺乏多樣性。而多樣性正是流媒體服務的最大特點。由于視頻質(zhì)量的評估遠不僅僅是壓縮失真的評估,所以應該考慮更廣范圍的畫質(zhì)損失,不僅有壓縮導致的損失,還有傳輸過程中的損失、隨機噪聲,以及幾何變形等情況。
(2).視頻源的特性:
作為流媒體公司, Netflix 提供了適合各類人群觀看的大量影視內(nèi)容,例如兒童內(nèi)容、動漫、動作片、紀錄片,視頻講座等. 另外這些內(nèi)容還包含各種底層源素材特征,例如膠片顆粒、傳感器噪聲、計算機生成的材質(zhì)、始終暗淡的場景或非常明亮的色彩等。過去通行的質(zhì)量指標并沒有考慮不同類型的源內(nèi)容,如動漫或者視頻講座一類,也未考慮膠片顆粒,而在專業(yè)娛樂內(nèi)容中這些都是非常普遍的信號特征。
(3).失真的來源:
一般而言,流播視頻是通過TCP傳輸?shù)?,丟包和誤碼絕對不會導致視覺損失。這就使得編碼過程中的兩類失真最終影響到觀眾所感受到的體驗質(zhì)量(QoE):壓縮失真以及縮放失真。
為了針對不同的用例構(gòu)建數(shù)據(jù)集,Netflix選擇了34個源短片作為樣本(參考視頻),每個短片長度是6秒,主要來自于流行的電視劇和電影。源短片包含具備各種高級特征的內(nèi)容(動漫、室內(nèi)/室外、鏡頭搖移、面部拉近、人物、水面、顯著的物體、多個物體)以及各種底層特性(膠片噪聲、亮度、對比度、材質(zhì)、活動、顏色變化、色澤濃郁度、銳度)。將這些源短片編碼為H.264/AVC格式的視頻流,分辨率介于384x288到1920x1080之間,碼率介于375kbps到20,000kbps之間,最終獲得了大約300個畸變(Distorted)視頻。這些視頻涵蓋了很大范圍的視頻碼率和分辨率,足以反映實際生活中多種多樣的網(wǎng)絡環(huán)境。
接著,通過主觀測試確定非專業(yè)觀察者對于源短片編碼后視頻畫質(zhì)損失的評價。參考視頻和畸變視頻將按順序顯示在家用級別的電視機上。如果畸變視頻編碼后的分辨率小于參考視頻,則會首先放大至源分辨率隨后才顯示在電視上。將所有觀察者針對每個畸變視頻的分數(shù)匯總在一起計算出微分平均意見分數(shù)(Differential Mean Opinion Score)即DMOS,并換算成0-100的標準分,其中100分是指參考視頻的分數(shù)。
4.評價的結(jié)果:
Netflix 推出了二維散點圖來說明上面分析的結(jié)果,我從中選取四幅有代表性的散點圖。
散點圖中,橫軸對應了觀察者給出的DMOS分數(shù),縱軸對應了不同質(zhì)量指標預測的分數(shù)。每一個點代表了一個畸變視頻。我們?yōu)橄铝兴膫€指標繪制了散點圖:
PSNR亮度分量(Luminancecomponent)
SSIM
Multiscale FastSSIM
PSNR-HVS

圖二
注意:相同顏色的點對應了畸變視頻和相應參考視頻的結(jié)果。從圖中可以看出,這些指標的分數(shù)與觀察者給出的DMOS分數(shù)并非始終一致。以左上角的PSNR圖為例,PSNR值約為35dB,而“人工校正”的DMOS值的范圍介于10(存在惱人的畫質(zhì)損失)到100(畫質(zhì)損失幾乎不可察覺)之間。
上圖中的專有名詞:
斯皮爾曼等級相關系數(shù)(Spearman’srank correlation coefficient,SRCC)
皮爾森積差相關系數(shù)(Pearsonproduct-moment correlation coefficient,PCC)
上面的SRCC, PCC屬于概率統(tǒng)計的概念,可以參考相關文檔,這兩個值越大越好。
為了找到一個有效的評價標準,必須選定一個有效的指標,指標必須呈現(xiàn)與DMOS 有限的單調(diào)性。下圖中選定了三個典型的參考視頻:一個高噪聲視頻,一個CG動漫,一個電視劇,并用每個視頻的不同畸變版本的預測分數(shù)與DMOS分數(shù)創(chuàng)建散點圖。為了獲得有效的相對質(zhì)量分數(shù),我們希望不同視頻短片在質(zhì)量曲線的相同范圍內(nèi)可以實現(xiàn)一致的斜率(Slope)。

PSNR散點圖中,在34dB到36dB的范圍內(nèi),電視劇PSNR數(shù)值大約2dB的變化對應的DMOS數(shù)值變化約為50(50到100),但CG動漫同樣范圍內(nèi)類似的2dB數(shù)值變化對應的DMOS數(shù)值變化低于20(40到60)。雖然CG動漫和電視劇短片的SSIM和FastSSIM體現(xiàn)出更為一致的斜率但表現(xiàn)依然不夠理想。
簡單總結(jié)來說,傳統(tǒng)指標不適合用來評價視頻質(zhì)量。為了解決這一問題,我們使用了一種基于機器學習的模型設計能真實反映人對視頻質(zhì)量感知情況的指標。下文將介紹這一指標。
5. VMAF 方法:
基本想法:
面對不同特征的源內(nèi)容、失真類型,以及扭曲程度,每個基本指標各有優(yōu)劣。通過使用機器學習算法(支持向量機(Support Vector Machine,SVM)回歸因子)將基本指標“融合”為一個最終指標,可以為每個基本指標分配一定的權(quán)重,這樣最終得到的指標就可以保留每個基本指標的所有優(yōu)勢,借此可得出更精確的最終分數(shù)。我們還使用主觀實驗中獲得的意見分數(shù)對這個機器學習模型進行訓練和測試。
VMAF可在支持向量機(SVM)回歸因子中使用下列基本指標進行融合:
1.視覺信息保真度(Visual Information Fidelity,VIF):
VIF是一種獲得廣泛使用的圖像質(zhì)量指標,在最初的形式中,VIF分數(shù)是通過將四個尺度(Scale)下保真度的丟失情況結(jié)合在一起衡量的。在VMAF中我們使用了一種改進版的VIF,將每個尺度下保真度的丟失看作一種基本指標。
2.細節(jié)丟失指標(Detail LossMetric,DLM):
LM是一種圖像質(zhì)量指標,其基本原理在于:分別衡量可能影響到內(nèi)容可見性的細節(jié)丟失情況,以及可能分散觀眾注意力的不必要損失。這個指標最初會將DLM和Additive Impairment Measure(AIM)結(jié)合在一起算出最終分數(shù)。
3.運動:
這是一種衡量相鄰幀之間時域差分的有效措施。計算像素亮度分量的均值反差即可得到該值。
下列散點圖對所選參考短片(高噪聲視頻、CG動漫、電視?。┑贸龅腣MAF指標分數(shù)。為了方便對比,我們也附上了上文提到的結(jié)果最理想的PSNR-HVS指標散點圖。無疑VMAF的效果更好。


6.VMAF在Mac系統(tǒng)下的安裝和編譯
1.下載homebrew并安裝
2.安裝python
vmaf的核心庫用c編寫,而其余的功能性腳本由Python編寫,所以需要安裝Python(支持Python3以下版本)
brew install gcc freetype pkg-config homebrew/core/hdf5 python@2
接下來安裝Python的各種功能包
brew install numpy scipy
pip install matplotlib notebook pandas sympy nose scikit-learn scikit-image h5py sureal
安裝完成后在終端中輸入如下指令,用來檢測各種pkg包是否安裝成功
python -c 'import numpy as pkg; print(pkg.__version__); print(pkg.__file__)'
python -c 'import scipy as pkg; print(pkg.__version__); print(pkg.__file__)'
python -c 'import matplotlib as pkg; print(pkg.__version__); print(pkg.__file__)'
python -c 'import pandas as pkg; print(pkg.__version__); print(pkg.__file__)'
python -c 'import sklearn as pkg; print(pkg.__version__); print(pkg.__file__)'
python -c 'import skimage as pkg; print(pkg.__version__); print(pkg.__file__)'
python -c 'import h5py as pkg; print(pkg.__version__); print(pkg.__file__)'
python -c 'import sureal as pkg; print(pkg.__version__); print(pkg.__file__)'
3.安裝vmaf
Python安裝完成后,開始安裝vmaf
git clone https://github.com/Netflix/vmaf.git
cd vmaf
make
將python/src子目錄添加到PYTHONPATH環(huán)境變量中
export PYTHONPATH="$(pwd)/python/src:$PYTHONPATH"
也可以通過寫入到文件~/.bash_profile中來永久寫入到環(huán)境變量中
echo export PYTHONPATH="$(pwd)/python/src:$PYTHONPATH" >> ~/.bash_profile
source ~/.bash_profile
至此vmaf就安裝完成,下面開始測試是否安裝成功
4.測試
在終端中輸入指令:
./unittest
所有測試全部成功完成就說明vmaf安裝成功。
vmaf 源碼里帶了一些用于測試的視頻,驗證一下評分功能:
./run_vmaf yuv420p 576 324 \
python/test/resource/yuv/src01_hrc00_576x324.yuv \
python/test/resource/yuv/src01_hrc01_576x324.yuv \
--out-fmt json
# 執(zhí)行成功有以下輸出
...
],
"aggregate": {
"VMAF_feature_adm2_score": 0.9345878041226809,
"VMAF_feature_motion2_score": 3.8953518541666665,
"VMAF_feature_vif_scale0_score": 0.36342081156994926,
"VMAF_feature_vif_scale1_score": 0.7666473878461729,
"VMAF_feature_vif_scale2_score": 0.8628533892781629,
"VMAF_feature_vif_scale3_score": 0.9159718691393048,
"VMAF_score": 76.69927060701059,
"method": "mean"
}
}
從輸出可以看出對轉(zhuǎn)碼前和轉(zhuǎn)碼后的兩個視頻逐幀比較,從 6 個維度評分,最后是總分 VMAF_score 。