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站在游戏识别技术方面取得了显著的提升。我们的技术涵盖了从文字识别、目标检测到多模态信息融合等多个领域,构建了一条完备的高能打点和互动呈现的技术链路。观众现在可以通过进度条上的高能点直观地回顾赛事中的精彩瞬间,也可以访问热区查看实时赛事数据,这种互动式的观赛模式极大地增强了观众的参与感和对赛事的关注度。