本文內容來自LiveVideoStack線上分享第四季第二期,由湖北經濟學院副教授,胡勝紅博士爲你們介紹如何基於內容分析技術,從用戶需求角度標註視頻流重要性級別,構建自適應流傳輸策略,實現語義級QoE優化目標。
文 / 胡勝紅java
整理 / LiveVideoStack算法
你們好,我是胡勝紅,本次議題主要源自我攻讀博士期間的研究課題,在4-5年的研究時間裏,我對基於內容的視頻自適應傳輸策略和優化算法進行了深刻探索,今天藉此機會在LiveVideoStack平臺與你們分享一下本身的研究成果和一些工程化經驗。緩存
本次分享主要由基於內容的自適應視頻傳輸簡介、系統架構及其優化策略、視頻內容分析與分級、自適應流傳輸技術和行業現狀、相關應用等五部分組成。安全
CBAVT是基於視頻內容的特徵分析,將視頻流中用戶感興趣的重要內容片斷以優化質量方式傳輸,實現語義層QoE最大化。主體架構如圖1。服務器
圖1 CBAVT系統框架網絡
圖1中的架構有幾大要素,其中內容描述服務器是指在視頻內容傳輸以前作內容的分析,實時流(Live Streaming)和點播流(Video on Demand)的內容分析方式是不同的,在點播流中能夠進行預分析,將元數據存儲在內容描述服務器中便於傳輸時被決策模塊訪問;而在實時流中邊傳輸邊分析,內容分析手段每每被簡化,防止複雜性的計算帶來過大時延。架構
內容分級:是在內容傳輸以前必須作的,即分出內容重要性的級別,能夠根據系統的應用特色進行級別的設置。通常分爲三個級別:用戶最感興趣內容、中等感興趣內容和最不感興趣內容。框架
內容分級完成以後進行基於內容的自適應傳輸決策執行。這個決策過程被建模爲一個約束優化模型,優化目標是視頻質量,而約束條件是網絡環境中可變或不變的性能參數。邏輯的自適應策略模型沒法直接對數據流進行操做,實際中會結合現有的一些流傳輸方法(如RTSP、RTMP、DASH、HLS等),對實際數據包進行時域或空域的操做(丟幀、碼流切換),使得碼流在傳輸過程當中可以適合不一樣的傳輸環境,例如物聯網、無線網等一些不可靠網絡環境。機器學習
視頻分析:利用機器學習方法或深度學習方法提取視頻特徵,此過程若是是在點播(VoD)的環境下手工標註也能夠。視頻分析不屬於流傳輸的範疇,是屬於機器學習或者視頻檢索領域,近年來深度學習技術在圖像和視頻語義分析領域取得了巨大成功,有許多成果可被利用。國際上通常使用MPEG-7標準管理多媒體元數據的存儲和訪問。ide
內容分級:基於領域知識或者用戶偏好對視頻內容進行重要性分級,不一樣的系統要根據不一樣的應用目標作內容分級。
效用優化:在網絡約束或者無線網絡不穩定狀況下,流傳輸相關的視頻參數如幀率、碼率等的改變對用戶QoE的影響效果,能夠經過一些擬合方法進行建模。
實時流傳輸:是一些標準的傳輸流技術,全部的視頻流操做都離不開這些標準,自適應視頻傳輸技術必須依賴實時流傳輸技術實現信號層操做,包括RTP/RTSP、RTMP、HLS、DASH等標準。
語義級的QoE:傳統的QoE是Quality of Experience,即用戶對所播放視頻的主觀體驗及用戶對視頻內容的承認度,換而言之就是與用戶語義相關的需求(即用戶觀看的信息理解、興趣和情感等方面)是否被有效知足。
圖2 視頻內容分析任務
CBAVT系統的首要任務是視頻內容分析。一般,視頻內容分析分爲高層、中層、低層三個層次,中層和低層可用的內容合併爲中低層內容分析。高層語義分析能夠利用咱們熟知的領域知識,例如足球視頻、音樂視頻、電影、自拍視頻(以我的爲中心的視頻)等等。
語義內容分析中有幾個容易被利用的特徵。其中,情感特徵容易反映觀看者的情緒變換,例如電影視頻中不一樣情節的情感,可使用自動或手動方式對視頻情感特徵進行標註。而對象特徵能夠指電影視頻或自拍視頻都會存在的主角,與主角有關的動做和場景都是比較重要的,或者監控視頻中的被關注對象。高層語義分析的通用性並非很強,不一樣用戶和不一樣領域對語義的要求有很大的差別,所以要結合具體應用而論。
中低層語義分析特徵比較通用化,其中注意力特徵指眼動或者人對視頻中出現的運動變化產生的關注,此領域有許多成果能夠被利用。運動特徵做爲視頻內容精彩與否的重要表徵量,比較通用化,所以早期基於內容的自適應視頻傳輸策略都是基於運動特徵的。聲音特徵對情感的表達很是敏感,因此聲音特徵能夠用來對情感內容進行識別和標註,除此以外還有紋理特徵等等。
圖3 運動特徵分析
以早期個人一篇論文來做爲介紹,咱們對畫面內任何宏塊均可以提取運動幅值和運動方向做爲運動特徵,目前運動特徵的提取能夠達到實時化。圖3將12個標準測試視頻劃分爲3個不一樣的運動級別:低速運動(low speed級別的視頻流),中速運動(Medium speed 運動)、高速運動(high speed運動,例如踢足球的運動)。圖中能夠看出,在一樣碼率的狀況下,高速運動的質量會很是低,所以在碼流切換的時候應儘量在高速運動時切換爲高碼率的傳輸。圖3中第四個視頻爲低速運動,第五個視頻爲高速運動,第六個視頻爲中速運動,第七個視頻爲高速運動。在獲得運動有關的分類以後,便可把視頻分爲低速運動、中速運動、高速運動三類。三種不一樣的運動在不一樣碼率下對應的視頻質量能夠擬合出一條曲線,即根據碼率值、目標質量和運動特徵值進行迴歸分析,獲得一個目標值的擬合函數。該目標值函數獲得以後便可以代入優化模型。
圖4 精彩事件分析
以娛樂性較強的足球視頻爲例,一般觀衆看球最喜歡看進球和回放畫面的,這種視頻片斷能夠進行自動識別和標註,相應算法識別率能夠達到百分之百。除此以外,還有一些重要的犯規、射門等用戶感興趣片斷,識別率也能夠達到百分之九十以上。
假設把視頻的運動強度、鏡頭切換率(固定時間窗口內鏡頭切換的快慢)以及聲音能量三個特徵參數融合爲一條曲線,便可獲得精彩度曲線,峯值區域就是精彩事件。對精彩度曲線可設置閾值,大於該閾值便可設置爲精彩事件,進而對被傳輸視頻內容進行分級。
圖5 個性化情感分析
情感做爲語義層分級的最高級或者做爲高於語義層單獨稱爲情感層,是視頻分析的最高層任務。該類視頻是表演者情感和觀衆情感的融合,即觀衆喜歡看何種情感的視頻,就對相應情感的片斷進行優化。
因爲近幾年深度學習技術在計算機視覺領域的普遍應用,情感識別的準確率提高很明顯。例如應用Resnet-50提取深度卷積特徵,應用支持向量機(SVM)分6類基本情感的機率值做爲視頻的一個特徵量。以鏡頭爲單元,通常同一鏡頭的情感是類似的,在連續時間域內計算兩兩鏡頭之間的距離,平均後能夠獲得用戶的偏好強度。
例如用戶爲女生則會喜歡情感性比較強的電影,好比泰坦尼克號或者再見前任等;用戶爲男生通常會喜歡功夫熊貓、速度與激情等一系列的電影。
圖6 基於內容的自適應傳輸優化模型
圖6是一個多維揹包問題,邏輯上將視頻看做一個個時間域上連續排列的獨立單元,每一個單元多是一個幀或者片斷,已被標註相應的級別值。在知足當前的約束條件下(如帶寬、幀率或者碼率等),保證被傳輸單元的全部級別值的總和最大化便可。顯然作一個多維揹包問題很困難並且耗時,但在實際使用中卻沒那麼複雜,好比在丟幀的狀況下,每次只能丟一幀,該揹包問題則成爲一維揹包問題;若是是多片斷的編碼流,在服務器上只有有限版本的碼流狀況下,則成爲有限揹包問題。
語義分級或者語義標籤標註在流傳輸單元上,視頻流結構決定標註粒度,如下爲幾種標註流傳輸單元:
(1)包級:IP包是獨立的傳輸單元,主要是一種網絡解決方案。
(2)幀級:在視頻傳輸中幀是獨立的編解碼單元,一個幀至少要包含在一個包裏面,保證幀在傳輸過程當中是安全的,不然解碼後會出現馬賽克。
(3)片斷級:當傳輸單元是一個片斷時,即傳輸單元是一個Segment或者Chunk,包含多個幀,但起始幀必定是關鍵幀,不然切換時沒法解碼。
圖7 與流傳輸單元相關的語義標註值
如圖中,虛框表示邏輯上的標註,語義標籤可標註在幀上,也能夠標註在片斷上,具體依據不一樣的流傳輸系統而定。
圖8 RTSP丟幀操做
標註完成以後進行丟幀操做,通常狀況下在實時流中丟棄必定非參考幀,能夠將碼率下降50%~30%,同時也可以保證解碼時不出錯。丟多少幀可由內容的級別決定,級別越高的內容丟幀越少,級別低的幀不能丟P幀,由於會出現明顯的卡頓。
圖9 碼流切換操做
碼率切換的一個優勢是不會出現卡頓。缺點是若是碼率切換太頻繁,就會出現用戶對質量的焦慮感,由於碼率從低到高的切換用戶比較容易接受,反之就會比較難接受。所以根據內容重要性級別在不一樣質量碼流間切換時,還要考慮緩存分配,能夠給高碼率的視頻預留一些緩存,這樣高速運動的視頻傳輸時能夠儘可能調高碼率。綜合應用網絡資源分配優化傳輸質量是一個比較好的策略。
在實時的傳輸過程當中,須要對傳輸質量進行評估,以評判自適應傳輸算法是否有效,包括客觀質量、語義級QoE兩種評判方法。
目前對視頻客觀質量的評價標準有如下幾種方法:
圖10 客觀質量評價
分別對四種電影視頻進行BA(基於緩存的自適應方法)、PANDA(基於帶寬的自適應方法)、CDASH(基於內容的自適應傳輸方法)三種質量評價以後,從圖10中能夠看出對於電影視頻是頗有效的,由於電影視頻中一部分是低速運動,一部分是高速運動,因此低速運動(低碼率傳輸)能夠爲高速運動(高碼率傳輸)片斷預留緩存時間,所以效果很好。可是在Bigbunny(動畫片)中,運動的級別都相近,一部分是低速運動一部分是中速運動。Timber(音樂劇),大部分都在跳Disco,因此運動級別很是高,大部分視頻內容都是高級別運動,沒法預留緩存時間,所以算法的效果不是很好。
要作到了解用戶的語義需求是否被知足,則須要作一些用戶調查,能夠設置模板或者問卷,讓用戶進行回答,例如如下幾點:
圖11 主觀質量評價
最後發現用戶的回答是符合評價需求的。
(1)跨層控制:基於包的控制
把語義層的特徵放到信號層,在信號層與IP包自身所帶協議的標頭進行設置,利用MPLS(多標籤路由)、802.11e(提供不一樣機率的轉換機制)、SDN實現基於丟包/選擇路由等操做對分級視頻數據包進行操做。
(2)鏈路控制(又稱丟幀控制)
鏈路控制基於GoP結構保證關鍵幀和P幀的順序,再丟棄必定比率的非關鍵幀能夠下降碼率,但實際應用有侷限性,通常狀況下只能下降30%左右碼率,再大了就會致使明顯的卡頓。
(3)切換控制
切換控制是基於HTTP協議,丟幀或丟包的機率不大,是基於碼流切換的策略,會形成卡頓或者黑屏。
圖12 面向足球視頻點播的CBAVT系統
將足球視頻內容分爲0、一、2三個精彩度級別,2爲最高優先級,1是中等,0是帶球等普通場景,標註後與視頻自己的GoP結合在一塊兒實現RTP分包的發送,進行相應丟包操做,監控網絡狀態能夠用RTCP包。
圖13 面向電影視頻流的情感自適應系統
把情感特徵與MPD文件關聯在一塊兒,在傳輸以前讀取相關情感特徵,而後與用戶歷史觀看視頻的情感特徵比對獲得視頻分級的標註,輸入到客戶端的決策模塊中,客戶端的決策模塊決定下載何種比特流,發送HTTP請求,在服務器上下載對應的視頻片斷便可。該模型實如今DASH標準客戶端,有兩個版本,一個是java版本,另外一個是VC版本。
目前實際應用中的自適應視頻流傳輸更多的是利用信號層參數優化傳輸,而對於視頻內容特別是語義層的關注相對比較少,主要緣由可能在於作視頻流傳輸的人員可能沒作過視頻分析或者視頻檢索相關工做,關注度不夠;另外因爲要考慮時延問題,會以爲內容分析時延較大知足不了實時任務,但實際上應該多嘗試一些辦法下降時延,能夠經過邊緣節點的代理或者配置來提升各類文件的讀取,做爲任何一個特徵文件,其實能夠共享。