B站S賽直播中的關鍵事件識別與應用
1. 前言
在電子競技的世界里,沒有哪個游戲像《英雄聯盟》(League of Legends,簡稱LOL)那樣,擁有如此龐大的玩家數量和深遠的影響力。
自2009年由Riot Games推出以來,這款多人在線戰斗競技場(MOBA)游戲迅速風靡全球,不僅成為了電子競技的標桿,更催生了一個龐大的產業生態。《英雄聯盟》以其獨特的英雄角色、豐富的戰術策略和激烈的團隊對抗,吸引了無數玩家投身于召喚師峽谷的戰斗之中。
2. 背景
隨著電子競技的蓬勃發展,賽事的組織和觀賞性成為了衡量一個游戲成功與否的重要標準。《英雄聯盟》每年舉辦的各種賽事,如LPL、LCK、LCS等區域聯賽,以及MSI和S賽等國際大賽,都是LOL電子競技領域中的重要盛事。
在這樣的背景下,賽事直播的自動化和智能化成為了提升B站賽事觀看體驗和熱度的關鍵。其中,游戲識別技術是我們賽事智能化的核心之一,它涉及到圖像處理、模式識別、深度學習等多個領域,旨在實時準確地從游戲畫面中提取關鍵事件信息,如英雄選擇、擊殺、局內數據等,進而為賽事直播、數據分析和觀眾互動提供支持。
圖1 觀眾點擊進度條圖標或高能列表可跳轉到精彩瞬間
圖2 觀眾將鼠標停留在英雄頭像上查看選手實時數據
3. 游戲識別
9月25日,備受矚目的S14全球總決賽在歐洲盛大開啟。對于長期觀看B站賽事直播的觀眾們來說,通過點擊進度條上的高能點來重溫比賽的精彩瞬間已經成為一種習慣。
追溯到2021年10月,B站的官方賽事直播間就已推出了自主研發的游戲識別系統,這一創新功能為B站的游戲直播帶來了有趣的高能打點交互體驗。此后,這一系統在B站LOL賽事直播中得到了廣泛應用,除了S賽,還成功支持了包括LPL聯賽、SMI、沙特杯等多項頂級賽事的直播。
我們的高能打點功能也不斷推陳出新,旨在讓每一位觀眾都能以全新的視角享受比賽,捕捉每一個激動人心的瞬間。
接下來,我們將介紹B站在LOL賽事直播中游戲識別技術的應用和發展,希望能夠為電子競技愛好者、賽事組織者以及技術開發者提供有價值的見解和參考。
圖3 比賽直播畫面截圖
如圖3所示,賽事直播視頻信息相當密集,它包含了多種模態的數據,如文字、圖標、語音等。這些信息以不同的形式呈現,例如實時比分、英雄信息、經濟情況、擊殺事件播報等。
這些數據靜態呈現在直播畫面中,為了能以互動的形式展現給觀眾,提高觀賽沉浸感,我們首先要提取這些關鍵信息,通過算法對直播畫面進行分析,識別出畫面中的關鍵元素,并理解它們之間的相互關系。
對此,我們基于現有的AI技術開發了一套游戲識別系統,通過文字識別提取畫面中的文字信息、通過目標檢測定位關鍵圖標、通過目標分類確定事件類型,并將這三種技術有效地串聯起來,形成一套完整的技術鏈路。
圖4游戲識別pipeline
最終我們將分散的信息整合起來,生成一個連貫的賽事敘事,為觀眾提供更加全面的比賽視角。借助文字識別、目標檢測、分類等技術手段,我們完成了一套如圖4所示的從信息提取到信息分析,再到信息整合的多模態識別鏈路,最后將高能點呈現在時移進度條中,并為觀眾提供互動功能。
3.1. 文字識別
光學字符識別(OCR)作為一項成熟的AI技術,在計算機視覺領域有著廣泛的應用。LOL賽事直播畫面中包含著大量的文字信息,如圖5、圖6,畫面頂部區域顯示了紅藍戰隊名稱,游戲時間、擊殺比、經濟情況,中間區域則會在出現擊殺等事件時以文字的形式播報具體的事件內容。
圖5 頂部區域局內數據
圖6 中間區域的事件播報:從上到下分別為擊殺煉金龍,雙殺,擊殺男爵
結合文字識別及特定的規則,我們準確從頂部區域提取出了游戲時間、戰隊名稱等9個字段,以及中間區域的事件字段。通過這兩塊信息,我們將其轉換為“游戲開始”、“第一滴血”、“三殺”、“四殺”、“五殺”、“擊殺遠古生物”等高能點,如圖7所示。
圖7 進度條中的高能點
3.1.1. 訓練數據合成及模型微調
雖然開源的OCR模型可以兼顧大部分字體及場景,但不能保證能夠完全適用于LOL游戲畫面中的文本場景,因此常出現由模型的泛化能力問題導致的識別精度下降,而整個游戲識別鏈路中的抽幀環節會放大這一缺陷,因此我們需要盡可能提高識別的準確率。
游戲文字識別是一個很典型的OCR垂類應用場景,要提高識別精度,自然免不了在該場景下的數據合成及訓練。對此我們分析了頂部區域和中間區域的組成方式,整理出了文字對應的字體、顏色,以及可能出現的單詞,并將它們和游戲畫面的背景組合起來,實現了對真實數據的模擬。
最終,我們基于上萬條合成數據,完成了針對游戲中的文字識別的微調訓練,文字識別準確率從90%提升至99%,而較小的模型復雜度也能讓其在T4 GPU上達到33ms的推理速度。
3.1.2. 識別結果的結構化處理
文字識別精度提高之后,我們面臨的另一個挑戰是:模型只能提供識別結果,但無法將它們和目標字段精準匹配。例如,當我們得到一個識別結果“42:14”時,系統并不知道其對應的字段是比賽時間。此時,需要對文字識別結果做結構化處理,來確保將文字信息順利流轉到后續模塊。
我們了解到,官方直播畫面中的文字布局遵循嚴格的規范,有一套固定的模板。基于此,我們深入分析了賽事視頻畫面中各個字段的位置,掌握了字段間的相對位置關系,并據此開發了一套專門用于區分不同字段的識別規則。
最終,我們不僅能夠識別出畫面中的文本內容,還能通過結合文本內容和文本位置,準確判斷出當前畫面中的高能事件。這一創新的方法極大地提高了系統對游戲畫面中關鍵信息的理解和處理能力,為后續的模塊提供了更加準確和豐富的數據支持。
3.2. 英雄識別
單獨依靠特定區域的文字識別結果來判斷高能點,有時會出現漏檢誤檢情況,如圖8所示,在局內回放過程中出現高能事件時,畫面中間同樣會以文字的形式進行播報并被文字識別模塊識別出來,最終導致同一高能事件的重復打點,因此需要聯合其他的識別信息做近一步的判定。對此,我們在系統中引入了英雄識別模塊來解決這個問題。
圖8 高能事件回放影響文字識別
對于經常觀看LOL比賽直播的觀眾來說,一個熟悉的場景是:當發生英雄擊殺或擊敗遠古生物時,畫面右下角會顯示擊殺方和被擊殺方的頭像圖標,如圖9所示。利用這一視覺特征,我們利用自主研發的英雄識別模型,在特定區域內首先檢測出雙方在本局比賽中使用的英雄。接著,我們識別并分析擊殺事件區域中的擊殺關系,最終結合文字識別模塊的事件識別結果,以確定高能事件。
圖9 英雄識別區域:局內使用英雄(紅框)及擊殺事件(綠框)
3.2.1. 英雄識別訓練數據的構造
正如文字識別一樣,英雄識別模型的訓練同樣面臨著真實數據匱乏的挑戰。我們能夠獲取的數據往往僅限于官方提供的原始CG頭像,這與實際游戲直播中的情況大相徑庭。
在直播中,英雄頭像會受到多種復雜因素的影響,例如畫面分辨率的變化以及視頻流傳輸過程中的失真,這些都可能對模型的識別準確性造成干擾。此外,英雄頭像的顯示效果還會受到游戲背景畫面不同區域的影響,這種變化性進一步增加了識別的難度。
為了應對這些挑戰,我們精心構建了一個包含多種復雜場景的訓練數據集,特別是加入了模擬低分辨率、光影變化、特效覆蓋等情況的圖片,以增強模型的魯棒性。此外,我們還運用了復雜的數據增強技術,通過旋轉、縮放、模糊處理等方法來豐富數據集,確保模型能夠適應多樣化的直播場景。
通過精心設計的數據構造和增強策略顯著提升了英雄識別模型在復雜環境下的識別效果,實現了97%的識別準確率。同時,我們對模型結構進行了優化,確保其在T4 GPU上的推理速度最快能夠達到8ms。通過這些改進,我們的模型不僅在準確性上取得了突破,而且在性能上也滿足了實時處理的需求。
3.2.2. 識別結果與時序信息的結合
在英雄識別模塊的基礎上,我們進一步增強了系統的功能,引入了擊殺事件的時序信息分析。
具體而言,一旦我們的系統檢測到擊殺方與被擊殺方的圖標組合,我們便會記錄它們的出現時間,并與文字識別模塊捕獲的事件時間點進行比對,以確定它們是否屬于同一事件。如果圖標和相關文字在短時間內連續出現,我們便能夠較為準確地判斷這是同一高能事件,從而避免重復標記的問題。
此外,我們的系統還集成了事件去重功能。當系統在短時間內多次檢測到相似的事件組合時,它會自動進行篩選,僅保留最具代表性的時間點作為該高能時刻的標記。這一功能的加入,不僅提高了事件識別的準確性,也確保了直播中高能時刻的精準捕捉和呈現。通過這些創新的技術手段,我們的系統在處理復雜多變的直播場景時,展現出了更高的效率和可靠性。
3.3. 熱區識別
我們的游戲識別系統不僅提供了高能打點功能,在比賽過程中,我們還希望觀眾能夠隨時查看每位選手及隊伍的實況數據,實時掌握賽事局勢,從而更好地參與和體驗觀賽樂趣。
我們在視頻流中加入了SEI(Supplemental Enhancement Information)標記,用于傳遞當前畫面中的熱區識別數據,其在前端表現為:系統根據用戶鼠標停留位置實時渲染懸浮數據框,動態展示該區域的詳細數據,從而實現實時數據的可視化反饋。
如圖10、圖11紅框所示,一旦熱區數據展示功能被觸發,它將展示選手的個人數據以及各隊伍的經濟圖表、英雄發育情況和符文天賦等關鍵信息。
圖10 觸發選手數據懸浮展現
圖11 觸發數據面板懸浮展現
3.3.1. 熱區智能識別與交互優化
圖12 觸發區域:左側選手欄、右側選手欄、下方英雄欄
在圖12所示的畫面中,左側選手欄、右側選手欄和下方英雄欄這三個熱點區域被設計為觀眾可以通過鼠標懸停來觸發局內選手數據及隊伍數據的展示。
然而,一個潛在的問題是,如果僅依據鼠標在預設熱點區域的停留來判斷,可能會發生誤觸發的情況。這是因為在直播過程中,這些區域并非始終可見,當畫面中出現高能回放、插播廣告等場景時,預設的熱點區域可能會被其他內容覆蓋,這時若觸發數據展示功能,將嚴重影響用戶的交互體驗。
為了解決這一問題,我們采用了一種“驗證預設熱點區域是否為真實熱點區域”的方法。具體來說,我們利用自研的目標檢測模型來識別當前直播畫面中可能存在的熱點區域,并將這些檢測出的熱點區域與預設的熱點區域進行IOU(交并比)計算。基于IOU的計算結果,我們決定是否抑制或激活懸浮展示功能。實際效果證明了這種方法的有效性:采用熱點區域識別技術后,熱點數據展示功能的漏檢率降低到了0.3%,而誤檢率則降至0%。
通過這些技術的應用,我們不僅提升了觀眾的觀賽體驗,還使得賽事的數據分析更加直觀和便捷,讓每位觀眾都可能成為賽事分析的專家。
04 總結與展望
通過對LOL賽事直播中關鍵事件的自動識別和分析,B站在游戲識別技術方面取得了顯著的提升。我們的技術涵蓋了從文字識別、目標檢測到多模態信息融合等多個領域,構建了一條完備的高能打點和互動呈現的技術鏈路。觀眾現在可以通過進度條上的高能點直觀地回顧賽事中的精彩瞬間,也可以訪問熱區查看實時賽事數據,這種互動式的觀賽模式極大地增強了觀眾的參與感和對賽事的關注度。