呂 昊,郭江宇*,靳文兵,張 賓,王宇新
(1.北方自動控制技術(shù)研究所,太原 030006;2.駐太原地區(qū)第二軍代室,太原 030006)
隨著時代的進步和科學(xué)技術(shù)的發(fā)展,現(xiàn)代武器裝備的信息化程度越來越高。大數(shù)據(jù)時代的到來,使得數(shù)據(jù)的及時傳遞和分析起到更大的作用,同時也使數(shù)據(jù)發(fā)掘應(yīng)用,支撐“智能化作戰(zhàn)”成為可能,圖像信息的獲取、壓縮、傳輸和存儲對于數(shù)據(jù)的分析處理具有重要意義。目前主流的視頻編碼方案大多采用混合視頻編碼框架,即由多個編碼模塊組成,它們采取的技術(shù)以及在率失真優(yōu)化技術(shù)指導(dǎo)下的模式選擇過程都會影響最終的編碼性能。
針對視頻編碼的優(yōu)化算法進行國產(chǎn)化的設(shè)計與實現(xiàn)也具有重要意義,尤其是在國防科技工業(yè)領(lǐng)域,武器裝備的自主可控關(guān)系到我國的國防安全,發(fā)展自主可控裝備是我國國防工業(yè)的重要組成。針對重要技術(shù)實現(xiàn)自主可控,發(fā)展自主可控裝備,有利于消除可能存在的安全隱患,避免國外的軟件算法以及硬件平臺中可能存在的“后門”造成不利影響,對于實現(xiàn)裝備的自我保障,保證持續(xù)發(fā)展,具有重要的現(xiàn)實意義。
判斷視頻壓縮編碼效果的指標(biāo)有:壓縮失真、編碼碼率以及計算復(fù)雜度,而視頻編碼的根本任務(wù)是協(xié)調(diào)這3 個指標(biāo)之間的關(guān)系,并不斷優(yōu)化。率失真優(yōu)化是針對碼率和失真度之間的優(yōu)化。針對獨立率失真的優(yōu)化,人們紛紛展開研究。郭紅偉等人提出一種內(nèi)容自適應(yīng)的拉格朗日乘子計算方法,其對于具有快速運動內(nèi)容的視頻,編碼性能改善較大。ZHANG J等則提出一種改進的拉格朗日乘子運動估計算法,對于幀間劃分塊通過測試最小化失真和最小化碼率兩種極值,避免了較大的運動估計誤差;張世彥采用基于主成分分析的噪聲估計算法實現(xiàn)LCU 級的噪聲估計,實現(xiàn)自適應(yīng)優(yōu)化量化步長并消除噪聲影響,能適用于較寬泛的碼率范圍。
當(dāng)視頻在復(fù)雜網(wǎng)絡(luò)環(huán)境下進行傳輸時,它的工作容易受到在同一局域網(wǎng)環(huán)境下其他通信設(shè)備的干擾。而其他設(shè)備在使用過程中占用絕大部分的帶寬,會造成網(wǎng)絡(luò)擁塞,可能致使視頻編碼系統(tǒng)產(chǎn)生傳輸延遲以及丟包等情況。因此,在復(fù)雜網(wǎng)絡(luò)情況下,針對可使用帶寬較低的情況,可以提高視頻壓縮率來保持視頻傳輸?shù)姆€(wěn)定性。但是提高視頻壓縮比會導(dǎo)致失真度較高,為了解決在降低帶寬的前提下,提高視頻壓縮率造成的失真度,本文針對HEVC(high efficiency video coding)視頻編碼算法進行優(yōu)化,并實現(xiàn)優(yōu)化算法在全國產(chǎn)平臺上的適配。主要是通過對編碼單元(coding unit,CU)的分割算法進行優(yōu)化,在保證視頻目標(biāo)區(qū)域圖像質(zhì)量的前提下,提高壓縮速率,提高整體壓縮率。
為了實現(xiàn)重要技術(shù)的自主可控,本文主要采用全國產(chǎn)化的硬件平臺,國產(chǎn)操作系統(tǒng)以及國產(chǎn)的深度學(xué)習(xí)框架展開。主要選用以FT-2000/4 為CPU 的硬件平臺,主頻為2.2 GHz,支持單精度、雙精度浮點運算指令和ASIMD 處理指令。在操作系統(tǒng)上,本文選用銀河麒麟操作系統(tǒng),具有高安全、高可靠、高可用、跨平臺、中文化的特點,并已經(jīng)廣泛應(yīng)用于多個行業(yè)或領(lǐng)域。在深度學(xué)習(xí)的框架上,選用百度的PaddlePaddle 深度學(xué)習(xí)框架進行深度學(xué)習(xí)的訓(xùn)練以及推理工作。PaddlePaddle 是百度自主研發(fā)的性能優(yōu)先、靈活易用的深度學(xué)習(xí)平臺,是主流深度學(xué)習(xí)框架中唯一完全國產(chǎn)化的產(chǎn)品。
本文通過在基于FT-2000/4 為CPU 的硬件平臺上搭載銀河麒麟操作系統(tǒng),搭建適配paddlepaddle運行的軟件環(huán)境,完成HEVC 編碼算法運行的國產(chǎn)化平臺。
感興趣區(qū)域(region of interest,ROI)是指在圖像中人眼主觀感興趣的區(qū)域。在本文中,我們認(rèn)為ROI是在常見環(huán)境背景下的目標(biāo)對象。提取ROI 的目的是針對感興趣區(qū)域以及非感興趣區(qū)域采用不同的編碼策略。由于人眼對于視頻中的不同區(qū)域位置會賦予不同的關(guān)注程度,同時也對失真度擁有不同的敏感性,采取不同編碼策略可以提高視頻圖像整體的主觀視覺效果。傳統(tǒng)ROI 的提取,主要是根據(jù)圖像顏色紋理特征、運動檢測以及通過視覺注意模型等方法,目標(biāo)檢測的方法大多是利用時間域或者空間信息進行處理,采用背景差分法、光流法、幀差法等對運動目標(biāo)進行檢測。本文則采用基于深度學(xué)習(xí)的目標(biāo)識別方法提取ROI。
在具體ROI 的提取過程中,通過使用PaddlePa ddle深度學(xué)習(xí)框架,利用公開數(shù)據(jù)集VOC2012,在百度推出的AI studio 云平臺上使用平臺提供的算力,針對Mobilenet-SSD 算法進行訓(xùn)練。MobileNet-SSD將輕量級深度網(wǎng)絡(luò)模型MobileNet 和目標(biāo)檢測算法SSD 結(jié)合起來,很好地繼承了MobileNet 預(yù)測速度快,易于部署的特點。MobileNet 為了降低整體的計算量,主要使用了深度可分離卷積將標(biāo)準(zhǔn)卷積核進行分解計算,以及通過引入兩個超參數(shù)來減少參數(shù)量和計算量。
深度可分離卷積將標(biāo)準(zhǔn)卷積核分為深度卷積核和大小為1*1 的點卷積核,當(dāng)輸入為M 個通道,輸入feature map 大小為D*D,卷積核大小為D*D,輸出通道為N 時,標(biāo)準(zhǔn)卷積核和深度可分離卷積的計算量比率為:
除此外,當(dāng)引入超參數(shù)寬度乘數(shù)α 以及分辨率乘數(shù)ρ,輸入層通道個數(shù)M 變?yōu)棣?,輸出層通道個數(shù)N 變?yōu)棣?,總計算量為?/p>
可以降低原來模型的計算量。
通過訓(xùn)練,獲取相關(guān)訓(xùn)練模型,并將訓(xùn)練好的模型移植到上一節(jié)中所述的搭載paddlepaddle 深度學(xué)習(xí)框架的國產(chǎn)化運行平臺上。通過輸入測試視頻文件,來展開推理工作,對視頻中的目標(biāo)對象進行識別。
圖1 感興趣區(qū)域提取
在一幀視頻識別完成后,首先檢測該圖像中是否存在目標(biāo)區(qū)域,如果存在則輸出幀序號、目標(biāo)標(biāo)簽以及錨框等信息,如果不存在,則設(shè)定目標(biāo)標(biāo)簽為None,錨框坐標(biāo)為(-1,-1),由于在視頻編碼過程中,編碼單元最大為64*64,因此,將錨框起始坐標(biāo)及長寬尺寸預(yù)處理為64 的倍數(shù),可以方便后續(xù)視頻編碼處理,并將算法中檢測出的關(guān)于背景的background 標(biāo)簽的目標(biāo)信息去除,避免影響感興趣區(qū)域的提取工作。在完成最感興趣區(qū)域的預(yù)處理后,將感興趣區(qū)域信息存儲以便后續(xù)處理。
在ROI 的提取工作中,通過利用基于深度學(xué)習(xí)的目標(biāo)識別算法將每一幀數(shù)據(jù)中有用的目標(biāo)信息,如目標(biāo)標(biāo)簽、錨框坐標(biāo)及尺寸等信息輸出,并及時傳遞給編碼算法對相應(yīng)幀進行處理。實現(xiàn)視頻圖像ROI 的提取。
視頻壓縮編碼是一類特殊的數(shù)據(jù)壓縮方法。各種視頻應(yīng)用催生了多種視頻編碼方法。HEVC 是2013 年發(fā)布的較新一代視頻編碼標(biāo)準(zhǔn),包括變換、量化、熵編碼、幀內(nèi)預(yù)測、幀間預(yù)測以及環(huán)路濾波等模塊。并在之前編碼方法的基礎(chǔ)上,加入了基于四叉樹的塊分割結(jié)構(gòu)。本文主要針對基于四叉樹的塊分割結(jié)構(gòu)進行優(yōu)化處理。在之前的編碼算法中,CU 的大小是固定的,在HEVC 中,一幀圖像可以被劃分若干互不重疊的編碼樹單元(coding tree unit,CTU),之后依據(jù)四叉樹原則,CTU 可以被分割為多層不同大小的CU,CU 是否被繼續(xù)分割取決于算法中的分割標(biāo)志位。圖2 是CU 分割的示意圖,對于一個CU,最大為64*64,最小為8*8,即一個CTU 內(nèi)可以包含最少1 個,最多64 個編碼單元。根據(jù)圖像中不同區(qū)域的圖像內(nèi)容以及應(yīng)用需求等,可以合理分配編碼單元大小和最大分割深度,使得編碼效果獲得較好的優(yōu)化,例如在平臺區(qū)域,采用較大的編碼單元進行編碼可以減少所用的比特數(shù),提高編碼效率。在HEVC 編碼過程中,視頻圖像首先根據(jù)I、P、B 幀,分為多個圖像組(group of pictures,GOP),在GOP 中每幀圖像為1 個圖片順序計數(shù)(picture order count,POC),之后逐層分解到對編碼單元的四叉樹劃分上。主要針對這部分的實現(xiàn)進行一個修改和優(yōu)化。
圖2 編碼單元分割示意圖
HM(hevc test model)作為HEVC 的參考軟件,在HEVC 協(xié)議制定和修改的會議中,每次新的方案和技術(shù)提出后,都是利用HM 作為評價和驗證優(yōu)化效率的工具。并且隨著方案技術(shù)的優(yōu)化,HM 也會公開相應(yīng)的代碼實現(xiàn)。本文中,針對HEVC 算法的優(yōu)化,主要利用HM 的代碼進行實現(xiàn)。
在HM 中,對編碼單元大小和分割深度的判定主要通過TEncCu::xCompressCU 函數(shù)實現(xiàn)。xCompressCU 函數(shù)主要是通過遍歷每種編碼大小的編碼單元,對比獲取最優(yōu)解。在函數(shù)的具體實現(xiàn)過程中,通過依次獲取較大的編碼單元,遍歷該編碼單元的所有預(yù)測模式,并對比確認(rèn)最佳率失真代價,之后通過調(diào)用自身,對該編碼單元內(nèi)所包含的下一深度的編碼單元進行計算,并逐漸計算到最小的8*8 的編碼單元,最后對比該深度的4 個編碼單元率失真代價之和與上一深度率失真代價,依次進行對比,并最后確認(rèn)該位置編碼單元的大小和分割深度。由上述過程可以知道,對于一個CTU,完成全部四叉樹的遍歷,需要進行1+4+4*4+4*4*4,共85 次率失真代價的計算,并針對每個編碼單元進行預(yù)測單元和變換單元的計算。編碼器在運行過程中,計算復(fù)雜度很高。
在視頻編碼實際使用的過程中,實際上并不是視頻中所有區(qū)域的內(nèi)容都受到人們的關(guān)注。目前HEVC 算法中,編碼單元的劃分與視頻內(nèi)容的復(fù)雜度相關(guān),背景內(nèi)容較多,紋理復(fù)雜的區(qū)域,編碼單元相對較小,這樣可以更好地反映出復(fù)雜紋理區(qū)域的信息,而背景相對單一,紋理簡單的區(qū)域,采用較大的編碼單元就可以反映該區(qū)域的信息,而不會顯著增加比特率。在此針對這種情況,提出利用感興趣區(qū)域的方法對這一過程進行優(yōu)化。利用上一小節(jié)獲取的目標(biāo)信息,對視頻中不同區(qū)域分配不同的深度值,對于非目標(biāo)區(qū)域提前終止對編碼單元的劃分,進而降低編碼的復(fù)雜度。
本文對非感興趣區(qū)域采取默認(rèn)最大的編碼單元時,僅對感興趣區(qū)域進行率失真代價的計算時,可以很大程度降低編碼計算的復(fù)雜度,提高編碼速率,并且保證了感興趣區(qū)域的編碼質(zhì)量。
本文所述的HEVC 分割算法優(yōu)化在國產(chǎn)化平臺的具體實現(xiàn)如圖3 所示。在視頻輸入后,可以分為感興趣區(qū)域的提取和視頻編碼兩部分進行。在感興趣區(qū)域的提取部分,首先利用FFMPEG 軟件,將視頻格式轉(zhuǎn)為.mp4,之后利用opencv 對視頻中每幀進行處理,之后調(diào)用paddlepaddle 深度學(xué)習(xí)框架中MobileNet 的函數(shù),使用2.1 中所述在云端訓(xùn)練得到的模型,針對每幀圖像進行目標(biāo)識別的推理工作。只要針對圖像中是否存在目標(biāo)區(qū)域進行判斷,如果存在,則將視頻幀序號、目標(biāo)標(biāo)簽以及錨框相關(guān)信息按照一定格式進行輸出,如果不存在,則標(biāo)定目標(biāo)標(biāo)簽為“None”,目標(biāo)坐標(biāo)為(-1,-1)。在此之后,針對提取到的感興趣區(qū)域信息進行預(yù)處理,為了后期的視頻編碼方便進行,在這里將錨框相關(guān)坐標(biāo)及長寬信息轉(zhuǎn)化為以64 為單位長度的整數(shù),即一個CU 的長度作為單位長度,方便視頻編碼工作的進行。在處理完成后,將感興趣區(qū)域信息保存至datafile.txt 文件中,并判斷當(dāng)前處理幀是否為最后一幀,若不是則繼續(xù)處理,若是最后一幀,則結(jié)束對該視頻的感興趣區(qū)域提取工作。在視頻編碼部分,首先利用FFMPEG 軟件將視頻格式轉(zhuǎn)為.yuv,之后將視頻傳入HM 軟件后,對視頻進行逐幀處理。在對一幀圖像進行處理前,首先本文通過讀取保存在datafile.txt 中的感興趣區(qū)域信息,如果讀取不到對應(yīng)幀的感興趣區(qū)域信息,則延時后再次讀取,直到對應(yīng)幀的感興趣區(qū)域信息。之后本文對提取到的感興趣區(qū)域的信息進行處理,提取錨框坐標(biāo)及尺寸信息,之后將數(shù)據(jù)送入xCompressCU 函數(shù)。在該函數(shù)中,首先對輸入的CU 進行率失真代價的計算,之后判斷目前處理的CU 是否在坐標(biāo)范圍內(nèi),如果在則繼續(xù)進行下一步分割,直到分割到最小CU,如果不在則停止分割,直接進入下一個CU 進行試驗,直到所有CU 遍歷完成。之后對下一幀進行以上操作,直到視頻結(jié)束,完成視頻編碼。
圖3 視頻編碼算法優(yōu)化整體流程圖
在本文中,由于目標(biāo)識別是針對每一幀圖像進行目標(biāo)識別,不涉及幀與幀之間目標(biāo)物的坐標(biāo)關(guān)系,并且編碼過程全部采用I 幀,不涉及P、B幀,即不涉及幀與幀之間的預(yù)測,因此,不涉及時間相關(guān)性。
本文主要利用HEVC 參考源碼HM 中,目前最新版的HM16.20 進行實驗和測試,在實驗過程中統(tǒng)一采用encoder_intra_main.cfg 標(biāo)準(zhǔn)配置文件,即全部采用I 幀,不涉及幀間預(yù)測,針對不同分辨率的測試視頻文件進行處理。
在實驗中,本文通過對比同一視頻文件在采用HM16.20 原版軟件,以及在采用ROI 的方法后的視頻編碼軟件的運行效果,對最后編碼后數(shù)據(jù)文件的大小,以及運行時間等信息進行對比,并且利用Python,matlab 等對數(shù)據(jù)進行處理,通過在視頻文件中選取特定幀,在圖像中畫出編碼單元的分割情況,直觀確認(rèn)感興趣區(qū)域算法對視頻編碼算法的影響。由于HM 和深度學(xué)習(xí)算法所需要的視頻格式不同,因此,本文在進行運算處理之前,首先利用FFMPEG,將測試視頻分別轉(zhuǎn)為.yuv 以及.mp4 格式的文件。將.yuv 格式文件傳入HM 軟件,并利用Python 將.mp4 文件傳入感興趣區(qū)域提取的算法中,展開實驗。并及時記錄編碼過程中的測試結(jié)果,以及在編碼過程中傳輸回來的編碼單元深度信息的數(shù)據(jù)。
通過輸出編碼單元的分割深度信息等,本文可以有效得知每一個位置的編碼單元具體分割情況。通過將輸出的數(shù)據(jù)利用Python 進行預(yù)處理以及重新排列,將每一幀的深度信息分開,并將深度信息數(shù)據(jù)與圖像坐標(biāo)位置進行對應(yīng)。之后利用Python 調(diào)用OpenCV 隨機取出測試視頻中的某一幀圖像,以及對應(yīng)的編碼單元分割深度數(shù)據(jù),之后根據(jù)圖像及數(shù)據(jù),在matlab 內(nèi)繪制出編碼單元在實際圖像中的分割效果圖。
HEVC 視頻編碼的編碼單元分割算法優(yōu)化前后對比圖如圖4 所示,可以直觀地看出,針對分割算法進行優(yōu)化后,目前圖像主要只針對感興趣區(qū)域內(nèi)的編碼單元進行分割,而對于感興趣區(qū)域外,則采用64*64 的最大編碼單元。相比較算法未優(yōu)化之前,在保證感興趣區(qū)域內(nèi)的分割效果的基礎(chǔ)上,忽略非感興趣區(qū)域編碼單元的分割效果。通過整個系統(tǒng)良好的運行效率,證明在全國產(chǎn)化平臺上,實現(xiàn)整個系統(tǒng)是可行的。
圖4 分割算法運行對比圖
表1 多分辨率視頻實驗記錄參數(shù)對比
在2.2 中,本文提到,在HEVC 協(xié)議制定和修改的會議中,每次新的方案和技術(shù)提出后,都是利用HM 作為評價和驗證優(yōu)化效率的工具。因此,利用HM 作為編碼算法優(yōu)化的對比,具有客觀價值。在實驗中主要記錄的參數(shù)有:測試視頻分辨率、幀率、感興趣區(qū)域占原圖像比例、原軟件處理時間、優(yōu)化后軟件處理時間、原軟件壓縮率、優(yōu)化后軟件壓縮率。通過比對優(yōu)化前后的處理時間以及壓縮率,可以發(fā)現(xiàn),通過對算法進行優(yōu)化,可以有效降低軟件處理時間,并提高軟件壓縮率。
傳統(tǒng)獲取ROI 的方法針對視頻特征較少的視頻流或許可以獲得比本文更好的效果,但傳統(tǒng)方法無法針對我們所需要的特定對象為目標(biāo)進行視頻編碼,僅保證特定對象的圖像質(zhì)量,因此,在本文不進行對比。
為了優(yōu)化視頻信號在復(fù)雜網(wǎng)絡(luò)環(huán)境下由于網(wǎng)絡(luò)擁塞出現(xiàn)的數(shù)據(jù)丟包等情況,本文針對HEVC 編碼中的編碼單元分割算法進行優(yōu)化,在保證目標(biāo)區(qū)域編碼效果的情況下,降低非感興趣區(qū)域編碼效果。本文算法通過在全國產(chǎn)化硬件及軟件平臺上,通過利用基于國產(chǎn)深度學(xué)習(xí)框架paddlepaddle 的MobileNet 模型算法進行目標(biāo)識別,獲取感興趣區(qū)域,并在視頻編碼算法中通過限制非感興趣區(qū)域編碼單元的分割,來降低算法運行的復(fù)雜度,優(yōu)化算法執(zhí)行效率。實現(xiàn)結(jié)果表明,優(yōu)化后的算法可以有效提高視頻整體壓縮率,縮短軟件處理時間,并且從主觀視覺上也可以判斷出,經(jīng)過優(yōu)化的算法可以準(zhǔn)確地針對感興趣區(qū)域保證較好的編碼精度。