林湧 楊鄭龍 羅亦茜 劉欣昱
摘? 要: 在[λ]域幀內(nèi)碼控中,提出一種基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的幀內(nèi)碼控最佳碼率分配算法。首先利用雙曲線函數(shù)擬合編碼樹單元(Coding Tree Unit,CTU)的率失真(Rate Distortion, RD)特性。設(shè)計雙分支卷積神經(jīng)網(wǎng)絡(luò)(Dual-Branch Convolutional Neural Network,DBCNN)預(yù)測率失真關(guān)鍵參數(shù)。然后根據(jù)幀級率失真優(yōu)化(Rate Distortion Optimization,RDO),建立幀級目標(biāo)碼率與CTU碼率分配等式關(guān)系,推導(dǎo)幀級拉格朗日參數(shù)[λ]。最后反演出最佳CTU碼率分配。實驗表明,該算法能夠顯著提高幀內(nèi)碼控編碼性能,并具有較高碼控精度。
關(guān)鍵詞: H.265/HEVC; 幀內(nèi)編碼; 卷積神經(jīng)網(wǎng)絡(luò); [λ]域碼率控制; 率失真特性
中圖分類號:TN919.81? ? ? ? ? 文獻標(biāo)識碼:A? ? 文章編號:1006-8228(2023)09-87-05
CNN based optimal rate allocation algorithm for λ-domain intra coding rate control
Lin Yong, Yang Zhenglong, Luo Yixi, Liu Xinyu
(Dept. of Urban Rail Transit, Shanghai University of Engineering Science, Shanghai 201620, China)
Abstract: In λ-domain intra coding rate control, an optimal intra coding rate allocation algorithm based on convolutional neural network (CNN) is proposed. Firstly, the rate-distortion (RD) characteristics of the coding tree unit (CTU) are fitted using the hyperbolic function. Dual-branch convolutional neural network (DBCNN) is designed to predict the key parameters of RD. Then, according to the frame-level rate-distortion optimization (RDO), the equation relationship between the frame-level target rate and the rate allocation of the CTU is established, and the frame-level Lagrange parameter λ is derived. Finally, through program optimization, the optimal rate allocation of the CTU is performed to achieve the best balance between coding quality and code rate control. Experimental results show that the algorithm can significantly improve the coding performance of intra coding rate control, and has high rate control accuracy.
Key words: H.265/HEVC; intra coding; convolutional neural network (CNN); λ-domain rate control; rate-distortion (RD)
0 引言
HEVC(High Efficiency Video Coding)[1]是一個高效的視頻編解碼標(biāo)準(zhǔn)。相比于上一代視頻編碼標(biāo)準(zhǔn),其壓縮效率提高一倍。[λ]域幀內(nèi)碼率控制[2]技術(shù)是HEVC標(biāo)準(zhǔn)的重要組成部分,由于幀內(nèi)碼控編碼質(zhì)量將影響后續(xù)的編碼質(zhì)量,提高幀內(nèi)碼率控制就顯得尤為重要。因為幀內(nèi)碼控編碼可參考的編碼信息較少,使得其初始碼率分配無法滿足編碼樹單元(Coding Tree Unit, CTU)的編碼特性需求,造成碼率分配不合理而降低幀內(nèi)碼控編碼性能。
現(xiàn)有許多優(yōu)秀的碼率控制算法,如針對幀內(nèi)碼率控制研究中,文獻[3]提出使用絕對變換差值之和作為碼率分配的復(fù)雜度指標(biāo)。同樣地,文獻[4]提出一種基于梯度的R-[λ]模型[5]。然而紋理復(fù)雜度往往不能表征編碼特性,分配的碼率無法適應(yīng)編碼的率失真特性,這就限制了幀內(nèi)碼控編碼的性能。一些學(xué)者從視覺感知方向出發(fā),提出以主觀評價為基礎(chǔ)的碼控算法,以及對視覺感興趣區(qū)域重點編碼[6]的碼控算法。文獻[7]從感知方向進行研究,根據(jù)結(jié)構(gòu)相似度(Structural Similarity, SSIM)指標(biāo)建立率失真關(guān)系,從而獲得每個CTU的最佳感知碼率分配。文獻[8]通過分裂歸一化策略,建立基于SSIM的率失真模型以表征局部視覺質(zhì)量與編碼碼率之間的關(guān)系。然而提高幀內(nèi)碼控的主觀編碼質(zhì)量往往不能提升當(dāng)前幀整體的客觀編碼質(zhì)量,這就不利于后續(xù)編碼幀的參考,因此需要尋找CTU的編碼特性,分配合理的碼率來提升整體的幀內(nèi)碼控編碼質(zhì)量。近年來,隨著深度學(xué)習(xí)取得了巨大成功[9-10]。CNN可以有效提取圖像特征來獲得先驗知識,其可為幀內(nèi)碼控編碼提供準(zhǔn)確的初始信息。Li等人[11]提出一種基于CNN的R-[λ]幀內(nèi)碼率控制,通過CNN預(yù)測每個CTU的R-[λ]曲線參數(shù)。然而,僅考慮碼率與拉格朗日參數(shù)[λ]的關(guān)系不能實現(xiàn)最佳編碼,碼率分配也是影響幀內(nèi)碼控編碼性能的另一個重要因素。同樣地,Wei等人[12]建立了CTU級[λ]和幀級[λ]的等式關(guān)系,但是如何根據(jù)CTU的編碼特性,有效地分配碼率也是提高碼控編碼的關(guān)鍵。
綜上所述,本文的研究重點是幀內(nèi)碼率的合理分配,并提出基于DBCNN的[λ]域幀內(nèi)最佳碼率分配方案。首先,探索不同CTU之間的RD特性,通過DBCNN網(wǎng)絡(luò)有效提取CTU編碼特征,先知CTU的率失真關(guān)鍵參數(shù)。然后通過RDO,獲取幀級目標(biāo)碼率與CTU碼率分配的等式關(guān)系,進而推導(dǎo)出每個CTU的最佳碼率分配。
1 CTU的率失真關(guān)系
本文關(guān)閉碼率控制,設(shè)置量化參數(shù)QP=17、22、27、32、37、42,對視頻序列進行幀內(nèi)編碼,記錄每個CTU在不同QP下的碼率與失真值。其如圖1(a)、圖1(b)、圖1(c)所示。
從圖1(a)、圖1(b)中可以看出,RD曲線符合雙曲線關(guān)系,即:
[DCTUi=CiRCTUi-Ki]? ?⑴
其中,[RCTU(i)]為第[i]個CTU的碼率,[DCTU(i)]為第[i]個CTU的失真,[Ci]和[Ki]為RD關(guān)鍵參數(shù)。從圖1中可以看出,不同幀的CTU其RD曲線不相同。因此,先知CTU的RD特性將有助于碼率的合理分配。
2 基于DBCNN的幀內(nèi)碼率分配
2.1 DBCNN網(wǎng)絡(luò)設(shè)計
設(shè)計DBCNN以預(yù)測CTU的RD特性參數(shù),其結(jié)合了殘差網(wǎng)絡(luò)[13]的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。DBCNN的輸入為:視頻編解碼過程中幀內(nèi)編碼時該幀的64*64大小的CTU。DBCNN網(wǎng)絡(luò)結(jié)構(gòu)主要由三部分組成:骨干網(wǎng)絡(luò)、分支C和分支K。分支C與分支K分別用于預(yù)測CTU的RD特性關(guān)鍵參數(shù)[C]與[K]。骨干網(wǎng)絡(luò)、分支C與分支K的結(jié)構(gòu)與參數(shù)如圖3所示。最終將預(yù)測的關(guān)鍵參數(shù)[C]和[K]與真實標(biāo)簽做歐式距離損失對網(wǎng)絡(luò)進行監(jiān)督:
[LCζC=1Nn=1N||FCXn|ζC-YCn||2]? ⑵
[LKζK=1Nn=1N||FKXn|ζK-YKn||2]? ⑶
其中,[N]為這一批數(shù)據(jù)中的CTU個數(shù),[Xn]為CTU的原始輸入, [FC(?)]和[FK(?)]為分支C和分支K的網(wǎng)絡(luò)執(zhí)行。 [ζC]和[ζK]為DBCNN中分支C和分支K部分的網(wǎng)絡(luò)參數(shù),[YCn]和[YKn]為參數(shù)[C]和參數(shù)[K]的真實標(biāo)簽。由于參數(shù)[C]的取值范圍較大,參數(shù)[K]的取值范圍較小,若設(shè)計直連網(wǎng)絡(luò)結(jié)構(gòu),對參數(shù)[C]的訓(xùn)練會對參數(shù)[K]的訓(xùn)練產(chǎn)生一定影響,因此本文采用雙分支網(wǎng)絡(luò)結(jié)構(gòu),使得對參數(shù)[C]和參數(shù)[K]的預(yù)測都能保持在較高的精度。
2.2 幀內(nèi)最佳碼率分配
建立幀級的率失真關(guān)系模型:
[Ωfopt=argminΩfDf? ? s.t.? Rf=Rft]? ⑷
其中,[Ωfopt]為當(dāng)前幀的編碼參數(shù)集合,包括模式,量化參數(shù)等,[Df]、[Rf]、[Rft]分別是當(dāng)前幀的失真、碼率以及目標(biāo)碼率。將幀級的率失真關(guān)系轉(zhuǎn)化為CTU級率失真關(guān)系:
[min Df=i=1NDCTUi? ? s.t. Rf=i=1NRCTU(i)=Rft]? ⑸
其中,[N]為該幀圖像當(dāng)中的CTU個數(shù),[DCTU(i)]、[RCTU(i)]分別是第[i]個CTU的失真和碼率。使用拉格朗日乘子法將式⑸轉(zhuǎn)化為無約束問題:
[mini=1NDCTU(i)+λ(i=1NRCTU(i)-Rft)]? ⑹
其中,[λ]為幀級拉格朗日因子。對式⑹進行求導(dǎo)優(yōu)化,可得:
[?i=1NDCTU(i)?RCTU(1)+λ?(i=1NRCTU(i)-Rft)?RCTU(1)=0?i=1NDCTU(i)?RCTU(2)+λ?(i=1NRCTU(i)-Rft)?RCTU(2)=0……?i=1NDCTU(i)?RCTU(N)+λ?(i=1NRCTU(i)-Rft)?RCTU(N)=0]? ⑺
將式⑴帶入到式⑺可得:
[C1K1RCTU(1)-K1-1=λC2K2RCTU(2)-K2-1=λ……CNKNRCTU(N)-KN-1=λ]? ⑻
其中,[C1, C2……CN]與[K1, K2……KN]為CTU的RD關(guān)鍵參數(shù),其可由DBCNN網(wǎng)絡(luò)預(yù)測得到。令
[C1K1, C2K2,……, CNKN]=[α1, α2, ……, αN];
[-K1-1, -K2-1……, KN-1]=[β1, β1, ……, βN]對式⑻整理可得:
[RCTU(1)=(λα1)-β1RCTU(2)=(λα2)-β2……RCTU(N)=(λαN)-βN] ⑼
根據(jù)幀級的碼率約束關(guān)系,CTU的碼率之和應(yīng)等于當(dāng)前幀的目標(biāo)碼率:
[λα1-β1+λα2-β2+λα3-β3+…+(λαN)-βN=Rft]? ⑽
從式⑽可解得當(dāng)前幀的拉格朗日參數(shù)[λ]。將[λ]帶回式⑼,即可推導(dǎo)出每個CTU的最優(yōu)碼率分配。
3 實驗分析
本實驗使用的編碼器平臺為HM16.9。DBCNN網(wǎng)絡(luò)訓(xùn)練與測試的環(huán)境為Caffe,CPU配置為Intel(R) Core(TM) i9-11900 2.50GHz,GPU配置為GeForce RTX2080。從視頻編解碼的Class A、B、C、D、E中提取近6000幀圖像以獲取數(shù)據(jù)集,為了降低相鄰幀之間的相關(guān)性,在從視頻當(dāng)中提取幀時,每間隔10幀進行提取。為了獲得數(shù)據(jù)集中CTU以及其對應(yīng)的RD特性參數(shù)標(biāo)簽,使用HM16.9進行幀內(nèi)編碼時,量化參數(shù)QP選擇17,22,27,32以及37,因此每個CTU可以獲得5個RD點,然后用雙曲函數(shù)擬合RD曲線,并獲取曲線的關(guān)鍵參數(shù)[C]和[K],制作成標(biāo)簽。參數(shù)[C]的取值范圍固定在[0,200]之間,參數(shù)[K]的取值范圍固定在[-2,0]之間。數(shù)據(jù)集中訓(xùn)練集、驗證集、測試集大小分別為9000張,1000張,1000張,1000張。
對網(wǎng)絡(luò)訓(xùn)練過程中,使用Adam算法作為DBCNN的優(yōu)化算法,其中[β1]=0.9,[β2]=0.99,[ε]=[10-8]。通過900000輪迭代,學(xué)習(xí)率從0.001逐漸降至0.0001。參數(shù)[C]與[K]在900000輪迭代后波動趨于穩(wěn)定,參數(shù)[C]的loss降至0.001,參數(shù)[K]的loss降至0.0001。兩種參數(shù)的loss變化曲線如圖3所示。
首先關(guān)閉碼率控制,設(shè)置量化參數(shù)QP分別為22、27、32、37,對第一幀進行幀內(nèi)編碼獲取相應(yīng)的目標(biāo)碼率后,以該目標(biāo)碼率進行碼率控制。本文使用Li等人[11]、Wei等人[12]提出的算法以及HM16.9中的碼率控制算法作為比較算法,采用通測條件[14]對A類、B類、C類、D類和E類序列進行測試。碼率控制精度的定義如下:
[A=Ractual-RtargetRtarget×100%]? ⑾
其中,[Ractual]為實際碼率,[Rtarget]為目標(biāo)碼率。精度結(jié)果如表1所示。
從表1中可以看到,HM16.9,Li等人[11],Wei等人[12]及本文算法控制精度結(jié)果分別為2.89%、3.73%、6.12%、2.24%,因此,本文提出的算法碼率精度優(yōu)于其他算法。編碼質(zhì)量的對比如表2所示。
75 KristenAndSara 0.04 -0.56 0.07 -1.72 0.06 -2.15 平均 0.05 -0.72 0.07 -1.70 0.12 -1.86 總平均 0.12 -1.65 0.25 -2.94 0.41 -2.47 ]
從表2中的可以看到,本文所提出算法分別與HM16.9、Li等人[11]、Wei等人[12]的算法比較,BDRate平均減少1.65、2.94、2.47。BDPSNR平均增加0.12、0.25、0.41。本文提出的算法優(yōu)于四種算法,并在每個類別中實現(xiàn)了BDPSNR增益和BDRate降低,這意味著本文算法在使用較少碼率的同時保持甚至提高了視頻的客觀質(zhì)量。本文算法之所以能夠很好地執(zhí)行,是因為它可以通過基于圖像特征的合理網(wǎng)絡(luò)結(jié)構(gòu)提前精確地獲得RD特性參數(shù),預(yù)測的RD曲線符合編碼特征。此外,通過幀級目標(biāo)碼率與CTU碼率分配之間的關(guān)系為每個CTU分配更精確的碼率,分配的碼率更適應(yīng)率失真特性,使碼率與失真達到最佳的平衡狀態(tài)。因此,幀內(nèi)碼率控制的編碼性能顯著提高。
在圖4中,我們可以看到,圖4(b)、圖4(c)的地面紋理細節(jié)完全缺失,而本文算法部分地保持了它。本文算法保留了更多的高頻信息,在重建圖像中恢復(fù)了清晰的邊緣和紋理,相比HM16.9和Li等人[11]的碼率控制算法實現(xiàn)了更好的主觀性能。
4 結(jié)束語
本文在HEVC中,提出了一種基于CNN的高效幀內(nèi)碼率控制算法。在該方法中,首先研究了CTU的率失真特性,DBCNN被設(shè)計用于預(yù)測率失真關(guān)鍵參數(shù)。之后,將一幀的失真分解為所有CTU的失真之和,通過推導(dǎo)一幀的RDO過程,建立幀級目標(biāo)碼率與CTU碼率分配關(guān)系。通過反演方程,可以計算出每個CTU的最佳碼率分配,用于幀內(nèi)碼率控制。最后,通過大量的實驗,以驗證本文算法的編碼性能。本文算法相比其他碼控算法有著較高的碼控精度,使用了較少碼率的同時,保持甚至提高了視頻的客觀質(zhì)量,并且在主觀質(zhì)量方面也優(yōu)于其他算法,顯著提高了幀內(nèi)編碼碼控質(zhì)量。
參考文獻(References):
[1] Sullivan G J, Ohm J R, Han W J, et al. Overview of the
high efficiency video coding(hevc) standard[J].IEEE Transactions on circuits and systems for video technology,2012,22(12):1649-1668.
[2] Li L, Li B, Li H, et al. [λ] -Domain Rate Control Algorithm
for High Efficiency Video Coding[J]. IEEE Transactions on Image Processing,2014,23(9):3841-3854.
[3] Wang X, Karczewicz M. Intra frame rate control based on
SATD, document JCTVC M0257[J]. Joint Collaborative Team on Video Coding,2013.
[4] Wang M, Ngan K N, Li H. An Efficient Frame-Content
Based Intra Frame Rate Control for High Efficiency Video Coding[J]. IEEE Signal Processing Letters,2015,22(7):896-900.
[5] Li B, Li H, Li L, et al. Rate Control By R-[ λ] model for
HEVC. 11th Meeting on JCTVC-K0103, JCTVC of ISO/IEC and ITU-T, Shanghai, China,2012.
[6] 李維,楊付正,任鵬.考慮視頻內(nèi)容的H.265/HEVC幀層碼
率分配算法[J].通信學(xué)報,2017,36(9):76-81.
[7] Wei G, Kwong S, Yu Z, et al. SSIM-Based Game Theory
Approach for Rate-Distortion Optimized Intra Frame CTU-Level Bit Allocation[J]. IEEE Transactions on Multimedia,2016,18(6):988-999.
[8] Zhou M, Wei X, Wang S, et al. SSIM-Based Global
Optimization for CTU-level Rate Control in HEVC[J]. IEEE Transactions on Multimedia,2019,21(8):1921-1933.
[9] Krizhevsky A, Sutskever I, Hinton G. Imagenet classifica-
tion with deep convolutional neural networks[J]. Advances in neural information processing systems,2012,60(6):1097-1105.
[10] 胡越,羅東陽,花奎,等.關(guān)于深度學(xué)習(xí)的綜述與討論[J].智能
系統(tǒng)學(xué)報,2019,14(1).
[11] Ye L, Li B, Dong L, et al. A convolutional neural
network-based approach to rate control in HEVC intra coding[J].2017 IEEE Visual Communications and Image Processing (VCIP),2017:1-4.
[12] Wei L, Yang Z, Wang G, et al. A CNN-Based Optimal
CTU [λ] Decision for HEVC Intra Rate Control[J]. IEICE Transactions on Information and Systems,2021,D(10):1766-1769.
[13] He K, Zhang X, Ren S, et al. Deep residual learning for
image recognition[J]. Proceedings of the IEEE conference on computer vision and pattern recognition,2016:770-778.
[14] K. Suehring. JVET common test conditions and software
reference configurations[R].Joint Video Explor. Team, Tech. Rep. JVET-B1010,2016.