歡迎你們前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~web
在線「看片」時,咱們常常會遇到這些事情:視頻畫面忽然卡住進入緩衝狀態或者視頻畫面忽然變得模糊而不忍直視。這些事情的背後極可能是網絡環境忽然變差了致使下載速度很慢,也多是碼率調整算法沒有對當前環境作出合理的決策致使。數據庫
事實上,如何感知網絡環境的變化並做出合理的碼率調整並不是易事。目前不少視頻播放的客戶端都提供了幾種碼率檔位(標清、高清、超清、藍光等)供用戶自主選擇,在網絡環境好時用戶能夠自主切到高碼率檔位,網絡環境差時切到低碼率檔位。固然,有些主流的視頻播放客戶端也提供了自適應(自動)這個選項,好比YouTube,當用戶選擇這個選項後,運行在背後的碼率自適應算法會根據當前的網絡狀況和播放緩衝區等信息去自適應調整視頻檔位,旨在給用戶提供更好的視頻觀看體驗。事實上,碼率自適應算法是學術界近年來的一個研究熱點,音視頻實驗室和企鵝電競團隊也在點播碼率自適應方法上進行了嘗試和實踐。安全
圖1:碼率自適應系統框架服務器
碼率自適應技術 (Adaptive Bitrate Streaming,ABR)是一種視頻碼率能夠根據網絡情況或客戶端播放buffer狀況自動調整的視頻傳輸技術。如圖1所示,一個視頻源經過視頻轉碼器轉成不一樣的視頻碼率存儲在web 服務器,同時每一個碼率的視頻被切割成一個個小的視頻分片,每一個分片一般是可單獨解碼播放的視頻內容,分片時長一般介於2秒到10秒之間。視頻播放客戶端首先獲取不一樣碼率的切片索引信息,而後根據當前的網絡情況或者客戶端的播放緩衝區狀況自動選擇檔位最匹配的視頻片斷下載。微信
目前,基於HTTP的碼率自適應技術的實現方式從標準的類型來看主要有兩大類:如圖2所示,一類是企業方案,即提供了總體的技術解決方案,如Apple Live Streaming技術;另外一類是一些國際標準組制定的技術標準,如MPEG的DASH(Dynamic Adaptive Streamingover HTTP)。網絡
圖2: 碼率自適應技術分類架構
視頻碼率自適應的目的是爲了提升(或者最大化)用戶在線觀看視頻的體驗質量(qualityof experience, QoE),可是用戶體驗質量的定量表達自己也是一個難點。許多研究代表視頻的質量(好比碼率)、卡頓時間以及切換頻繁度都將影響到用戶的體驗質量。最大化用戶體驗質量能夠認爲:儘量最大化視頻碼率的同時儘可能減小視頻卡頓和碼率檔位切換。而實際上,組成用戶體驗質量的這些因素之間是互相影響甚至存在矛盾,好比用戶若是能長期收到高碼率的視頻,視頻質量天然會更好,但這又極可能增長視頻卡頓的風險(網絡若是變差,播放速度快於後續片斷的下載速度)。另外,碼率自適應調整具備累積效應,前面的碼率決策會影響到將來的碼率的決策。所以,一個好的碼率自適應算法要兼顧各項指標,快速響應環境變化作出儘量最優的決策。框架
碼率自適應算法(ABR)通常經過當前的網絡狀態或客戶端播放緩衝區狀況來動態地調整將來視頻片斷的碼率檔位以期最大化用戶的QoE,近年來的ABR算法主要分爲三類:機器學習
傳統的碼率自適應算法通常是基於人爲設定的固定規則的來進行視頻碼率檔位的動態調整。其中,單獨基於buffer或者預測帶寬的方法沒有充分利用可用信息,而結合了二者信息的算法能夠得到相對較好的效果,但其很是依賴於帶寬預測信息,在帶寬變化劇烈的場景中,準確預測帶寬是很是困難的。基於混合模式的MPC(模型預測控制)算法雖然能夠得到不錯的結果,但其在求解最優解時計算耗時大,速度慢,在決策動做空間和優化區間步長稍大時,缺點顯現出來。
反觀碼率自適應過程:首先,視頻播放客戶端會根據當前的網絡狀況、播放緩衝區大小等因素決定下一個片斷的碼率檔位,而後客戶端執行碼率決策向CDN服務器請求對應質量的視頻片斷,進行下載,下載的過程當中視頻緩衝區也同時在播放消耗。下載完當前片斷後,客戶端進入了另一種狀態(播放緩衝區大小變化、是否卡頓等)且能夠據此評價上一個動做的好壞,而後再從新進行新的決策,如此循環往復,直到結束。以上過程能夠抽象成系統控制或者策略制定的問題。而相對於人爲制定策略和控制規則而言,機器學習裏的強化學習不須要人爲地設定一些經驗規則或策略邏輯,直接經過與環境的不斷交互中去學習策略,在不斷試錯和經驗總結中學到好的決策和控制模型。本文在研讀業界近年來碼率自適應算法的基礎上,重點對基於強化學習的碼率自適應算法進行了探索和研究。再進一步討論以前,下面先簡單介紹強化學習的基本概念。
總所周知,近年來機器學習裏的深度學習在計算機視覺、語音識別和天然語言處理等流域遍地開花,取得了不少突破性的進展。而機器學習從學習信號區分的話,能夠分爲:有監督學習、無監督學習和強化學習。強化學習是系統從環境學習以使得獎勵指望最大的機器學習。強化學習和有監督學習的不一樣在於教師信號。強化學習的教師信號是動做的獎勵,有監督學習的教師信號是正確的動做。舉個例子,在貓狗分類時,對於一張圖片是哪一種動物,有監督學習給的信號是這張圖片的真正label是貓或者狗。而基於強化學習的圍棋AI中,在某種局面下,咱們並無確切的答案告訴你,必定要落子在哪裏,而是可能會反饋給你落子在何處時的價值估計。
圖3: 強化學習基本框架
強化學習(Reinforcement learning, RL)的基本思路是經過最大化智能體(Agent)從環境中得到的累計獎賞值,以學習到完成目標的最優策略。強化學習側重於學習解決問題的策略,是制定策略或者系統控制的通用框架,其經過和環境的不斷交互和動做嘗試來調整和優化策略決策,通常由智能體Agent、環境Environment、動做action、執行動做後環境反饋的觀察狀態S和當即獎懲reward組成,其學習的過程能夠描述爲:(1)在每一個時刻,agent與環境交互獲得一個環境的狀態觀察St,並利用DL(深度學習)等方法來感知觀察,以獲得狀態S的抽象特徵表示;(2)基於某種策略將當前狀態映射爲相應的動做,並基於指望回報來評價各動做的價值(3)環境對此動做作出反應,獲得新的觀察狀態St+1並反饋上一個動做at的當即獎賞reward(rt)。經過不斷循環以上過程,不斷試錯和學習,以期獲得實現目標的最優策略。
近兩年,隨着深度學習的火熱和應用領域的延伸,學術界也嘗試利用機器學習的方法來解決碼率自適應問題。其中,MIT的計算機科學和人工智能實驗室在基於AI的碼率自適應算法上作了創新性的嘗試並取得了不錯的結果,受到他們思路的啓發,咱們也在基於AI的碼率自適應算法進行了實踐探索。本文基於強化學習的碼率自適應算法中採用的是Actor-Critic的策略梯度方法來進行策略的學習,下圖4是基於Actor-Critic框架的碼率自適應算法的模型框架。
圖4:基於Actor-Critic框架的ABR算法模型
在AC框架中,actor(演員)網絡進行策略決策,學習狀態state到動做的映射關係,而critic(評論家)負責價值估計,即估計價值函數。策略決策和價值估計須要在訓練過程當中迭代優化,一開始actor的策略可能隨機,critic也沒有好的打分規則。可是因爲reward的存在,critic評分隨着訓練的進行會愈來愈準,actor的決策表現也會愈來愈好,最終學習到好的策略。
在模型訓練過程當中, reward信號的設計是很是重要的,在不一樣reward下模型學習到的策略也就會有差別。本文但願解決的問題是如何在點播系統中最大化視頻觀看用戶的體驗質量(QoE),而研究代表:視頻的質量(碼率高低)、rebuffering(從新緩衝)以及檔位切換的平滑性都將影響到用戶體驗的質量,所以在設計reward時,能夠由這些因素共同決定。
模型輸入的狀態信息也是很是重要的點,結合reward的設計,模型狀態輸入信息主要包括:吞吐量信息、播放緩衝區信息等。
如圖4所示,輸入狀態通過actor網絡和critic網絡後輸出的分別是策略動做(碼率檔位)和價值估計,而在實際部署只須要策略決策時,僅保留訓練好的actor網絡。在實際的模型訓練時,採用的是A3C(Asynchronous AdvantageActor-Critic)架構進行快速有效的模型訓練。
模型訓練和測試的吞吐量數據由寬帶網絡數據和移動(3G\4G)網絡數據組成,訓練集和測試集均包含了100多種網絡數據。圖5和圖6展現了在該測試集上基於強化學習的模型1和模型2對比傳統方法MPC(採用表現較好的robustMPC)的結果。總平均reward表明了在100多種網絡狀況下,視頻播放過程當中客戶端的累計獎勵值的平均。模型1和模型2相對於robustMPC分別有約6.4%和8.8%的提高。
圖5:100多種網絡狀態下(6種碼率檔位)的測試結果對比
圖6:100多種網絡狀態下(6種碼率檔位)的測試結果對比(reward組成因素分解)
圖6中對組成總平均reward的各個因素進行分解,能夠看到傳統方法的robustMPC雖然在總平均碼率獎勵上比強化學習模型1和2要高,但與此同時帶來的從新緩衝(rebuffering)的風險也更高,致使rebuffering的懲罰明顯多於其餘兩種模型。而基於強化學習的ABR模型1和2可以更好地兼顧各項因素使得累計獎勵到達更高。
圖5和圖6的結果都是基於數據庫的帶寬信息進行測試的,爲了驗證在實際場景中的應用效果,咱們將強化學習的碼率自適應算法應用於DASH點播系統中,在真實的網絡損傷環境下驗證各類算法模型的表現:在視頻播放客戶端和視頻服務器之間的視頻下載的網絡鏈路上分別添加了限速、丟包、抖動和時延等損傷環境進行測試,結果如圖7所示。相對而言,在真實的損傷場景中,模型1和模型2的總體表現比robustMPC穩定,在損傷場景的測試集上,模型1和模型2相對於robustMPC分別有約9.2%和8.9%的提高。結果和須要注意的是,咱們的模型是離線使用數據庫中有限的帶寬數據進行模擬訓練的,將其直接應用在實際環境中的表現說明了其具備不錯的泛化性。
圖7:真實系統和損傷網絡環境測試集下模型的測試結果
在上述預研的基礎上,咱們將本文介紹的基於強化學習的碼率自適應算法應用於企鵝電競的點播業務(HTTP+HLS),用於決策客戶端當前應該下載的視頻片斷的檔位(例標清、高清、超清等)。爲了提高用戶體驗,電競團隊聯合騰訊雲團隊作了「幀對齊」的優化工做,實現點播過程的無縫切換效果。圖8是針對電競點播業務部署的點播AI流控系統,預測服務器負責碼率決策和下發檔位,並向訓練服推送訓練數據,訓練服負責模型訓練和模型同步。
圖8:點播AI流控系統
實際的線上數據統計對好比下:
表1:流控後臺打分算法統計的效果對比(對比傳統算法)
表2:流控後臺打分算法統計的效果對比(對比非流控模式)
以上表格1和表格2結果顯示:
•AI模型的總得分比傳統MPC算法增長約6%, 超清檔位佔比增長約5%,且卡頓和切換懲罰更小
•AI模型的總得分比非流控模式增長約18%,超清檔位佔比增長約6%~14%左右,且卡頓和切換懲罰明顯更小
注:表格2是關閉MPC傳統算法後,AI模型算法對比非流控模式(用戶自主選擇檔位)的統計數據。
表3:電競客戶端打分算法統計的效果對比
以上表格3結果顯示:
• AI流控的總分比非流控模式增長約4.9分
• 清晰度:超清檔位佔比增長約8.4%
• 流暢度:
1)AI流控較非AI無緩衝率得分高約12分,無緩衝率高約8%
2)AI流控較非AI二次緩衝每小時比率的得分高約8分
上述結果代表,基於強化學習的AI算法在點播流控的應用中,可以更好地兼顧碼率、卡頓和切換因素,在提供更高清晰度體驗的同時,也能更好地避免卡頓的產生,從而提供給用戶更好的視頻觀看體驗。
本文簡要介紹了基於強化學習的碼率自適應算法,在實踐預研驗證和分析的基礎上,將該AI算法模型應用於實際項目。在音視頻實驗室和企鵝電競團隊等的共同努力下,在基於AI的點播流控探索和實踐上,取得了初步的成效。而如何在直播、實時通話系統中進行更好的碼率自適應調整值得咱們進一步研究和探索。
問答
相關閱讀
此文已由做者受權騰訊雲+社區發佈,原文連接:https://cloud.tencent.com/developer/article/1153315?fromSource=waitui
歡迎你們前往騰訊雲+社區或關注雲加社區微信公衆號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~
海量技術實踐經驗,盡在雲加社區! https://cloud.tencent.com/developer?fromSource=waitui