毛錦鑫 何坤金 陳金旺 劉宇興
摘 要:針對(duì)在動(dòng)態(tài)的網(wǎng)絡(luò)環(huán)境中,實(shí)時(shí)視頻在基于數(shù)據(jù)報(bào)協(xié)議的傳輸中遇到大量丟包的問(wèn)題,提出了一種基于遺傳算法改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)自適應(yīng)前向糾錯(cuò)碼的方法。該方法通過(guò)設(shè)計(jì)自適應(yīng)的前向糾錯(cuò)編碼來(lái)恢復(fù)丟失的數(shù)據(jù)包。首先,設(shè)計(jì)一個(gè)基于幀級(jí)別的前向糾錯(cuò)的框架,主要包括視頻編碼解碼器、RS前向糾錯(cuò)碼編解碼模塊和前向糾錯(cuò)碼冗余度計(jì)算模塊,用來(lái)模擬一般視頻傳輸?shù)沫h(huán)境;然后,設(shè)計(jì)GABP模型,將其應(yīng)用到RSFEC的冗余度計(jì)算,實(shí)現(xiàn)一種幀級(jí)不均等的保護(hù)方案;最后,基于GE信道模擬網(wǎng)絡(luò),生成丟包數(shù)據(jù),訓(xùn)練離線模型,進(jìn)行實(shí)驗(yàn)驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,相比StaticRS和DeepRS,所提方法能夠在較低冗余度下較高地恢復(fù)丟失的數(shù)據(jù)包,得到更高質(zhì)量的視頻。
關(guān)鍵詞:前向糾錯(cuò)碼;不均等錯(cuò)誤保護(hù);ReedSolomon;BP網(wǎng)絡(luò);遺傳算法
中圖分類號(hào):TP393.03?? 文獻(xiàn)標(biāo)志碼:A??? 文章編號(hào):1001-3695(2023)12-037-3760-06
doi: 10.19734/j.issn.1001-3695.2023.04.0168
Research on adaptive forward error correction codes for real time video communication based on GABP
Abstract:In the dynamic network environment, realtime video transmission based on datagram protocols will encounter a large number of packet loss issues. This paper proposed an adaptive forward error correction code method based on GABP neural network. This method recovered lost data packets by designing adaptive forward error correction codes. Firstly, the paper designed a frame level forward error correction framework, which mainly included video codec, RS forward error correction codec module, and forward error correction code redundancy calculation module, to simulate the general video transmission environment. Then, this paper designed the GABP model and applied it to the redundancy calculation of RSFEC to achieve a frame level unequal protection scheme. Finally, based on GE channel simulation network, it generated packet loss data, trained offline model, and conducted experimental verification. The experiments results show that compared to StaticRS and DeepRS, this method can recover lost data packets more efficiently with lower redundancy, resulting in higher quality video.
Key words:forward error correction; unequal error protection; ReedSolomon; BP network; genetic algorithm
0 引言
隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,互聯(lián)網(wǎng)視頻流量占據(jù)了互聯(lián)網(wǎng)流量的主體地位。據(jù)思科估計(jì),在2022年視頻流量占據(jù)互聯(lián)網(wǎng)流量的82%,并且占比會(huì)越來(lái)越高[1]。然而,視頻傳輸過(guò)程中的數(shù)據(jù)包丟失可能會(huì)對(duì)視頻質(zhì)量造成潛在威脅。在當(dāng)前的網(wǎng)絡(luò)環(huán)境中,由于延遲、抖動(dòng)和網(wǎng)絡(luò)擁塞等問(wèn)題,通常會(huì)導(dǎo)致丟包情況的發(fā)生[2]。為了解決上述問(wèn)題,視頻點(diǎn)播服務(wù)采用傳輸控制協(xié)議(TCP)來(lái)重傳丟失的數(shù)據(jù)包[3]。但是對(duì)于實(shí)時(shí)性要求較高的實(shí)時(shí)視頻通信業(yè)務(wù),傳統(tǒng)的丟包重傳策略并不是一種較好的丟包處理技術(shù)。對(duì)于實(shí)時(shí)視頻通信業(yè)務(wù),用戶需要實(shí)時(shí)地傳輸和接收視頻數(shù)據(jù),而重傳策略會(huì)導(dǎo)致視頻數(shù)據(jù)傳輸?shù)闹袛?,從而引入延時(shí)和抖動(dòng),使得傳輸?shù)膶?shí)時(shí)性和穩(wěn)定性受到嚴(yán)重影響。
前向糾錯(cuò)技術(shù)是一種有效的丟包處理方法,它的核心思想是提供冗余數(shù)據(jù)段,以降低重傳的可能性。當(dāng)視頻數(shù)據(jù)在傳輸過(guò)程中發(fā)生丟包時(shí),接收端可以基于接收到的冗余數(shù)據(jù)段來(lái)恢復(fù)丟失的信息,從而避免重新傳輸,減少通信延遲。前向糾錯(cuò)碼的研究主要分為兩個(gè)方向[4]:a)關(guān)于編碼結(jié)構(gòu)的研究,旨在提高糾錯(cuò)碼的自身恢復(fù)能力和編碼效率;b)需要綜合考慮丟包處理的效率和視頻傳輸?shù)膸掗_銷。盡管前向糾錯(cuò)技術(shù)可以減少丟包重傳對(duì)視頻通信的影響,但也會(huì)增加傳輸?shù)拈_銷和帶寬占用。因此,需要一種動(dòng)態(tài)調(diào)整前向糾錯(cuò)碼冗余度的計(jì)算方法,以平衡兩者之間的關(guān)系。
自從Padhye等人[5]首次提出自適應(yīng)FEC(forward error correction)來(lái)應(yīng)對(duì)動(dòng)態(tài)損失模式的挑戰(zhàn)來(lái),已經(jīng)有許多針對(duì)不同應(yīng)用場(chǎng)景的前向糾錯(cuò)機(jī)制方案,旨在提高網(wǎng)絡(luò)傳輸?shù)男阅芎涂煽啃?。Baccaglini等人[6]使用GoPlevel reedsolomon(RS)碼,在發(fā)送端使用整個(gè)GoP(group of picture)的所有幀來(lái)生成一個(gè)RS塊,較好地提高了RS的編解碼效率。為了增強(qiáng)糾錯(cuò)能力并減少解碼延遲,Xiao等人[7]首先使用當(dāng)前幀的視頻分組和當(dāng)前GoP的先前幀生成RS奇偶校驗(yàn)分組,然后通過(guò)聯(lián)合求解奇偶校驗(yàn)方程的組合來(lái)恢復(fù)丟失的分組。雖然該方法需要額外的計(jì)算開銷,但是它增強(qiáng)了糾錯(cuò)能力并減少了解碼延遲。此外,Xiao等人[8]還提出了一種subGoP級(jí)FEC編碼,其中根據(jù)網(wǎng)絡(luò)條件和編碼參數(shù)動(dòng)態(tài)調(diào)整subGoP的長(zhǎng)度,從而進(jìn)一步提高了糾錯(cuò)能力。但是,這些工作需要接收端等待整個(gè)GoP或subGoP到達(dá)才能恢復(fù)幀,會(huì)導(dǎo)致不可接受的延遲問(wèn)題,無(wú)法進(jìn)行延時(shí)忍耐度較低的實(shí)時(shí)視頻通信。也有一些采用幀級(jí)策略的FEC方案。這類方案大都根據(jù)幀的重要程度采取不同保護(hù)措施,進(jìn)一步加強(qiáng)了視頻的恢復(fù)效果。Immich等人[9]使用RNN根據(jù)視頻幀的大小、類型和運(yùn)動(dòng)因子來(lái)推測(cè)運(yùn)動(dòng)強(qiáng)度,結(jié)合先驗(yàn)知識(shí),給不同幀合適的冗余度。Wu等人[10]通過(guò)在總FEC比特率約束下最大化接收幀的預(yù)期數(shù)量來(lái)探索幀級(jí)FEC。Luo等人[11]利用Raptor碼在大塊長(zhǎng)度下的良好特性,提出了一種用于單層視頻的優(yōu)化不均等幀保護(hù)方案。
以上工作都是通過(guò)基于返回的網(wǎng)絡(luò)統(tǒng)計(jì)數(shù)據(jù)(如丟包率和延遲)或是優(yōu)化預(yù)定義的QoE(quality of experience)目標(biāo)函數(shù)來(lái)分配冗余數(shù)據(jù)包。除了利用接收端的反饋信息外,Lin等人[12]提出EREDFEC,一種增強(qiáng)型隨機(jī)早期檢測(cè)前向糾錯(cuò),根據(jù)AP(access point)的隊(duì)列長(zhǎng)度去推斷冗余度信息。雖然,這種自適應(yīng)前向糾錯(cuò)方法是使用視頻AP狀態(tài)來(lái)估計(jì),能避免信息反饋過(guò)程中的網(wǎng)絡(luò)變化和返回所帶來(lái)的時(shí)延。但是隨著網(wǎng)絡(luò)的不斷發(fā)展,AP的影響因數(shù)太多,已經(jīng)不能滿足現(xiàn)在的需求。
最近,文獻(xiàn)[13]在TCP網(wǎng)絡(luò)中,采用兩段式基于前向糾錯(cuò)的自適應(yīng)傳輸機(jī)制,能夠有效提升文件傳輸?shù)男?。文獻(xiàn)[14]聯(lián)合考慮視頻有損壓縮失真和信道丟包,選取固定合適的量化參數(shù)(QP)和視頻幀F(xiàn)EC冗余度,優(yōu)化壓縮和FEC編碼的冗余分配,以此改進(jìn)視頻重構(gòu)效果。以上分別是針對(duì)TCP文件傳輸和QP值動(dòng)態(tài)變化應(yīng)用場(chǎng)景下的優(yōu)化方法。
綜上所述,現(xiàn)有相關(guān)工作通常采用靜態(tài)的機(jī)制,或是基于先驗(yàn)知識(shí)啟發(fā)式的冗余策略,或是為特定的場(chǎng)景進(jìn)行優(yōu)化。這些方法都無(wú)法很好地適應(yīng)動(dòng)態(tài)網(wǎng)絡(luò)環(huán)境下實(shí)時(shí)視頻傳輸?shù)男枨?。為了充分利用網(wǎng)絡(luò)的歷史和未來(lái)之間的上下文關(guān)系,本文提出了一種基于遺傳算法改進(jìn)的BP網(wǎng)絡(luò)的幀級(jí)不均等自適應(yīng)前向糾錯(cuò)碼的方法。該方法可以根據(jù)歷史的網(wǎng)絡(luò)情況預(yù)測(cè)未來(lái)的網(wǎng)絡(luò)丟包模式,自動(dòng)為每個(gè)視頻幀選擇適當(dāng)冗余率(恢復(fù)丟失的數(shù)據(jù)包所需的冗余數(shù)據(jù)包的百分比),從而在帶寬消耗較低的情況下改善視頻的質(zhì)量。
1 模型構(gòu)建
針對(duì)自適應(yīng)幀級(jí)不均等前向糾錯(cuò),本文構(gòu)建了一個(gè)系統(tǒng)框架如圖1,主要由發(fā)送端、接收端和網(wǎng)絡(luò)構(gòu)成,實(shí)現(xiàn)了實(shí)時(shí)視頻傳輸和實(shí)時(shí)視頻中前向糾錯(cuò)編碼冗余度的自適應(yīng)調(diào)整。具體而言,該系統(tǒng)框架的主要流程如下:
a)視頻采集。視頻采集器采集用戶需要傳輸?shù)漠嬅?,或者加載已經(jīng)準(zhǔn)備好的視頻文件。
b)視頻編碼。視頻編碼器根據(jù)設(shè)置好的參數(shù)和編碼方式將采集到的視頻編碼,組成不同大小的幀。
c)冗余包添加。根據(jù)自適應(yīng)冗余度模塊確定的冗余度,將現(xiàn)有的幀分組打包成RTP(realtime transport protocol)包,使用RS編碼器數(shù)據(jù)包添加冗余數(shù)據(jù)包。
d)數(shù)據(jù)接受和反饋。將冗余包和源數(shù)據(jù)包通過(guò)網(wǎng)絡(luò)發(fā)送給接收方,接收方使用RS解碼器恢復(fù)出相關(guān)的數(shù)據(jù)包,然后使用視頻解碼器將數(shù)據(jù)包恢復(fù)到視頻畫面,并將RTP包的丟包率信息反饋到接收端的冗余度預(yù)測(cè)模塊。
e)冗余度計(jì)算。在視頻發(fā)送端,使用訓(xùn)練好的離線模型,根據(jù)收集到的丟包數(shù)據(jù)預(yù)測(cè)接下來(lái)的丟包數(shù)據(jù)(假設(shè)反饋信息都能到達(dá)),并計(jì)算后續(xù)數(shù)據(jù)包需要添加的冗余度。
1.1 視頻編解碼
目前主流視頻編解碼格式如AVC[15]、VP8、HEVC等,使用GoP幀結(jié)構(gòu)進(jìn)行編碼和解碼如圖2所示,該結(jié)構(gòu)由I幀、P幀和B幀三種幀類型組成。I幀是獨(dú)立編碼的參考幀,每個(gè)GoP只包含一個(gè)I幀,并且總是以I幀開頭。P幀使用來(lái)自先前幀的信息,并且僅包含相對(duì)于先前編碼幀的運(yùn)動(dòng)變化。B幀使用前一幀和后一幀作為編碼的參考。視頻中使用的P幀和B幀的比率越高,編碼的視頻大小越小,流式傳輸時(shí)所需的帶寬越少。根據(jù)視頻大小的不同,其中一幀所包含的數(shù)據(jù)包數(shù)量通常在幾個(gè)到幾十、幾百個(gè)之間??紤]到分組丟失,I幀或P幀中的分組丟失的影響將在GoP內(nèi)傳播,并導(dǎo)致剩余幀的潛在失真。當(dāng)B幀中存在分組丟失時(shí),這種影響不會(huì)傳播,因?yàn)锽幀不提供對(duì)任何其他幀的參考。下一個(gè)GoP的新I幀將刪除當(dāng)前GoP中的所有累積誤差。然而,B幀的編碼和解碼都需要將來(lái)的幀作為參考,會(huì)導(dǎo)致額外的延遲。
本文使用H.264對(duì)所有視頻進(jìn)行編碼,將每秒幀數(shù)(FPS)和GoP大小固定設(shè)置為30,用于模擬一般的實(shí)時(shí)視頻通信場(chǎng)景,同時(shí)禁用B幀以減小總延遲。
1.2 RS編解碼
為了保證視頻數(shù)據(jù)傳輸?shù)母咝院蛯?shí)時(shí)性的同時(shí),提高數(shù)據(jù)恢復(fù)的能力,以提高視頻傳輸?shù)馁|(zhì)量和穩(wěn)定性。本文采用了一種名為RS(reedsolomon)碼的分組前向糾錯(cuò)碼技術(shù)對(duì)視頻數(shù)據(jù)進(jìn)行冗余添加。RS碼是一種最大距離可分碼[16],對(duì)任意的有效數(shù)據(jù)段數(shù)量生成任意數(shù)量的冗余段,丟失少于冗余段數(shù)量的任意報(bào)文段均可恢復(fù)。在RS碼中,原始數(shù)據(jù)包由FEC編碼器生成的冗余數(shù)據(jù)包補(bǔ)充,編碼器在開始生成冗余數(shù)據(jù)包之前需要查看所有原始數(shù)據(jù)。對(duì)于RS(N,K)來(lái)說(shuō)在解碼器端,如果N個(gè)包中至少有K個(gè)到達(dá),則所有原始數(shù)據(jù)將被恢復(fù)。較大的N可以提高RS碼的糾錯(cuò)能力,但會(huì)增加解碼延遲。為了減小其編解碼延時(shí),本文使用了一種基于柯西矩陣的RS編碼[17],其可以在O(n2)的運(yùn)算復(fù)雜度內(nèi)完成FEC解碼,來(lái)實(shí)現(xiàn)系統(tǒng)中的前向冗余編解碼。
2 冗余度計(jì)算
2.1 網(wǎng)絡(luò)丟包預(yù)測(cè)
將歷史丟包模式和未來(lái)丟包模式之間建立上下文關(guān)聯(lián)是一種很自然的想法。歷史數(shù)據(jù)包丟失模式隱含地指示了網(wǎng)絡(luò)的狀態(tài),在未來(lái)的數(shù)據(jù)包丟失中起著主導(dǎo)作用[18]。此外,網(wǎng)絡(luò)條件在短時(shí)間內(nèi)不會(huì)發(fā)生劇烈變化[19],并且在相同的網(wǎng)絡(luò)條件下,數(shù)據(jù)包共享類似的狀態(tài)[20],這表明網(wǎng)絡(luò)波動(dòng)可能在某種程度上具有規(guī)律性。而且,通過(guò)跟蹤與數(shù)據(jù)包報(bào)頭相關(guān)的序列號(hào),可以在接收端識(shí)別出大量已接收和丟失的數(shù)據(jù)塊。所以,可以使用BP神經(jīng)網(wǎng)絡(luò),根據(jù)歷史的丟包狀態(tài),來(lái)預(yù)測(cè)未來(lái)的丟包狀態(tài)。針對(duì)BP網(wǎng)絡(luò)不容易收斂的問(wèn)題,采用遺傳算法的全局搜索能力來(lái)優(yōu)化。
2.1.1 BP神經(jīng)網(wǎng)絡(luò)
BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋神經(jīng)網(wǎng)絡(luò)[21]。其主要特征是:信號(hào)向前傳播,誤差向后傳播。BP神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)過(guò)程是:輸入層接收到數(shù)據(jù)輸入后,將其傳遞到隱藏層,隱藏層將根據(jù)神經(jīng)元互連的權(quán)重和相應(yīng)的計(jì)算規(guī)則將計(jì)算結(jié)果傳遞到輸出層,輸出層將結(jié)果進(jìn)行比較,更新神經(jīng)元之間的權(quán)重。BP神經(jīng)網(wǎng)絡(luò)具有非線性逼近和自適應(yīng)學(xué)習(xí)能力,在處理非線性數(shù)據(jù)集上有很好的預(yù)測(cè)效果[22]。
本文中BP網(wǎng)絡(luò)的結(jié)構(gòu)如圖3所示,該網(wǎng)絡(luò)的輸入層主要是當(dāng)前組的前N組的網(wǎng)絡(luò)丟包狀態(tài)信息,關(guān)于N的大小在實(shí)驗(yàn)部分會(huì)詳細(xì)介紹。輸出層是預(yù)測(cè)幀的丟包狀態(tài)信息,以此為基礎(chǔ)計(jì)算該組需要的冗余度。ui是隱藏層,通過(guò)非線性映射和特征提取,將輸入層的信息轉(zhuǎn)換為更高層次的表征,為輸出層提供更準(zhǔn)確的預(yù)測(cè)能力。
考慮到視頻數(shù)據(jù)幀的大小受到視頻分辨率、碼率、量化值等參數(shù)的影響,以及視頻幀的封裝分包和MTU(maximum transmission unit)大小密切相關(guān)。而且固定長(zhǎng)度的RS塊方便FEC的編解碼解碼計(jì)算。本文為了忽略這些因素對(duì)預(yù)測(cè)產(chǎn)生影響,將MTU大小固定為1 024,對(duì)視頻數(shù)據(jù)包進(jìn)行分組。同時(shí),將一個(gè)RS組的數(shù)據(jù)包的數(shù)量設(shè)置為20個(gè)。另外,考慮到網(wǎng)絡(luò)的延遲以及網(wǎng)絡(luò)數(shù)據(jù)包的發(fā)送和接收時(shí)間,本文在預(yù)測(cè)幀和輸入的幀之間間隔一個(gè)幀的時(shí)間留作緩沖。
假設(shè)當(dāng)前時(shí)刻是第k組,則BP網(wǎng)絡(luò)的輸入為[Xk-n-m,…,Xk-7,Xk-6,Xk-5,Xk-4,Xk-3,Xk-m] ,其中Xk-n表示第k組的第前N組的網(wǎng)絡(luò)丟失信息。BP網(wǎng)絡(luò)的輸出為Yk表示當(dāng)前第k組的網(wǎng)絡(luò)丟包率信息。
但是,BP網(wǎng)絡(luò)的權(quán)重沿著局部改進(jìn)的方向逐漸調(diào)整,會(huì)使網(wǎng)絡(luò)權(quán)重陷入局部極值,從而導(dǎo)致網(wǎng)絡(luò)訓(xùn)練失敗。此外,BP神經(jīng)網(wǎng)絡(luò)對(duì)初始網(wǎng)絡(luò)權(quán)重非常敏感,用不同的權(quán)重初始化網(wǎng)絡(luò)往往會(huì)收斂到不同的局部最小值。而且,BP神經(jīng)網(wǎng)絡(luò)算法存在收斂速度慢的問(wèn)題。
2.1.2 基于遺傳算法的BP網(wǎng)絡(luò)改進(jìn)
遺傳算法是模擬進(jìn)化過(guò)程,基于自然選擇和遺傳學(xué)原理的一種搜索方法,通過(guò)不斷迭代逐漸找到解決問(wèn)題的最優(yōu)解。遺傳算法具有許多優(yōu)點(diǎn),解決BP網(wǎng)絡(luò)的不足。具體如下:
a)BP 神經(jīng)網(wǎng)絡(luò)中參數(shù)的優(yōu)化只能進(jìn)行局部搜索,但是遺傳算法能在解空間中進(jìn)行全局搜索,遺傳算法在優(yōu)化精度和泛化能力上具有優(yōu)勢(shì)。
b)由于神經(jīng)網(wǎng)絡(luò)層級(jí)結(jié)構(gòu)的特點(diǎn),BP神經(jīng)網(wǎng)絡(luò)中參數(shù)數(shù)量很大,網(wǎng)絡(luò)的計(jì)算量和復(fù)雜度很大,訓(xùn)練時(shí)間和空間成本很高。遺傳算法具有較好的并行性和魯棒性,可以處理高維度、非線性的優(yōu)化問(wèn)題,遺傳算法在處理參數(shù)多的問(wèn)題上也具有一定的優(yōu)勢(shì)。
c)遺傳算法是一種非梯度優(yōu)化算法,其對(duì)模型的結(jié)構(gòu)以及輸入數(shù)據(jù)的分布等沒(méi)有太多要求,具有較強(qiáng)的可擴(kuò)展性和通用性。
基于以上理論,為了提高訓(xùn)練的速度和模型的性能,本文使用遺傳算法[23]的全局搜索能力確定BP神經(jīng)網(wǎng)絡(luò)最優(yōu)初始權(quán)值及閾值。遺傳算法優(yōu)化的步驟如下:
a)初始化種群。本文使用實(shí)數(shù)編碼來(lái)表示個(gè)體,生成一定數(shù)量的個(gè)體。如圖4所示,一個(gè)個(gè)體由輸入層與隱藏層連接的權(quán)值、隱藏層閾值、隱藏層與輸出層連接的權(quán)值和輸出層閾值四部分組成。
b)適應(yīng)度評(píng)價(jià)。BP網(wǎng)絡(luò)需要盡可能讓預(yù)測(cè)值和實(shí)際值的誤差最小,本文所選的適應(yīng)度函數(shù)如下:
c)交叉、變異、選擇操作。首先使用兩點(diǎn)交叉的方法對(duì)個(gè)體進(jìn)行交叉變換;其次使用均勻變異對(duì)交叉后的個(gè)體進(jìn)行變異;最后采用輪盤賭策略來(lái)選擇交叉和變異之后的染色體,適應(yīng)度越高的個(gè)體越容易被選中。采用如下的遺傳算子來(lái)進(jìn)行交叉和變異。
其中:pc和pv分別是交叉率和變異率;pc1和pc2分別為交叉率的上限和下限;pv1和pv2分別為變異率的上限和下限; favg為染色體的平均適應(yīng)度; f′為交叉染色體中適應(yīng)度較大的值; fbest為最佳適應(yīng)度。
d)生成新種群。重復(fù)步驟c)中操作,生成一定數(shù)量的新個(gè)體,構(gòu)成新種群。直到滿足停止迭代的條件。
在確定BP神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)、初始化權(quán)重和閾值之后,使用遺傳算法來(lái)優(yōu)化BP網(wǎng)絡(luò)的權(quán)重和閾值選擇,在正向傳播里選出比較好的初始權(quán)重和閾值,再用BP反向傳播來(lái)優(yōu)化網(wǎng)絡(luò)參數(shù)。本文結(jié)合遺傳算法的全局搜索能力和BP網(wǎng)絡(luò)的非線性預(yù)測(cè)能力,提出了一種遺傳算法改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。
2.2 幀的不均等冗余計(jì)算
首先,根據(jù)上述網(wǎng)絡(luò)模型預(yù)測(cè)當(dāng)前網(wǎng)絡(luò)丟包狀態(tài)信息,具體推導(dǎo)如下:
Yk=Euclid Math OneFApθ(Xk-n-m,…,Xk-7,Xk-6,Xk-5,Xk-4,Xk-3,Xk-m)(4)
其中:Xk-n-m表示第k組的前n組的網(wǎng)絡(luò)丟失信息;m對(duì)應(yīng)2.1.1節(jié)中提出的網(wǎng)絡(luò)反饋間隔;Yk表示當(dāng)前第k組的網(wǎng)絡(luò)丟包率信息;Euclid Math OneFApθ表示訓(xùn)練好的BP網(wǎng)絡(luò)模型。
其次,RS(n,m)碼最多可以糾正m個(gè)錯(cuò)誤,考慮冗余包也存在丟失的情況,第k組的數(shù)據(jù)包冗余度具體計(jì)算公式如下:
其中:Yk為當(dāng)前網(wǎng)絡(luò)預(yù)測(cè)的丟包率;Np為該組數(shù)據(jù)包的數(shù)量;RePacketRatek為第k組數(shù)據(jù)包RS碼冗余度信息。
但是,網(wǎng)絡(luò)丟包模式的預(yù)測(cè)結(jié)果與真實(shí)值往往存在誤差。并且在一個(gè)GoP中,I幀或P幀中的分組丟失的影響將在GoP內(nèi)傳播,并導(dǎo)致剩余幀的潛在失真,I幀的重要性大于P幀,前面的P幀重要性大于后面的P幀。本文采用一個(gè)影響因子β度量不同幀的重要程度,來(lái)增強(qiáng)對(duì)I幀和前面的P幀的保護(hù)。本文中影響因子β的計(jì)算方法如下:
其中:i表示第K組是一個(gè)GoP中的第i幀數(shù)據(jù),當(dāng)K組數(shù)據(jù)存在于兩幀數(shù)據(jù)之間,采用前一幀數(shù)據(jù)的β。
最后,第K組數(shù)據(jù)包的冗余率RePacketRatek′計(jì)算公式更新如下,以此為當(dāng)前數(shù)據(jù)包冗余度添加RS前向糾錯(cuò)碼,實(shí)現(xiàn)丟包恢復(fù)。
3 實(shí)驗(yàn)驗(yàn)證與分析
為了驗(yàn)證該自適應(yīng)前向糾錯(cuò)編碼方案的有效性,本文設(shè)置對(duì)應(yīng)的實(shí)驗(yàn)驗(yàn)證。實(shí)驗(yàn)使用兩臺(tái)主機(jī)分別來(lái)模擬接收端和發(fā)送端,主機(jī)的操作系統(tǒng)是Windows。兩臺(tái)主機(jī)進(jìn)行網(wǎng)絡(luò)通信,網(wǎng)絡(luò)狀況模擬使用 GE (Gilbert Elliot)[24]信道模型來(lái)實(shí)現(xiàn)。
3.1 數(shù)據(jù)生成
GE信道被公認(rèn)為網(wǎng)絡(luò)分組傳送的通用模擬環(huán)境。如圖6所示,GE信道是一個(gè)兩狀態(tài)馬爾可夫模型,從好到壞的轉(zhuǎn)換概率為P01,從壞到好P10,良好狀態(tài)下的丟包率為p,且在壞狀態(tài)下為q,P01、P10、 p、q∈[0,1] 。
在GE(P00,P11,p,q)下信道的丟包率為
本文選用的是視頻格式為1 280×720的原始視頻文件in_to_tree[25],并使用ffmpeg以30 fps的幀率將該視頻文件從YUV格式轉(zhuǎn)換為H.264格式。通過(guò)在GE信道中傳輸RTP視頻數(shù)據(jù)包,來(lái)采集丟包數(shù)據(jù)。
GE信道模型的丟包率主要由四個(gè)變量控制,一般的做法是固定其中三個(gè)參數(shù)不變,只改變一個(gè)參數(shù)。本文設(shè)置的參數(shù),如表1所示,控制在壞狀態(tài)下的概率,使丟包率控制在1%、5%、10%、20%、30%、40%等,得到18 728條丟包數(shù)據(jù)。采用滑動(dòng)窗口的方式,將丟包數(shù)據(jù)整理得到數(shù)據(jù)集。其中,60%的數(shù)據(jù)用來(lái)做測(cè)試集、20%的數(shù)據(jù)用來(lái)做驗(yàn)證集、20%的數(shù)據(jù)用來(lái)做測(cè)試集。
3.2 實(shí)驗(yàn)驗(yàn)證
本文中采用MATLAB對(duì)BP網(wǎng)絡(luò)進(jìn)行訓(xùn)練,迭代次數(shù)設(shè)置為2 000次,學(xué)習(xí)率設(shè)置為0.01。關(guān)于BP網(wǎng)絡(luò)隱藏層神經(jīng)元個(gè)數(shù)的設(shè)置,本文采用一般的經(jīng)驗(yàn)公式。遺傳算法初始種群個(gè)數(shù) N=20、最大進(jìn)化代數(shù)取150。
3.2.1 輸入層維度確定
合理地利用歷史信息,即確定輸入層的維度對(duì)預(yù)測(cè)未來(lái)的丟包模式信息至關(guān)重要。本文使用不同長(zhǎng)度的輸入層維度做了對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖7所示??梢杂^察到,較小的輸入維度可能存在歷史信息不足的問(wèn)題,無(wú)法較好地預(yù)測(cè)輸出數(shù)據(jù);但是隨著N的不斷增大,網(wǎng)絡(luò)的性能可能會(huì)下降,預(yù)測(cè)結(jié)果可能也會(huì)變差。在輸入層的長(zhǎng)度N=7時(shí),隱藏層節(jié)點(diǎn)數(shù)為5的時(shí)候,模型預(yù)測(cè)的均方誤差最小,認(rèn)為預(yù)測(cè)準(zhǔn)確率最高。后面本文采用輸入層的維度N=7訓(xùn)練的模型來(lái)和其他方法進(jìn)行對(duì)比。
3.2.2 遺傳算法改進(jìn)有效性分析
在確定輸入的維度之后,本文在此維度上對(duì)BP和GABP模型的有效性進(jìn)行了驗(yàn)證。實(shí)驗(yàn)結(jié)果如表2所示,相比于BP模型的預(yù)測(cè)結(jié)果,本文所使用的GABP模型有更好的預(yù)測(cè)能力、更小的預(yù)測(cè)誤差。
3.2.3 不同方法的對(duì)比
本文選擇固定冗余度的RS方法作為對(duì)比算法,因?yàn)樗鼈儚V泛用于視頻傳輸系統(tǒng)。使用Static*RS來(lái)表示這些算法,其中*表示其冗余度。除此之外,為了驗(yàn)證本文方法的優(yōu)越性,把文獻(xiàn)[18]的DeepRS方法應(yīng)用到本文場(chǎng)景中一起對(duì)比。
本文采用下面的指標(biāo)來(lái)對(duì)所提方法進(jìn)行比較:
a)數(shù)據(jù)恢復(fù)率?;謴?fù)的數(shù)據(jù)包與所有丟失數(shù)據(jù)包的比率。當(dāng)恢復(fù)所有丟失的數(shù)據(jù)包時(shí),恢復(fù)率為1;如果無(wú)法恢復(fù)所有丟失的數(shù)據(jù)包,則恢復(fù)率為0。
b)冗余度。冗余數(shù)據(jù)包與源數(shù)據(jù)包的比率。假設(shè)RS模塊生成k個(gè)FEC冗余包,其中一個(gè)組包括b個(gè)源數(shù)據(jù)包,則冗余率計(jì)算如下:
c)視頻質(zhì)量。本文使用PSNR(peak signaltonoise ratio)[26]來(lái)衡量接收到的視頻數(shù)據(jù)的質(zhì)量。PSNR是一種基于均方誤差的全參考的視頻質(zhì)量評(píng)估指標(biāo),可以用于測(cè)量接收到的視頻數(shù)據(jù)與原始視頻數(shù)據(jù)之間的相對(duì)誤差。視頻每一幀的PSNR的計(jì)算公式如下:
其中:MAX表示視頻數(shù)據(jù)像素的最大值;MSE表示接收到的視頻數(shù)據(jù)與原始視頻數(shù)據(jù)之間的均方誤差。PSNR的單位是分貝(dB),通常情況下,PSNR的值越高,視頻質(zhì)量越好。
在不同丟包率的情況下,本文方法和其他對(duì)比方法的冗余度和丟包恢復(fù)率,如圖8所示。在較低丟包率的情況下,本文方法需要的冗余帶寬遠(yuǎn)遠(yuǎn)低于固定冗余度的冗余帶寬。在網(wǎng)絡(luò)發(fā)生急劇變化,丟包率逐漸變大的情況下,固定冗余度的方法恢復(fù)性能大幅度下降。而本文方法在丟包率大幅度增加的情況下也能很好地恢復(fù)丟失的數(shù)據(jù)包。相較于DeepRS,本文GABP冗余度和其相差無(wú)幾,但是在丟包率1%、5%、30%的網(wǎng)絡(luò)環(huán)境下,恢復(fù)率都優(yōu)于DeepRS。并且本文不均等的幀保護(hù)方案,在增加的冗余度小于10%的情況下,能夠增加5%左右的恢復(fù)率。
恢復(fù)率未考慮到不同幀的特性,不能完全體現(xiàn)本文方法的優(yōu)點(diǎn)。所以進(jìn)一步測(cè)試了在不同丟包率下,本文方法和對(duì)比方法下傳輸視頻的PSNR,如表3所示。其中,在PLR=5%時(shí),幾種方法傳輸in_to_tree[25]視頻的第100幀圖片效果如圖9所示。本文方法在各種丟包率下傳輸測(cè)試,得到的視頻序列效果很穩(wěn)定。相較于固定冗余度的RS方案,在網(wǎng)絡(luò)丟包率不斷增加的情況下,視頻質(zhì)量急劇下降。本文方法能夠滿足動(dòng)態(tài)網(wǎng)絡(luò)的需求。相較于DeepRS,本文不均等的幀保護(hù)方法,可以更有效地提升視頻質(zhì)量,在丟包率為1%、5%、10%視頻的PSNR分別提高0.19 dB、2.75 dB和1.91 dB,證明了本文方法的優(yōu)越性。
除此之外,本文還在文獻(xiàn)[25]中背景比較固定的FourPeople和幀運(yùn)動(dòng)較小的old_town_cross視頻數(shù)據(jù)集上分別進(jìn)行測(cè)試,其圖像的效果如圖10和11。證明了本文方法在傳輸不同的視頻數(shù)據(jù)上有一定的泛化性。
4 結(jié)束語(yǔ)
本文提出了一種在實(shí)時(shí)視頻通信中通過(guò)自適應(yīng)FEC冗余來(lái)抵抗丟包的方法。通過(guò)在系統(tǒng)內(nèi)部嵌入GABP模型,解決了動(dòng)態(tài)網(wǎng)絡(luò)中前向糾錯(cuò)編碼冗余度分配的問(wèn)題。完成的主要工作有:a)對(duì)前向糾錯(cuò)機(jī)制設(shè)計(jì)中求解最優(yōu)冗余度問(wèn)題進(jìn)行建模,模擬了實(shí)時(shí)視頻中數(shù)據(jù)包的傳輸過(guò)程;b)使用一種遺傳算法改進(jìn)的BP網(wǎng)絡(luò),預(yù)測(cè)網(wǎng)絡(luò)丟包模式信息,引入幀重要性度量因子β并結(jié)合前向糾錯(cuò)碼實(shí)現(xiàn)一種幀級(jí)不均等的丟包恢復(fù)方案;c)進(jìn)行實(shí)驗(yàn)和結(jié)果分析,驗(yàn)證該模型能更好地權(quán)衡冗余率和恢復(fù)率,在較低的情況下獲得較高質(zhì)量的視頻,有很強(qiáng)的實(shí)際應(yīng)用價(jià)值。
但是,本文未考慮到每一幀視頻的視頻特性如幀的大小、幀的運(yùn)動(dòng)因子等;其次,本文的影響因子β比較固定,后續(xù)考慮通過(guò)網(wǎng)絡(luò)狀態(tài)和視頻特點(diǎn)來(lái)確定β的大小。
參考文獻(xiàn):
[1]Cisco. Cisco visual networking index: forecast and methodology,2016-2021[EB/OL]. (2017-06-06). https://www.reinvention.be/webhdfs/v1/docs/completewhitepaperc11-481360.pdf.
[2]Jiang Wenyu,Schulzrinne H. Modeling of packet loss and delay and their effect on realtime multimedia service quality[C]// Proc of the 10th International Workshop on Network and Operating Systems Support for Digital Audio and Video. New York: ACM Press,2000: article No. 27.
[3]Rao A,Legout A,Lim Y,et al. Network characteristics of video streaming traffic[C]// Proc of the 7th Conference on Emerging Networking Experiments and Technologies. New York: ACM Press,2011: article No. 25.
[4]林利祥,劉旭東,劉少騰,等. 前向糾錯(cuò)編碼在網(wǎng)絡(luò)傳輸協(xié)議中的應(yīng)用綜 [J]. 計(jì)算機(jī)科學(xué),2022,49(2): 292-303. (Lin Lixiang,Liu Xudong,Liu Shaoteng,et al. Overview of the application of forward error correction coding in network transmission protocols[J]. Computer Science,2022,49(2): 292-303.)
[5]Padhye C,Christensen K J,Moreno W. A new adaptive FEC loss control algorithm for voice over IP applications [C]// Proc of IEEE International Performance,Computing,and Communications Conference. Piscataway,NJ: IEEE Press,2000: 307-313.
[6]Baccaglini E,Tillo T,Olmo G. Slice sorting for unequal loss protection of video streams[J]. IEEE Signal Processing Letters,2008,15: 581-584.
[7]Xiao Jimin,Tillo T,Lin Chunyu,et al. Dynamic subGOP forward error correction code for realtime video applications[J]. IEEE Trans on Multimedia,2012,14(4): 1298-1308.
[8]Xiao Jimin,Tillo T,Zhao Yao. Real-time video streaming using randomized expanding Reed-Solomon code[J]. IEEE Trans on Circuits and Systems for Video Technology,2013,23(11): 1825-1836.
[9]Immich R,Borges P,Cerqueira E,et al. Adaptive motionaware FECbased mechanism to ensure video transmission[C]// Proc of IEEE Symposium on Computers and Communications. Piscataway,NJ: IEEE Press,2014: 1-6.
[10]Wu Jiyan,Cheng Bo,Wang Ming,et al. Priorityaware FEC coding for highdefinition mobile video delivery using TCP[J]. IEEE Trans on Mobile Computing,2017,16(4): 1090-1106.
[11]Luo Zhengyi,Song Li,Zheng Shibao,et al. Raptor codes based unequal protection for compressed video according to packet priority[J]. IEEE Trans on Multimedia,2013,15(8): 2208-2213.
[12]Lin C H,Shieh C K,Hwang W S. An access pointbased FEC mechanism for video transmission over wireless LANs[J]. IEEE Trans on Multimedia,2012,15(1): 195-206.
[13]祝永晉,尹飛,豆龍龍,等. 基于前向糾錯(cuò)的自適應(yīng)網(wǎng)絡(luò)傳輸機(jī)制[J]. 計(jì)算機(jī)應(yīng)用,2021,41(3): 825-832. (Zhu Yongjin,Yin Fei,Dou Longlong,et al. Adaptive network transmission mechanism based on forward error correction[J]. Journal of Computer Applications,2021,41(3): 825-832.)
[14]柳粟杰,楊秀芝,陳平平,等. 實(shí)時(shí)視頻傳輸?shù)膸?jí)別前向糾錯(cuò)信道編碼[J]. 廈門大學(xué)學(xué)報(bào): 自然科學(xué)版,2020,59(6): 964-971. (Liu Sujie,Yang Xiuzhi,Chen Pingping,et al. Frame level forward error correction channel coding for realtime video transmission[J]. Journal of Xiamen University: Natural Science,2020,59(6): 964-971.)
[15]Schwarz H,Marpe D,Wiegand T. Overview of the scalable video coding extension of the H.264/AVC standard[J]. IEEE Trans on Circuits and Systems for Video Technology,2007,17(9): 1103-1120.
[16]Lacan J,Roca V,Peltotalo J,et al. RFC 5510,ReedSolomon forward error correction(FEC) schemes[S]. USA: RFC Editor,2009.
[17]陳一鳴. 流媒體業(yè)務(wù)中間件之前向糾錯(cuò)策略研究與實(shí)現(xiàn)[D]. 上海: 復(fù)旦大學(xué),2012. (Chen Yiming.Research and implementation of forward error correction strategies for streaming media business middleware[D]. Shanghai: Fudan University,2012.)
[18]Cheng Sheng,Hu Han,Zhang Xinggong,et al. DeepRS: deeplearning based networkadaptive FEC for realtime video communications[C]// Proc of IEEE International Symposium on Circuits and Systems. Piscataway,NJ: IEEE Press,2020: 1-5.
[19]Ganjam A,Jiang Junchen,Liu Xi,et al. C3: Internetscale control plane for video quality optimization[C]// Proc of the 12th USENIX Conference on Networked Systems Design and Implementation. [S.l.]: USENIX Association,2015: 131-144.
[20]Jiang Junchen,Sekar V,Stoica I,et al. Shedding light on the structure of internet video quality problems in the wild[C]// Proc of the 9th ACM Conference on Emerging Networking Experiments and Technologies. New York: ACM Press,2013: 357-368.
[21]Li Jing,Cheng Jihang,Shi Jingyuan,et al. Brief introduction of back propagation neural network algorithm and its improvement[C]// Advances in Computer Science and Information Engineering. Berlin: Springer,2012: 553-558.
[22]王會(huì)青,郭芷榕,白瑩瑩. 基于BP和樸素貝葉斯的時(shí)間序列分類模型[J]. 計(jì)算機(jī)應(yīng)用研究,2019,36(8): 2271-2274,2278. (Wang Huiqing,Guo Zhirong,Bai Yingying. A time series classification model based on BP and naive Bayes[J]. Application Research of Computers,2019,36(8): 2271-2274,2278.)
[23]Mirjalili S. Genetic algorithm[M]// Mirjalili S. Evolutionary Algorithms and Neural Networks: Theory and Applications. Cham: Springer,2019,780: 43-55.
[24]Hsiao P W,Kuo C I,Shieh C K,et al. An analysis modeling of framelevel forward error correction for H.264/AVC over burstloss channels[C]// Proc of the 4th International Conference on Wireless Communications,Vehicular Technology,Information Theory and Aerospace & Electronic Systems. Piscataway,NJ: IEEE Press,2014: 1-5.
[25]Xiph.Org. Xiph.Org video test media[EB/OL]. (2019-04-15). https://media.xiph.org/.
[26]HuynhThu Q,Ghanbari M. Scope of validity of PSNR in image/video quality assessment[J]. Electronics Letters,2008,44(13): 800-801.