熊啟金,丁永強(qiáng),林志堅(jiān)
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350108)
隨著信息技術(shù)的發(fā)展,視頻行業(yè)正在從高清向超高清時(shí)代轉(zhuǎn)變。為了滿(mǎn)足在有限的帶寬下傳輸更高質(zhì)量的視頻數(shù)據(jù),視頻編碼聯(lián)合組提出了新一代高效視頻編碼(High Efficiency Video Coding,HEVC)標(biāo)準(zhǔn)。與上一代視頻編碼標(biāo)準(zhǔn)(Advanced Video Coding,AVC)相比,HEVC采用更加靈活的四叉樹(shù)塊劃分結(jié)構(gòu)[1]和豐富的幀內(nèi)預(yù)測(cè)模式[2],在保證相同視頻質(zhì)量條件下,碼率可節(jié)省50%,但計(jì)算復(fù)雜度也成倍增加[3],不利于編碼器的硬件實(shí)現(xiàn)。
幀內(nèi)預(yù)測(cè)利用相鄰像素之間的關(guān)系消除圖像空域上的冗余[4],是HEVC的重要環(huán)節(jié)之一,其硬件實(shí)現(xiàn)成為研究人員關(guān)注的熱點(diǎn)。文獻(xiàn)[5]提出一種基于殘差哈達(dá)瑪變換和頭比特代價(jià)補(bǔ)償?shù)膸瑑?nèi)預(yù)測(cè)模式?jīng)Q策算法,簡(jiǎn)化了幀內(nèi)預(yù)測(cè)率失真優(yōu)化硬件實(shí)現(xiàn)的預(yù)處理過(guò)程,但沒(méi)有考慮粗選代價(jià)對(duì)預(yù)測(cè)塊劃分決策的影響;文獻(xiàn)[6]提出一種簡(jiǎn)化的預(yù)測(cè)模式和塊劃分決策,在一定程度上簡(jiǎn)化了幀內(nèi)預(yù)測(cè)率失真過(guò)程,但沒(méi)有突破幀內(nèi)預(yù)測(cè)對(duì)重構(gòu)數(shù)據(jù)的依賴(lài)性,無(wú)法對(duì)整個(gè)硬件回路進(jìn)行全流水線設(shè)計(jì);文獻(xiàn)[7]提出一種9路預(yù)測(cè)模式并行的硬件架構(gòu),但其并行模式?jīng)]有充分利用預(yù)測(cè)電路的并行性,導(dǎo)致電路利用率不高;文獻(xiàn)[8]提出一種對(duì)64×64和32×32預(yù)測(cè)單元進(jìn)行下采樣成16×16大小進(jìn)行預(yù)測(cè)計(jì)算,在一定程度上縮小了電路面積,但下采樣方式的準(zhǔn)確度不高,且該方法使用較多的時(shí)鐘周期,無(wú)法實(shí)現(xiàn)實(shí)時(shí)的超高清視頻編碼。
為了能夠在更小的電路面積下實(shí)現(xiàn)更高分辨率和幀率的實(shí)時(shí)視頻編碼,本文提出了一種幀內(nèi)預(yù)測(cè)模式高度并行的全流水硬件架構(gòu)設(shè)計(jì),具體工作如下:① 在模式?jīng)Q策時(shí),采用經(jīng)哈達(dá)瑪變換后的絕對(duì)誤差和(Sum of Absolute Transformed Difference,SATD)與預(yù)測(cè)模式編碼的碼率之和作為幀內(nèi)率失真代價(jià),從而打破了幀內(nèi)預(yù)測(cè)對(duì)重構(gòu)數(shù)據(jù)的依賴(lài),為硬件實(shí)現(xiàn)全流水電路設(shè)計(jì)提供了條件。② 在編碼單元(Coding Uint,CU)層間劃分決策時(shí),采用代價(jià)補(bǔ)償?shù)姆绞綄?duì)子塊的代價(jià)進(jìn)行補(bǔ)償,解決由于粗選代價(jià)導(dǎo)致CU層間劃分不合理的情況。③ 在硬件架構(gòu)上,提出基于4×4基本塊的18路預(yù)測(cè)模式并行的全流水硬件電路,在節(jié)省硬件資源的同時(shí),充分利用電路的復(fù)用性,極大提高了數(shù)據(jù)吞吐率。
在HEVC標(biāo)準(zhǔn)測(cè)試模型(HEVC Test Model,HM)中[9],幀內(nèi)模式?jīng)Q策會(huì)經(jīng)過(guò)預(yù)測(cè)模式粗選和細(xì)選兩個(gè)階段[10]。在模式粗選過(guò)程中,首先將基于殘差的SATD值從35種預(yù)測(cè)模式中得到若干個(gè)最佳預(yù)測(cè)模式并放入侯選模式列表中;然后參考上方和左側(cè)預(yù)測(cè)單元(Prediction Unit,PU)的最佳預(yù)測(cè)模式生成當(dāng)前PU最可能的模式列表(Most Probable Mode,MPM),并將其添加到侯選模式列表中。在細(xì)選階段,將粗選過(guò)程中得到的侯選模式列表中若干個(gè)模式采用碼率失真優(yōu)化(Rate Distortion Optimization,RDO)計(jì)算得到率失真代價(jià)(Rate Distortion cost,RDcost)并決策出最佳預(yù)測(cè)模式,RDcost計(jì)算公式如下:
(1)
式中:J表示RDcost的值,D表示重構(gòu)像素與原始像素之間的失真情況,由原始像素和重構(gòu)像素之間的平方誤差和(Sum of Squared Difference,SSD)得到,R表示當(dāng)前模式編碼后的碼流比特率,λ為拉格朗日常數(shù),用以平衡圖像失真情況和碼率的比重,與量化參數(shù)(Quantizer Parameter,QP)相關(guān),Oorig為原始像素值,Rreco為重構(gòu)像素值,| |表示取絕對(duì)值。
RDO過(guò)程是幀內(nèi)預(yù)測(cè)最復(fù)雜的部分[11-12],其過(guò)程如圖1所示。幀內(nèi)預(yù)測(cè)的失真情況需要經(jīng)過(guò)預(yù)測(cè)、變換量化、反變換反量化后,通過(guò)對(duì)原始像素和重構(gòu)像素求SSD值得到。幀內(nèi)預(yù)測(cè)的碼率需要經(jīng)過(guò)預(yù)測(cè)、變換量化、熵編碼等完整的編碼過(guò)程[13]后得到。最后通過(guò)對(duì)二者求和,才能得到最終RDcost。

圖1 HM幀內(nèi)預(yù)測(cè)RDcost計(jì)算過(guò)程Fig.1 Calculation process of HM intra prediction RDcost
由圖1可知,HM提供的RDO算法進(jìn)行代價(jià)計(jì)算將會(huì)消耗大量的硬件資源且無(wú)法滿(mǎn)足幀率較高的實(shí)時(shí)編碼需求。為了降低RDO的計(jì)算復(fù)雜度,文獻(xiàn)[14]采用殘差的絕對(duì)誤差和(Sum of Absolute Difference,SAD)估算RDcost,但是SAD僅能反映殘差時(shí)域的信息,雖然可以降低計(jì)算復(fù)雜度,但會(huì)導(dǎo)致編碼器性能的明顯下降。文獻(xiàn)[15]采用殘差的SATD值估算RDcost,盡管SATD值能夠反應(yīng)殘差在頻域的信息,且性能接近于離散余弦變換后的殘差值,但是忽略了幀內(nèi)預(yù)測(cè)編碼后的頭信息碼率。HEVC在編碼時(shí),對(duì)于預(yù)測(cè)模式屬于MPM列表中的模式,編碼其在MPM列表中的索引號(hào),而對(duì)于不在MPM列表中的模式則采用5 bit固定碼長(zhǎng)的語(yǔ)法元素進(jìn)行編碼。為打破幀內(nèi)RDO對(duì)重構(gòu)數(shù)據(jù)的依賴(lài),降低硬件設(shè)計(jì)的復(fù)雜度,并保持一定的性能,本文采用殘差的SATD和模式號(hào)的編碼比特?cái)?shù)來(lái)估算幀內(nèi)預(yù)測(cè)的RDcost,以簡(jiǎn)化幀內(nèi)預(yù)測(cè)的率失真優(yōu)化過(guò)程,其計(jì)算過(guò)程如圖2所示。

圖2 本文幀內(nèi)預(yù)測(cè)RDcost計(jì)算過(guò)程Fig.2 Decision process of this paper RDcost partition
考慮到幀內(nèi)預(yù)測(cè)的碼率信息不僅僅包含預(yù)測(cè)模式,還涉及劃分方式、量化系數(shù)等頭信息,故為了平衡SATD與碼率的比重,通過(guò)對(duì)不同權(quán)重的拉格朗日系數(shù)進(jìn)行實(shí)驗(yàn)統(tǒng)計(jì)分析,根據(jù)性能測(cè)試結(jié)果,提出采用3.5×sqrt(λmode)作為拉格朗日系數(shù)。考慮到浮點(diǎn)數(shù)不利于硬件實(shí)現(xiàn),對(duì)碼率值進(jìn)行向下取整,最終得到本文的RDcost算法模型,其計(jì)算公式如下:
(2)

在編碼結(jié)構(gòu)層面,HEVC采用更加靈活的四叉樹(shù)塊編碼劃分結(jié)構(gòu),編碼樹(shù)單元可根據(jù)四叉樹(shù)向下劃分成64×64~8×8四個(gè)層次的CU。對(duì)于幀內(nèi)預(yù)測(cè)中CU又可根據(jù)N×N和2N×2N的方式向下劃分成PU。對(duì)于CU層間劃分決策,HM采用了自下而上,迭代處理的計(jì)算方式。如圖3所示,首先計(jì)算出4個(gè)子塊最佳模式的率失真代價(jià)之和并與其父塊最佳模式的率失真代價(jià)進(jìn)行比較,選擇小的代價(jià)作為當(dāng)前CU的代價(jià),并確認(rèn)當(dāng)前CU的劃分方式。然后依次向上迭代,最終獲取當(dāng)前編碼樹(shù)單元中所有CU的最佳劃分方式和對(duì)應(yīng)的最佳預(yù)測(cè)模式。

圖3 CU塊劃分決策過(guò)程Fig.3 Decision process of CU partition
對(duì)于CU的層間決策,為了簡(jiǎn)化硬件實(shí)現(xiàn)的復(fù)雜度,現(xiàn)有的方案均直接采用粗選代價(jià)直接作為CU層間決策的代價(jià)。文獻(xiàn)[8]采用殘差的SATD值與頭比特估計(jì)值之和的粗選代價(jià)作為CU層間決策的代價(jià),其CU層間劃分結(jié)果如圖4(a)所示。相較于基于標(biāo)準(zhǔn)測(cè)試模型HM16.7的CU層間劃分結(jié)果,如圖4(b)所示,其4×4和8×8的塊相對(duì)較多。

(a) 粗選代價(jià)

(b) HM16.7

(c) 代價(jià)補(bǔ)償圖4 不同代價(jià)下的CU劃分結(jié)果Fig.4 Results of CU partition at different costs
這是由于圖像中存在相對(duì)不平坦的區(qū)域,使用較小的預(yù)測(cè)塊進(jìn)行預(yù)測(cè)時(shí),預(yù)測(cè)值和原始像素的接近程度越高,殘差的SATD值越小,從而在此區(qū)域中決策出較多的小塊。若圖像存在較多的小塊,則會(huì)對(duì)編碼器后續(xù)的重構(gòu)和熵編碼模塊造成巨大的負(fù)擔(dān),從而影響硬件編碼器的速度。
基于以上考慮,本文統(tǒng)計(jì)了常用QP下不同尺寸CU不向下劃分的概率,如表1所示。其中8×8 CU表示的是劃分為2N×2N模式PU的概率。為了CU劃分更加合理且易于硬件實(shí)現(xiàn),本文在CU層間決策時(shí),對(duì)子塊的代價(jià)和添加一個(gè)補(bǔ)償值,然后再與父塊的代價(jià)進(jìn)行比較,從而增加劃分大塊的概率。對(duì)于補(bǔ)償值的研究,本文通過(guò)統(tǒng)計(jì)常用QP下各尺寸CU下子塊的代價(jià)之和與父塊的代價(jià)差距分布,以表1中各尺寸CU下向下劃分的概率為基準(zhǔn),提出表2所示的各尺寸CU子塊對(duì)應(yīng)的補(bǔ)償值。經(jīng)測(cè)試,添加補(bǔ)償值后圖像CU層間劃分結(jié)果如圖4(c)所示,可見(jiàn)在采用本文所提對(duì)粗選代價(jià)進(jìn)行補(bǔ)償?shù)姆绞较?圖像CU層間劃分結(jié)果明顯好于粗選代價(jià)直接劃分,且接近于HM劃分情況。

表1 不同尺寸CU不向下劃分概率Tab.1 Probability of CU with different sizes not partition downwards under

表2 不同尺寸CU的代價(jià)補(bǔ)償值Tab.2 Cost compensation value of different size CU
如表3所示,針對(duì)不同類(lèi)型的測(cè)試序列,基于標(biāo)準(zhǔn)測(cè)試模型HM16.7對(duì)本文所提優(yōu)化算法性能進(jìn)行測(cè)試。由表3可以看出,本文算法在同等碼率下的視頻質(zhì)量指標(biāo)BD-PSNR的損失僅為-0.343 5 dB,編碼性能指標(biāo)BD-rate對(duì)比HM16.7也僅增加5.91%,說(shuō)明本文算法對(duì)編碼器性能的影響不大,可用于硬件設(shè)計(jì)上的實(shí)現(xiàn)。

表3 本文算法的編碼性能Tab.3 Coding performance of the algorithm in this paper
如圖5所示,HEVC幀內(nèi)預(yù)測(cè)定義了35種預(yù)測(cè)模式,包含直流模式,平面模式和角度模式。角度模式中將模式2~17作為水平預(yù)測(cè)模式,19~34作為垂直預(yù)測(cè)模式。水平模式采用左側(cè)參考像素作為主參考像素,垂直模式采用上方參考像素作為主參考像素。對(duì)于預(yù)測(cè)電路的設(shè)計(jì),傳統(tǒng)方案均采用預(yù)測(cè)模式并行的方式來(lái)提高吞吐率,文獻(xiàn)[5]采用4路預(yù)測(cè)模式并行的方式,但其數(shù)據(jù)吞吐率低,無(wú)法滿(mǎn)足高幀率高分辨率的視頻實(shí)時(shí)編碼需求。由圖5可知,水平模式和垂直模式關(guān)于模式18對(duì)稱(chēng),在預(yù)測(cè)過(guò)程中,預(yù)測(cè)點(diǎn)的權(quán)值和參考像素在主參考像素列表中的位置完全一樣。因此,參考像素濾波模塊只需要按照水平預(yù)測(cè)模式和垂直預(yù)測(cè)模式對(duì)濾波后的參考像素進(jìn)行整理,對(duì)稱(chēng)的預(yù)測(cè)模式可以采用同一個(gè)預(yù)測(cè)電路進(jìn)行預(yù)測(cè)。

圖5 幀內(nèi)35種預(yù)測(cè)模式Fig.5 35 prediction modes of intra
為提高幀內(nèi)預(yù)測(cè)的精度和效率,HEVC采用一維3抽頭低通濾波器對(duì)不同尺寸不同模式下的預(yù)測(cè)塊選擇性地進(jìn)行平滑濾波處理。本文對(duì)不同預(yù)測(cè)模式下需要進(jìn)行濾波的尺寸進(jìn)行了歸納統(tǒng)計(jì),如表4所示。

表4 不同模式下需要濾波的PU大小Tab.4 Filtering PU size required for different modes
從表4可以看到,在不同模式下,需要濾波的預(yù)測(cè)單元尺寸呈現(xiàn)一定的規(guī)律性。本文充分利用此特性,從濾波電路復(fù)用的角度,提出如表5所示的18路預(yù)測(cè)模式并行的方案進(jìn)行預(yù)測(cè)電路的設(shè)計(jì),充分發(fā)揮預(yù)測(cè)電路的復(fù)用性,提高電路的數(shù)據(jù)吞吐率。按照本文預(yù)測(cè)模式并行的設(shè)計(jì)方案,在第1路預(yù)測(cè)模式中,只有模式1在非4×4 PU下需要濾波,其余情況不需要濾波。第2路預(yù)測(cè)模式不需要濾波,第3~4路非4×4 PU下需要濾波,第5~16路16×16及以上PU需要濾波,第17~18路只有32×32及以上PU需要濾波。因此,在濾波后的參考像素中只需分成五類(lèi)進(jìn)行整理,并按照垂直和水平模式的不同將最終的參考像素分為主副參考像素輸入到預(yù)測(cè)電路中,每個(gè)批次就可以使用相同的預(yù)測(cè)電路。此方案可以充分發(fā)揮電路的復(fù)用性,在節(jié)省電路面積的同時(shí)提高數(shù)據(jù)吞吐率。

表5 18路預(yù)測(cè)模式并行方案Tab.5 18-path predictive mode parallel scheme
對(duì)于不同尺寸的PU,傳統(tǒng)硬件架構(gòu)通常單獨(dú)使用一個(gè)電路。如文獻(xiàn)[14]提出4種不同尺寸的PU并行預(yù)測(cè),雖然在一定程度上提高了運(yùn)行速度,但是占用了大量的硬件資源。因此,本文提出基于4×4基本塊復(fù)用的18路預(yù)測(cè)模式全并行流水的硬件架構(gòu),將CTU按Z掃描順序劃分成256個(gè)4×4的基本塊,依次對(duì)不同尺寸的預(yù)測(cè)單元流水處理,充分利用了電路的復(fù)用性。本文所設(shè)計(jì)的硬件架構(gòu)如圖6所示。
主要包括參考像素獲取電路、參考像素濾波電路、預(yù)測(cè)電路、殘差計(jì)算電路、哈達(dá)瑪變換電路等。其中參考像素獲取電路采用原始像素作為輸入,根據(jù)4×4基本塊的位置和PU尺寸的大小獲取當(dāng)前PU上方和左側(cè)參考像素。參考像素濾波電路分為強(qiáng)濾波電路和常規(guī)濾波電路,二者同時(shí)對(duì)輸入的參考像素進(jìn)行濾波處理后輸入到參考像素整理電路。參考像素整理電路對(duì)濾波后的參考像素和未濾波的參考像素按照并行預(yù)測(cè)模式的需要進(jìn)行分類(lèi)整理,并按照垂直模式和水平模式的不同,將最終的參考像素整理成主參考像素和副參考像素輸入到并行預(yù)測(cè)電路。預(yù)測(cè)電路根據(jù)輸入的參考像素完成預(yù)測(cè)并和原始像素求差得到4×4基本塊的殘差值輸入到哈達(dá)瑪變換模塊。哈達(dá)瑪變換模塊按照PU塊的尺寸不同,對(duì)變換后的值進(jìn)行累加得到當(dāng)前PU最終的SATD值。碼率值獲取電路是按照本文幀內(nèi)模式?jīng)Q策的算法根據(jù)QP的不同提前將碼率值計(jì)算好并存儲(chǔ)在只讀存儲(chǔ)器中,使用過(guò)程中采用查表的方式進(jìn)行讀取,以此簡(jiǎn)化硬件實(shí)現(xiàn)復(fù)雜度。
本文硬件架構(gòu)采用高度并行的全流水線設(shè)計(jì),電路開(kāi)始工作時(shí),第一個(gè)時(shí)鐘開(kāi)始對(duì)當(dāng)前CU層編碼樹(shù)單元編號(hào)為0的基本塊第一批預(yù)測(cè)模式處理,第二個(gè)時(shí)鐘對(duì)其第二批預(yù)測(cè)模式處理,第三個(gè)時(shí)鐘對(duì)編號(hào)為1的基本塊第一批預(yù)測(cè)模式處理,依次類(lèi)推,整個(gè)電路處于流水工作的過(guò)程,完成當(dāng)前PU層編碼樹(shù)單元的256個(gè)基本塊35種預(yù)測(cè)模式的計(jì)算后會(huì)繼續(xù)計(jì)算下一個(gè)PU層的編碼樹(shù)單元,直至完成當(dāng)前編碼樹(shù)單元5層預(yù)測(cè)單元的遍歷計(jì)算。為了提高硬件的處理速度,對(duì)于64×64的預(yù)測(cè)單元,本文采用32×32預(yù)測(cè)單元的數(shù)據(jù)進(jìn)行復(fù)用,以減少編碼時(shí)間。本文硬件架構(gòu)每個(gè)時(shí)鐘周期可同時(shí)處理一個(gè)4×4基本塊的18個(gè)預(yù)測(cè)模式計(jì)算,數(shù)據(jù)吞吐率可達(dá)288個(gè)像素每時(shí)鐘周期,理論上完成一個(gè)編碼樹(shù)單元從64×64至4×4預(yù)測(cè)單元的遍歷計(jì)算只需2 082個(gè)時(shí)鐘周期。
在Xilinx Virtex-7系列型號(hào)為xc7vx485tffg1761-3 FPGA實(shí)驗(yàn)平臺(tái)上對(duì)本文硬件架構(gòu)進(jìn)行綜合實(shí)現(xiàn),綜合結(jié)果表明,本文架構(gòu)使用的硬件資源為99 k查找表和57 k的寄存器,最高主頻可達(dá)219 MHz,最大可實(shí)現(xiàn)1080P@210FPS或4K@52FPS全I(xiàn)幀模式下的視頻實(shí)時(shí)編碼,支持幀內(nèi)35種預(yù)測(cè)模式和所有預(yù)測(cè)塊尺寸。本文硬件架構(gòu)與已有的設(shè)計(jì)方案對(duì)比結(jié)果如表6所示,文獻(xiàn)[16]提出了一種全流水的幀內(nèi)預(yù)測(cè)硬件架構(gòu),雖然在1080P和4K視頻的實(shí)時(shí)編碼幀率上與本文一致,但是其所消耗的LUT資源是本文的兩倍以上,寄存器資源接近4倍,且其方案僅支持32×32~4×4大小的PU,不支持64×64的PU。文獻(xiàn)[17]在幀內(nèi)模式?jīng)Q策代價(jià)計(jì)算時(shí)考慮了變換量化和熵編碼過(guò)程,其性能優(yōu)于本文算法1.52%,但其所消耗的硬件資源是本文的兩倍,且最大只支持1080P@45FPS的實(shí)時(shí)視頻編碼,不適用于高分辨率高幀率的應(yīng)用場(chǎng)景。文獻(xiàn)[18]雖然所消耗的硬件資源較低,但實(shí)時(shí)的編碼幀率僅為1080P@60FPS,遠(yuǎn)低于本文架構(gòu)。文獻(xiàn)[19]采用殘差的SATD值作為幀內(nèi)模式?jīng)Q策的代價(jià),但并沒(méi)考慮幀內(nèi)預(yù)測(cè)模式頭信息編碼比特率的影響,雖然降低了硬件實(shí)現(xiàn)的復(fù)雜度,但其編碼性能指標(biāo)BD-rate損失較大,高于本文算法6.75%,且僅支持1080P@30FPS的視頻實(shí)時(shí)編碼。

表6 硬件綜合結(jié)果對(duì)比Tab.6 Hardware synthesis results and comparison
面對(duì)HEVC幀內(nèi)預(yù)測(cè)硬件實(shí)現(xiàn)的高復(fù)雜度特性,本文在保證一定性能的前提下,面向硬件對(duì)幀內(nèi)預(yù)測(cè)算法進(jìn)行優(yōu)化,打破了幀內(nèi)預(yù)測(cè)過(guò)程中對(duì)重構(gòu)數(shù)據(jù)的依賴(lài),降低了硬件實(shí)現(xiàn)的復(fù)雜度。在硬件架構(gòu)設(shè)計(jì)上,基于本文所提優(yōu)化算法,設(shè)計(jì)出采用基于4×4基本塊復(fù)用的18路預(yù)測(cè)模式并行全流水硬件架構(gòu),數(shù)據(jù)吞吐率可達(dá)每時(shí)鐘周期處理288個(gè)像素,最高可實(shí)現(xiàn)4K@52FPS的實(shí)時(shí)視頻編碼。實(shí)驗(yàn)結(jié)果表明,本文方案綜合性能優(yōu)于其他已有方案。