歡迎光臨
每天分享高質量文章

TIP 2018論文概述:基於深度學習的HEVC複雜度優化

作者丨徐邁、李天一 等

學校丨北京航空航天大學博士生

研究方向丨視頻編碼與深度學習

本文概述了 2018 年 6 月發表在 IEEE TIP 期刊的論文 Reducing Complexity of HEVC : A Deep Learning Approach。在此論文中,北京航空航天大學博士研究生李天一及其導師徐邁,提出了一種基於深度學習的視頻編碼複雜度優化方法,實現了在幾乎不影響編碼效率的前提下,顯著降低高效率視頻編碼(High Efficiency Video Coding,HEVC)的複雜度。


■ 論文 | Reducing Complexity of HEVC: A Deep Learning Approach

■ 鏈接 | https://www.paperweekly.site/papers/2140

■ 原始碼 | https://github.com/HEVC-Projects/CPH

背景


與前一代 H.264/高級視頻編碼(Advanced Video Coding,AVC)標準相比,HEVC 標準能夠在相同視頻質量下,節省大約 50% 的比特率。這得益於一些先進的視頻編碼技術,例如基於四叉樹結構的編碼單元(coding unit,CU)分割結構。然而這些技術也帶來了相當高的複雜度。與 H.264/AVC 相比,HEVC 的編碼時間平均增加約 253%,較高的複雜度就限制了該標準的實際應用。因此,有必要在率失真(rate-distortion,RD)性能幾乎不受影響的前提下,顯著降低 HEVC 編碼複雜度。 


從 2013 年 HEVC 正式發佈開始,學界已經在降低編碼複雜度方向進行了廣泛的研究。目前已經存在多種降低 HEVC 編碼複雜度的方法。就編碼過程而言,基於四叉樹的遞迴 CU 分割搜索,占據絕大部分編碼時間(在標準參考軟體 HM 中用時超過80%),因此很多方法都通過簡化 CU 分割來降低 HEVC 編碼複雜度。 


HEVC 中的 CU 分割結構如圖 1 所示。在標準編碼器中,CU 分割是一種遞迴的搜索,從最基本的 64×64 編碼樹單元(Coding Tree Unit,CTU)開始,一個 CTU 可以只包含一個 CU,也可以被分成四個子 CU;每個子 CU 又可以選擇是否被分成四個更細的子 CU,以此類推,直到 CU 被分成最小尺寸 8×8 為止。


可見,從最大 64×64 到最小 8×8,多種可能的 CU 尺寸為 HEVC 標準提供了十分靈活的塊分割方式,使編碼器可以從中選出一種率失真代價最小的 CU 分割方案,作為實際編碼結果。


與 H.264 相比,可選擇的分割方案數增多,就更有希望找出率失真代價盡可能小的方案,這就是 HEVC 編碼效率較高的一個重要原因。然而,有利往往也有弊,更多種 CU 分割方案,就意味著編碼器需要花費更多時間,檢查每種方案的率失真代價。


這是一個分層遞迴的過程,編碼器需要對總共 85 個 CU(包括 64 個 8×8 的 CU,16 個 16×16 的 CU,4 個 32×32 的 CU 和 1 個 64×64 CU)編碼,以檢查每個 CU 的率失真代價。相比之下,在最終編碼結果中,只會存在最少 1 個、最多 64 個 CU,因此如果能提前預測出合理的 CU 分割結果,即可直接對所選的 CU 進行編碼,跳過不必要的率失真代價檢查過程。


 圖1. HEVC中CU分割結構


早期的 CU 分割預測方法大多為啟髮式的,根據編碼中的一些特征(如圖像內容複雜度、率失真代價、運動矢量信息等)和人為制定的決策規則,在進行遞迴搜索之前,提前決定 CU 分割。2015 年以後,利用機器學習預測 CU 分割的一些方法被陸續提出,例如用支持向量機的自動學習,彌補了先前方法中需要人為制定決策規則的缺點。


然而,上述方法中的特征都需要手動提取,這在一定程度上依賴於研究者的先驗知識,難以確定選取的特征是否為最優,並且容易忽略一些隱含但有用的特征。為實現特征自動提取,另有文獻通過搭建簡易的捲積神經網絡(convolutional neural network,CNN)結構決定 CU 分割,初步實現了利用深度學習思想降低 HEVC 複雜度。 


儘管相關研究已經取得諸多成果,在本文方法提出之前,已有文獻中的網絡結構還比較淺,難以充分發揮深度學習的優勢,並且,先前基於 CNN 的方法都只適用於幀內樣式,對於實際應用更廣泛的幀間樣式則無能為力。


在設計演算法之前,作者首先直觀地分析 CU 分割結果,如圖 2 所示,幀內樣式的 CU 結果主要由 CTU 中的圖像內容決定,一般紋理越密集之處,CU 分割也越密集,反之亦反。當然 CU 分割不僅僅取決於紋理的細密程度,若一個 CU 中紋理比較密集,但恰好可以通過相鄰 CU 信息來準確預測,那麼此 CU 也有可能不被分割。


無論如何,CU 分割結果和圖像內容緊密相關,因此在幀內樣式中,本文首先提出一種與 CU 分割相適應的 CNN 結構,通過圖像內容自動提取特征,來學習 CU 分割結果


 圖2. 幀內樣式CTU內容與CU分割結果示例


對於幀間樣式,可以發現 CU 分割結果不僅與視頻內容有關,還取決於相近幀內容的相似度。例如,在背景靜止或只有緩慢運動的視頻中,CTU 中的內容可能比較細密,但可以由參考幀準確預測得到,那麼這個 CTU 很可能不被分割。


鑒於此,本文提出一種長-短期記憶(Long Short-Term Memory,LSTM)模型,以學習幀間樣式 CU 分割的時序依賴關係。在幀間樣式中,本文將 CNN 與 LSTM 結合使用,同時學習視頻內容的空間和時間相關性。如圖 3 所示,將連續若干幀的 CTU 圖像信息輸入到 CNN+LSTM 中,預測每一幀的 CU 分割結果。另外,與幀內樣式不同,幀間樣式中輸入網絡的是殘差圖像,這是考慮到殘差圖像本身就包含時間相關性信息,有利於準確預測。


 圖3. 幀間樣式CTU內容與CU分割結果示例


思路

確定總體思路後,作者首先構建一個大規模的 CU 分割資料庫,為訓練神經網絡提供資料支撐,並有望促進 HEVC 編碼複雜度優化的後續研究。本資料庫同時涵蓋了幀內和幀間樣式的全部四種配置(All Intra,Low Delay P,Low Delay B 和 Random Access,簡稱 AI,LDP,LDB 和 RA),其中幀內樣式資料來自 2000 個無損圖像,幀間的來自 111 個無損視頻。所有資料均採用 4 個不同量化引數(Quantization Parameter,QP)壓縮,以適應不同碼率和編碼質量。


在資料庫中,每個樣本由兩部分組成:CU 中圖像內容構成的亮度矩陣,以及一個二分類標簽代表是否分割。表 1 顯示了本資料庫的樣本組成,可見在每種樣式中,都收集到超過 1 億個樣本,且正負樣本分佈大體均勻,保證能夠有效訓練。


 表1. CU分割資料庫的樣本組成


在取得足量資料後,本文又提出一種分層 CU 分割圖(hierarchical CU partition map,HCPM),對整個 CTU 中的 CU 分割進行高效建模。傳統的 CU 分割預測,一般是把 CU 分割過程視為各自獨立的三級分類器,分別預測每個 64×64 的 CU、32×32 的 CU 和 16×16 的 CU 是否分割。然而,傳統方法每次預測只能得到一個 CU 的分割結果,若要得到整個 CTU 的分割結果,需要最多 21 次預測,計算量較大,並且會增加演算法本身的計算時間。


為解決這一問題,在本文的 HCPM 中,可直接將一個 CTU 輸入到網絡中,得到 1+4+16 個節點的結構化輸出,來預測 CTU 中所有可能的 CU 是否分割。


如圖 4 所示,對於一個 CTU,通過資料庫可以得到正確的 CU 分割結果,每個存在的 CU 都用 1 代表分割,0 代表不分割,即 HCPM 真值;將此 CTU 通過深度網絡處理,會得到相應的 HCPM 預測值。網絡的訓練就是使 HCPM 預測值盡可能接近真值。如此,通過構建高效的 HCPM,可以大幅節省演算法本身的呼叫時間,有利於最終降低編碼複雜度的標的。


 圖4. 分層CU分割圖示例(HCPM) 


幀內樣式

下麵分別介紹幀內和幀間樣式中的深度神經網絡結構。


在幀內樣式中,作者設計了一種可以提前終止的分層 CNN(early-terminated hierarchical CNN,ETH-CNN)。該網絡輸入一個 64×64 CTU 的亮度信息,輸出所有不同尺寸 CU 的分割概率,即前文所述的 HCPM。其中的提前終止機制,可以減少網絡本身的時間複雜度。


 圖5. ETH-CNN結構

ETH-CNN 包含兩個預處理層,三個捲積層,一個歸併層和三個全連接層,結構如圖 5 所示。各部分的具體配置與功能,闡述如下。


預處理層


對 CTU 原始亮度矩陣進行去均值和降採樣等預處理操作。為了適應最終的 HCPM 三級輸出,從預處理層開始,輸入信息就在三條併列的分支 B1、B2 和 B3 中操作。


首先,在去均值操作中,CTU 的亮度矩陣減去圖像整體或某一區域性的平均亮度,以減小圖像間的亮度差異。之後,考慮到分割深度較淺的 CTU 一般對應平滑的圖像內容,沒有過多細節信息,因此在 B1 和 B2 中,對去均值的亮度矩陣進一步降採樣,將矩陣尺寸轉化為 16×16 和 32×32,進一步降低後續的計算複雜度。


並且,通過這種選擇性的降採樣,能保證後續捲積層的輸出尺寸(1×1、2×2 和 4×4)與 HCPM 的三級輸出標簽數相一致,使捲積層輸出結果具有比較清晰、明確的意義。


捲積層


在每條分支中,對預處理後的資料進行三層捲積操作。在同一層里,所有三條分支的捲積核大小相同。首先,在第 1 捲積層中,預處理後資料與 16 個 4×4 的核進行捲積,獲得 16 種不同的特征圖,以提取圖像信息中的低級特征。在第 2、第 3 捲積層中,將上述特征圖依次通過 24 個和 32 個 2×2 的核進行捲積,以提取較高級的特征,最終在每條分支中均得到 32 種特征圖。


所有捲積層中,捲積操作的步長等於核的邊長,恰好能實現無重疊的捲積運算,且大多數捲積核作用域為 8×8,16×16,32×32 或 64×64 等(邊長均為 2 的整數次冪),在位置和尺寸上都恰好對應各個互不重疊的 CU。因此,ETH-CNN 中的捲積與 HEVC 的 CU 分割過程相適應。


歸併層


將三條分支中第 2、第 3 捲積層的所有特征歸併在一起,組合成一個向量。如圖 5 中間的藍色箭頭所示,歸併後的特征由 6 種不同來源的特征圖組合而成,這有助於獲得多種全域性與區域性特征。


全連接層


將歸併後的特征再次分為三條支路進行處理,同樣對應於 HCPM 中的三級輸出。由於經歷了特征歸併,此處的任何一條支路都可以利用完整 CTU 中的特征,來預測 HCPM 中某一級 CU 的分割結果。在每條支路中,特征向量依次通過三個全連接層,包括兩個隱含層和一個輸出層,最終的輸出即為 HCPM 預測值。


此外,需要考慮量化引數 QP 對 CU 分割的影響。一般隨著 QP 減小,有更多的 CU 會被分割,反之,當 QP 增大時,則傾向於不分割。因此,在 ETH-CNN 的第一、第二全連接層中,將 QP 作為一個外部特征,添加到特征向量中,使網絡能夠對 QP 與 CU 分割的關係進行建模,在不同 QP 下準確預測分割結果,提高演算法對不同編碼質量和碼率的適應性。


另外,通過 ETH-CNN 的提前終止機制,可以跳過第二、三級全連接層,以節省計算時間,即:如果第一級最大尺寸的 CU 不分割,則不需要計算第二級是否分割;如果第二級的 4 個 CU 都不分割,則不需要計算第三級是否分割。 


其他層


在 CNN 訓練階段,將第一、第二全連接層的特征分別以 50% 和 20% 的概率隨機丟棄(dropout),防止過擬合,提高網絡的泛化能力。在訓練和測試階段,所有捲積層和第一、二個全連接層均用修正線性單元(rectified linear units, ReLU)激活。所有分支的第三個全連接層,即輸出層,採用 S 形(sigmoid)函式進行激活,使輸出值都位於 (0,1) 內,與 HCPM 中的二值化標簽相適應。


幀間樣式


在幀間樣式中,需要同時考慮 CTU 內容中的空間相關性,以及不同幀 CTU 內容的時間相關性。在 ETH-CNN 的基礎上,作者進一步提出可以提前終止的分層 LSTM(early-terminated hierarchical LSTM,ETH-LSTM),來學習幀間 CU 分割的長、短時依賴關係。


 圖6. ETH-LSTM結構

ETH-LSTM 的結構如圖 6 所示。由於幀間樣式同樣需要提取 CTU 中的空間特征,首先,仍然將 CTU 輸入到 ETH-CNN 中。但與幀內樣式不同,幀間樣式的網絡輸入是殘差 CTU 的亮度信息,而不是原始 CTU 的亮度信息。這裡的殘差,是通過對當前幀進行快速預編碼獲得的,此過程與標準編碼過程相似,唯一區別是將 CU 和 PU 強制設為最大尺寸 64×64,以節省編碼時間。


儘管額外的預編碼過程帶來了時間冗餘,但這種冗餘只占標準編碼時間的 3%,不會顯著影響演算法的最終性能。將殘差 CTU 通過 ETH-CNN 進行處理後,把第 7 層(即第 1 個全連接層)三個支路輸出的特征向量,送入到 ETH-LSTM 的三級,以備後續處理。 


在 ETH-LSTM 中,第 1、2、3 級各有一個 LSTM 單元。每個 LSTM 單元接受當前時刻的輸入向量(即 CNN 處理後的特征),以及上一時刻 LSTM 產生的狀態向量,由此來更新當前時刻 LSTM 的狀態向量和輸出向量。LSTM 單元的輸出向量,再依次通過兩個全連接層做進一步處理,最終得到 HCPM 所需的二值化 CU 分割概率。


與幀內樣式類似,此處的每個全連接層也考慮了外部特征:QP 值和當前幀在 GOP 中的幀順序,以適應不同編碼質量和幀位置對 CU 分割的影響。與 ETH-CNN 類似,ETH-LSTM 中同樣引入提前終止機制,以減少 ETH-LSTM 中的計算冗餘。最終,將 ETH-LSTM 中三個級別的輸出聯合起來,即可得到 HCPM 預測結果。 


實驗


在測試本方法性能時,選用 18 個 HEVC 標準視頻以及本文圖像資料庫中的 200 幅測試圖像,保證測試資料的多樣性和代表性,在 QP 22,27,32,37 和全部四種標準配置(AI,LDP,LDB 和 RA)下,用標準 HEVC 編碼器和作者改進後的編碼器分別進行編碼,比較編碼時間的減少率和率失真性能。幀內和幀間樣式的測試結果如表 2 和表 3 所示。


 表2. 幀內樣式複雜度和率失真性能對比


 表3. 幀間樣式複雜度和率失真性能對比


兩表中的 BD-BR 和 BD-PSNR 是衡量率失真性能的關鍵指標,代表相同質量下的碼率變化和相同碼率下的質量變化。在編碼複雜度優化中,對塊分割的快速判決並不是絕對準確,因此所有演算法都會不同程度地帶來率失真損失,即 BD-BR>0,BD-PSNR<0。這兩項指標的絕對值越小,說明對率失真性能的不利影響越小,演算法越優。表中的 ΔT 為編碼時間節省率,絕對值越大說明演算法越優。可見,本文方法在率失真性能優於先前方法的前提下,能夠更有效地降低編碼複雜度。


 圖7. 編碼時間構成。藍柱和綠柱代表網絡運行時間和本方法中HM編碼時間占原編碼時間的百分比,柱左側的藍色數字代表網絡運行的絕對時間(單位毫秒)

總結


至此,已經說明瞭本文方法的有效性。兼顧良好的複雜度和率失真性能,是因為深度神經網絡能夠準確預測 CU 分割。另一個自然而然的問題是:既然網絡層數和引數都比較多,網絡本身的運行是否比較費時,影響總的編碼時間?


實際上,如圖 7 所示,無論在幀內或幀間樣式,網絡本身的運行時間都不超過原編碼時間的 1%,因此幾乎不會影響最終的編碼複雜度。這得益於獨特的、適用於 CU 分割的網絡結構,包括三個主要原因: 


1. 首先,CU 分割結果採用高效的 HCPM 表示,呼叫一次 CNN(或 CNN+LSTM),即可預測整個 CTU 中所有 CU 的分割結果,使網絡運行次數遠少於傳統方法中分別預測每個 CU; 


2. 其次,ETH-CNN 中的捲積層跨度等於核的寬度,即捲積核間無重疊,這與傳統的有重疊捲積相比,複雜度能降低到幾分之一到幾十分之一; 


3. 另外,ETH-CNN 和 ETH-LSTM 都提供了提前終止機制,能夠根據上一級 CU 分割結果跳過下一級的一部分運算。 


以上幾個原因,使得深度網絡本身運行時間遠小於 HM 編碼時間,保證了本文方法降低編碼複雜度的可行性和有效性。


點擊標題查看更多論文解讀: 

關於PaperWeekly


PaperWeekly 是一個推薦、解讀、討論、報道人工智慧前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號後臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。

▽ 點擊 | 閱讀原文 | 下載論文

赞(0)

分享創造快樂