任學(xué)超,薛紅平,武彥君,王學(xué)才,平建創(chuàng)
(北方自動(dòng)控制技術(shù)研究所, 太原 030006)
自2013年H.265標(biāo)準(zhǔn)正式發(fā)布以來,學(xué)術(shù)界認(rèn)為它比H.264增加了分割方案的數(shù)量,不同的編碼單元為H.265標(biāo)準(zhǔn)提供了不同的塊分割方案,但由于編碼器需要計(jì)算總共4層的編碼單元的率失真成本并選擇最后的分割方案,同時(shí)編碼器需要花費(fèi)更多的時(shí)間來檢查分割方案的率失真代價(jià)。
目前提出的降低H.265復(fù)雜度方法一般分為兩類:先驗(yàn)型方法和學(xué)習(xí)型方法。第一類基于先驗(yàn)型降低復(fù)雜度的方法,主要是通過一些特征和規(guī)則確定編碼單元分割,例如在幀級(jí)提出編碼單元深度決策方法,跳過幀內(nèi)的一些編碼單元深度[1];計(jì)算幀間模式預(yù)測誤差根據(jù)最小化貝葉斯風(fēng)險(xiǎn)規(guī)則確定編碼單元的分割[2];提出快速幀間預(yù)測單元尺寸決策,將較小的幀間預(yù)測單元集成到較大的幀間預(yù)測單元中;這些方法在特征選取方面很大程度依賴于人工選擇的能力,很難確定所選特征是否是最優(yōu)的;第二類基于學(xué)習(xí)型降低復(fù)雜度的方法,利用大量數(shù)據(jù)的機(jī)器學(xué)習(xí),初步結(jié)合深度學(xué)習(xí),通過某一類模型總結(jié)H.265中編碼單元分割的規(guī)則,有效彌補(bǔ)了之前需要人類決策制定規(guī)則方法的缺點(diǎn),例如使用SVM的分類模型替代了之前的全遞歸率失真搜索[3],提出多類SVM分類算法模型進(jìn)一步減少編碼時(shí)間等[4]。
H.265標(biāo)準(zhǔn)中的編碼單元分割結(jié)構(gòu)如圖1所示,它是由最基本的64×64 CTU(Coding Tree Unit)組成,CTU包含一個(gè)編碼單元或者可以被劃分為4個(gè)子編碼單元,每個(gè)子編碼單元可以依次選擇是否被劃分為4個(gè)更精細(xì)的子編碼單元,直到編碼單元被劃分為最小尺寸8×8為止。
圖1 編碼單元分割結(jié)構(gòu)
編碼單元分割結(jié)果示意圖如圖2所示,在僅具有靜止或慢動(dòng)作背景的視頻中,CTU的內(nèi)容變化微小,可以從參考幀準(zhǔn)確地預(yù)測,該CTU可能不被分割成更小的分割單元。
圖2 編碼單元分割結(jié)果示意圖
編碼輸出結(jié)果圖如圖3所示,采用分層B幀結(jié)構(gòu)配置方式對30幀的832×480的測試視頻序列進(jìn)行壓縮,其各幀的PSNR值(峰值信噪比)都在30~40,表明其壓縮的圖像質(zhì)量是良好的,失真表現(xiàn)在可接受的范圍內(nèi)。
圖3 編碼輸出結(jié)果圖
為了實(shí)現(xiàn)特征的自動(dòng)提取,有人通過構(gòu)造簡單的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)結(jié)構(gòu)決定編碼單元的分割。雖然相關(guān)研究取得了很多成果,但在大多方法只適用于降低幀內(nèi)模式的復(fù)雜度,對于幀間模式,編碼單元分割的結(jié)果不僅取決于視頻內(nèi)容本身,還取決于每幀之間的空間相關(guān)性以及時(shí)間相關(guān)性,由于構(gòu)建的網(wǎng)絡(luò)結(jié)構(gòu)層數(shù)比較淺,不利于特征的提取和多層的訓(xùn)練,并且傳統(tǒng)的訓(xùn)練容易出現(xiàn)梯度彌散的現(xiàn)象,可能長時(shí)間的訓(xùn)練會(huì)丟失之前幀的記憶,造成視頻壓縮的失真。
因此本文提出了一種GRU(門控遞歸單元)模型,將幾個(gè)連續(xù)幀的CTU圖像信息輸入到GRU中,學(xué)習(xí)幀間模式編碼單元分割的時(shí)序依賴性和空間相關(guān)性,預(yù)測每幀的編碼單元分割結(jié)果來降低幀間預(yù)測的復(fù)雜度。
GRU即Gated Recurrent Unit,是長-短期記憶(Long Short-Term Memory,LSTM)模型的改進(jìn),該模型克服了循環(huán)神經(jīng)網(wǎng)絡(luò)無法很好地處理遠(yuǎn)距離的依賴關(guān)系問題,能夠有效地學(xué)習(xí)幀間編碼單元分割的長、短時(shí)依賴關(guān)系[5]。常見的LSTM模型變形都是在沒有影響這一類模型的性能基礎(chǔ)上對于計(jì)算部件上的改變,而GRU在長時(shí)間的訓(xùn)練過程中其收斂時(shí)間方面更優(yōu)于LSTM,并且相比較于SVM模型更適合處理多分類問題。GRU模型示意圖(圖4)。
圖4 GRU 模型結(jié)構(gòu)
GRU的前向計(jì)算公式為
對應(yīng)的模型其代碼如下:
z_t1=T.nnet.hard_sigmoid(U[0].dot(x_e) +W[0].dot(s_t1_prev)+b[0])
r_t1= T.nnet.hard_sigmoid(U[1].dot(x_e) +W[1].dot(s_t1_prev)+b[1])
c_t1=T.tanh(U[2].dot(x_e)+W[2].dot(s_t1_prev * r_t1)+b[2])
s_t1= (T.ones_like(z_t1) -z_t1) *c_t1+z_t1 *s_t1_prev
結(jié)合前人的研究,最終提出的GRU深度學(xué)習(xí)模型其中層3的結(jié)構(gòu)如圖5所示??紤]到相似幀的時(shí)序依賴性和空間相關(guān)性,先對每個(gè)CTU進(jìn)行預(yù)處理,此過程與HM參考軟件中的標(biāo)準(zhǔn)編碼過程相似。引入了CNN的結(jié)構(gòu),其中包含兩個(gè)卷積(3×3)池化層和兩個(gè)下采樣層對CTU進(jìn)行特征提取,分別對64×64、32×32、16×16三級(jí)的分割單元通過內(nèi)核進(jìn)行卷積,提取出相應(yīng)圖像信息的特征,將這些特征歸并在一起組成一個(gè)特征向量,再將它分為f1-3(256)、f1-2(128)、f1-2(64)三條支路依次通過GRU結(jié)構(gòu)中。
每個(gè)GRU單元接收當(dāng)前的輸入向量和之前生成的狀態(tài)向量更新當(dāng)前GRU單元的狀態(tài)向量和輸出向量。每幀的順序由單熱矢量表示,每個(gè)級(jí)各有一個(gè)GRU單元用來單獨(dú)訓(xùn)練CU分割,f(t)(n)表示每一級(jí)GRU單元和全連接層的輸出特征向量,輸出向量再依次選擇通過兩個(gè)全連接層進(jìn)一步處理,最終得到HCPM(hierarchical CU partition map)所需的二值化編碼單元的分割概率。在層3和層2中,引入了提早終止機(jī)制,如果第一級(jí)最大尺寸的 CU 不分割,則不需要計(jì)算第二級(jí)是否分割;如果第二級(jí)的 4 個(gè) CU 都不分割,則不需要計(jì)算第三級(jí)是否分割,減少GRU中的計(jì)算冗余[6]。
與幀內(nèi)模式類似,每個(gè)全連接層也考慮了外部特征量化參數(shù)QP值,將 QP 值作為一個(gè)外部特征添加到特征向量中,使網(wǎng)絡(luò)能夠?qū)P與CU分割的關(guān)系進(jìn)行建模,以適應(yīng)編碼單元分割中對于不同編碼質(zhì)量和幀位置的影響。一般情況下隨著QP值的減小,有更多的CU被分割,反之,當(dāng)QP值增大時(shí),CU傾向于不分割。
圖5 GRU層3結(jié)構(gòu)
首先訓(xùn)練GRU模型以評(píng)估不同迭代時(shí)的訓(xùn)練損失,如圖6所示是GRU模型的訓(xùn)練損耗曲線,GRU模型以很快的速度收斂,并且在經(jīng)過多次訓(xùn)練后不會(huì)出現(xiàn)梯度彌散,能夠很好地訓(xùn)練各級(jí)固定的編碼分割單元而不造成圖像的損失。
圖6 GRU訓(xùn)練損耗曲線
根據(jù)所搭建的結(jié)構(gòu)模型驗(yàn)證GRU降低幀間預(yù)測復(fù)雜度的性能,將本文提出的基于GRU模型的方法與文獻(xiàn)[7]、文獻(xiàn)[8]的方法進(jìn)行比較。所選取的測試序列每種類別(Class)從ClassA到ClassE中,其分辨率分別為2 560×1 600、1 920×1 280、832×480、416×240、1 080×720,序列盡量包含紋理變化復(fù)雜和簡單的視頻,所有序列均可采用4個(gè)不同的量化參數(shù)QP進(jìn)行壓縮,以適應(yīng)不同的碼率和編碼質(zhì)量。
實(shí)驗(yàn)結(jié)果如表1所示,在量化參數(shù)QP=22,27,32和37時(shí),本文提出的方法在大多數(shù)視頻測試序列上比其他3種方法會(huì)降低更多的復(fù)雜率;最后計(jì)算得出的復(fù)雜度降低率平均在43.88%,52.33%,57.95%和63.03%,優(yōu)于文獻(xiàn)[7]中的38.31%,46.10%,48.95%和46.50%以及文獻(xiàn)[8]中的43.67%,43.10%,43.54%和43.98%。
表1 復(fù)雜度降低率
續(xù)表(表1)
本文從幀間預(yù)測復(fù)雜度出發(fā),提出了一種深度學(xué)習(xí)架構(gòu)來優(yōu)化H.265幀間預(yù)測復(fù)雜度。實(shí)驗(yàn)結(jié)果表明:比其他方法更有效。
盡管GRU這一類長-短期記憶模型能夠有效解決長時(shí)間的依賴關(guān)系,但是其最多只能記憶約100 s左右的信息?,F(xiàn)已提出了一個(gè)分層的neural attention編碼器模型,解決了GRU需要更多資源訓(xùn)練的問題,之后會(huì)應(yīng)用于圖像壓縮方面。