通過改進影片品質評估提升編碼效率
- 2019 年 10 月 10 日
- 筆記

Beamr的閉環內容自適應編碼解決方案(CABR)的核心是一項品質衡量的專利。與一般的影片品質衡量方法相反,傳統方法旨在衡量由於誤碼,雜訊,模糊,解析度變化等導致的影片流之間的差異。而Beamr的品質衡量方法是針對特定的任務而設定的。在這篇部落格文章中,Tamar Shoham為我們介紹了這種方法的組成部分。
文 / Dror Gill & Tamar Shoham
翻譯 / 屈健寧

Beamr的閉環內容自適應編碼解決方案(CABR)的核心是一項品質衡量的專利。這個衡量方法將每個候選編碼幀的感知品質和初始編碼幀的進行比較。這種品質衡量方法確保了在比特率降低的情況下,仍然保留目標編碼的感知品質。與一般的影片品質衡量方法相反,傳統方法旨在衡量由於誤碼,雜訊,模糊,解析度變化等導致的影片流之間的差異。而Beamr的品質衡量方法是針對特定的任務而設定的。Beamr的方法可以可靠、迅速地量化由於基於塊的影片編碼的偽像而導致的影片幀中被迫引入的感知品質損失。在這篇部落格文章中,我們介紹了這種方法的組成部分,如上圖一所示。
預分析(Pre-analysis)
在確定編碼幀的品質之前,品質衡量組件對源編碼幀和初始編碼幀執行一些預分析,用以提取品質衡量計算中需要的一些數據,同時收集用於配置品質衡量的資訊。預分析分為兩個部分,第一個部分在源編碼幀上執行,第二部分在初始編碼幀上執行。

Figure.A blockdiagram of the video quality measure used in Beamr』s CABR engine
預分析的第一部分的目的是表徵給定幀內的內容、框架和感興趣的區域。在這個階段,我們可以確定在幀里是否有皮膚和面部區域、3D動畫典型的豐富色度資訊或者在單元動畫內容中找到的具有動態背景的高度局部移動。所使用的演算法旨在降低CPU的負擔。例如,我們的面部檢測演算法在場景變化的時候採用了完整的監測機制,而在其他幀中則採用了獨特的低複雜度自適應跟蹤機制。對於皮膚檢測,我們使用了AdaBoost分類器,該分類器在我們創建的標記數據集上進行了訓練。AdaBoost分類器使用YUV像素值和4×4亮度方差值輸入。在此階段,我們還計算了我們在下面描述的Edge-Loss-Factor分數組件中使用的edge map。
預分析的第二部分用於分析初始編碼之後的幀特徵。在這個階段,我們可以確定幀里是否存在顆粒,並統計顆粒的數量,然後用他們來配置品質衡量的計算。我們還收集有關每個塊的複雜度的資訊,例如,通過用於編碼每個塊的比特使用率和塊量化級來展現這個資訊。在這個階段,我們還計算幀的每一個塊或者區域中局部紋理的密度,這個密度會用於以下所描述的紋理保留分數組件中。
品質衡量過程和組成(Quality MeasureProcess and Components)
與參考幀相比,品質衡量可以評估目標幀的品質。在CABR的文中,參考幀是初始編碼幀,目標幀是特定迭代的候選幀。在執行了預分析的兩個階段之後,我們繼續進行實際的品質衡量計算,接下來將進行詳細描述。
在完成預分析的兩個階段之後,每個參考幀和目標幀都被劃分成了相應的圖塊。這些圖塊的位置和尺寸根據幀的解析度和其他幀特徵進行調整。例如,我們會對具有高度局部運動的幀應用相對小的圖塊。有時,對於某些品質衡量組件,圖塊也會被進一步細分成子圖塊。為每個圖塊計算品質度量分數,並且在感知上合併這些分數來得到幀的品質分數。
每個圖塊的品質分數計算方式:針對每個品質衡量的組件,計算相應的分數,然後對這些值進行加權幾何平均,來得到每個圖塊的品質分數。這些分量包括:確定像素方向差異的局部相似性分量、增加的偽像邊緣分量、紋理失真分量、邊緣損耗因子和時間分量。現在我們簡要介紹Beamr的品質衡量標準中的這五個要素。
局部相似度(Local Similarity)
局部相似度組件評估參考圖塊和目標圖塊中相同位置的像素之間的相似度。這個組件在某種程度上和PSNR相似,但是使用:自適應子平鋪、合併和閾值設置,用以提供比常規PSNR更具感知性的結果。在某些情況下,例如當預分析確定該幀包含豐富的色度內容時,此分量中還包括色度平面的像素相似度計算,但是在大多數情況下,僅適用亮度。對於每個子圖塊,計算常規PSNR。為了對位於品質遠遠優於其上的圖塊中的低品質子圖塊賦予更大的權重,我們僅僅使用低於取決於最低子圖塊PSNR值的閾值的值來進行合併工作。當僅僅在很小的區域範圍(甚至只有幾個像素的區域)中發生變化時,可能會發生這種情況。然後,我們會根據比例值來調整合併值,這個因數根據圖塊中的亮度級別來進行調整,因為在黑暗的區域中的失真比在明亮區域中的失真更大。最後,我們裁剪局部相似性分量得分,使其位於[0,1]的範圍內,其中1表示目標圖塊和參考圖塊在感知上相同。
人工添加邊緣(Added Artifactual Edges)
與參考圖塊相比,添加的偽像邊緣得分組件評估了目標圖塊中引入的其他塊狀性。影片編碼中的塊狀性是眾所周知的偽像,它是由於對每個塊進行的獨立編碼引入的。為了避免這種塊狀偽像,我們已經進行了許多預先的嘗試,主要方法是使用解塊濾波器,這些濾波器是現代影片編碼器(例如AVC和HEVC)的組成部分。但是,我們在AAE(人工添加邊緣)組件中的重點是量化此偽像的程度,而不是消除這個偽像。由於我們只對目標幀相對於參考幀的附加塊狀感興趣,因此我們根據目標幀與參考幀之間的差異來評估品質衡量的這一部分。對於差異塊中的每個水平和垂直編碼塊邊界,我們評估跨編碼塊邊界的變化或梯度,並將其與任一側編碼塊內的局部梯度進行比較。例如,對於AVC編碼,這是沿著全幀的16×16網格完成的。我們使用自適應的閾值,根據來自預分析階段的資訊進行自適應,將軟閾值應用於塊度值。例如,在被認為是皮膚的區域中,人的視覺對偽像更加的敏感,我們將會使用更精準嚴格的閾值,以便對輕度塊狀偽像的處理更加嚴格。這些計算將生成一個AAE得分圖,其中包含每個水平和垂直塊邊界點在[0,1]範圍內的值。我們對每個塊邊界的值進行平均,然後對這些每個塊邊界的平均值進行平均,以排除或賦予低權重的塊邊界,在此同時也不會增加任何塊狀性。然後根據塊狀偽像的百分比來縮放該值,即閾值之前原始塊狀度值非常高的情況,最後將其裁剪到[0,1]的範圍,其中1表示未添加任何偽造邊緣。相對於參考圖塊的目標圖塊。
紋理變形
紋理失真分數組件量化了在目標圖塊中保留紋理的程度。包括AVC和HEVC在內的大多數基於塊的編解碼器,都使用諸如DCT之類的頻率變換,並對變換係數進行量化,通常對高頻分量進行更嚴格的量化。這可能會導致兩個不同的紋理假象。第一個偽像是由於高頻係數中的能量損失而導致的紋理細節損失或過度平滑。第二種偽像被稱為「振鈴」,其特徵在於邊緣周圍的雜訊或影像中的急劇變化。這兩種偽像都會導致像素值的局部方差發生變化:過度平滑會導致像素方差減小,而增加的振鈴或其他高頻雜訊則會導致像素方差增加。因此,我們在參考幀和目標幀圖塊的相應塊中測量局部偏差,並比較它們的值。此過程產生的紋理圖塊得分在[0,1]範圍內,其中1表示目標影像圖塊中沒有可見的紋理失真。
時間一致性
與參考影片序列中的時間流相比,時間得分組件評估目標影片序列中的時間流的保留。這是品質衡量的唯一組成部分,它也需要利用先前的目標幀和參考幀。在此組件中,我們測量兩種變化:目標幀中缺少在參考幀中引入的「新」資訊,以及目標幀中參考幀中沒有「新」資訊的「新」資訊。在這種情況下,「新」資訊是指當前幀中存在但前一幀中不存在的資訊。我們計算參考幀中的每個並置8×8塊與前一參考幀之間的絕對差之和(SAD),以及目標幀中的每個並置8×8塊與前一目標幀之間的SAD 。從這兩個SAD值之間的關係以及根據參考SAD的值得出局部(8×8)分數,這表明該塊本質上是動態的還是靜態的。圖2說明了參考和目標SAD值的不同組合的局部得分值。在計算了所有本地時間分數之後,將它們合併以獲取範圍為[0,1]的圖塊時間分數分量。

Figure 2. local temporal score as a function of reference SAD andtarget SAD values
邊緣損耗因子(ELF)
邊緣損失因子得分組件反映了參考影像中邊緣在目標影像中的保留程度。該組件使用在預分析的第一部分中生成的輸入影像邊緣圖。在預分析的第二部分中,計算參考幀中每個邊緣點的邊緣強度,作為邊緣像素值與其8個最鄰近像素之間的最大絕對差。通過將像素的參考幀邊緣強度與閾值進行比較,我們可以選擇丟棄被認為是虛假邊緣的像素,該閾值可以調整為例如在包含膠片顆粒的幀中更高。一旦所有邊緣像素的值都已累加,最終值將按比例縮放以提供ELF切片分數分量,範圍為[0,1],其中1表示完美的邊緣保留。
得分組合組件
使用加權幾何平均將上述五個分數成分組合為塊分數,其中可以根據所使用的編解碼器或根據預分析階段來調整權重。例如,在具有良好循環內解塊濾波器的編解碼器中,我們可以降低塊狀分量的權重,而在具有高膠片顆粒水平(由預分析階段確定)的幀中,我們可以降低紋理失真的權重零件。
塊池化
在幀品質分數計算的最後一步中,將感知分數合併圖塊分數,以生成單個幀分數值。感知池使用的權重取決於重要性(取自分析前的階段,例如,圖塊中存在面部或皮膚),並且取決於圖塊中塊的複雜度(與幀的平均複雜度相比)。權重還取決於圖塊得分值–我們對低得分的圖塊給予更大的權重,以同樣的方式,即使在邊緣地帶出現,也會引發觀眾觀看品質的下降。
分數配置器
分數配置器塊用於配置不同情況使用的計算。例如,在等待時間或性能受到嚴格限制的實現過程中,配置器可以應用快速得分計算,該計算跳過預分析的某些階段並使用稍微降低的複雜性得分。為了仍然保證感知上相同的結果,可以縮放或補償在此快速模式下計算出的分數,以解決感知精度略低的問題,並且這種縮放在某些情況下可能會略微減少節省。