视频质量评估的新方式:VMAF百分位数
正文字數(shù):4964 ?閱讀時長:7分鐘
在這篇博客文章中,我們介紹了一種新的基于計算視頻多方法評估融合(VMAF)百分位數(shù)的視覺質(zhì)量評估方法。
作者 /?Adeel Abbas
原文鏈接 / https://blog.twitter.com/engineering/en_us/topics/infrastructure/2020/introducing-vmaf-percentiles-for-video-quality-measurements.html
在Twitter上,我們希望通過即時加載的、不會意外停止且始終看起來清晰的視頻為客戶提供一個令人愉悅的視頻體驗。在這篇博客文章中,我們介紹了一種新的基于計算視頻多方法評估融合(VMAF)百分位數(shù)的視覺質(zhì)量評估方法。使用VMAF百分位數(shù),我們可以推斷出編碼技術(shù)如何在某些復(fù)雜的幀上執(zhí)行的情況,并允許我們首先專注于提高它們的質(zhì)量。此外,VMAF百分位數(shù)對于非視頻工程師來說更易懂,并且可以提供對于編碼算法對視頻質(zhì)量影響的另一種理解。
每天,成千上萬的人來到Twitter觀看和了解正在發(fā)生的事情,并對塑造我們時代的事件有新的認識和新的視角。大量廣告商依靠我們來傳達他們的信息,這有助于他們發(fā)展業(yè)務(wù)。視頻是這種體驗的核心部分。我們希望通過讓觀看視頻變得無縫和愉快的方式來實現(xiàn)公眾對話。為此,我們在各種設(shè)備和平臺之間包括質(zhì)量、響應(yīng)能力、互操作性之間取得適當?shù)钠胶鈦磉_到這一目標。還有其他需要重要考慮的因素,例如,可以隨時在世界的任何地方可靠地提供視頻服務(wù),并確保我們滿足客戶的隱私期望和要求。
最近幾個月,Twitter上的視頻消費量出現(xiàn)了前所未有的增長。再加上移動設(shè)備每年再更新出有著越來越大、更好的屏幕的這一事實,這些都清楚表明,對視頻壓縮技術(shù)的投資對于我們的長期戰(zhàn)略來說至關(guān)重要。諸如HEVC,AV1和VVC之類的下一代編解碼器已展示出比H.264令人印象深刻的編碼效率改進。我們認為,對于編解碼器而言,在編碼效率和計算復(fù)雜度之間取得平衡是很重要的,這樣才能實現(xiàn)硬件解碼能力。這樣可以節(jié)省電池壽命,并允許CPU執(zhí)行其他重要任務(wù)。考慮到所有可用的編碼選項和折衷之后,投資一種可靠的視頻質(zhì)量評估方法變得尤為重要,該方法可幫助我們快速做出決策并且在理解上的障礙是很小的。
為此,峰值信噪比(PSNR)仍然是視頻編解碼器標準化的事實上的行業(yè)標準。但是,視頻編碼行業(yè)的研究人員非常清楚其局限性。例如,它沒有考慮壓縮偽像的時間特性,也沒有考慮到存在攝像機噪聲的情況下,PSNR的提高與主觀質(zhì)量無關(guān)的事實。
VMAF是由Netflix,南加州大學和德克薩斯大學奧斯汀分校聯(lián)合開發(fā)的目標(objective)度量標準。VMAF始終顯示出比PSNR或任何其他客觀指標更接近人類視覺感知的數(shù)值。它是使用機器學習模型融合的幾個時空度量的組合。VMAF分數(shù)更容易理解,因為它在0到100的線性范圍內(nèi)運行,而PSNR是對數(shù)的。它考慮了縮放和壓縮偽像,此外,還具有針對移動視頻消費進行訓練的模型。
作為移動優(yōu)先平臺,Twitter十分關(guān)注向小屏幕大規(guī)模提供高質(zhì)量視頻的問題。在我們之前的博客文章中,我們介紹了一種新的目標視覺質(zhì)量評估方法,稱為自適應(yīng)配對比較。自適應(yīng)配對比較是為移動視頻消費量而設(shè)計的,并且比行業(yè)標準的“平均意見得分”和“雙刺激MOS”更可靠地測量視覺質(zhì)量。作為下一步,此博客介紹了一種目標的視頻質(zhì)量評估方法,該方法可以計算序列中所有幀的VMAF分數(shù)的百分位數(shù)。該方法非常適合移動視頻消費,我們使用它來優(yōu)化實時編碼階梯。我們認為它是比Bjontegaard Delta(BD)速率方法的一種有價值的替代方法。
客戶端使用自適應(yīng)比特率流傳輸算法來選擇可最大程度提高視頻質(zhì)量的變體,同時避免回放重新緩沖的變體。但是,我們還希望在自適應(yīng)比特率算法選擇的任何比特率下最大化感知質(zhì)量。編碼器的速率控制旨在保持所有幀的質(zhì)量一致,在可能的時候節(jié)省比特,并在需要時限制比特率。如果我們不限制比特率,幾乎所有幀都將獲得近乎完美的VMAF分數(shù)。當我們限制比特率時,視頻質(zhì)量下降尤其明顯。
如在VMAF GitHub上討論的那樣,通過在整個序列上求平均值來匯總幀的VMAF分數(shù)可能會隱藏難以編碼的幀的影響(如果這些幀不經(jīng)常出現(xiàn))。合并幀的最佳方法是一個未解決的問題。例如,VMAF工具已經(jīng)可以匯總諧波平均值并輸出一個百分位數(shù)。在此博客的上下文中,在計算了序列的所有幀的VMAF分數(shù)之后,我們計算了第1個,第5個,第10個,第25個和第50個百分位數(shù)。根據(jù)定義,第5個百分位數(shù)給了我們最差的5%幀的VMAF分數(shù),而第50個百分位數(shù)是中值。這里的直覺是,我們不是平等地衡量所有的幀并得到一個分數(shù),我們根據(jù)它們的復(fù)雜程度對幀進行排名,然后看看一個特定的編碼器設(shè)置如何在這些不同的排名中執(zhí)行。我們想按照幀的VMAF分數(shù)從最低到最高的順序優(yōu)先提高幀的質(zhì)量。擁有高VMAF分數(shù)的框架看起來已經(jīng)很不錯了,因此改善它們的質(zhì)量也不太重要了。
實驗設(shè)置:測試管道
我們從xiphd網(wǎng)站上選擇了4個時長1分鐘的1080p/60fps視頻片段。測試管道如下圖所示:
測試管道設(shè)置
為了提供以自適應(yīng)比特率格式來傳輸視頻文件,將攝取的輸入視頻分為多個小段。此過程稱為分段\分割。分段使玩家能夠隨著網(wǎng)絡(luò)條件的變化而優(yōu)雅地更改比特率和分辨率。輸入是一個RTMP攝取,該攝取被細分為幾個三秒的傳輸流片段。下采樣過程中會將視頻從輸入轉(zhuǎn)換為目標變體分辨率,例如從1080p轉(zhuǎn)換為720p。最后,我們將縮小后的視頻饋送到x264編碼器中。并使用以下FFmpeg命令執(zhí)行下采樣和編碼:
ffmpeg -i input.ts -vf scale=1280:720 -c:v libx264 -tune psnr -x264-params vbv-maxrate=2500:vbv-bufsize=2500 output.ts上面的命令使用默認的雙三次算法將源采樣為720p分辨率。然后該命令通過使用x264進行編碼,并通過默認CRF值為23的恒定速率因子(CRF)速率控制來進行編碼。CRF是實時流的一個很好的實用設(shè)置,因為它可以在前瞻性有限下的幀窗口上工作,不需要中間文件,并在內(nèi)容很方便時保存位(例如,靜態(tài)幀)。
如果內(nèi)容難以編碼,則我們不能讓編碼器花費無限的比特數(shù)。因此,我們需要通過設(shè)置vbv-maxrate和vbv-bufsize參數(shù)來限制數(shù)據(jù)速率。在這方面,只要我們達到數(shù)據(jù)速率上限,就會發(fā)生視覺質(zhì)量損失。這通常是因為內(nèi)容很困難,并且編碼器面臨著將比特率控制在預(yù)算范圍內(nèi)的挑戰(zhàn)。
tune psnr參數(shù)禁用了x264中的心理視覺優(yōu)化。這是因為盡管這些優(yōu)化可改善感知質(zhì)量,但它們會增加源視頻和壓縮視頻之間的差異,從而降低PSNR(和VMAF)得分。
為了根據(jù)原始輸入來測量VMAF分數(shù),必須對編碼視頻進行解碼,上采樣和組合裝配在一起。最后,針對每個視頻幀,針對攝取的輸入流計算組合視頻的VMAF。如前所述,我們對為手機觀看量身定制的VMAF訓練模型感興趣,也就是說,即是觀看距離超過視頻高度的3倍時。
實驗設(shè)置:VMAF百分位圖
當我們對上面提到的四個序列運行x264時,計算平均百分位數(shù)并繪制它們,我們得到一個VMAF Centile圖(VMAF- cp),看起來像這樣:
VMAF centiles為x264medium預(yù)設(shè)
乍一看,VMAF-CP看起來類似于標準開發(fā)中廣泛使用的速率失真圖。這是因為隨著VMAF百分數(shù)沿x軸增加,分數(shù)也會單調(diào)增加。但是,這兩者之間存在著明顯的區(qū)別。通常,速率失真圖是通過在恒定的量化參數(shù)設(shè)置下運行四個或更多個編碼,測量所有幀的PSNR或VMAF并將平均值用作質(zhì)量度量來獲得的。在此設(shè)置中,速率控制通常是關(guān)閉的。這對于開發(fā)編碼工具的標準開發(fā)是有意義的,但是,我們的首選是使用我們在生產(chǎn)中使用的CRF速率控制算法來評估視覺質(zhì)量。
對于上面顯示的數(shù)據(jù),所有幀的平均VMAF為97.7(100是可達到的最高得分)。因此,使用序列幀的平均VMAF作為視頻質(zhì)量指標會使我們誤以為總體視頻質(zhì)量非常好。但是,如果我們看一下第1個,第5個和第10個百分點,我們可以看到有機會提高性能最差的幀的質(zhì)量。
例子:選擇x264預(yù)設(shè)
舉例來說,假設(shè)我們要為轉(zhuǎn)碼堆棧選擇一個x264預(yù)設(shè)。x264中的預(yù)設(shè)對編碼工具進行了分類,以便人們可以選擇編碼器速度以達到一定的壓縮質(zhì)量。在上面的FFmpeg命令中,我們沒有指定預(yù)設(shè),因此使用了默認medium的預(yù)設(shè)。接下來,我們將使用非常快,更快,快,中等,慢和慢的預(yù)設(shè)值對x264進行編碼,并在下圖中繪制VMAF百分位數(shù):
VMAF centiles為x264預(yù)設(shè)
不出所料,“very fast”預(yù)設(shè)產(chǎn)生的質(zhì)量最低,并且從“very fast“到“faster“的質(zhì)量跳變最陡。隨著我們從faster轉(zhuǎn)向fast,質(zhì)量仍然有不錯的提升。fast和medium的預(yù)設(shè)達到相似的質(zhì)量,因為曲線彼此非常接近。slow和slower預(yù)設(shè)可進一步提高質(zhì)量。另一方面,如果僅查看平均VMAF得分(如下所示),則很難評估不同預(yù)設(shè)對質(zhì)量的影響,因為數(shù)字幾乎相同。
veryfast | faster | fast | medium | slow | slower |
96.47 | 97.68 | 97.68 | 97.70 | 97.86 | 98.01 |
為了大規(guī)模運行滿足實際約束的編碼,我們必須注意每次編碼所花費的CPU。我們的目標是在給定的CPU預(yù)算下達到最高的視覺質(zhì)量,而不要花費大量的時間在編碼工具上,而這些編碼工具不會以有效的方式促進這種改進。在下表中,我們列出了相對于具有3.1GHz Quad Core i7 CPU的計算機上的``very fast”'預(yù)設(shè)的每個預(yù)設(shè)所花費的CPU時間。編碼x264中等預(yù)設(shè)需要大約13%的計算量,并且質(zhì)量改進是不合理的(最后兩行顯示相對于左列的預(yù)設(shè),每個預(yù)設(shè)的VMAF分別增加了10%和25%)。因此,在這種情況下,fast預(yù)設(shè)是首選設(shè)置。
? ? | veryfast | faster | fast | medium | slow | slower |
CPU Cost (vs veryfast) | 1.0x | 1.8x | 2.2x | 2.5x | 3.6x | 7.2x |
Incremental CPU Cost | - | 80% | 22% | 13% | 44% | 100% |
Incremental VMAF Score (10?th?Percentile) | - | 2.18 | 0.82 | 0.03 | 0.28 | 0.52 |
Incremental VMAF Score (25?th?Percentile) | - | 1.47 | 0.12 | 0.02 | 0.46 | 0.20 |
下面是一個示例幀,顯示grand_theft_auto序列的veryfast(左)和fast(右)預(yù)置的視覺質(zhì)量:
very fast(左)和fast(右)預(yù)置之間的質(zhì)量差異
通過這個小例子,我們希望說明VMAF-CP plot是一種魯棒方法,可以調(diào)優(yōu)編解碼器參數(shù),以獲得移動視頻消費所需的視覺質(zhì)量。
例子:編碼ladder
設(shè)計編碼梯形圖的一種方法是使用``凸優(yōu)化(CHO)'',由此我們可以為每個不同的分辨率繪制速率失真曲線,并選擇使速率保持在速率失真曲線包絡(luò)線上的比特率。CHO是一種經(jīng)過充分研究的技術(shù),但它通常依賴于在序列幀上平均的速率失真曲線的繪制。當CHO與CRF速率控制一起使用時,對序列幀上的PSNR或VMAF分數(shù)求平均值會產(chǎn)生錯誤,因為大多數(shù)幀的質(zhì)量通常比較低百分位數(shù)高得多。假設(shè)可以在CRF模式下掃描速率失真曲線,但是我們的實驗表明,在實際速率點下,序列序列中的平均VMAF得分無法區(qū)分質(zhì)量改進。
VMAF百分位數(shù)可以在這里提供幫助。僅需五種編碼,我們就可以快速了解現(xiàn)有梯子ladder在視覺質(zhì)量方面的表現(xiàn)。讓我們以前面部分中的720p at 2.5Mbps變體為例,選擇快速預(yù)設(shè),因為它看起來是一個合理的折衷點,并假設(shè)其他變體如下:
Resolution / Frame Rate | 224p30 | 320p30 | 480p30 | 720p30 | 1080p30 |
Average Bitrate | 300kbps | 600kbps | 1.25Mbps | 2.50Mbps | 5Mbps |
vbv-maxrate | 300 | 600 | 1250 | 2500 | 5000 |
vbv-bufsize | 300 | 600 | 1250 | 2500 | 5000 |
該梯子的VMAF-CP如下圖所示:
full ladder的VMAF曲線圖
在上面的圖中,隨著ladder的上升,我們可以看到質(zhì)量會有規(guī)律的跳躍。這是可取的,因為我們希望看到每個變體的質(zhì)量都有有意義的提高。我們不希望看到變體曲線彼此接近,因為這表明表現(xiàn)不佳的變體。我們的最高變體在第25個百分點中獲得98+ VMAF得分。這表示如果視頻播放器能夠升級到此變體,則對于75%的幀來說,該視頻的視覺質(zhì)量幾乎完美。為了簡潔起見,我們選擇使用快速預(yù)設(shè)對這些變體進行編碼,盡管只有少量的附加編碼,但您可以為每個變體選擇最佳的預(yù)設(shè)。進一步的可能性可能是嘗試其他CRF值,圖片結(jié)構(gòu)組或其他x264設(shè)置。
我們還可以使用上述方法為更高的幀速率變體設(shè)計比特率。例如,假設(shè)我們要以720p / 30fps變體的視覺質(zhì)量在上述ladder中提供720p / 60fps變體。由于編碼器編碼的幀數(shù)是原來的兩倍,因此如果我們在與720p / 30fps相同的比特率約束下提供720p / 60fps變體,則視覺質(zhì)量將不如30fps。為了確定增加多少比特率以達到與720p / 30fps變體相似的質(zhì)量,讓我們進行一個實驗,以以下比特率對720p / 60fps變體進行編碼,并測量每個數(shù)據(jù)點的VMAF百分位數(shù):
Average Bitrate | 2.5Mbps | 2.8Mbps | 3.2Mbps | 3.6Mbps |
vbv-maxrate | 2500 | 2800 | 3200 | 3600 |
vbv-bufsize | 2500 | 2800 | 3200 | 3600 |
在下面的圖中,我們繪制了以上四個率點的VMAF百分位數(shù),并與我們之前選擇的720p/30fps變體進行比較。我們可以看到,為了滿足30fps版本的質(zhì)量,720p/60fps版本的比特率需要提高到大約3.6Mbps。否則,60fps變種可能遭受壓縮偽影比30fps變種更多。
不同設(shè)置下的VMAF曲線圖為720p60,而不是720p30
總結(jié)和未來展望
由于開源代碼社區(qū)的存在,VMAFu作為一種視覺質(zhì)量指標,它比PSNR更接近人類視覺的感知并且正在不斷提高。它最初是根據(jù)廣播質(zhì)量的內(nèi)容用例設(shè)計的,并且可以與諸如BD-rate和Convex Hull Optimization之類的現(xiàn)有速率失真優(yōu)化技術(shù)配合使用。VMAF百分位數(shù)通過提供有關(guān)編碼技術(shù)在某些最差幀上的性能表現(xiàn)的數(shù)據(jù),而不僅僅是在所有幀上求平均值,從而使我們能夠做出更好,更快速的與壓縮效率的決策。而且,對于非視頻工程師而言,該計算更容易理解。該計算僅涉及計算所有幀的VMAF分數(shù),計算百分位數(shù),并從最低到最高繪制或制表。
確定VMAF百分位數(shù)與人類視覺的相關(guān)性還需要做更多的工作。在這方面,我們可以測量VMAF百分位數(shù)與平均意見得分之間的關(guān)系,并與現(xiàn)有技術(shù)進行比較,例如使用平均值進行速率失真優(yōu)化。這篇博客的重點是調(diào)整優(yōu)化x264編碼器,但是,我們也可以比較下一代的編解碼器。這可能會為它們在實際應(yīng)用中的性能提供新的視角。
LiveVideoStackCon 2020 SFO(線上峰會)
無需漂洋過海,我們在線上等您!
LiveVideoStackCon 2020?美國舊金山站
北京時間:2020年12月11日-12月13日
點擊【閱讀原文】訪問直播頁面
總結(jié)
以上是生活随笔為你收集整理的视频质量评估的新方式:VMAF百分位数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【线上分享】边缘计算与云原生
- 下一篇: 音视频技术开发周刊 | 173