黃 勝,張倩云,李萌芳,鄭秀鳳
(1.重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065; 2.光通信與網(wǎng)絡(luò)重點(diǎn)實(shí)驗(yàn)室,重慶 400065)
目前隨著共享屏幕協(xié)作、遠(yuǎn)程桌面接口、云游戲、無(wú)線顯示、在線教育等移動(dòng)技術(shù)和云應(yīng)用的發(fā)展,屏幕內(nèi)容視頻越來(lái)越受到人們的關(guān)注。2014年1月,MPEG小組發(fā)布一套擴(kuò)展HEVC以滿足屏幕內(nèi)容編碼的要求[1],基于早期公布的這些草案,VCEG和MPEG發(fā)布了聯(lián)合征集建議書來(lái)編碼屏幕內(nèi)容[2],屏幕內(nèi)容編碼(SCC)擴(kuò)展于2016年2月發(fā)布[3]。HEVC-SCC開發(fā)并采用了一些新的編碼工具,包括自適應(yīng)顏色變換(ACT)[4]、調(diào)色板模式(PLT)[5]和幀內(nèi)塊復(fù)制(IBC)[6]。與H.264/AVC相比,HEVC的比特率降低了50%[7],復(fù)雜度提高了5倍以上。因此,有必要研究快速算法以加速SCC編碼器的實(shí)時(shí)應(yīng)用。
目前研究人員提出了一些用于SCC的幀內(nèi)編碼的快速算法。文獻(xiàn)[8]提出一種基于紋理主方向強(qiáng)度的快速幀內(nèi)預(yù)測(cè)算法,根據(jù)每一深度層編碼單元(CU)分布特點(diǎn)和每CU紋理主方向強(qiáng)度判斷CU是否需要進(jìn)行分割處理。文獻(xiàn)[9]提出基于統(tǒng)計(jì)特征和編碼信息設(shè)計(jì)2個(gè)分類樹,包括早期編碼單元(CU)分區(qū)樹(EPT)和CU內(nèi)容分類樹(CCT)。文獻(xiàn)[10]根據(jù)CU的紋理復(fù)雜度,對(duì)平滑簡(jiǎn)單的CU自適應(yīng)地終止劃分,對(duì)紋理復(fù)雜的CU跳過(guò)編碼提前進(jìn)行劃分,減少CU深度遍歷的時(shí)間。文獻(xiàn)[11]提出一種在線學(xué)習(xí)方法,使用在線學(xué)習(xí)的貝葉斯決策模型來(lái)跳過(guò)不必要的模式以及進(jìn)行快速CU大小決策。文獻(xiàn)[12]根據(jù)相鄰幀數(shù)據(jù)的時(shí)間相關(guān)性和幀內(nèi)數(shù)據(jù)空間相關(guān)性初步確定當(dāng)前CTU形狀,利用前一幀同位CTU平均深度、當(dāng)前幀已編碼CTU深度以及對(duì)應(yīng)的速率失真代價(jià)值決定CTU的最終形狀。文獻(xiàn)[13]將分區(qū)深度范圍建模為一個(gè)多類分類問(wèn)題,并嘗試直接預(yù)測(cè)32×32塊的深度范圍。由于屏幕內(nèi)容不包含傳感器噪聲,使其具有沿水平和垂直方向的像素精確度的特征,根據(jù)此特征,文獻(xiàn)[14]基于速率失真成本提出CU早期分割和提前終止,以進(jìn)一步降低編碼器復(fù)雜度。文獻(xiàn)[15]用圖像梯度信息來(lái)粗略估計(jì)編碼單元的紋理方向和紋理復(fù)雜度,其中紋理復(fù)雜度用來(lái)判斷是否跳過(guò)當(dāng)前劃分深度的預(yù)測(cè)編碼過(guò)程。文獻(xiàn)[16]提出一種基于神經(jīng)網(wǎng)絡(luò)(NN)的CU快速分區(qū)決策方案,使用CU低級(jí)統(tǒng)計(jì)特征(如子CU一致性、CU方差、CU顏色數(shù)等)作為NN輸入來(lái)計(jì)算CU分區(qū)軟判決。文獻(xiàn)[17]根據(jù)當(dāng)前編碼單元下層的4個(gè)子編碼單元的平均結(jié)構(gòu)相似程度,來(lái)確定當(dāng)前編碼單元是否進(jìn)行更深層次的劃分。文獻(xiàn)[18]提出一種快速模式?jīng)Q策算法,通過(guò)CU中的不同顏色數(shù)作為模式分類的特征。文獻(xiàn)[19]根據(jù)當(dāng)前CU與周圍相鄰CU和參考幀中當(dāng)前位置CU的深度相關(guān)性,預(yù)測(cè)當(dāng)前CU的最優(yōu)深度。文獻(xiàn)[20]提出一種基于深度學(xué)習(xí)的快速預(yù)測(cè)網(wǎng)絡(luò)DeepSCC。其中DeepSCC-I將原始樣本值作為輸入進(jìn)行快速預(yù)測(cè),DeepSCC-II進(jìn)一步利用固定CTU的最佳模式圖來(lái)進(jìn)一步降低計(jì)算復(fù)雜度。文獻(xiàn)[21]結(jié)合屏幕視頻的特征和幀內(nèi)編碼模式的空間相關(guān)性,有效地減少了幀內(nèi)編碼單元的模式搜索范圍。以上方法大致可以分為兩類:啟發(fā)式方法和基于學(xué)習(xí)方法。對(duì)啟發(fā)式方法可以根據(jù)一些中間特征簡(jiǎn)化CU分區(qū)的RDO搜索,基于學(xué)習(xí)方法利用機(jī)器學(xué)習(xí)來(lái)概括HEVC編碼CU的分區(qū)規(guī)則,而不是對(duì)這些編碼CU進(jìn)行暴力RDO搜索。
但是以上基于學(xué)習(xí)的方法都是基于人工提取特征,所以本文考慮將深度學(xué)習(xí)用于CTU深度范圍預(yù)測(cè),利用大規(guī)模數(shù)據(jù)自動(dòng)挖掘與CTU深度范圍相關(guān)的大量特征,而不是有限的手工提取的特征。首先根據(jù)CU分區(qū)特性設(shè)計(jì)CNN架構(gòu),并編碼足夠數(shù)量的屏幕內(nèi)容視頻幀序列作為訓(xùn)練數(shù)據(jù),然后訓(xùn)練CNN模型,對(duì)當(dāng)前CTU的深度范圍進(jìn)行預(yù)測(cè),減少不必要的深度遍歷,降低編碼的復(fù)雜性。
在屏幕內(nèi)容標(biāo)準(zhǔn)測(cè)試序列中,所有測(cè)試序列被分為有運(yùn)動(dòng)的文本圖表類(TGM)、動(dòng)畫內(nèi)容類(An)和混合視頻內(nèi)容類(Mc)3類。不同類型的測(cè)試序列具有不同的內(nèi)容特性,如運(yùn)動(dòng)文字圖表類(TGM)的測(cè)試序列的幀以文字圖表內(nèi)容為主,而混合視頻內(nèi)容類(Mc)的測(cè)試序列的幀包含文字圖表內(nèi)容和自然視頻內(nèi)容。因此,本文挑選了不同分辨率內(nèi)容特性的屏幕內(nèi)容標(biāo)準(zhǔn)序列,在22、27、32、37這4個(gè)不同QP值條件下進(jìn)行編碼。將編碼后的CTU深度信息保存并設(shè)置每個(gè)CTU的標(biāo)簽。訓(xùn)練數(shù)據(jù)幀的選取如表1所示。其中,訓(xùn)練集用來(lái)訓(xùn)練模型,驗(yàn)證集用來(lái)調(diào)節(jié)參數(shù)選擇算法,測(cè)試集則用來(lái)在最后整體評(píng)估模型的性能。
表1 訓(xùn)練數(shù)據(jù)幀選取Table 1 Selection of training data frames
在現(xiàn)有的SCM軟件中,采用窮舉搜索方法通過(guò)檢查當(dāng)前CU的每種可能模式,并使用最佳模式比較當(dāng)前CU的RD成本以及所有其遞歸子CU的RD成本之和來(lái)解決CU分區(qū)問(wèn)題,導(dǎo)致了整個(gè)CU的劃分過(guò)程存在大量計(jì)算冗余。本文考慮通過(guò)深度學(xué)習(xí)代替原有遞歸算法來(lái)確定CU分區(qū),但由于IBC/PLT模式的存在,使得屏幕內(nèi)容CU的劃分不僅依賴于CU本身的特性,即使在紋理復(fù)雜區(qū)域可能不進(jìn)行劃分,這也成為有效確定CU分區(qū)的一個(gè)難點(diǎn)。
為在降低計(jì)算復(fù)雜度的同時(shí)保證減少視頻質(zhì)量的損失,本文考慮利用深度學(xué)習(xí)預(yù)測(cè)CTU深度范圍,而不是直接確定最終CU劃分結(jié)果,然后根據(jù)預(yù)測(cè)范圍跳過(guò)和終止某些深度的RD代價(jià)值檢查。這樣使得在較高深度范圍內(nèi),能夠通過(guò)檢查IBC/PLT模式后再確定最終劃分,而不是直接確定CU分區(qū)而忽略這2種模式的影響。
本文研究屏幕內(nèi)容標(biāo)準(zhǔn)序列中CTU深度范圍的分布,根據(jù)所選訓(xùn)練數(shù)據(jù)幀編碼后的結(jié)果進(jìn)行CTU深度范圍的統(tǒng)計(jì),結(jié)果如表2所示。
表2 CTU深度范圍統(tǒng)計(jì)Table 2 Statistics of CTU depth range %
在表2中,0、1、2、3表示只包含深度為0、1、2、3之一的CU的CTU,(1,2)表示只包含深度為1和2的CU的CTU,(1,3)和(2,3)同理,(1,2,3)表示包含深度為1、2和3的CU的CTU。從表2可以看出,對(duì)于屏幕內(nèi)容視頻來(lái)說(shuō),CTU深度范圍主要集中在深度0、(1,2)、(2,3)、(1,2,3)這4個(gè)范圍內(nèi),其中,深度范圍0、(2,3)、(1,2,3)占比都在20%以上,而深度范圍1、2、3、(1,3)占比都在10%以下,特別是對(duì)于純文本類視頻,因?yàn)橛写罅课淖謨?nèi)容及空白平滑區(qū)域,其CTU范圍主要集中在低的深度0和較高的深度(2,3)。考慮到屏幕內(nèi)容視頻編碼特性,由于屏幕內(nèi)容視頻編碼中增加了IBC/PLT模式,根據(jù)預(yù)測(cè)分類標(biāo)簽跳過(guò)的深度越多,受IBC/PLT模式影響越大,并且深度范圍2、3和(1,3)的占比較低,因此不考慮將這幾類單獨(dú)作為分類類型。而深度為1的占比雖然達(dá)到6.73%,但和深度范圍0、(2,3)、(1,2,3)占比相比也較少。因此,為使預(yù)測(cè)分類更加準(zhǔn)確,本文將CTU分為4類,如表3所示。
表3 CTU分類結(jié)果Table 3 Results of CTU classification
用于預(yù)測(cè)CTU深度范圍的CNN架構(gòu)由輸入層、2個(gè)卷積層、1個(gè)最大池化層、1個(gè)連接層和2個(gè)完全連接的層組成。每層具體結(jié)構(gòu)如下:
輸入層:提取屏幕內(nèi)容CTU的亮度信息,因?yàn)樗蠖鄶?shù)視覺信息。此外,為加快梯度下降求最優(yōu)解的速度,所有輸入像素矩陣的所有元素值都?xì)w一化為[0,1]。
卷積層和最大池化層:對(duì)于第1卷積層,并行應(yīng)用內(nèi)核大小為8×8、4×4和2×2的卷積核在3個(gè)分支上提取CTU深度信息的低級(jí)特征。本文將步幅(stride)設(shè)置為與卷積核的大小相同。上述第1卷積層的設(shè)計(jì)符合CTU分區(qū)的不同大小的所有可能非重疊CU。在第1卷積層后進(jìn)行最大池化,保留顯著特征,大小為4×4步長(zhǎng)等核。然后并行使用3個(gè)內(nèi)核大小為2×2的卷積核在3個(gè)分支上提取CTU分割的高級(jí)特征。
連接層:從最后一個(gè)卷積層產(chǎn)生的所有特征圖被連接在一起,然后通過(guò)連接層轉(zhuǎn)換為矢量。
完全連接層:連接層向量中的所有特性都流經(jīng)2個(gè)完全連接的層,包括1個(gè)隱藏層和1個(gè)輸出層。其中,最后一層為輸出層,輸出CTU分類標(biāo)簽P1、P2、P3和P4的概率,其中,概率最大的標(biāo)簽為最終分類標(biāo)簽。所有卷積層和隱藏的全連接層均由整流線性單元(ReLU)激活,最后輸出用softmax函數(shù)激活。此外,在連接層和全連接層將QP值作為外部特征輸入用于最終分類。應(yīng)用具有動(dòng)量的隨機(jī)梯度下降算法來(lái)訓(xùn)練CNN模型。其中,損失函數(shù)調(diào)用TensorFlow中的softmax_cross_entropy_with_logits進(jìn)行計(jì)算。CNN架構(gòu)如圖1所示。
圖1 用于預(yù)測(cè)CTU深度范圍的CNN架構(gòu)Fig.1 CNN architecture used to predict the depth range of CTU
在編碼CTU時(shí),首先根據(jù)CNN預(yù)測(cè)輸出來(lái)進(jìn)行CTU深度范圍預(yù)測(cè)。當(dāng)預(yù)測(cè)輸出P1概率最大時(shí),CTU深度為0;當(dāng)預(yù)測(cè)輸出P2概率最大時(shí),CTU將深度限制在范圍(1,2);當(dāng)預(yù)測(cè)輸出P3概率最大時(shí),CTU將深度限制在范圍(2,3);當(dāng)預(yù)測(cè)輸出P4概率最大時(shí),CTU將深度限制在范圍(1,3)。不同QP值下CNN模型準(zhǔn)確率如表4所示。
表4 不同QP值下CNN模型準(zhǔn)確率Table 4 Accuracy of CNN model under different QP values %
從表4可以看出,在QP=27時(shí),與文獻(xiàn)[13]的準(zhǔn)確率84.505%相比,本文所提模型準(zhǔn)確率有所提高。
基于深度學(xué)習(xí)的SCC幀內(nèi)編碼快速算法流程如圖2所示。
圖2 CTU深度預(yù)測(cè)快速算法總體流程Fig.2 Overall procedure of CTU depth prediction fast algorithm
CTU深度預(yù)測(cè)快速算法具體描述如下:
1)讀取屏幕內(nèi)容CTU,提取CTU的亮度像素信息作為CNN模型的輸入信息。
2)調(diào)用CNN模型,輸入CTU亮度像素信息,其中,輸入像素矩陣的所有元素值都?xì)w一化為[0,1],加快梯度下降求最優(yōu)解的速度。
3)CNN模型輸出CTU各個(gè)類別標(biāo)簽的概率,其中概率最大的標(biāo)簽為CTU的最終類型標(biāo)簽,并根據(jù)該標(biāo)簽預(yù)測(cè)CTU深度范圍。
4)在編碼過(guò)程中,根據(jù)預(yù)測(cè)的CTU深度范圍,跳過(guò)和終止某些深度的RD代價(jià)值計(jì)算,加快編碼速度。
5)確定整個(gè)CTU最終深度。
為評(píng)估本文提出算法性能,將本文算法在HEVC參考軟件HM-16.10+SCM-8.0中進(jìn)行實(shí)現(xiàn)。對(duì)11個(gè)選定的標(biāo)準(zhǔn)測(cè)試序列進(jìn)行編碼(測(cè)試序列中選為訓(xùn)練幀的幀不在性能評(píng)估范圍內(nèi))并進(jìn)行性能評(píng)估。測(cè)試環(huán)境配置為:Intel?CoreTMi5-4590 CPU @ 3.30 GHz,內(nèi)存為8.00 GB,操作系統(tǒng)為Windows10 64位,實(shí)驗(yàn)工具為 Microsoft Visual Studio 2010。QPs={22,27,32,37},在通用測(cè)試條件下,實(shí)驗(yàn)采用全I(xiàn)幀編碼。運(yùn)用BDBR[22]、BDPSNR和時(shí)間節(jié)省百分比ΔT來(lái)對(duì)算法性能進(jìn)行評(píng)估。ΔT的計(jì)算公式如下:
其中,Tref和Tpro分別表示SCM-8.0的編碼時(shí)間和本文算法的編碼時(shí)間。不同QP值下本文算法性能如表5所示。與SCM-8.0相比,在全I(xiàn)幀編碼后,本文算法總時(shí)長(zhǎng)平均減少了48.34%,BDBR上升了2.59%,同時(shí)BDPSNR僅下降了0.14 dB。其中,序列slideshow編碼時(shí)長(zhǎng)減少達(dá)到了67.03%,這是因?yàn)樵撔蛄兄邪罅康腜PT演示內(nèi)容,并且紋理簡(jiǎn)單,存在大量平滑區(qū)域,在調(diào)用CNN模型進(jìn)行CTU深度預(yù)測(cè)時(shí),預(yù)測(cè)的深度范圍中有大量集中在較低的深度,因此在進(jìn)行CU劃分時(shí),減少了較高深度的遍歷,跳過(guò)了大量RD代價(jià)值的計(jì)算,所以時(shí)間減少最多。而對(duì)于紋理復(fù)雜的序列,如sc_web_browsing、ChineseEditing等,由于在序列中包含大量的文本內(nèi)容,在調(diào)用CNN模型進(jìn)行CTU深度預(yù)測(cè)時(shí),預(yù)測(cè)的深度范圍中有大量文本內(nèi)容集中在較高的深度,因此跳過(guò)了較低深度的遍歷,但是由于較高深度的計(jì)算復(fù)雜度更高,因此時(shí)間節(jié)省沒有紋理簡(jiǎn)單的序列多。在全I(xiàn)幀條件下,本文算法與文獻(xiàn)[16,18,21]的性能對(duì)比如表6所示。與文獻(xiàn)[16]相比,本文在BDBR和時(shí)間節(jié)省方面都有了一定程度的降低。與文獻(xiàn)[18,21]相比,本文算法減少了更多的時(shí)間,BDBR也僅分別增加了1.66%和1.9%。從編碼時(shí)間角度來(lái)看,本文算法優(yōu)于文獻(xiàn)[18,21]算法。
表5 不同QP值下本文算法性能Table 5 Performance of this algorithm under different QP values
表6 不同算法性能對(duì)比Table 6 Performance comparison of different algorithms %
本文提出一種基于深度學(xué)習(xí)的屏幕內(nèi)容編碼幀內(nèi)CTU深度范圍預(yù)測(cè)算法。首先對(duì)標(biāo)準(zhǔn)屏幕內(nèi)容測(cè)試序列進(jìn)行編碼,收集大量的訓(xùn)練樣本,然后設(shè)計(jì)與CU分區(qū)相適應(yīng)的CNN架構(gòu),訓(xùn)練用于預(yù)測(cè)CTU深度范圍的CNN模型,最后在SCM8.0中調(diào)用訓(xùn)練好的CNN模型預(yù)測(cè)CTU深度范圍,根據(jù)預(yù)測(cè)出的深度范圍,跳過(guò)和終止某些深度的RD代價(jià)值的計(jì)算,以降低編碼復(fù)雜度。實(shí)驗(yàn)結(jié)果表明,在圖像質(zhì)量幾乎保持不變的情況下,與SCM-8.0相比,本文算法編碼時(shí)間減少48.34%,加快屏幕內(nèi)容編碼。下一步將在本文研究的基礎(chǔ)上對(duì) CNN模型進(jìn)行訓(xùn)練,增加對(duì)CTU深度有影響的時(shí)間和空間因素的考慮,以降低BDBR來(lái)保證SCC的高實(shí)時(shí)性。