基於人眼視覺模型,實現碼率、質量、成本的最優均衡
將編碼器的優化目標從經典的保真度最高,調整為「主觀體驗最好」。
視覺是具有「掩蔽效應」的。
通俗地說,人眼作為圖像信息的接收端,並不能精準捕捉到圖像畫面的所有變化。
例如,人眼對於畫面中亮度的變化、靜止的圖像、畫面整體結構比較敏感;而對於色度的變化、運動的圖像以及畫面內部細節相對不敏感。
面對人們追求更高清、極致的視頻體驗趨勢,視頻編解碼技術是重中之重,其核心目標是:在可用的、有限的計算資源內,追求儘可能更高的視頻「重建質量」和儘可能高的壓縮比,即更低的帶寬,以及更高清的畫面體驗。
「窄帶高清」便可以利用人眼視覺的掩蔽效應,從人眼視覺模型出發,將編碼器的優化目標從經典的「保真度最高」調整為「主觀體驗最好」,從而實現碼率、質量、成本的最優均衡。
窄帶高清技術全景
窄帶高清轉碼主要經過解碼、重建提升視頻質量、再編碼三個過程,這便對應產生了三個問題:如何定義視頻質量?如何實現質量提升?如何在編碼環節鞏固提升視頻質量?
如何定義視頻質量?在視頻編碼的標準制定過程當中,客觀質量(PSNR,SSIM)的衡量佔比相對較高。但在實際應用中,對於視頻質量的評價更偏向主觀。因此,依靠主觀體驗建模,提取人眼感興趣和視覺冗餘的區域做處理。
在質量提升方面,使用一些低複雜度的深度學習的方式,通過畫質增強把一些人眼更敏感的如:細節和強邊緣等信息進行增強。
而如何鞏固提升視頻質量?則需要增強和編碼進行協同配合,也就是編碼要盡量保證增強之後的細節能夠保留下來,在增強時也需要考慮編碼的友好性。
下圖是窄帶高清全景圖,在對視頻的內容分析上分為High level和Low level。High level包括語義:場景,分割等;Low level包括時空複雜度、JND。
編碼和處理各自都有一定的內容分析能力,流程內部還會有編碼和處理的反饋機制。
根據以上這些維度的分析,可以得到自適應參數的決策結果。根據此結果,窄帶高清再去做相應的視頻修復和視頻增強。
質量、碼率與成本的最優均衡
每一代編碼標準的演進,都是在不斷探索極限壓縮率。
在極致的質量和碼率之間尋找平衡,也就是不斷的優化Bit-rate,隨之而來的是成本的不斷增加。
在實際商用中對成本更加敏感,所以商用編碼器的優化就是在質量、碼率和計算複雜度(成本)之間不斷地尋求最優平衡。
阿里雲視頻雲的編解碼主要基於自研的兩大編碼器S264和S265,覆蓋直播,點播,RTC場景,從內核、前處理到碼控各個部分,基於不同應用場景開發了100多個算法。總體性能相對於開源編碼器,在全場景下有20%-60%的壓縮率優勢,特別是在超高清、低延時場景下有主觀的優勢。
針對不同場景,在內核(運動搜索、運動補償、SAO、WPP等)和碼控(AQ、CUTREE等)上調整編碼決策。而主觀質量的優化,在上述模塊中都有涉及,包括對主觀更友好的模式決策和碼率分配。
比如:在一段視頻中某些片段質量會比較差,某些片段質量比較好,在傳統的模式下很難做到主觀上的質量均衡,對此窄帶高清會有一些針對性的碼控優化。
針對低時延直播場景,它的Lookahead長度不能像點播那麼長,能夠更好的分配碼率,因此也需要一些優化方法,去保證在低延時場景下,客觀質量盡量逼近點播場景。
下圖是視頻雲S264和265的演化路徑,到目前為止,S265經過優化質量得到了提升,特別是從去年到今年,點播質量提升13%,直播質量提升15%,S264質量提升15%,RTC場景也有相應的優化。
下圖是阿里雲編碼部分的模塊劃分圖,中間內核部分用的是傳統265的編碼流程。
圖片部分來源於網絡
Lookahead部分包括內容檢測,塊級QP決策和幀類型決策。其中內容檢測包括片源場景檢測(動畫/電影/直播)、片源質量檢測(噪聲、強邊緣、弱邊緣)等模塊。塊級QP決策除了CUtree和AQ,還包括JND和ROI。
編碼目標部分可以認為是碼控部分,阿里雲的編碼器除了目標碼率之外還可以調整目標質量和目標複雜度。
目標質量可以是主觀質量也可以是客觀質量,比如以塊效應來衡量,保證視頻沒有明顯主觀短板。
目標複雜度主要是針對機器負載,以恆定的機器負載去執行編碼任務,最大限度的利用計算成本換取質量。
此外,視頻雲還針對不同架構做了相應的底層優化,針對倚天ECS進行S264和S265編碼器的深度優化,打造ARM友好的視頻編碼器,優化主要基於以下三個方面:
01 計算函數彙編優化
計算密集型函數通過彙編實現單指令多數據操作優化,其中可伸縮向量指令集,mmla類型高並髮指令,塑造更高的彙編加速比,總體性能提升40%;
02 計算函數並行優化
對有性能增益但原本串行處理數據的算法(如SDH)進行並行化優化,並實現基於ARM平台的彙編版本代碼,在壓縮性能基本一致的情況下函數速度性能提升約40%。
03 偏控制函數優化
將算法設計與優化相結合,提升效率,例如快速算法checkSkip,Earlyskip等,總體性能提升20%。
主觀優化
主觀優化算法主要有兩個核心點:一是碼控部分,二是內核的RDO模塊。
在碼控部分,關注在塊級QP分配對主觀質量的影響。例如:AQ是基於方差來判斷視頻在空域上的複雜情況,它的出發點同樣也是用到一定的掩蔽效應。
但有時候基於方差的AQ與主觀不一定匹配,比如同樣兩個方差一致的塊,一個是內容離散,一個是有強邊緣的,它們方差是一樣的,但是對主觀退化的容忍度是不一樣的。
另一個主觀優化的出發點是來自CUTREE,CUTREE的基本思想是基於信息傳遞,如果當前幀的某些內容會被後續參考,信息會向後傳遞拷貝,那麼就會對這塊內容分配更多的碼率,達到更好的整體質量。但因為人眼具有運動掩蔽效應,所以很多時候它的信息傳遞原理與主觀感受存在一定的Gap。
另一個核心點在內核的RDO模塊,通過提出PRDOQ技術,自適應的保留對主觀更敏感的係數。以及自適應λ決策,在除MSE外,根據內容特徵,例如:JND進行自適應λ決策,相比常見SSIM_RD,主觀質量會更佳。
此外,依據率失真理論構建的編碼器在塊效應方面表現不佳,還專門優化了編碼器的塊效應。它的依據在於:基於客觀的RDOQ,編碼部分模式會放大塊效應。而人眼對於塊效應的敏感程度更高。
實踐發現雖然編碼標準中存在deblocking filter這樣的工具,去塊的強度在這些場景下還是不夠,它需要通過碼率分配的方式進一步解決。具體的做法如下:首先識別出容易出現塊效應的區域,針對平坦區域分配更多碼率,同時優化CUTREE的信息傳遞理論。最後,除了在碼率分配上進行優化,也可以從模式決策的傾向性方面入手,比如skip,DC模式更容易出現塊效應。
上圖是兩張主觀對比圖,可以看到左邊的對比圖優化了邊緣部分的塊效應,而右邊對比圖是對細節模糊的部分做了重新的碼率分配。
對於場景檢測優化來說,在lookahead里的SceneCut模塊通常用於判斷當前是否存在場景切換,如果識別到場景切換,會在兩個場景之間插入I幀。但在很多情況下,該模塊存在判斷不準確的問題。比如漸變區域的I幀到底是插在開始還是最後,我們對此進行了優化,從客觀上有一點提升,從主觀上也能看到在場景切換的區域,主觀質量會更好一些。
視頻內容分析
JND模塊
傳統視頻壓縮方法主要基於信息理論,從預測結構的角度來減小時域冗餘、空間冗餘、統計冗餘,但是視覺冗餘挖掘不足。而JND模塊是基於人眼的掩蔽效應,具體的做法是對每一幀輸入的圖像,經過空域和時域的JND特徵計算,將圖像上存在視覺冗餘的部分傳到編碼器,再由基於MOS的自適應碼控算法進行調節。其中空域和時域的JND特徵既可以使用傳統算子,也可以基於深度學習獲取。在通用場景下,JND算法可以在同等主觀下節省超過30%碼率。
本頁做了一個簡單對比來證明JND的可行性。左邊是原圖,我們會在原圖上增加一些噪聲,一直加到人眼能看到差異為止。中間是SOTA結果,右邊是我們的實驗結果。可以看到我們的結果在PSNR上已經很低了,但是從主觀上看的話,和原始圖還比較接近。
基於ROI的處理+壓縮
ROI編碼是針對人眼感興趣的區域,將更多的碼率分配到這些區域上,從而增強主觀質量。ROI編碼的難點有以下幾個方面:1. 計算成本。2. 如何確定ROI的區域。3. 對於ROI和非ROI的區域,如何分配更合適的碼率,既能保證ROI區域的質量提升,又要保證非ROI的區域的主觀不下降。4. 如何保證時域上的連續性,使得最後在連續觀看時不會出現閃爍。
一個低成本的ROI方案是人臉區域的增強,人臉區域通常都是人眼感興趣的區域,通過自適應決策的檢測加上人臉跟蹤算法,能實現相對低成本的ROI方案。
進一步的,ROI還需要與編碼器和JND算法結合,保證ROI區域的時域連續一致性,和保證ROI區域和非ROI區域主觀均衡。
細節增強
細節增強的核心在於細節增強算法本身的設計和與編碼相結合的方式。其中細節增強算法需首先精細化的提取圖像紋理,基於不同尺寸,不同特徵提取紋理結構,才能使得增強效果更優。然後再根據紋理複雜度的區域進行自適應的增強。在與編碼結合上,我們做了基於編碼反饋的增強方式,對於點播場景,會使用2pass方式,對於直播場景,會將細節增強加入lookahead裏面。
窄帶高清2.0是複雜度更高、成本更高的修復增強效果。上圖是我們在BesTV上的一個實例,用於NBA直播場景。其中左邊是藍光流,右邊是修複流,可以看到右邊的修複流在強邊緣的保留上效果更好,運動區域的模糊也會更少。
窄帶高清2.0是複雜度更高、成本更高的修復增強效果。上圖是我們在BesTV上的一個實例,用於NBA直播場景。其中左邊是藍光流,右邊是修複流,可以看到右邊的修複流在強邊緣的保留上效果更好,運動區域的模糊也會更少。
最後,關於窄帶高清在未來的持續發展方向。
一是視頻編碼持續沉澱
從傳統編碼的角度,無論是在模式決策,碼控上都還有很多性能空間可以挖掘。在限定碼率和複雜度的情況下不斷地優化視頻質量,是團隊長期投入的方向。
二是視頻編碼與處理聯合優化
讓增強部分與編碼能夠更好地結合,對編碼更友好,從人眼的角度去盡量保證在極低碼率上不出塊,盡量減少細節紋理的時域不連續。
三是視頻處理的自適應能力和生成能力
編碼的自適應能力包括了內容自適應,碼率的自適應,還有負載的自適應,這都是我們未來會重點研究的方向。