IBC+Palette 实现屏幕内容编码优化
在屏幕內容編碼中采用IBC+Palette編碼技術可顯著提升其壓縮效率。本文主要介紹了騰訊屏幕內容編碼優化技術探索與實踐:加入IBC+Palette編碼工具集,并針對屏幕內容優化ME模塊等。本文由騰訊音視頻實驗室視頻編碼技術負責人,王詩濤在LiveVideoStack線上分享中的演講內容整理而成。
文 / 王詩濤
整理 / LiveVideoStack
直播回放:
https://www2.tutormeetplus.com/v2/render/playback?mode=playback&token=e632113e78b14a2eb10ee64a0f16bd07
大家好,我是來自騰訊音視頻實驗室的王詩濤。接下來將與大家分享我們在屏幕內容編碼優化與技術落地的探索之路。
1.?屏幕內容編碼
?
在開始正式分享之前,首先簡單介紹一下屏幕內容編碼:屏幕內容圖像與傳統攝像頭采集到的圖像存在很大不同,屏幕內容圖像是電子設備生成的圖像,其直接從各類設備(包括但不限于計算機、移動終端)的圖像顯示單元捕獲;一般情況下屏幕內容圖像包括以下幾個類型:計算機圖形文本、自然圖像與圖形文本結合的混合圖像以及計算機所生成的動畫。
?
隨著移動設備與智能終端不斷滲透人們的生活,屏幕內容圖像在我們的生活中也越來越普遍,無論是桌面協作、云游戲,還是第二屏幕、桌面共享、在線教育等領域都有其十分廣泛的應用,那么屏幕內容圖像與傳統的攝像頭所采集的圖像究竟有什么區別?
?
攝像頭采集到的圖像在通常情況下都包含傳感器的噪聲,且色調一般連續并具有十分復雜的紋理;而對于屏幕圖像,其通常并不包含噪聲。這是因為其中很多都是計算機生成的圖像,色調離散而顏色數更少;除此之外,屏幕圖像的線條更為細膩,邊緣也較為銳利;同時大部分屏幕圖像的均勻平坦區域較多,重復圖案與相同塊也較多。傳統視頻編碼方案更多為攝像頭采集的自然視頻圖像設計,多采用預測+變換的混合編碼結構。此混合編碼結構對于屏幕內容編碼的編碼效果欠佳。如上圖右側所示,圖中的Word文檔為計算機生成的屏幕圖像,我們可以從圖中清晰看到一些區域的文字變得非常模糊,許多細節信息被丟失,同時表格邊緣有非常明顯振鈴效應。由于屏幕圖像相對于自然采集而來的攝像頭圖像有很大的不同。我們希望利用好屏幕圖像的這些特有特征從而大幅度提高其編碼效率和圖像質量。
2. HEVC-SCC技術
?
HEVC針對屏幕圖像編碼的做了很多編碼工具集的優化,首先簡單介紹一下HEVC關于屏幕內容編碼的一些主要技術。在HEVC的幾個版本中都有一些針對屏幕內容編碼的優化技術:例如v1版的HEVC就推出了變換跳過的編碼技術,其原理是在編碼時自主選擇是否跳過頻域變換;而HEVC-RExt除了變換跳過,還增加了殘差旋轉、殘差DPCM與交叉分量預測等SCC工具;2016年,HEVC推出第四版HEVC-SCC,該版在之前基礎上增加了很多專門針對屏幕內容編碼的工具集,包括幀內塊拷貝、調色板模式、自適應色彩轉換與自適應運動矢量精度等。
?
接下來簡要介紹下這幾個工具集:
幀內塊拷貝:采用當前幀已重建的塊作為預測塊,IBC在當前編碼圖像內做運動補償;
調色版模式:調色板模式會枚舉每個編碼塊的顏色值生成一個顏色表,并為每個樣本傳遞一個索引以指示它屬于顏色表中的哪個顏色;解碼端根據規則生成一個顏色表并通過顏色表索引完成樣本的重建工作。
自適應顏色轉換:將殘差自適應轉換到不同的顏色空間,一個RGB顏色空間的圖像塊可以直接編碼,也可以在編碼時自適應地轉換到YCoCg顏色空間以進行編碼;
自適應運動矢量分辨率:由于編碼過程中屏幕內容圖像的運動通常是像素級的,因此我們可以在Slice級控制運動矢量MV的精度。
3.?IBC編碼與調色版模式
SCC編碼工具集能顯著提升屏幕內容編碼壓縮效率,這其中以IBC和調色板對壓縮效率的提升最為明顯。根據相關資料,對于屏幕內容,IBC可提升30%以上的壓縮效率,如果加入調色版模式則可在IBC的基礎上再提升15%。接下來我將對IBC和調色板進行詳細介紹。
?
IBC編碼是由當前編碼圖像幀的重建塊預測得到的,以上圖中的PDF截圖為例,由于英文僅由26種英文字符組合而成,我們在編碼的時候,很容易在當前I幀畫面的已完成編碼塊中找到同一個英文字符;如果在編碼時能夠參考這些當前編碼圖像中已經完成重建的編碼塊,就能大大提升編碼效率。比如,圖中最后一行的IB兩個字符就可以用它左上角的IB兩個字符來做預測,這樣預測精度非常高。還有一點,IBC是在PU級進行,我們可以將其視為一個幀間PU,幀間模式的設計讓IBC和普通的幀間預測模式能夠更靈活的連接起來,比如,一個幀間編碼的CU可以有兩個PU,一個使用傳統的幀間預測,另一個使用IBC。
當然,IBC相對于傳統幀間預測也存在許多不同:
IBC參考塊都是濾波之前的重建像素。
當前圖像如果被用于參考,其會被標記為長期參考幀;當整張圖像解碼完成之后,IBC會對其進行環路濾波然后將當前圖像加入到DPB中作為短期參考幀。
IBC的預測塊不能和當前CU重疊,以防止未重建好的樣本被用于預測。
預測塊和當前CU應當位于同一個Slice和同一個Tile。
IBC的塊矢量必須是整像素精度。
?
除了IBC編碼,SCC還有另一個重要工具集,也就是調色板模式(Palette mode)。調色板模式對于顏色數比較少的編碼塊會有比較好的效果,通常情況下,屏幕內容的顏色數量是有限的,這些顏色就可組成一個顏色集合,也就是一個調色板;隨后在解碼重建每個像素時,解碼器可通過顏色表與索引,從調色板中尋找與對應像素點匹配的顏色從而完成像素重建。如上圖右側所示,圖中CU有四種顏色,對每個像素點,編碼器在進行編碼時會直接從顏色表中尋找此對應的顏色值并直接完成像素重建;當顏色數較少時,絕大部分像素都可通過顏色表實現重建;由于采用顏色索引+顏色表的方式,不需要經過變化量化即可實現像素重建,調色板在顯著提升編碼效率的同時也降低了復雜度。
雖然一個編碼塊中的絕大多數顏色都可在顏色表中找到與其最為接近的顏色值,但是有時也會出現顏色表中找不到與編碼像素點顏色很匹配的顏色的情況。針對這種情況,調色板模式增加了一種被稱為“escape”的模式,此模式會對找不到匹配顏色的編碼像素點專門進行反量化操作以完成像素重建,從而解決部分顏色點無法找到匹配顏色值繼而導致顏色失真的問題。
?
上圖展示了調色板編碼的整體流程圖,其中包括以下幾大模塊:顏色表生成模塊、模式判決模塊以及直方圖計算模塊。在進行模式選擇時,如果最終編碼器選定采用調色板模式,那么顏色表以及編碼索引參數會被寫入碼流并傳輸到解碼端。
4.?騰訊屏幕編碼技術解決方案(TSE)
?
之前我們簡單介紹了屏幕內容編碼技術與HEVC中關于屏幕內容編碼的一些工具集。這些工具集中,幀內塊拷貝與調色板編碼給屏幕內容編碼壓縮效率帶來的提升最為明顯。大部分情況下的屏幕內容編碼序列如果采用IBC+Palette模式,其壓縮效率相對于H265可實現50%以上的提升。對騰訊而言,騰訊無線投屏、騰訊會議等協同辦公產品存在大量的桌面共享類的應用場景,共享的內容以PPT、Word等為主,這些都是非常適合屏幕內容編碼的。。如果我們能夠采用屏幕內容編碼技術,無疑會大幅提升編碼壓縮效率,提升產品競爭力,所以我們啟動了屏幕內容編碼的研究與實現。接下來和大家分享一下騰訊屏幕編碼技術解決方案的研究成果,我們推出了一個專門針對屏幕內容進行優化的編碼器——騰訊屏幕內容編碼器(TSE)。
?
TSE編碼器主要是在原有編碼器的基礎上增加了IBC與Palette兩個工具集,并且針對性的做了大量性能優化,其中的幾項代表性優化有:
1)基于hash搜索的運動估計:對于IBC的運動估計,采用了基于hash表搜索的優化技術。傳統的塊匹配方法是基于SAD的,該方法耗時過大,無法滿足無線投屏產品對于延時的高要求。我們通過使用基于hash搜索的運動估計方法來代替傳統運動估計,采用hash表搜索的方式能夠大大減少運動估計所需要搜索點的個數,從而降低運動估計的耗時。根據我們之前的統計,此方法在提升速度的同時,帶來的壓縮效率的損失基本可以忽略不計。
2)快速高效的顏色表生成算法:調色板編碼整體流程中耗時最大的就是顏色表生成模塊,SCM參考軟件中的顏色表生成算法具有很高的復雜度,編碼一幀耗時非常大。我們對顏色表的生成算法進行了大量的簡化以達到提速的目的。在提速的同時,我們還需提高調色板效率,因為在進行調色板編碼時,編碼效率高低主要取決于顏色表生成質量,所以優化顏色表生成算法是其中的一項關鍵技術點。如何復用前面已生成的顏色表也是調色板編碼的一個核心技術點。為了提升編碼效率,我們最好復用之前已經生成的顏色表,也就是通過前面已經生成的顏色表來預測當前此顏色表,這樣就可大幅度節省顏色表傳輸所消耗的碼字,同時顯著提升了調色板編碼的效果。
3)高效的查找表算法:當顏色表生成之后,編碼器需要去查找顏色表以找到每一個像素點的最接近的顏色,如何快速找到最匹配的顏色也是影響調色板編碼性能的關鍵點之一。如果采用YUV三個變量進行搜索,那么我們需要構建一個2的24次方規模的查找表,這在實際應用中顯然是不現實的。所以我們也對查找表算法進行了大幅度優化以降低其對于內存的占用。
4)大量的提前退出算法:我們在編碼模式選擇上加入了大量的快速算法,比如進行幀內、幀間判決后,根據判決結果以及cost值,決定是否要進行調色板編碼+IBC編碼的cost計算,這樣可以節省大量時間。
5)匯編優化:除了以上優化,我們還對其中許多關鍵模塊進行SIMD優化從而顯著提升編碼速度。
5.?成果與展望
?
經過上述一系列優化之后,騰訊TSE編碼器的性能相較于X265有了顯著提升:上圖是二者的壓縮效率對比數據,右側為攝像頭采集序列,左側為LDP模式下的屏幕內容序列。對于屏幕內容序列,TSE編碼器的編碼效率相較于x265-ultrafast模式有70%的性能提升,相對于x265-medium也有將近55%的壓縮性能提升;而觀察右側攝像頭采集序列的對比數據,TSE編碼器的編碼效率相較于x265-ultrafast模式有也有20%左右的壓縮性能提升。
上圖是二者的壓縮效率對比數據:對于屏幕內容序列,不打開IBC和PLT,TSE的平均編碼耗時僅為x265-ultrafast的33%左右,而打開IBC和PLT,TSE的平均編碼耗時是x265-ultrafast的50%左右。無論是編碼速度還是編碼效率,TSE的優勢都十分明顯。
TSE不僅在壓縮效率和編碼速度方面有優勢,同時對主觀質量的改善也是非常明顯的。下圖展示了TSE與x265的主觀質量對比:
?
可以看到在相同碼率的條件下,x265編碼編碼得到的圖像中文字周邊存在明顯的振鈴效應,給人眼的直觀感受就是圖像臟且比較模糊;但采用TSE編碼所得圖像中文字清晰而銳利,人眼的觀看體驗明顯更加舒適,主觀體驗明顯要好。綜上所述,TSE編碼器能為編碼帶來碼率節省、速度提升與主觀體驗優化。
?
TSE技術現已在騰訊無線投屏與騰訊會議上實現了商用化,但提升用戶體驗的探索對我們來說是永無止境的。我們期望在未來能研發出更加出色的編碼器,在盡可能快的情況下實現更好的壓縮質量與效率,從而進一步提升用戶體驗。
LiveVideoStack? 招募
LiveVideoStack正在招募編輯/記者/運營,與全球頂尖多媒及技術專家和LiveVideoStack年輕的伙伴一起,推動多媒體技術生態發展。了解崗位信息請在BOSS直聘上搜索“LiveVideoStack”,或通過微信“Tony_Bao_”與主編包研交流。
LiveVideoStackCon 2019北京正在招募講師,無論你是技術派還是學術派,亦或是行業專家,無論你的團隊有多小、有多新,都可以來申請成為LiveVideoStackCon的講師。點擊【閱讀原文】了解更多大會相關信息。
總結
以上是生活随笔為你收集整理的IBC+Palette 实现屏幕内容编码优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VIPKID 张武锋:自研RTC的故事
- 下一篇: 2019 VOD编码工具指南