用于游戏事件的可扩展词典

文档序号:74786 发布日期:2021-10-01 浏览:94次 >En<

阅读说明:本技术 用于游戏事件的可扩展词典 (Extensible dictionary for game events ) 是由 吉姆·万·威尔森 杰克·万·威尔森 于 2021-01-15 设计创作,主要内容包括:游戏无关事件检测器可用于自动识别游戏事件。用于检测事件的事件数据可以以人类和过程可读的形式写入事件日志。事件数据的描述性文本可以来自在实质上是分层的公共事件词典,使得相同类型的事件跨不同游戏相关,即使那些事件的确切本质或外观可能不同。事件数据可用于不同目的,诸如生成突出显示视频或提供玩家性能反馈。(A game independent event detector may be used to automatically identify game events. Event data for detecting events may be written to the event log in a form readable by humans and processes. Descriptive text of event data may come from a common event dictionary that is hierarchical in nature, such that events of the same type are related across different games, even though the exact nature or appearance of those events may differ. The event data may be used for different purposes, such as generating a highlight video or providing player performance feedback.)

具体实施方式

图1A示出了根据至少一个实施例的可被渲染用于游戏的示例显示100。在该示例中,游戏是第一人称射击式游戏,其中玩家要引导化身102或可玩角色通过场景或虚拟环境,以便执行不同任务。在该示例中,这些任务包括射击目标110,但在各个实施例的范围内也可执行不同其他类型的任务。在至少一个实施例中,游戏会话可以持续多达指定的时间量,直到命中所有目标,或直到满足另一这样的结束标准。可以离线或在线玩游戏,诸如玩家可以与一个或更多个其他玩家竞争以尝试首先完成当前级别或会话的任务等。

如图所示,可存在被渲染以供显示的不同玩游戏对象,如可包括玩家的化身102、该化身持有的武器、目标110、建筑物、背景元素等。这些对象及其位置可在玩游戏期间显著改变。除了这些玩游戏对象之外,还存在用户界面机制用于向玩家传达某些类型的信息。在图1A的示例显示100中,第一界面机制104被显示在所渲染的图像的顶部附近。该机制(通常被称为状态栏或平视显示器(HUD))向游戏的玩家或观看者传达特定类型的信息。在该示例中,HUD显示器在当前玩游戏会话中剩余的时间量,以及关于用户已经成功命中或攻击目标的级别中的目标的数量的信息。在图1A的示例中,玩家正在会话中与竞争者比赛,并且HUD因此显示玩家和竞争者两者的状态,指示每个命中目标的数量。

可以有各种情况或用例,其中执行任务或动作的玩家可能有兴趣确定。这可包括例如当要在游戏会话中为感兴趣的事件创建突出显示片段视频或视频蒙太奇时,或当会话的玩游戏数据要被用于玩家分析或指导时,以及其他此类用例。在至少一些实施例中,可能令人期望的是确定某些类型的事件何时发生在游戏会话内以便记录该数据、或抓取表示那些事件中的一个或更多个事件的视频片段(“视频剪辑”)以及其他此类选项。在一些实施例中,游戏开发者可在游戏代码中放置可帮助从游戏内确定这些事件的钩子或触发器。然而,在一些实施例中,事件确定可以由可能无法访问代码或内部游戏数据的第三方或第三方设备执行。

在至少一个实施例中,可以分析表示游戏会话的媒体。这可以包括例如游戏会话的音频和视频流,或者为游戏会话捕捉和存储的音频和/或视频数据,以及其他这样的选项。媒体可被分析以检测或标识游戏中特定发生或事件的存在。这可包括游戏中的任何事件或发生,诸如可涉及对象或角色的出现或消失、角色的死亡或复活、物品的使用、开关的激活、物品的集合、成就等。在一些实施例中,可以分析媒体数据以尝试通过检测音频、视频、文本或其他这样的游戏内容中的那些特定动作来确定这些事件。

然而,在许多实例中,将花费大量的训练数据以便训练模型、或努力对算法进行编程,从而通过可以表示不同事件的方式来检测这些事件。例如,射击游戏中的杀死可以以许多不同的方式发生,从许多不同的角度到许多不同的角色,并且在不访问游戏代码的情况下,尝试训练模型、或编程算法、或使用计算机视觉来尝试检测所有这些事件生成可能是重大挑战。

然而,对于不同类型的事件,在游戏中可以存在特定类型的动作或发生,这些动作或发生可以在不需要复杂的模型训练或算法编程的情况下被检测到。再次考虑图1A的显示100。在本实施例中,HUD104表示各玩家的剩余目标的数量。每当玩家成功和/或完全击中目标110时,HUD被更新以反映该事件。类似地,每当玩家从对手遭受显著损害时,在屏幕上的状态消息106中显示的生命值或防护值将减少,并且获得力量、防护或装甲也可导致这些数量增加。另一状态消息108显示当前武器的弹药量。每当玩家获得新的武器时,弹药(或者力量、显示等)图标可相应地改变。对于这些状态消息或显示中的每一个,它们可以以非常相似的外观发生在大致相同的位置,并且可以以非常良好定义的方式改变。因而,至少某些类型的事件的检测可以通过监视与涉及游戏中的化身、对象和玩家角色的实际玩游戏相关但不同的这些和其他类型的信息、图标或内容呈现的改变来确定。

图1B示出了游戏会话中稍后时间的后续显示150。在该显示中,可以看到,在仅仅几秒钟的时间内,对于图1A的显示100,玩家击中了两个附加目标。这通过HUD中的图标154的两个改变来反映。另一个状态显示示出了与击中目标的射击相对应的特定类型的弹药存在相应的减少。通过检测这些非常具体的改变,可以做出导致玩家击中两个目标的事件发生或一系列事件发生的判定。该事件的检测然后可用于多个不同的目的,如本文稍后更详细讨论的。还有可能产生对应于玩家击中的目标的音频声音等。

由于这样的方法正在寻找游戏中的特定类型的出现,或其他媒体内容,一组检测器可被用于检测可对应于感兴趣的事件的出现。在图1A和图1B的示例中,视频内容被分析(尽管在至少一些实施例中音频和其他内容也可被分析)。用于此类视频的检测器可包含尝试检测或识别特定模式、图标、文本或图像以及其他此类选项的检测器。进一步,因为图标、文本或其他内容将通常处于游戏显示器中的特定位置中,所以这些检测器可在显示器的对应区域或部分上运行,这可相对于在整个图像上运行多个检测器(尤其是对于高分辨率显示器)而节省大量资源。例如,在图1B中,示出了显示的被认为用于检测的部分或区域154、156、158包括在待检测的内容的预期位置周围的至少一些量的填充。在至少一些实施例中,期望不包括比必需更多的像素,以便降低资源要求并且提高检测速度。然而,在至少一些实施例中,期望具有足够量的填充(例如,在来自待检测的内容的预期位置的一个或更多个方向上的“空间缓冲”),或考虑适当数量的额外像素,以允许轻微变化。变化可由于诸如屏幕内容的所呈现的抖动、分辨率或用户设置的改变、从视图出现或消失的对象等因素而发生。在一些实施例中,内容还可以随时间移动,或者外观改变。由此,在至少一些实施例中,要使用的填充量以及要分析的区域的数量可以是特定于游戏的。

图2A和图2B示出了可根据各个实施例分析的其他类型的游戏的示例显示200、240。图2A的显示200示出了为基于车辆的游戏呈现的图像,其中可以奖励玩家诸如执行技巧或对环境中的对象造成损坏的任务。对于此示例,检测器可用不同信息来分析对应于HUD的区域202,在此实例中,所述信息包含关于当前速度、技巧分数和损坏程度的信息。可以分析这样的信息以确定特定类型的事件,诸如导致突然减速的碰撞或导致快速加速的爆炸。特技得分在一个时间点或者在短时间段内的大的改变也可以指示一个或更多个感兴趣的特技。类似地,在一个时间点或短时间段的损坏分数的大变化可指示游戏中的感兴趣事件。用于分析的另一区域204可包括地图区域,该地图区域可包括游戏中玩家附近的对象或玩游戏元素的图标或图形元素,该图标或图形元素可对应于特定类型的事件而改变、出现或消失。检测器可被训练以检测地图上的这些和其他事件,这可指示感兴趣的某些事件。

图2B的示例显示240示出了针对基于高尔夫的游戏所渲染的图像。在该示例中,区域242被选择用于分析,该区域242包括关于游戏的状态的文本信息和更新。在此情况下,检测器可包含文本检测算法(如可包含OCR引擎和文本分析器)以确定何时显示或更新特定信息。此信息可包含(例如)某一洞上的摆动的当前数目、电流保持的改变,和其他此类信息。在如此的情况下,可能不一定是所显示的指示感兴趣的事件的信息,而是该信息中的特定类型的变化,如将指示将双鸟球放在洞上。然而,可能的情况是,可以在某些时间显示附加信息,如指示“小鸟球”的文本或指示“好球”的图标,该图标还可以指示感兴趣的事件。

然而,如所提及的,各个实施例还可以分析或检测附加类型的信息以尝试更准确地标识感兴趣的事件。作为示例,图2C的显示280再次对应于基于高尔夫的游戏。除了分析HUD型数据292之外,还可以利用检测器来尝试检测玩游戏中的其他对象、特征、动作或事件。这可包括例如检测玩家化身的挥动动作286、检测高尔夫球的存在282和动作284、或检测环境290(诸如高尔夫球场)中的动作(或无动作)。在一些实施例中,还可以利用音频触发器或检测器。在该示例中,用高尔夫球杆击打高尔夫球的玩家化身将使游戏生成可被标识为匹配音频模式或剪辑的特定类型的声音288。该音频触发可以指示运动员击球的事件。这样的触发或事件可以用于快速标识游戏会话中用户击球的点数,并且类似的音频触发可以用于标识球何时落到地面等。不同运动、光流、音频和其他此类检测器、机器学习模型或经训练的神经网络可用于分析玩游戏的媒体流或文件以检测此类事件,这些事件可一起用于确定或识别潜在的感兴趣事件,并潜在地提供关于那些个体动作的更准确的描述。

图3示出了根据各个实施例的可以用于从玩游戏数据中检测事件的示例系统300。在该示例中,事件识别模块304(其在各个实施例中还可以采取设备、系统、服务或过程的形式)可以接受一个或更多个类型的玩游戏数据302作为输入。该输入可包括例如在媒体流中接收到的现场玩游戏、存储到可访问存储介质的已记录媒体、或实时渲染以供在播放器设备上呈现的媒体、以及其他此类选项。在至少一些实施例中,也可接收额外的游戏数据,只要这样的信息可用。这可包含文本、元数据、播放器输入(例如,音频、键击或按钮按压)或可用于辨识事件、确定将使用的检测器等的其他此类信息。在一些实施例中,这可以至少包括关于正在玩的游戏和/或正在分析其玩游戏数据的玩家的信息。

在此示例中,事件识别模块304可接收游戏会话的流上的所有视频帧,或可接收帧的取样,例如每100ms或每十帧一个帧。在一些实施例中,模块可接收所有帧,但仅分析此取样。待分析的帧(或其他内容)可被引导到预处理模块306,该预处理模块306可使用一个或更多个预处理算法来执行或管理各个帧的预处理。在该示例中,存储库308可以存储一组预处理算法,并且预处理模块306可以为内容选择适当的算法。在一些实施例中,待应用的算法可至少部分地基于待分析的内容的类型或先前预处理步骤的结果。在该示例中,可查阅游戏专用配置文件312,该配置文件312可指示要针对某一游戏执行的预处理的类型。在不同实施例的范围内也可以使用不同其他确定方法。

在至少一个实施例中,可以对一个或更多个视频帧执行依赖区域处理。当执行依存区域处理时,一个对象的检测或发生可触发针对帧的一个或更多个其他区域执行额外处理。例如,可以检测图标出现在视频帧的第一区域中。该图标的外观可指示视频帧中别处的附加信息的存在。然后,可以使用与该类型的附加信息相关联的一个或更多个检测器来分析该帧的一个或更多个对应区域。在至少一个实施例中,这样的对象或发生的检测可以触发检测器的序列或系列以尝试获得关于游戏状态的附加信息,无论是在音频、视频、用户输入还是其他这样的数据中表示的。可能的情况是,这些附加检测器中的一个或更多个在图标被检测到时未被启用,而是在这样的检测时被激活或触发。在一些实施例中,分析事件的组合以确定特定结果。例如,图标可能出现在指示特定事件发生的屏幕上,但这可能伴随有另一动作或显示,其指示关于引起该事件或受该事件影响的聚会或玩家的信息,以及其他这样的选项。

在本示例中,单独的视频帧可以具有应用的预处理算法序列。这可以包括例如首先从配置文件中标识要分析图像帧的哪个(哪些)区域。在此示例中,所述区域是由坐标或百分比界定的矩形。在一些实施例中,百分比可以是优选的,因为游戏可以以许多不同的可能的分辨率运行,并且如果使用离散坐标,则需要针对每个分辨率存储坐标或者需要执行计算来转换成不同分辨率的不同坐标。在一个示例中,区域规范可指示在宽度和高度上占据显示器的10%且在距显示器的顶部中心5%处的区域。这些值是高度可参数化的,并且可以针对各个游戏、级别、场景等来指定。如所提到的,给定的区域大小可以允许足够的填充以确保捕获预期的信息或内容。

对于被选择用于分析的帧的每个区域,可以应用一个或更多个预处理算法。这些算法可包括例如灰度缩放、色彩隔离、转换到HSV(色调、饱和度、值)色彩空间、放大、缩小、平滑、噪声移除、滤波、拉伸、扭曲或透视校正、以及其他此类选项。还使用不同其他图像或内容操纵技术。作为此示例中的最终预处理步骤,可将某一水平或类型的阈值化应用于选定区域的像素,以便提供至少一些水平的背景移除。如所提到的,在至少一些游戏中,感兴趣的内容(例如,文本)将对照游戏的背景显示。为了使检测算法(例如,可依赖于OCR的检测算法)更准确地起作用,阈值化可以用于移除(或应用特定值)背景像素,使得一旦被处理的区域看起来更像黑色和白色内容,特别是对于可能看起来更像内容OCR引擎的类型被设计来处理的文本。进一步,如果未在处理中充分移除或解释,那么例如抗混叠和掺合等方面可使OCR引擎的准确性降级。在适用的情况下,阈值处理还可以帮助去除暂态背景噪声。在此实例中,可接着将经预处理的区域的数据临时存储到高速缓存310或其他此类位置。

检测模块314或引擎(其也可以采取设备、系统、服务或处理的形式)然后可以从高速缓存310访问区域数据并且使用一个或更多个检测器来处理数据。在该示例中,游戏专用配置文件312可指定要使用的检测器,该检测器还可根据要分析的区域的选择或类型而变化。检测器可包括各种检测器类型中的任一种,如可涉及模式检测、图标检测、文本检测、音频检测、图像检测、运动检测等。检测模块314可从检测器储存库316或其他此类位置(如果尚未存储在本地存储器中)访问相关检测器。在不同实施例中,与HUD相对应的区域可以至少具有如本文其他地方所讨论的所执行的文本和图标检测。在附加游戏数据可用的情况下,检测还可包括用户输入分析,诸如用于检测对键盘、手柄、控制器等的输入或输入的组合。如果额外数据包含声音或网络摄像头视频,那么检测器还可寻找音频中的模式,例如其中用户做出指示事件类型的特定解释,或视频中的模式,其中用户做出指示事件类型的特定动作或运动。也可以分析其他类型的数据,例如玩家的可以指示动作或指示某些类型的事件的响应的生物测定数据。如所提到的,除了其他这样的选项之外,可以使用数据流来近似实时地或在使用存储的数据的玩游戏会话之后完成分析。可用的数据的类型然后可至少部分地取决于何时分析数据。

检测器模块314可以使用一个或更多个指定的检测器来处理帧的所选区域(或其他游戏内容),该指定的检测器可以生成一个或更多个线索或其他这样的输出,在该示例中,该一个或更多个线索或其他这样的输出可以被存储到本地高速缓存318。线索可以是指示或映射到事件类型的任何适当的线索。作为示例,游戏可指示头骨图标的数量,指示玩家在当前玩游戏会话期间已经引起的杀死数量。头骨数量的变化指示杀死事件。该示例使用案例中的视觉线索将是头骨本身,诸如出现在其先前不存在的位置处的第三头骨。然后,第三头骨的外观可以作为可用于确定对应事件的线索被传递。在至少一些实施例中,线索可以独立于线索意味着什么或给定线索指示的事件。在该示例中,检测引擎314可仅关注检测或确定线索,而不尝试确定事件。

可以令人期望的是,确定由所确定的(一个或更多个)线索所指示的一个或更多个事件或事件类型。在至少一些实施例中,这可由线索到事件转换模块320执行。该模块320可包括通过游戏专用脚本提供的逻辑,以从所确定的线索确定事件的类型。一旦事件类型被确定,在至少一些实施例中,期望以人类可读和过程可读的方式来提供或传达检测到的事件的信息。在该示例中,线索到事件转换模块320应用游戏专用脚本322或逻辑,并使用来自定义的词典324的术语来将线索转变或转换成符合所提供的词典的人类可读文本。各种检测器可以不同格式提供不同类型的输出,并且到事件转换模块320的线索可以提供至少一些水平的标准化,使得输出可以跨各种检测器进行比较。这在多个检测器可以检测相同事件的线索的情况下可能特别重要,这些线索然后需要适当地相关。这些线索可包括与检测到的文本、图标、运动、特征、图像、声音、姿势、生物测定等有关的线索。在至少一些实施例中,线索到事件转换模块320可包括链接或以其他方式的一个或更多个训练的神经网络,其可接受特定时序间或玩游戏时段的线索并推理以相应置信度值发生的事件的类型。在该示例中,经转换的事件数据然后可被写入事件数据日志326或其他这样的位置以供访问。如上所述,该日志可以是人类可读的,使得用户或开发者可以读取和理解日志数据。日志还可以以可由一个或更多个过程、算法或应用用来执行如本文所讨论的一个或更多个任务的格式存储数据,如可以涉及蒙太奇或突出显示视频的生成、玩家技能分析、玩家指导、游戏调整、玩家匹配等。在一些实施例中,事件数据日志将包括所有检测到的事件的数据,而在其他实施例中,日志可能仅存储某些类型或数量的事件的数据,或以至少最小置信度确定的事件的数据,以及其他这样的选项。在至少一些实施例中,检测的参数(诸如搜索区域、期望的线索、以及线索的状态变化到事件日志的映射)可经由人类可读脚本(例如,JSON-JavaScript对象符号)来配置。

在至少一个实施例中,一组检测器(如给定游戏的五个或六个检测器)的输出将是事件类型的匹配或不匹配,具有对应的置信度值或置信度水平。这些线索或其他值然后可被馈送到诸如可利用转换模块320中的游戏专用脚本322(例如,JavaScript)的进程,其可每帧执行附加的试探法。这些试探可以帮助改进事件匹配确定。例如,OCR检测器可能报告用于检测特定文本内容的匹配,但可应用启发法来查看该文本内容如何和何时改变,以及改变多少和在什么时间段上,以确定该事件是否实际上对应于特定应用的感兴趣的事件。这些启发法还可以帮助使得游戏不可知的事件识别模块能够每游戏使用脚本和配置文件来定制,所述脚本和配置文件描述将用于游戏的预处理和检测逻辑,以及用于对从核心检测模块314出来的数据执行启发式分析的每游戏脚本,在一些实施例中,也被称为事件检测引擎。

开发者或其他授权用户可提供关于待检测的感兴趣事件的信息。图4示出了包括可根据各个实施例利用的事件管理器402的系统400。在本示例中,已记录玩游戏数据可以离线方式被分析。用户可以访问事件管理器的界面以拉入已记录玩游戏的帧,这些帧可以由视频解码器404处理以便通过第一用户界面406生成个体帧的预览。用户然后可使用界面410的一个或更多个交互式控件来指定指示感兴趣的事件的一个或更多个帧区域。在许多实例中,在帧中可能没有指示此事件,使得用户可前进到视频中的下一帧或后续帧。如果用户注意到指示感兴趣的事件的东西,则用户可使用带有显示界面的控件来绘制或指示帧的区域,诸如围绕包括感兴趣的内容的区域绘制边界框。在一些实施例中,用户应在区域中包括一定量的填充,而在其他实施例中,填充可由事件管理器的工具逻辑408添加,以及其他这样的选项。用户可使用控件来将该区域与事件的类型以及要检测的内容的类型(诸如特定文本、图像、图标、模式等)进一步相关联。然后,可以将这些事件的信息(包括待分析的区域和相关信息)写入游戏的游戏专用配置文件312中。当与该游戏相关联的内容随后被接收到事件识别模块304时,可访问游戏专用配置文件以确定要分析的区域以及要执行的预处理和要用于该特定游戏的那些区域的检测器。

如所提到的,在各个实施例中,检测引擎或模块是游戏不可知的,但是允许插件和脚本以使得其能够针对特定游戏来定制。这可以包括例如不同触发和稳定因子的规范。本机核心检测引擎将不知道视频对应的游戏,但是将具有关于要分析的区域和要执行的预处理的信息,以及要用于事件匹配的任何模型。在至少一个实施例中,当模式位于先前帧中不存在的帧中时,引擎可使用状态机来触发所发现的触发。当模式在那里但是它已经改变时,例如在文本改变的地方,改变的触发可以到来。还可能存在丢失的触发,其中图像先前存在但在该帧上不再存在。在至少一个实施例中,这些触发可由可配置且可参数化的稳定性阈值来控制。用户可指定期望在至少指定的时间样本时段内以至少最小置信度检测图像。作为示例,规范可以指示期望在三个样本上以至少80%的置信度来检测该区域中的图像或图标,诸如其中采样率是每100ms。如所提到的,当期望生成或过滤事件数据时,可以在事实之前或之后为某些类型的事件建立特定触发。

事件识别引擎304可以是整体框架或平台的一部分,该整体框架或平台使得能够使用各种类型的游戏数据来检测、传递事件、以及出于各种目的对事件进行操作。这样的框架的优点是,它可以使得用户能够提供插件来添加要使用的不同类型的检测器,以及定义要检测的附加类型的事件。用户还可以选择哪些类型的事件对于特定游戏或应用感兴趣,以及要记录、存储或传达的输出的形式。用户还可以指定管线的输出的类型,诸如事件数据是否应当被写入日志、存储到中央储存库、直接转发到目的地以供处理等。

在一些实施例中,用户还可指定将对事件数据执行的至少一些处理级别。例如,在一些实施例中,用户可能想要为玩游戏的片段自动生成突出显示视频或蒙太奇视频。在一个实施例中,这可以使得应用读取事件日志以识别满足用于包括在要生成的视频文件中的一个或更多个标准的事件。这些可以是例如突出显示视频的一般标准,或者可以是游戏、用户、会话、或实例特定标准,诸如生成仅示出杀死、崩溃、或特定类型的事件的视频。该标准可被应用于例如事件日志中的事件数据以及满足该标准的事件被标识。对于视频创建,这然后可以使应用从所存储的玩游戏会话视频的副本拉取对应于那些事件的视频段。这些可以包括例如在玩游戏会话中的事件的时序之前和之后的视频帧的数量或持续时间。持续时间或数目可部分取决于游戏和事件类型。然后,可以将片段与对应的音频和与事件有关的可能添加的文本或附加内容串在一起,并且然后提供以供显示。该视频对于游戏的玩家可以是可用的,或者对于不同使用情况并且在允许的情况下对其他用户或观看者是可访问的。这样的视频也可以用于其他目的,诸如用于电子体育运动员的表现回顾和指导。

在一些实施例中,一个或更多个检测器可以对应于经训练的机器学习模型,如经训练的神经网络。可针对特定游戏训练这些模型以检测对应于感兴趣的特定类型的动作的特定动作、对象、运动或发生。也可使用如本文论述的其他检测器,如可涉及字符辨识算法、光流机制、特征辨识等。

在至少一些实施例中,由于内容可能在游戏之间显著改变,所以进行游戏专用定制可能是令人期望的。尽管诸如一品种狗的对象在实际视频中可能具有相对一致的外观,但是该品种的艺术表现可能在游戏之间显著变化。诸如武器的对象可具有跨游戏并且甚至在游戏内变化的各种各样的外观,使得至少某一级别的游戏专用训练或事件定义可被用于改善性能。利用外观和位置两者相对一致的HUD或其他类型的信息显示的方法也可以帮助提高准确性并降低定制,而不是尝试基于在整个游戏会话过程中外观可能变化很大的对象来识别动作。此外,可以应用能够进一步改变游戏的外观和功能性的玩家定制,但是HUD的任何改变很可能在整个游戏进程中是一致的。

在一些实施例中,事件数据也可以用于修改玩游戏的方面。例如,在单玩家活动进程中,游戏可以基于事件数据中的信息来调整计算机AI的敌人数或难度。对于在线游戏,初级或新手玩家可能接收到用于基于检测到的事件改善玩游戏或理解如何玩游戏的线索。除了其他这样的选项之外,玩家还可以与类似的玩家或具有兼容的技能类型的玩家匹配。如果玩家基于事件数据看起来比另一类型的迷你游戏或玩游戏风格更喜欢一种类型的迷你游戏或玩游戏风格,则游戏可选择调整呈现给用户的游戏选项的类型,以使游戏更令人愉悦。根据各个实施例,也可以进行不同其他修改。

在至少一个实施例中,可以使用基于计算机视觉和机器学习的技术来处理游戏内容以检测事件。在至少一个实施例中,可分析游戏内容以识别场景中的特定类型的特征,如可包括发生玩游戏的场景、在游戏会话中识别的与玩游戏有关的对象、以及在一个或更多个游戏会话期间由玩家(或化身或玩家控制的玩游戏元素)执行的动作。在至少一个实施例中,可以针对游戏场景分析一个或更多个玩游戏片段,并且训练的神经网络模型可以生成表示针对该游戏场景确定的特征的关键词集。在至少一个实施例中,这些关键字可被聚集并被传递到检测引擎。

在至少一个实施例中,每个游戏训练至少一个神经网络。在至少一个实施例中,每个游戏将训练一组神经网络,其中训练不同的网络以识别不同类型的特征,诸如场景、动作或对象。在至少一个实施例中,可训练可用于跨各种游戏或至少跨具有至少稍微相似的玩游戏的特定类型或类别的游戏进行推理的网络。在至少一个实施例中,可以训练第一模型以识别类似第一人称射击者的游戏类型的特征,而可以训练另一模型以识别类似平台或第三人称冒险游戏的游戏类型的特征,因为将存在要检测的不同类型的特征。在至少一个实施例中,要检测的特征的类型可以随游戏或游戏类型而变化。在至少一个实施例中,这些模型的训练数据可包括视频流,该视频流包括要为该游戏或游戏类型识别的类型的特征的注释。在至少一个实施例中,手动或利用建模辅助来执行这些注释。在至少一个实施例中,模型可以被配置为输出具有对应置信度值的一个或更多个检测到的特征关键字,并且具有较高置信度值或至少满足最小置信度标准的值的关键字可以用于更新玩家简档或生成推荐。

图5示出了其中可以实现各个实施例的方面的示例性游戏环境500。在该示例中,玩家可以利用玩家设备502通过游戏应用510玩游戏。玩家设备502可以是包括至少一个处理器514、非暂态存储器516和存储器512的任何适当的设备,用于执行游戏内容,或者至少用于接收游戏内容并且使用显示器508、耳机548或其他这样的机制使该内容被呈现给玩家。这样的设备包括例如台式计算机、笔记本计算机、智能电话、平板计算机、游戏控制台、机顶盒等。在一些实施例中,游戏可以具有一个或更多个在线方面,其要求玩家设备502通过至少一个网络504与至少一个游戏服务器518通信。一个或更多个网络可以包括用于传送游戏数据的任何适当的网络,如可以包括有线或无线网络、互联网、蜂窝网络、以太网、局域网(LAN)、对等网络等。游戏服务器可以主持游戏会话,该游戏会话可以涉及使用其他玩家设备520的玩家,这些玩家设备通过网络504中的至少一个进行通信,该网络504可以与玩家设备502所使用的相同或不同。

如所提到的,在一些实施例中,将期望针对这些玩家中的一个或更多个玩游戏会话执行事件检测。在不同的实施例中,事件检测可以在玩家设备502上、在游戏服务器518或相关设备上,由来自提供者环境506的第三方服务或资源提供者、或由第三方内容提供者系统542执行。在一些实施例中,实体可以起到一个或更多个这些作用。对于诸如音频和/或视频之类的媒体被分析的实施例,该数据可被存储到任何适当的位置或从任何适当的位置流传输。例如,玩游戏媒体可被存储在其被显示的玩家设备502上、负责管理游戏状态的游戏服务器518上、或接收内容流的第三方系统或环境542、506上。类似地,尽管在此示例中将事件检测示出为由资源提供商“在云中”执行,如可以作为事件检测服务的一部分来提供,但事件检测可以由这些或其他方在这些或其他此类系统或设备中的任一者上执行。

在该示例中,媒体流可从播放器设备502跨网络504被发送到资源环境506以执行事件检测。如所讨论的,资源环境的组件中的至少一些可以在播放器设备上具有对应物以执行相同功能中的至少一些功能。不管位置如何,媒体数据可以被接收到接口或接口层522,该接口或接口层522可以将媒体引导到适当的目的地。接口层可包括不同组件,诸如(但不限于)一个或更多个应用编程接口(API)、路由器、交换机、负载均衡器、网页服务器等。在该示例中,媒体可被定向到事件管理器524,事件管理器524负责使得媒体被分析和确定的事件数据可用,诸如可用于具有资源提供者的账户的授权用户。如关于图3所讨论的,事件管理器524可以将媒体传递给事件识别引擎526,事件识别引擎526可以利用游戏专用配置530和来自事件管理器528的脚本数据532来检测事件,事件可以被传递给事件数据管理器536并被写入事件日志534。事件数据管理器还可将游戏数据538和对应于事件数据的用户数据540存储在事件数据日志534中。事件管理器524然后可以使该事件数据对于适当的实体可用。这可包括例如向玩家设备502提供事件数据,玩家设备502随后可使用玩游戏媒体的本地副本来生成游戏会话或跨来自多个游戏会话的所存储的重放的突出显示视频或蒙太奇。类似地,游戏服务器518可以接收事件数据以生成在线游戏会话的突出显示或蒙太奇视频,其随后也可被其他玩家设备520上的玩家查看。在在线视频托管或流式传输的情况下,可使用事件数据来生成突出显示视频,该事件数据随后可由第三方内容提供商542变得可用,诸如或Facebook 诸如可使用来自NVIDIA的GeForce 来广播。

在一些实施例中,可以使用附加数据来提高如在此所讨论的事件检测的准确度。该数据可包括例如使用一个或更多个生物测定跟踪器544(诸如健身跟踪器或心率监视器)捕获的玩家的生物测定数据。该数据可以包括由网络摄像头捕获的玩家在游戏进行期间的视频,该视频可以指示玩家在游戏进行期间的行为或外观的改变。头戴式耳机548或包含麦克风的其他设备(例如可包含网络摄像头)还可捕获用户的感叹或可对应于某些类型的事件的呼吸模式的改变。在各个实施例的范围内也可利用不同其他类型的数据以及用于捕获该数据的机制。

图6示出了可以根据各个实施例利用的用于执行事件检测的示例过程600。应了解,对于本文论述的此和其他过程,除非另有说明,否则在不同实施例的范围内,可存在以类似或替代次序或并行地执行的附加、替代或更少的步骤。在该示例中,获得602对应于特定游戏的玩家的游戏会话的媒体。媒体可包括例如可在数据流上接收或从媒体存储装置传送的音频和视频数据,以及其他此类选项。可以诸如通过查看与特定游戏相对应的配置文件来确定604要对媒体执行的预处理的类型或量。在一些实施例中,预处理可以包括确定媒体的与感兴趣的指定事件类型相关联的一个或更多个区域。也可以执行这样的区域的进一步预处理,这可以至少部分地取决于媒体或事件的类型。例如,可处理音频数据以减少噪声。图像数据可经上取样、转换为另一色彩空间(例如,灰度级或HSV)且经阈值化以移除背景像素数据。可以使用各种其他类型的预处理以及在本文其他地方讨论和提出。可以执行606所确定的预处理以生成用于分析的一个或更多个经处理的事件区域。

为了执行分析,可以确定608要使用的一个或更多个检测器,如也可以在用于特定游戏的配置文件中指定的,并且可以至少部分地取决于要分析的媒体或事件的类型。如所讨论的,这样的检测器可以涉及对象检测器、图标检测器、OCR引擎、光流机制等。如果针对玩游戏媒体的特定帧、片段或实例标识了多于一个事件区域,则要使用的检测器也可以在事件区域之间变化。然后可以将所确定的检测器应用610到相应的区域。该示例中的检测器可以生成事件线索以及对应的置信度值。在一些实施例中,额外的启发法可以应用到这些线索以确定是否满足感兴趣的事件的标准。可做出612关于至少一个感兴趣的事件或指定类型的事件是否已被标识的确定。如果不是,则事件数据可被丢弃614。如果已检测到至少一个事件,则在一些实施例中至少具有最小置信度,那么可将事件的所产生线索变换616为文本描述以符合事件词典。该描述可以是过程和人类可读的,并且可对应于跨多个游戏一致的词典。然后可以使618文本描述存储到用于会话和/或玩家的事件日志中,如可以存储在游戏服务器、玩家设备或其他这样的位置上。如本文讨论和建议的,出于任何适当的原因或使用,可以使该数据对任何授权方可用。

图7示出了用于在视频数据在视频流上接收的情况下检测事件(如关于图6所讨论的)的示例过程700。在可以根据各个实施例利用的该示例中,可以在与游戏玩家的玩游戏会话相对应的视频流上接收702视频数据帧。可在该帧内确定704特定于游戏的事件区域。在至少一些实施例中,该区域可由游戏专用配置文件指定,如可对应于HUD或其他此类显示器的位置。可执行706事件区域的预处理以至少移除背景像素数据。这可以包括例如执行放大和改变到所确定的颜色空间、执行噪声去除、然后阈值化以去除背景噪声。如所提及,此预处理可产生实质上经二值化的图像,此可改进OCR引擎的性能以用于至少文本检测。可使用可由游戏专用配置文件指定的检测器在处理区域上执行708游戏专用角色、图标和/或对象检测以产生事件线索。可诸如通过使用各种启发法来确定710这些线索是否对应于特定游戏的感兴趣事件或指定类型。如果确定712检测到这样的事件,则事件的事件数据可被写入714到事件日志或其他这样的位置,并且可用于访问和使用。如果没有检测到事件,则可以丢弃716事件数据和来自处理的相关数据。

如所提到的,这样的事件数据可用于不同目的,诸如生成在游戏会话期间发生的感兴趣事件的突出显示视频或视频蒙太奇,或者用于玩家分析或指导。虽然对应于此类事件的视频片段的确定提供了重要价值,但是在至少一些情况下为那些片段或事件提供至少一定量的文本描述或上下文可能是进一步有益的。包括这样的文本信息可以帮助提供关于事件的上下文(诸如在片段中表示哪个事件)和关于该事件的信息(诸如对应于该事件的动作或对象的类型)。此类文本信息的生成还可帮助定位或标识此类事件,因为否则可能难以定位大的视频文件库中所表示的感兴趣的事件。

例如,可为包括竞赛、冒险、动作或体育迷你游戏的游戏生成突出显示视频。在没有某种类型的指导的情况下,观看者将必须跳过或快进整个视频以确定特定类型的小型游戏(如图2C中所示出的高尔夫小型游戏)的片段。根据各个实施例的方法可包含此视频中与每一片段相关且可提供至少某一量的上下文的文本。该上下文不仅可以帮助理解在特定片段中发生什么,而且还可以帮助定位该内容。例如,在图2C的高尔夫场景280中,可以包括文本以指示玩家正在“打高尔夫。”这不仅可以与片段一起显示以提供例如在屏幕上显示的内容的上下文,而且还可以用于在突出显示视频中定位与打高尔夫球相关的片段。在一些实施例中,观看者可以将此用作过滤器,以仅显示玩家正在打高尔夫球的地方的片段。这样的方法还使得能够生成自定义剪辑画面或精彩片段视频,其中用户可指示事件的类型,并且与该类型的事件相关联的片段可随后被组装以供呈现。通过使用事件词典,用户能够快速指定感兴趣的事件,并且视频生成系统能够使用来自该公共事件词典的项来快速标识相关片段。

这种方法还使得用户能够查看感兴趣的特定事件。虽然示出玩家打高尔夫球的片段在尝试分析玩家如何使化身挥动球杆时可能是有帮助的,但这些片段中的许多片段可能与其他类型的事件有关。使用根据各个实施例的分层词典的术语,用户可以指定更具体的事件类型来快速查看相关的视频片段。例如,使用者可以输入询问,如“挥球杆”或者,如果看特定类型的挥杆,“挥杆驱动器”或“猛击高尔夫球。”使用这样的特异性可以使用户能够快速定位感兴趣的事件的类型。快速搜索能力对于指导也可以是有益的,诸如在指导试图回顾运动员的特定动作的情况下,诸如从球座驱动高尔夫球。教练或运动员在一些情况下能够提供进一步的特异性,如搜索指示“切高尔夫球”的片段以确定运动员错误地做什么而导致特定类型的动作发生。

在至少一些实施例中,事件词典324可由事件识别模块304用来生成描述玩游戏数据中所确定的事件的文本,如图3所示。在一些实施例中,该文本可被存储到事件数据记录326,如本文讨论的用于后续分析。词典324然后可用于解释或相关存储在事件日志中的事件数据。如所讨论的,词典324可包括至少具有要用于跨多个游戏和/或日志的事件描述的共同术语的公共词典。在至少一些实施例中,词典还可包括扩展,如可以是游戏或游戏类型特定的。

图8示出了可根据各个实施例使用的示例性事件词典配置800。这种配置800可用于生成词典,该词典对描述跨广泛的一组游戏或类似活动发生的事件有用,该词典从解释执行事件检测的多个组件中抽象出多个组件以实现使用情况。这样的词典还可利用自然人类语言语句来生成要被提供的无状态叙述,该无状态叙述可按可被容易地产生和消费的格式表示事件,而无需关于生产者和消费者之间的状态的协定。这样的配置可以用于提供事件的公共分层基础词典和用于多方扩展该词典以将描述游戏的努力减少到仅对游戏唯一的那些方面的机制。

图8的配置800示出了如何使用可扩展事件词典来生成事件日志。如图所示,事件日志802可以是特定事件的实例的特定集合,其中该事件日志可被分解成作为语句实例的特定集合的语句日志。该事件日志802可使用在公共词典804中定义的事件和词。如图所示,还可以存在一个或更多个游戏专用库806,其扩展公共词典以包括特定于特定游戏或游戏类型的术语。

如图所示,事件词典可以是事件集合和单词集合两者。事件可涉及对应于动作或属性改变的一个或更多个语句的模式,但在各个实施例的范围内也可使用其他可能性。在这种情况下,属性变化可以由主题的模式、属性或值组成。这可以对应于例如玩家在游戏中的某个点校平或者改变到不同的角色以及其他这样的选项。这样的属性的改变可以被标识为例如可能期望提供文本上下文的感兴趣的事件。这种特性的改变还可以是教练或演员可能想要查看的事情,以确定特性的改变是否是在良好时间进行的良好改变。这样的文本还可以帮助用户跳到视频中玩家改变给定属性的点。例如,如果属性涉及化身进入无声模式,则玩家可能想要跳过突出显示该化身处于无声模式的位置。如果玩家例如通过与敌人接触而转变到较低功率模式,教练可能想要能够查看该玩家进入较低功率模式的实例以尝试确定这些特性改变的原因。

语句还可以是由类似于人类对话的单词模式组成的动作语句。在各个实施例中,语句必须包括主语、动词或对象中的至少一个。在一些实施例中,语句必须至少包括动词以有资格作为动作语句。例如,在一些实施例中,“驱动”可以有资格作为动作语句。在其他实施例中,语句“玩家驱动”可以有资格作为具有主语和动词,而在其他实施例中,语句“驱动[a]高尔夫球”可以有资格作为具有动词和直接对象的动作语句,其中玩家是隐含的主语。在一些实施例中,动作语句可要求某些动作的某些模式,如可要求主语、动词和对象。例如,在没有指定玩家正在获得的对象的情况下,动作语句“玩家获得”在一些实施例中可能不够,因为否则该动作可能过于一般。对于其他动作语句,对象对于某个模式可能是不必要的,如“玩家跌倒”或“伙伴死亡。”

在该配置800中,词典的词可被分组成对象、动作和属性,尽管在其他实施例中也可使用其他分组。这些词可各自由名称、定义和母词来定义,除了有资格作为母词的那些词之外。在一些实施例中,词语可以具有纯文本定义,以及对游戏或网络有意义的定义。例如,为了训练网络以识别高尔夫球杆,可以向网络示出玩游戏视频,其中指示了高尔夫球杆。然后,网络可以开发然后可以用于确定事件的“高尔夫球杆”的内部定义或理解。在一些实施例中,可以使用纯文本定义来从词典确定适当的词,以及在词之间进行区分或者为给定词提供适当的上下文。母词可以帮助定义该词在词分级结构中的位置,这可以帮助分析在不同级别或跨游戏的事件。

例如,图9示出了可以使用这种过程生成的两个示例单词层级900、950。第一字层级或第一树900陈述不同层级处的动作。例如,在本示例中,“杀死”是“踩踏”的母词,尽管在其他动作树中可以存在针对踩踏的其他母词。本示例树中的主母词是“击败”所列出的每个词是击败动作的类型,其中词的水平与其特异性相关。类似地,第二词树950涉及武器,其中“枪”是例如用于“激光”的母词,“武器”是用于“枪”的母词。”

这种方法帮助搜索不同粒度级别的事件。例如,玩家可能想要查看与陈述“玩家杀死敌人”匹配的事件。”在这样的情况下,所选择的视频可以涉及匹配这些类型的击球中的任何击球的任何事件。然而,如果玩家对特定类型的击球感兴趣,则关于击球的类型,玩家可以更特定,诸如指定“杀死”以更特定,或者“停止”以更特定。树中越低,动作类型将越具体。在不同级别指定动作的能力使得用户能够准确地指定用户感兴趣的动作的类型,而无需获得太多的不相关片段或获得太少的相关片段。

建立术语层次的能力还有助于比较跨不同游戏或甚至不同类型的游戏的类似动作、对象或属性。例如,在一个游戏中,玩家可能通过用水炮弹出玩家的化身来击败对手。在另一游戏中,玩家可以通过用火箭筒射击对手来击败对手。这些动作在性质和外观上可能非常不同,但两者都对应于用武器击败对手。通过查阅在图9中的词树900、950,系统可以比较这些动作以聚集与对手击败武器有关的统计。使用分层术语来跨不同游戏关联类似事件的能力可提供对玩家的表现的附加洞察,以用于诸如指导或训练玩家的目的。这样的能力还可以实现跨不同游戏为玩家创建突出显示或蒙太奇视频,其中蒙太奇可能涉及该玩家在那些不同游戏中已经用武器终止对手时的不同方式。在没有这样的分层的情况下,系统可能难以使火炬处的火球的射击与喷枪上的涂料的喷射相关联,即使两者可能是涉及用武器击败对手的事件。

这样的事件词典可以帮助以服务于游戏视频中的事件的检测以及那些检测到的事件的消费两者的方式来表示检测到的事件。这样的词典可以有助于以可以通过检测过程写入的方式表示游戏中的事件或发生,该检测过程然后用于帮助适当消费那些事件。添加扩展或更新公共库的能力可以帮助处理向前进行的附加类型的事件,其中可以简单地通过指定树的适当母词将新词注入到现有词树中。在一些实施例中,公共词典可包括这些词树中较高等级的词,而扩展可包括特定于某些游戏或游戏类型的较低等级的词。在一些实施例中,公共词典可以包括具有处于所有级别的词的完整词树,并且扩展可以通过指定适当的母词来简单地将词注入到树中。在一些实施例中,公共词典将包括所有批准的基础词的层级,并且扩展中的词然后仅需要从公共词典指定适当的基础词。可能的情况是,新词将充当当前子词的更好母词,但是在至少一些实施例中可以通过对公共词典的偶然更新来处理这样的方法。

如图所示,事件词典不仅可以定义单词,而且可以定义用于表示游戏事件或其他这样的发生的常见语言。这种常见语言使得系统能够检测事件并且与消费该事件数据的那些人生成事件数据,并且使得那些系统能够甚至跨不同类型的游戏或内容有效地通信。应注意,在至少一些实施例中,这些词典不充当百科全书或规则书。词典中的字词提供对象、动作、属性和关系的名称的词汇表,但这些字词不定义它们的结构或逻辑。词典提供可用作日志语言或上下文语言而非编程语言的常见表达。

这样的词典也可被其他系统利用。例如,系统可执行数据挖掘以确定发生在某些游戏中的事件,或关于跨所有玩家或一组玩家的某些类型的事件的统计。另一系统可利用机器学习来尝试确定由玩家或玩家的组执行的复杂操控,诸如由团队执行的侧翼操控,以尝试考虑游戏开发中的此类操控。在人类可理解的文本中描述这些事件的能力,并且还能够使用该文本运行统计和分析,可以使得能够在游戏中和跨游戏执行不同类型的分析,以游戏和平台不可知的方式,并且不需要任何游戏开发者或发布者的协作。事件检测网络可被训练成使用来自适当词典的单词和语句来描述推理的事件。

如上所述,系统可生成在游戏期间发生的事件的蒙太奇或突出显示回放。使用这样的词典描述的使用事件,用户可指定要被包括在例如蒙太奇中的一个或更多个类型的事件。对于指导用例,这可包括玩家成功执行动作以及玩家未成功执行动作的事件。例如,在格斗游戏中,这可能包括玩家击倒对手以及玩家被对手击倒的事件。用户还可指定要从蒙太奇排除的事件的类型。在至少一些实施例中,用户可在跨多个游戏或游戏类型有用的级别上指定事件类型。在一些实施例中,玩家可能能够指定具有相同动作但不同对象的事件,诸如创建使用火箭发射器、枪榴弹发射器或导弹发射器执行的杀死剪辑画面。

这些事件的文本也可被包括在蒙太奇中。文本可作为元数据被包括,元数据可被显示在另一窗口中或用于搜索。文本还可以作为视频上的覆盖来提供,以提供在相应片段中发生什么的文本描述。该文本还可用于生成蒙太奇中的事件的概要,以供用于将蒙太奇发布到社交媒体并使得用户能够定位该蒙太奇。文本还可用于提供蒙太奇的书面概要,其可用于搜索或导航,但是也可以用于指导或学习,例如其中汇总可以指示每种类型的事件的数量,例如杀死的数量与死亡的数量、执行的每种类型的杀死的数量,等等。如本文中所呈现的事件词典的使用使得这些文本描述中的任一者或全部能够模仿自然语言。

在不同级别通过自然语言表达事件的能力使得能够跨不同类型的游戏挖掘数据。如所提到的,该数据然后可以被分析以不仅产生关于某些类型的事件的感兴趣统计,而且尝试确定跨不同游戏或游戏类型有效的策略。这样的方法可以帮助指导玩家改善他们在各种各样的游戏中的技能。这种方法还可以用于开发可以玩各种各样的游戏的机器人或其他自动化玩家,其可以帮助开发和测试游戏以及其他这样的优点。

在至少一个实施例中,词典可以用JavaScript对象表示法(JSON)表示并且通过应用编程接口(API)暴露。想要利用词典的系统然后可以使用适当的API调用来调用到词典系统中。可使用不同模式来将结构描述为语句,且额外JSON文档可提供对公共词典的扩展,如本文中所论述。这样的方法还可以用于跨最初不旨在与这样的过程一起使用的日志的数据挖掘,因为术语的分层可以用于将日志数据拟合在词典的语句格式内以便达到共同的语言。

也可以出于其他目的来使用以公共语言跨游戏的事件数据。例如,可以分析该数据以部分基于事件数据向玩家推荐新游戏。如果玩家倾向于执行某种类型的事件,例如杀死对手,多于大多数玩家,但不执行另一类型的事件,诸如获得可收藏夹,与其他玩家一样,推荐系统可能推荐涉及更多打斗和更少收集的游戏,即使玩家可能指示享受包括两者的游戏。此外,这样的信息可以用于确定玩家在各种游戏中缺少的技能,使得可以推荐游戏来改进那些特定的技能。如果用户倾向于使用某些类型的对象(诸如剑)多于其他类型的对象(诸如枪),则玩家可以被推荐具有玩家喜欢的对象的类型(诸如剑战游戏)的游戏。这样的数据可能难以从单个游戏确定,其中某种类型的武器的使用频率可在某种程度上由游戏控制,但是跨游戏分析数据的能力可以帮助检测给定玩家的可以用于推荐新游戏的使用模式,提供定向指导等。

在一些实施例中,开发者可生成游戏专用配置文件。开发者可以确定屏幕上的动作和对象到词典中的词的映射。在该实例中,开发者可使用那些词来生成训练数据,该训练数据可被用于训练游戏的事件检测网络。这可包括例如标记包括特定对象或对应于特定动作的帧区域。如所提到的,动作可以是在帧序列上发生的事情,或者可以从单个帧被指示,诸如杀死的数量或者在显示器上递增的级别的指示。经训练的模型接着可使用经映射的字来描述从视频片段或其他此类媒体推理的事件。

在一些实施例中,可在客户端设备(例如,包含用于执行所述处理的一个或更多个处理器(例如,CPU和GPU)的桌上型计算机)上执行事件的检测和描述。在一些实施例中,可以在游戏服务器上或者在游戏环境中执行该检测和描述。在其他实施例中,该功能可被提供为第三方服务(诸如来自云提供者),其中第三方服务可分析视频并生成内容(诸如蒙太奇视频),该蒙太奇视频是使用事件数据生成的并且包括使用来自至少一个相关词典的语句的事件的文本描述。在一些实施例中,该功能也可以在客户端设备流式传输玩游戏数据上执行,其在一些实施例中可以提供在流式传输玩游戏数据中发生的事件的实时文本描述。在一些实施例中,该功能性可以由流式传输服务器执行,以便使得文本能够被提供,而不管在其上呈现视频流的客户端设备的能力或配置如何。

在一些实施例中,可以提供一种工具,该工具可以帮助开发可以用于捕获特定游戏的事件的配置文件或游戏专用词典扩展。在这样的加入过程期间,可以确定将能够被跟踪的事件的类型。虽然一些事件可以跨游戏足够通用以便是可检测的,但是每个游戏通常将具有至少稍微不同的外观的对象和在其执行上至少稍微不同的动作,使得训练特定游戏的事件的工具可以是有益的。示例工具可以将游戏视频作为输入,并且使得用户能够逐步通过游戏视频以识别在显示器上发生的事件。用户可接着例如通过边界框或边界来识别显示器上的相关内容,且接着指示相关动作、对象、性质或陈述以及其他此类选项。然后,这可以被应用作为用于训练以及确保用于该事件的适当术语的标签。例如,如果多个凹口增加以指示另一个杀死,那么用户可以指定附加凹口并且映射到诸如“玩家杀死对手”的声明。在一些实施例中,事件还可以仅与动作“杀死”匹配。如果在屏幕上可获得使得能够指定附加上下文的其他信息,则用户还可以指定,如“玩家用镐斧杀死对手”,只要用户还能够在该片段中标记镐斧。这样的过程可定义可与给定事件相关联的模式检测器。然后,该工具可以将这些规则保存为配置文件,该配置文件可以成为用于该游戏的事件检测器的规则。在一些实施例中,这样的工具可以提供一些预处理以改进性能,诸如减少颜色深度或增加分辨率。

图10A示出了可以根据各个实施例利用的用于分析跨多个游戏的事件的示例过程1000。应理解,对于本文中所论述的此和其他过程,在不同实施例的范围内,可存在以类似或替代次序或并行地执行的额外、较少或替代步骤,除非另有具体说明。在该示例中,跨相同或不同游戏类型的两个或更多个游戏接收1002玩家的玩游戏视频。视频可从多个不同的源(诸如本地游戏应用、游戏服务器、云服务器等)接收。在各个实施例中,音频和其他媒体可与视频数据一起被接收。在该示例中,玩游戏视频被提供1004作为对被训练成标识玩游戏期间发生的事件的一个或更多个神经网络的输入。除了其他这样的选项之外,可存在跨所有游戏、每类游戏或每游戏使用的一个神经网络。进一步,可以使用其他类型的事件检测器,以及在本文其他地方讨论和建议。可从神经网络接收1006事件集合的数据,其中事件数据包括使用公共事件词典确定的文本。如这里所讨论的,也可以使用游戏专用词典扩展。事件词典可定义使用分层词来描述例如对应于这些事件的属性中的动作或改变的语句。可使用事件词典中的词分层来分析事件数据以确定1008针对两个或更多个游戏所推理的对应事件。例如,这些事件可对应于依赖于事件词典中的相同子词的事件。然后,可以分析1010相应事件的数据,例如以确定玩家关于事件的性能数据。性能数据可以包括诸如反应时间、使用的对象、成功率等信息。在该示例中,然后可以提供1012关于玩家表现的该信息以供查看或进一步分析。在至少一些实施例中,也可存储视频数据的对应片段,使得观看者可查看感兴趣的事件的玩游戏视频。玩家性能数据可用于各种目的,诸如向玩家指导或进行游戏推荐。

图10B示出了用于利用可根据各个实施例利用的所确定的事件的生成的文本描述的另一示例过程1050。在该示例中,可以针对游戏的玩家接收1052或者以其他方式获得玩游戏视频。这可以是从如在此讨论的任何适当的来源获得的任何适当的媒体。可以分析1054此玩游戏视频的至少一部分以确定在玩游戏期间发生或已经发生的事件。在至少一些实施例中,这些事件可使用如本文论述的事件检测器网络来确定。可以使用来自事件词典的文本来生成1056所确定的事件的描述。在至少一些实施例中,描述将由事件检测器网络在玩游戏视频分析和推理期间确定。在此过程中,可将视频的对应于所确定的事件的至少一个子集的片段与对应描述一起存储1058。在一些实施例中,仅存储某些类型的事件的片段,如可由授权用户指定的。在其他实施例中,整个视频可以与指示事件的位置的时序数据一起存储,或者描述数据可以在适当的事件时序被插入到视频中,以及其他这样的选项。可以使得视频数据可用于使1060观看者(如播放器或教练)能够定位和/或观看感兴趣的视频片段以及对应的描述。在一些实施例中,观看者可以使用来自事件词典的单词来定位感兴趣的事件,并且然后能够观看对应的视频片段。在其他实施例中,文本可用于连同视频片段一起提供事件描述,或可用于自动生成这些视频片段的剪辑画面的文本概要以及其他此类选项。

推理和训练逻辑

图11示出了用于执行与至少一个实施例相关联的推理和/或训练操作的推理和/或训练逻辑1115。下面结合图11和图12提供关于推理和/或训练逻辑1115的细节。

在至少一个实施例中,推理和/或训练逻辑1115可以包括但不限于代码和/或数据存储1101,用于存储前向和/或输出权重和/或输入/输出数据,和/或在一个或更多个实施例的方面中配置被训练为和/或用于推理的神经网络的神经元或层的其他参数。在至少一个实施例中,训练逻辑1115可以包括或耦合到用于存储图形代码或其他软件以控制时序和/或顺序的代码和/或数据存储1101,其中权重和/或其他参数信息被加载以配置逻辑,包括整数和/或浮点单元(统称为算术逻辑单元(ALU))。在至少一个实施例中,代码(如图形代码)基于这个代码所对应的神经网络的架构将权重或其他参数信息加载到处理器ALU中。在至少一个实施例中,代码和/或数据存储1101存储在使用一个或更多个实施例的方面训练和/或推理期间的输入/输出数据和/或权重参数的前向传播期间结合一个或更多个实施例训练或使用的神经网络的每个层的权重参数和/或输入/输出数据。在至少一个实施例中,代码和/或数据存储1101的任何部分都可以包括在其他片上或片外数据存储内,包括处理器的L1、L2或L3高速缓存或系统存储器。

在至少一个实施例中,代码和/或数据存储1101的任何部分可以在一个或更多个处理器或其他硬件逻辑器件或电路的内部或外部。在至少一个实施例中,代码和/或代码和/或数据存储1101可以是高速缓冲存储器、动态随机可寻址存储器(“DRAM”)、静态随机可寻址存储器(“SRAM”)、非易失性存储器(例如,闪存)或其他存储设备。在至少一个实施例中,代码和/或代码和/或数据存储1101是在处理器内部还是外部的选择,例如,或者由DRAM、SRAM、闪存或某种其他存储类型组成,可以取决于存储片上或片外的可用存储空间,正在执行训练和/或推理功能的延迟要求,在神经网络的推理和/或训练中使用的数据的批大小或这些因素的某种组合。

在至少一个实施例中,推理和/或训练逻辑1115可以包括但不限于代码和/或数据存储1105,用于存储与在一个或更多个实施例的方面中被训练和/或用于推理的神经网络的神经元或层相对应的后向和/或输出权重和/或输入/输出数据。在至少一个实施例中,在使用一个或更多个实施例的方面训练和/或推理期间,代码和/或数据存储1105存储在输入/输出数据和/或权重参数的反向传播期间结合一个或更多个实施例训练或使用的神经网络的每个层的权重参数和/或输入/输出数据。在至少一个实施例中,训练逻辑1115可以包括或耦合到用于存储图形代码或其他软件以控制时序和/或顺序的代码和/或数据存储1105,其中,将加载权重和/或其他参数信息来配置逻辑,该逻辑包括整数和/或浮点单元(统称为算术逻辑单元(ALU))。在至少一个实施例中,代码(如图形代码)基于这个代码所对应的神经网络的架构将权重或其他参数信息加载到处理器ALU中。在至少一个实施例中,代码和/或数据存储1105的任何部分可以与其他片上或片外数据存储一起包括,包括处理器的L1、L2或L3高速缓存或系统存储器。在至少一个实施例中,代码和/或数据存储1105的任何部分可在一个或更多个处理器或其他硬件逻辑设备或电路上的内部或外部。在至少一个实施例中,代码和/或数据存储1105可以是高速缓存存储器、DRAM、SRAM、非易失性存储器(例如,闪存)或其他存储装置。在至少一个实施例中,代码和/或数据存储1105是在处理器内部还是外部的选择,例如,是由DRAM、SRAM、闪存还是其他某种存储类型组成,取决于可用存储是片上还是片外,正在执行的训练和/或推理功能的延迟要求,在神经网络的推理和/或训练中使用的数据批量大小或这些因素的某种组合。

在至少一个实施例中,代码和/或数据存储1101以及代码和/或数据存储1105可以是单独的存储结构。在至少一个实施例中,代码和/或数据存储1101和代码和/或数据存储1105可以是相同的存储结构。在至少一个实施例中,代码和/或数据存储1101以及代码和/或数据存储1105可以是部分相同的存储结构和部分分开的存储结构。在至少一个实施例中,代码和/或数据存储1101以及代码和/或数据存储1105的任何部分可与其他片上或片外数据存储(包括处理器的L1、L2或L3高速缓存或系统存储器)包括在一起。

在至少一个实施例中,推理和/或训练逻辑1115可以包括但不限于一个或更多个算术逻辑单元(“ALU”)910(包括整数和/或浮点单元),用于至少部分地基于训练和/或推理代码(例如,图形代码)或由其指示来执行逻辑和/或数学运算,其结果可以产生存储在激活存储920中的激活(例如,来自神经网络内的层或神经元的输出值),所述激活是存储在代码和/或数据存储901和/或代码和/或数据存储905中的输入/输出和/或权重参数数据的函数。在至少一个实施例中,根据由ALU响应于执行指令或其他代码而执行的线性代数和/或基于矩阵的数学来产生存储在激活存储920中的激活,其中,存储在代码和/或数据存储905和/或代码和/或数据存储901中的权重值与其他值一起被用作操作数,诸如偏置值、梯度信息、动量值或其他参数或超参数,这些参数或超参数中的任一者或全部可被存储在代码和/或数据存储905或代码和/或数据存储901或片上或片外的另一存储中。

在至少一个实施例中,一个或更多个ALU被包括在一个或更多个处理器或其他硬件逻辑设备或电路内,而在另一个实施例中,一个或更多个ALU可以在处理器或使用它们的其他硬件逻辑设备或电路(例如,协处理器)的外部。在至少一个实施例中,ALU可以包括在处理器的执行单元内或者以其他方式包括在可由处理器的执行单元访问的ALU组内,所述处理器的执行单元在同一处理器内或分布在不同类型的不同处理器(例如,中央处理单元、图形处理单元、固定功能单元等)之间。在至少一个实施例中,代码和/或数据存储901、代码和/或数据存储905以及激活存储920可以在同一处理器或其他硬件逻辑设备或电路上,而在另一个实施例中,它们可以在不同的处理器或其他硬件逻辑器件或电路或相同和不同处理器或其他硬件逻辑设备或电路的某种组合中。在至少一个实施例中,激活存储920的任何部分可以与其他片上或片外数据存储设备包括在一起,所述其他片上或片外数据存储设备包括处理器的L1、L2或L3高速缓存或系统存储器。此外,推理和/或训练代码可与处理器或其他硬件逻辑或电路可访问的其他代码一起存储,并使用处理器的提取、解码、调度、执行、退出和/或其他逻辑电路来提取和/或处理。

在至少一个实施例中,激活存储920可以是高速缓存存储器、DRAM、SRAM、非易失性存储器(例如,闪存)或其他存储设备。在至少一个实施例中,激活存储920可以完全地或部分地在一个或更多个处理器或其他逻辑电路内部或外部。在至少一个实施例中,选择激活存储920是处理器内部还是外部,例如,或包括DRAM、SRAM、闪存或一些其他存储类型可取决于片上或片外的可用存储,正在执行的训练和/或推理功能的延迟要求、在神经网络的推理和/或训练中使用的数据的批量大小,或这些因素的某种组合。在至少一个实施例中,图9中所示出的推理和/或训练逻辑1115可以与专用集成电路(“ASIC”)结合使用,如来自谷歌的处理单元、来自GraphcoreTM的推理处理单元(IPU)、或来自英特尔公司的(例如,“Lake Crest”)处理器。在至少一个实施例中,图9中所示出的推理和/或训练逻辑1115可以结合中央处理单元(“CPU”)硬件、图形处理单元(“GPU”)硬件或其他硬件(如现场可编程门阵列(“FPGA”))使用。

图12示出了根据至少一个实施例的推理和/或训练逻辑1215。在至少一个实施例中,推理和/或训练逻辑1215可包括但不限于其中计算资源是专用的或以其他方式结合与神经网络内的一个或更多个神经元层相对应的权重值或其他信息排他地使用的硬件逻辑。在至少一个实施例中,图12中所示出的推理和/或训练逻辑1215可以与专用集成电路(ASIC)(如来自谷歌的处理单元、来自GraphcoreTM的推理处理单元(IPU)、或来自英特尔公司的(例如,“Lake Crest”)处理器结合使用。在至少一个实施例中,图12中示出的推理和/或训练逻辑1215可以结合中央处理单元(CPU)硬件、图形处理单元(GPU)硬件或其他硬件(如现场可编程门阵列(FPGA))使用。在至少一个实施例中,推理和/或训练逻辑1215包括但不限于代码和/或数据存储设备1201以及代码和/或数据存储设备1205,其可以用于存储代码(例如,图形代码)、权重值和/或其他信息,包括偏置值、梯度信息、动量值和/或其他参数或超参数信息。在图12所示的至少一个实施例中,代码和/或数据存储1201以及代码和/或数据存储1205中的每一个都分别与专用计算资源(诸如计算硬件1202和计算硬件1206)相关联。在至少一个实施例中,计算硬件1202和计算硬件1206中的每一个包括一个或更多个ALU,这些ALU仅分别对存储在代码和/或数据存储1201和代码和/或数据存储1205中的信息执行数学函数(诸如线性代数函数),其结果被存储在激活存储1220中。

在至少一个实施例中,代码和/或数据存储1201和1205以及相应的计算硬件1202和1206中的每一个分别对应于神经网络的不同层,从而使得从一个“存储/计算对1201/1202”的代码和/或数据存储1201和计算硬件1202所产生的激活被提供作为到“存储/计算对1205/1206”的代码和/或数据存储1205和计算硬件1206的输入,以便反映神经网络的概念组织。在至少一个实施例中,存储/计算对1201/1202和1205/1206中的每一个可以对应于一个以上神经网络层。在至少一个实施例中,继存储计算对1201/1202和1205/1206之后或与其并行的附加存储/计算对(未示出)可以包括在推理和/或训练逻辑1215中。

可以使用诸如关于图12所讨论的推理和训练逻辑来训练一个或更多个神经网络以分析视频数据的媒体流或文件,如可以对应于玩游戏数据。可在所描述的硬件结构1215上运行的这些神经网络可被用于推理以检测对象或事件,以及基于这些检测到的对象或事件的数据来推理事件类型。不同的神经网络或机器学习模型可针对不同的游戏、游戏类型、视频内容类型或事件类型以及其他此类选项来训练。

数据中心

图13示出了其中可以使用至少一个实施例的示例数据中心1300。在至少一个实施例中,数据中心1300包括数据中心基础设施层1310、框架层1320、软件层1330和应用层1340。

在至少一个实施例中,如图13所示,数据中心基础设施层1310可以包括资源协调器1312、分组计算资源1314和节点计算资源(“节点C.R.”)1316(1)-1316(N),其中“N”表示任何完整的正整数。在至少一个实施例中,节点C.R.1316(1)-1316(N)可包括,但不限于任何数量的中央处理单元(“CPU”)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、图形处理器等),存储器设备(例如,动态只读存储器)、存储设备(例如,固态或磁盘驱动器)、网络输入/输出(“NW I/O”)设备、网络交换机、虚拟机(“VM”)、功率模块和冷却模块等。在至少一个实施例中,来自节点C.R.1316(1)-1316(N)中的一个或更多个节点C.R.可以是具有上述计算资源中的一个或更多个的服务器。

在至少一个实施例中,分组计算资源1314可包括容纳在一个或更多个机架(未示出)内的节点C.R.的单独分组或容纳在不同地理位置(也未示出)处的数据中心内的许多机架。分组计算资源1314内的节点C.R.的单独分组可包括可被配置或分配来支持一个或更多个工作负载的分组计算、网络、存储器或存储资源。在至少一个实施例中,包括CPU或处理器的若干节点C.R.可以分组在一个或更多个机架内,以提供计算资源来支持一个或更多个工作负载。在至少一个实施例中,一个或更多个机架还可包括任意组合的任意数量的功率模块、冷却模块和网络交换机。

在至少一个实施例中,资源协调器1312可以配置或以其他方式控制一个或更多个节点C.R.1316(1)-1316(N)和/或分组的计算资源1314。在至少一个实施例中,资源协调器1312可以包括用于数据中心1300的软件设计基础设施(“SDI”)管理实体。在至少一个实施例中,资源协调器可以包括硬件、软件或其某种组合。

在至少一个实施例中,如图13所示,框架层1320包括作业调度器1322、配置管理器1324、资源管理器1326和分布式文件系统1328。在至少一个实施例中,框架层1320可以包括支持软件层1330的软件1332和/或应用层1340的一个或更多个应用程序1342的框架。在至少一个实施例中,软件1332或应用程序1342可分别包含基于网络的服务软件或应用程序,例如由Amazon Web Services、Google Cloud和Microsoft Azure提供的服务或应用程序。在至少一个实施例中,框架层1320可以是但不限于免费和开源软件网络应用框架类型,例如可以利用分布式文件系统1328进行大规模数据处理(例如,“大数据”)的Apache SparkTM(下文称为“Spark”)。在至少一个实施例中,作业调度器1322可以包括备用驱动器以促进由数据中心1300的各个层所支持的工作负载的调度。在至少一个实施例中,配置管理器1324可以能够配置不同的层,诸如软件层1330和框架层1320,框架层1320包括Spark和用于支持大规模数据处理的分布式文件系统1328。在至少一个实施例中,资源管理器1326可以能够管理被映射到分布式文件系统1328和作业调度器1322或被分配用于支持分布式文件系统1328和作业调度器1322的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可包括数据中心基础设施层1310处的分组的计算资源1314。在至少一个实施例中,资源管理器1326可与资源协调器1312协调以管理这些映射或分配的计算资源。

在至少一个实施例中,包括在软件层1330中的软件1332可以包括由节点C.R.1316(1)-1316(N)的至少部分、分组的计算资源1314和/或框架层1320的分布式文件系统1328使用的软件。一种或更多种类型的软件可以包括但不限于互联网网页搜索软件、电子邮件病毒扫描软件、数据库软件和流视频内容软件。

在至少一个实施例中,包括在应用层1340中的应用程序1342可包括由节点C.R.1316(1)-1316(N)的至少部分、分组的计算资源1314和/或框架层1320的分布式文件系统1328使用的一个或更多个类型的应用程序。一种或更多种类型的应用程序可以包括但不限于任何数量的基因组学应用程序、认知计算和机器学习应用程序,包括训练或推理软件、机器学习框架软件(例如,PyTorch、TensorFlow、Caffe等)或其他与一个或更多个实施例结合使用的机器学习应用程序。

在至少一个实施例中,配置管理器1324、资源管理器1326和资源协调器1312中的任一个可基于以任何技术上可行的方式获取的任何数量和类型的数据来实现任何数量和类型的自修改动作。在至少一个实施例中,自修改动作可使数据中心1300的数据中心操作者免于做出可能较差的配置决策和可能避免数据中心的未充分利用和/或执行差的部分。

在至少一个实施例中,数据中心1300可包括工具、服务、软件或其他资源,以根据本文描述的一个或更多个实施例来训练一个或更多个机器学习模型或使用一个或更多个机器学习模型来预测或推理信息。例如,在至少一个实施例中,可通过使用上文关于数据中心1300描述的软件和计算资源,根据神经网络架构通过计算权重参数来训练机器学习模型。在至少一个实施例中,通过使用通过本文所述的一种或更多种训练技术计算出的权重参数,可以使用上面与关于数据中心1300所描述的资源,使用对应于一个或更多个神经网络的经训练的机器学习模型来推理或预测信息。

在至少一个实施例中,数据中心可使用CPU、专用集成电路(ASIC)、GPU、FPGA或其他硬件来使用上述资源来执行训练和/或推理。此外,上文所描述的一个或更多个软件和/或硬件资源可经配置为允许用户训练或执行对信息的推理的服务,例如图像辨识、语音识别或其他人工智能服务。

推理和/或训练逻辑1115用于执行与一个或更多个实施例相关联的推理和/或训练操作。下面结合图12和/或图13提供关于推理和/或训练逻辑1115的细节。在至少一个实施例中,推理和/或训练逻辑1115可以在系统图13中使用,用于至少部分地基于在此描述的神经网络训练操作、神经网络功能和/或架构或神经网络使用情况计算的权重参数来推理或预测操作。诸如图13所示的数据中心1300可用于远离在其上生成或分析视频或在其上玩游戏的设备来执行本文所讨论的处理和/或存储中的至少一些。在至少一些实施例中,这种数据中心还可包括托管这些游戏或其他相关应用的服务器。

计算机系统

图14是示出了根据至少一个实施例的示例性计算机系统的框图,该计算机系统可以是具有互连的设备和组件的系统、片上系统(SOC)或用可以包括用于执行指令的执行单元的处理器形成的其某种组合1400。在至少一个实施例中,根据本公开,诸如在本文中描述的实施例中,计算机系统1400可以包括但不限于采用执行单元的组件,诸如处理器1402,所述执行单元包括用于执行用于处理数据的算法的逻辑。在至少一个实施例中,计算机系统1400可以包括处理器,诸如可从加利福尼亚州圣克拉拉市的英特尔公司获得的处理器族、XeonTMXScaleTM和/或StrongARMTMCoreTMNervanaTM微处理器,但是也可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在至少一个实施例中,计算机系统1400可执行可从华盛顿州雷蒙德市的微软公司获得的WINDOWS操作系统的版本,但也可使用其他操作系统(例如UNIX和Linux)、嵌入式软件和/或图形用户界面。

实施例可用于例如手持式设备和嵌入式应用程序等其他设备中。手持式设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(“PDA”)以及手持式PC。在至少一个实施例中,嵌入式应用可以包括微控制器、数字信号处理器(“DSP”)、片上系统、网络计算机(“NetPC”)、机顶盒、网络中枢、广域网(“WAN”)交换机或可以根据至少一个实施例执行的一个或更多个指令的任何其他系统。

在至少一个实施例中,计算机系统1400可以包括但不限于处理器1402,所述处理器可以包括但不限于一个或更多个执行单元1408,所述执行单元用于根据本文中所描述的技术执行机器学习模型训练和/或推理。在至少一个实施例中,计算机系统1400是单处理器桌面或服务器系统,但是在另一个实施例中,计算机系统1400可以是多处理器系统。在至少一个实施例中,处理器1402可以包括但不限于复杂指令集计算机(“CISC”)微处理器、精简指令集计算(“RISC”)微处理器、超长指令字(“VLIW”)微处理器、实现指令集的组合的处理器或任何其他处理器设备,例如数字信号处理器。在至少一个实施例中,处理器1402可以耦合到处理器总线1410,处理器总线1410可以在处理器1402和计算机系统1400中的其他组件之间传输数据信号。

在至少一个实施例中,处理器1402可以包括但不限于1级(“L1”)内部高速缓存存储器(“高速缓存”)1404。在至少一个实施例中,处理器1402可以具有单个内部高速缓存或多级内部高速缓存。在至少一个实施例中,高速缓存存储器可驻留在处理器1402外部。其他实施例还可包括内部和外部高速缓存两者的组合,这取决于特定实现和需要。在至少一个实施例中,寄存器文件1406可以将不同类型的数据存储在各种寄存器中,包括但不限于整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。

在至少一个实施例中,执行单元1408(包括但不限于用于执行整数和浮点操作的逻辑)也存在于处理器1402中。在至少一个实施例中,处理器1402还可以包括存储用于某些宏指令的微代码的微代码(“ucode”)只读存储器(“ROM”)。在至少一个实施例中,执行单元1408可以包括用于处理打包指令集1409的逻辑。在至少一个实施例中,通过在通用处理器1402的指令集中包括打包指令集1409以及用于执行指令的相关联的电路,许多多媒体应用所使用的操作可以使用通用处理器1402中的打包数据来执行。在一个或更多个实施例中,可通过使用处理器的数据总线的全宽度对紧缩数据执行操作来更加有效地加速和执行许多多媒体应用,这可消除跨处理器的数据总线传送较小的数据单元以一次一个数据元素执行一个或更多个操作的需要。

在至少一个实施例中,执行单元1408还可以用于微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中。在至少一个实施例中,计算机系统1400可以包括但不限于存储器1420。在至少一个实施例中,存储器1420可以被实现为动态随机存取存储器(“DRAM”)设备、静态随机存取存储器(“SRAM”)设备、闪存设备或其他存储器设备。在至少一个实施例中,存储器1420可存储可由处理器1402执行的数据信号表示的指令1419和/或数据1421。

在至少一个实施例中,系统逻辑芯片可耦接至处理器总线1410和存储器1420。在至少一个实施例中,系统逻辑芯片可以包括但不限于存储器控制器中枢(“MCH”)1416,并且处理器1402可以经由处理器总线1410与MCH1416通信。在至少一个实施例中,MCH1416可以向存储器1420提供高带宽存储器路径1418以用于指令和数据存储以及用于存储图形命令、数据和纹理。在至少一个实施例中,MCH1416可以在处理器1402、存储器1420和计算机系统1400中的其他组件之间引导数据信号,并且在处理器总线1410、存储器1420和系统I/O1422之间桥接数据信号。

在至少一个实施例中,系统逻辑芯片可以提供用于耦合到图形控制器的图形端口。在至少一个实施例中,MCH1416可以通过高带宽存储器路径1418耦合到存储器1420,并且图形/视频卡1412可以通过加速图形端口(“AGP”)互连1414耦合到MCH1416。

在至少一个实施例中,计算机系统1400可以使用作为专用集线器接口总线的系统I/O 1422将MCH 1416耦合至I/O控制器集线器(“ICH”)1430。在至少一个实施例中,ICH1430可以经由本地I/O总线提供到一些I/O设备的直接连接。在至少一个实施例中,本地I/O总线可以包括但不限于用于将外围设备连接到存储器1420、芯片组和处理器1402的高速I/O总线。示例可以包括但不限于音频控制器1429、固件中枢(“闪存BIOS”)1428、无线收发器1426、数据存储1424、包含用户输入和键盘接口1425的传统I/O控制器1423、串行扩展端口1427(如通用串行总线(“USB”)、和网络控制器1434)。数据存储1424可包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存存储器设备或其他大容量存储设备。

在至少一个实施例中,图14示出了一种系统,该系统包括互连的硬件设备或“芯片”,而在其他实施例中,图14可以示出示例性片上系统(“SoC”)。在至少一个实施例中,图14中所示出的设备可以与专用互连、标准化互连(例如,PCIe)或其某种组合互连。在至少一个实施例中,计算机系统1400的一个或更多个组件使用快速计算链路(CXL)互连来互连。

推理和/或训练逻辑1115用于执行与一个或更多个实施例相关联的推理和/或训练操作。下面结合图12和/或图13提供关于推理和/或训练逻辑1115的细节。在至少一个实施例中,推理和/或训练逻辑1115可以在图14的系统中用于至少部分地基于使用在此描述的神经网络训练操作、神经网络功能和/或架构或神经网络使用情况计算的权重参数来推理或预测操作。

图15是示出根据至少一个实施例的用于利用处理器1510的电子设备1500的框图。在至少一个实施例中,电子设备1500可以是例如但不限于笔记本、塔式服务器、机架式服务器、刀片式服务器、膝上型计算机、台式计算机、平板计算机、移动设备、电话、嵌入式计算机或任何其他合适的电子设备。

在至少一个实施例中,系统1500可以包括但不限于处理器1510,其通信地耦合到任何合适数量或种类的组件、外围设备、模块或设备。在至少一个实施例中,处理器1510使用总线或接口(诸如1℃总线)耦合,系统管理总线(“SMBus”)、低引脚计数(LPC)总线、串行外围接口(“SPI”),高清晰度音频(“HDA”)总线、串行高级技术附件(“SATA”)总线、通用串行总线(“USB”)(版本1、2、3),或通用异步接收器/发送器(“UART”)总线。在至少一个实施例中,图15示出了一种系统,该系统包括互连的硬件设备或“芯片”,而在其他实施例中,图15可以示出示例性片上系统(“SoC”)。在至少一个实施例中,图15中所示出的设备可以与专用互连、标准化互连(例如,PCIe)或其某种组合互连。在至少一个实施例中,图15的一个或更多个组件使用计算快速链路(CXL)互连来互连。

在至少一个实施例中,图15可包括显示器1524、触摸屏1525,触摸板1530、近场通信单元(“NFC”)1545、传感器中枢1540、热传感器1546、快速芯片集(“EC”)1535、可信平台模块(“TPM”)1538,BIOS/固件/闪存(“BIOS,FW闪存”)1522、DSP 1560、驱动器1520(如固态磁盘(“SSD”)或硬盘驱动器(“HDD”))、无线局域网单元(“WLAN”)1550、蓝牙单元1552、无线广域网单元(“WWAN”)1556,全球定位系统(GPS)1555、相机(“USB 3.0相机”)1554(如USB 3.0相机)和/或在其中实施的低功率双倍数据速率(“LPDDR”)存储器单元(“LPDDR3”)1515,例如,LPDDR3标准。这些组件可以各自以任何合适的方式实现。

在至少一个实施例中,其他组件可通过上文论述的组件通信地耦合到处理器1510。在至少一个实施例中,加速度计1541、环境光传感器(“ALS”)1542、罗盘1543和陀螺仪1544可以通信地耦合至传感器中枢1540。在至少一个实施例中,热传感器1539、风扇1537、键盘1546和触摸板1530可通信地耦合到EC1535。在至少一个实施例中,扬声器1563、耳机1564和麦克风(“mic”)1565可以通信性地耦合至音频单元(“音频编解码器和d类放大器”)1562,该音频单元进而可以通信性地耦合至DSP 1560。在至少一个实施例中,音频单元1564可以包括,例如但不限于音频编码器/解码器(“编解码器”)和D类放大器。在至少一个实施例中,SIM卡(“SIM”)1557可以通信地耦合到WWAN单元1556。在至少一个实施例中,诸如WLAN单元1550和蓝牙单元1552以及WWAN单元1556的组件可以在下一代形状因子(“NGFF”)中实现。

推理和/或训练逻辑1115用于执行与一个或更多个实施例相关联的推理和/或训练操作。下面结合图12和/或图13提供关于推理和/或训练逻辑1115的细节。在至少一个实施例中,推理和/或训练逻辑1115可以在图15的系统中用于至少部分地基于使用在此描述的神经网络训练操作、神经网络功能和/或架构或神经网络使用情况计算的权重参数来推理或预测操作。

图16示出了根据至少一个实施例的计算机系统1600。在至少一个实施例中,计算机系统1600被配置为实现贯穿本公开所描述的不同过程和方法。

在至少一个实施例中,计算机系统1600包括但不限于至少一个中央处理单元(“CPU”)1602,该中央处理单元连接至使用任何合适的协议实现的通信总线1610,如PCI(“外围组件互连”)、快速外围组件互连(“PCI-Express”)、AGP(“加速图形端口”)、超传输或任何其他总线或点对点通信协议。在至少一个实施例中,计算机系统1600包括但不限于主存储器1604和控制逻辑(例如,被实现为硬件、软件或其组合),并且数据存储在主存储器1604中,该主存储器可以采取随机存取存储器(“RAM”)的形式。在至少一个实施例中,网络接口子系统(“网络接口”)1622提供到其他计算设备和网络的接口,用于从计算机系统1600接收数据和向其他系统传输数据。

在至少一个实施例中,在至少一个实施例中,计算机系统1600包括但不限于输入设备1608、并行处理系统1612、以及可以使用阴极射线管(“CRT”)、液晶显示器(“LCD”)、发光二极管(“LED”)、等离子体显示器或其他适合的显示技术实现的显示设备1606。在至少一个实施例中,从诸如键盘、鼠标、触摸板、麦克风等输入设备1608接收用户输入。在至少一个实施例中,前述模块中的每一个可以位于单个半导体平台上以形成处理系统。

推理和/或训练逻辑1115用于执行与一个或更多个实施例相关联的推理和/或训练操作。下面结合图12和/或图13提供关于推理和/或训练逻辑1115的细节。在至少一个实施例中,推理和/或训练逻辑1115可以在图16中用于至少部分地基于使用在此描述的神经网络训练操作、神经网络功能和/或架构或神经网络使用情况计算的权重参数来推理或预测操作。

图17示出了示例性架构,其中,多个GPU 1710-1713通过高速链路1740-1743(例如,总线、点对点互连等)通信地耦接至多个多核处理器1705-1706。在一个实施例中,高速链路1740-1743支持4GB/s、30GB/s、80GB/s或更高的通信吞吐量。可以使用不同互连协议,包括但不限于PCIe 4.0或5.0和NVLink2.0。

此外,并且在一个实施例中,GPU 1710-1713中的两个或更多个GPU在高速链路1729-1730上互连,所述高速链路1729-1730可以使用与用于高速链路1740-1743的协议/链路相同或不同的协议/链路来实现。类似地,多核处理器1705到1706中的两个或更多个可经由高速链路1728连接,所述高速链路1728可为以20GB/s、30GB/s、120GB/s或更高的速度操作的对称多处理器(SMP)总线。可替代地,图17中所示的不同系统组件之间的所有通信可以使用相同的协议/链路(例如,通过公共互连结构)来实现。

在一个实施例中,每个多核处理器1705-1706分别经由存储器互连1726-1727通信地耦合到处理器存储器1701-1702,并且每个GPU1710-1713分别通过GPU存储器互连1750-1753通信地耦合到GPU存储器1720-1723。存储器互连1726-1727和1750-1753可以利用相同或不同的存储器访问技术。作为示例而非限制,处理器存储器1701-1702和GPU存储器1720-1723可以是易失性存储器,诸如动态随机存取存储器(DRAM)(包括堆叠式DRAM)、图形DDRSDRAM(GDDR)(例如,GDDR5、GDDR6)或高带宽存储器(HBM),和/或可以是非易失性存储器,诸如3D XPoint或Nano-Ram。在一个实施例中,处理器存储器1701-1702的一些部分可以是易失性存储器,并且另一部分可以是非易失性存储器(例如,使用两级存储器(2LM)层级)。

如下所述,尽管各个处理器1705-1706和GPU1710-1713可以分别物理地耦合至特定存储器1701-1702、1720-1723,但是可以实现统一存储器架构,其中,相同的虚拟系统地址空间(也被称为“有效地址”空间)分布在各个物理存储器中。例如,处理器存储器1701-1702可各自包括64GB的系统存储器地址空间,且GPU存储器1720-1723可各自包括32GB的系统存储器地址空间(在此示例中导致总共256GB可寻址存储器)。

图17示出了根据一个示例性实施例的多核处理器1707与图形加速模块1746之间的互连的附加细节。图形加速模块1746可包含集成在线卡上的一个或更多个GPU芯片,所述线卡经由高速链路1740耦合到处理器1707。或者,图形加速模块1746可与处理器1707集成在同一封装或芯片上。

在至少一个实施例中,所示出的处理器1707包括多个核1760A-1760D,每个核具有转换后备缓冲器1761A-1761D和一个或更多个高速缓存1762A-1762D。在至少一个实施例中,核1760A-1760D可以包括用于执行指令和处理数据的不同其他组件(未示出)。高速缓存1762A-1762D可以包括1级(L1)和2级(L2)高速缓存。此外,一个或更多个共享高速缓存1756可被包括在高速缓存1762A-1762D中并且由核1760A-1760D的集合共享。例如,处理器1707的一个实施例包括24个核,每个核具有其自己的L1高速缓存、十二个共享L2高速缓存和十二个共享L3高速缓存。在该实施例中,一个或更多个L2和L3高速缓存由两个相邻核共享。处理器1707和图形加速模块1746与系统存储器1714连接,系统存储器1714可包括图17的处理器存储器1701-1702。

如图18所示,经由通过一致性总线1864的核间通信,为存储在各个高速缓存1862A-1862D、1856和系统存储器1814中的数据和指令维持一致性。例如,每个高速缓存可具有与其相关联的高速缓存一致性逻辑/电路,以响应于检测到对特定高速缓存行的读取或写入而通过一致性总线1864通信。在一个实现中,在一致性总线1864上实现高速缓存监听协议以监听高速缓存访问。

在一个实施例中,代理电路1825将图形加速模块1846通信地耦合至一致性总线1864,从而允许图形加速模块1846作为核1860A-1860D的对等体参与高速缓存一致性协议。具体地,接口1835通过高速链路1840(例如,PCIe总线、NV链路等)提供到代理电路1825的连通性,并且接口1837将图形加速模块1846连接到链路1840。

在一个实现中,加速器集成电路1836代表图形加速模块1846的多个图形处理引擎1831、1832、N提供高速缓存管理、存储器访问、上下文管理和中断管理服务。图形处理引擎1831、1832、N可以各自包括单独的图形处理单元(GPU)。可替代地,图形处理引擎1831、1832、N可以包括GPU内的不同类型的图形处理引擎,诸如图形执行单元、媒体处理引擎(例如,视频编码器/解码器)、采样器和位块传输引擎。在至少一个实施例中,图形加速模块1846可以是具有多个图形处理引擎1831-1832、N的GPU或图形处理引擎1831-1832、N可以是集成在公共封装、线卡或芯片上的个体GPU。

在一个实施例中,加速器集成电路1836包括存储器管理单元(MMU)1839,用于执行各个存储器管理功能,诸如虚拟到物理存储器转换(也称为有效到真实存储器转换)和用于访问系统存储器1814的存储器访问协议。MMU 1839还可包含用于高速缓存虚拟/有效到物理/真实地址转换的转换后援缓冲器(TLB)(未示出)。在一个实现中,高速缓存1838存储供图形处理引擎1831-1832、N高效访问的命令和数据。在一个实施例中,存储在高速缓存1838和图形存储器1833-1834、M中的数据与核高速缓存1862A-1862D、1856和系统存储器1814保持一致。如上所述,这可经由代理电路1825代表高速缓存1838和存储器1833-1834、M(例如,将与处理器高速缓存1862A-1862D、1856上的高速缓存行的修改/访问有关的更新发送到高速缓存1838,以及从高速缓存1838接收更新)来实现。

图18中的寄存器组1845存储由图形处理引擎1831-1832执行的线程的上下文数据,并且上下文管理电路1848管理线程上下文。例如,上下文管理电路1848可执行保存和恢复操作以在上下文切换期间保存和恢复各个线程的上下文(例如,在保存第一线程且存储第二线程以使得可由图形处理引擎执行第二线程的情况下)。例如,在上下文切换时,上下文管理电路1848可将当前寄存器值存储到存储器中的指定区域(例如,由上下文指针识别)。其然后可以在返回到上下文时恢复寄存器值。在一个实施例中,中断管理电路1847接收并处理从系统设备接收的中断。

在一个实施例中,来自图形处理引擎1831的虚拟/有效地址由MMU1839转换为系统存储器1814中的真实/物理地址。加速器集成电路1836的一个实施例支持多个(例如,4、8、16)图形加速器模块1846和/或其他加速器设备。图形加速器模块1846可以专用于在处理器1807上执行的单个应用,或者可以在多个应用之间共享。在一个实施例中,呈现虚拟化图形执行环境,其中图形处理引擎1831-1832、N的资源与多个应用或虚拟机(VM)共享。在至少一个实施例中,资源可以被细分为“片”,这些片基于与VM和/或应用相关联的处理要求和优先级被分配给不同的VM和/或应用。

在至少一个实施例中,加速器集成电路1836作为图形加速模块1846的系统的桥执行,并且提供地址转换和系统存储器高速缓存服务。此外,加速器集成电路1836可以为主机处理器提供虚拟化设施,以管理图形处理引擎1831-1832、N、中断和存储器管理的虚拟化。

因为图形处理引擎1831-1832、N的硬件资源被显式地映射到由主处理器1807看到的真实地址空间,所以任何主处理器可以使用有效地址值直接寻址这些资源。在一个实施例中,加速器集成电路1836的一个功能是图形处理引擎1831-1832,N的物理分离,使得它们对于系统而言表现为独立的单元。

在至少一个实施例中,一个或更多个图形存储器1833-1834、M分别耦合到图形处理引擎1831-1832、N中的每一个。图形存储器1833-1834、M存储由图形处理引擎1831-1832、N中的每一个处理的指令和数据。图形存储器1833-1834、M可为易失性存储器,例如DRAM(包含堆叠式DRAM)、GDDR存储器(例如,GDDR5、GDDR6)或HBM,和/或可为非易失性存储器,例如3DXPoint或Nano-Ram。

在一个实施例中,为了减少链路1840上的数据流量,使用偏置技术来确保存储在图形存储器1833-1834、M中的数据是将由图形处理引擎1831-1832、N最频繁使用并且优选地不被核1860A-1860D(至少不频繁)使用的数据。类似地,偏置机制尝试将核(并且优选地不是图形处理引擎1831-1832、N)所需的数据保存在核和系统存储器1814的高速缓存1862A-1862D、1856内。

在至少一个实施例中,单个半导体平台可以指唯一的基于单一半导体的集成电路或芯片。在至少一个实施例中,多芯片模块可以与增强的连接性一起使用,该增强的连接性模拟片上操作,并且相对于利用中央处理单元(“CPU”)和总线实现方式做出实质性改进。在至少一个实施例中,各个模块也可以根据用户的愿望单独地或在半导体平台的各个组合中定位。

在至少一个实施例中,采用机器可读可执行代码或计算机控制逻辑算法形式的计算机程序被存储在主存储器1404和/或辅助存储器中。如果计算机程序由一个或更多个处理器执行,则使系统1400能够执行根据至少一个实施例的不同功能。在至少一个实施例中,存储器1404、存储装置和/或任何其他存储装置是计算机可读介质的可能示例。在至少一个实施例中,辅助存储装置可以指任何合适的存储设备或系统,如硬盘驱动器和/或可移动存储驱动器,代表软盘驱动器、磁带驱动器、高密度盘驱动器、数字通用盘(“DVD”)驱动器、记录设备、通用串行总线(“USB”)闪存等。在至少一个实施例中,在CPU的上下文中实现不同先前附图的架构和/或功能;并行处理系统;集成电路,其能够实现两个CPU的能力的至少一部分;并行处理系统;芯片组(例如,被设计为作为执行相关功能的单元工作和销售的一组集成电路等);以及一个或更多个集成电路的任何合适的组合。

在至少一个实施例中,在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统和更多系统的上下文中实现不同先前附图的架构和/或功能。在至少一个实施例中,计算机系统可以采取台式计算机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如,无线手持式设备)、个人数字助理(“PDA”)、数码相机、车辆、头戴式显示器、手持式电子设备、移动电话设备、电视、工作站、游戏控制台、嵌入式系统和/或任何其他类型的逻辑的形式。此类硬件可用于执行应用程序和代码以支持本文论述的不同类型的处理、分析和存储。例如,给定的计算机系统可以执行游戏并且分析游戏输出的视频以确定事件,并且然后将该事件数据上传到远程服务器用于分析或存储。在其他实施例中,视频数据流可以由包含若干不同客户端设备的游戏主机的游戏服务器生成,并且该流可以由另一服务器或计算机系统分析以确定在玩游戏内发生的事件。在一些实施例中,该事件数据然后可被相同或又一服务器或计算机系统用于处理,诸如生成精彩片段视频或视频剪辑画面。

其他变化在本公开的精神内。由此,虽然所公开的技术易受不同修改和替代构造的影响,但其某些所解说的实施例在附图中示出并且已在上文详细地描述。然而,应当理解,并非旨在将本公开限制为所公开的一种或更多种特定形式,而是相反,旨在覆盖落在如所附权利要求所限定的本公开的精神和范围内的所有修改、替代构造和等同物。

在描述所公开的实施例的背景下(尤其在以下权利要求的背景下)使用术语“一个(a)”和“一种(an)”和“该(the)”以及类似指示物应被解释为覆盖单数和复数两者,除非在此另外指明或与上下文明显矛盾,并且不作为术语的定义。除非另外指出,术语“包含”、“具有”、“包括”和“含有”应被解释为开放式术语(意指“包括但不限于”)。术语“连接”在未修改和提及物理连接时应被解释为部分地或完全地包含在一起、附接至其上、或连接在一起,即使存在介入的东西。除非本文另有说明,本文列举的数值范围仅旨在用作单独提及落入范围内的每个单独数值的简略方法,并且每个单独数值并入说明书中,就好像其在本文单独列举一样。除非上下文另外指出或矛盾,否则术语“集合”(例如,“项目集合”)或“子集”的使用应被解释为包括一个或更多个成员的非空集合。进一步,除非上下文另外指出或矛盾,否则对应集合的术语“子集”不一定表示对应集合的适当子集,但是子集和对应集合可以是相等的。

连接语言,如“A、B和C中的至少一项”形式的短语,或“A、B和C中的至少一个”,除非另有明确说明或者与上下文明显矛盾,用上下文另外理解,所述上下文通常用于呈现项目、术语,等可以是A或B或C,或者A和B和C的集合的任何非空子集。例如,在具有三个成员的集合的说明性示例中,连接性短语“至少一个A、B和C”和“A、B和C中的至少一个”是指以下集合中的任何集合:{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}。因此,此类连接性语言一般不旨在暗示某些实施例要求各自存在A中的至少一个、B中的至少一个、以及C中的至少一个。此外,除非上下文另外指出或矛盾,否则术语“多个”指示为复数的状态(例如,“多个项目”指示多个项目)。多个是至少两个项目,但当明确地或通过上下文如此指示时可能更多。进一步地,除非另外指明或另外从上下文清楚,短语“基于”是指“至少部分地基于”而不是“仅基于。”

除非本文中另有指示或上下文明显矛盾,否则本文中所描述的过程的操作可按任何合适的次序执行。在至少一个实施例中,诸如本文中描述的那些过程(或其变型和/或组合)的过程在配置有可执行指令的一个或更多个计算机系统的控制下执行,并被实现为在一个或更多个处理器上共同执行的代码(例如,可执行指令、一个或更多个计算机程序或一个或更多个应用),通过硬件或其组合。在至少一个实施例中,代码例如以包括可由一个或更多个处理器执行的多个指令的计算机程序的形式存储在计算机可读存储介质上。在至少一个实施例中,计算机可读存储介质是非暂态计算机可读存储介质,该非暂态计算机可读存储介质排除暂态信号(例如,传播的暂态电或电磁传输)但包括暂态信号的收发机内的非暂态数据存储电路(例如,缓冲器、高速缓存和队列)。在至少一个实施例中,代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令(或用于存储可执行指令的其他存储器)的一个或更多个非暂态计算机可读存储介质的集合上,当由计算机系统的一个或更多个处理器执行时(即,由于被执行),使计算机系统执行本文描述的操作。在至少一个实施例中,一组非暂态计算机可读存储介质包括多个非暂态计算机可读存储介质和多个非暂态计算机可读存储介质中的各个非暂态计算机可读存储介质中的一个或更多个缺少全部代码,而多个非暂态计算机可读存储介质共同地存储全部代码。在至少一个实施例中,可执行指令被执行,从而使得不同的指令由不同的处理器执行——例如,非暂态计算机可读存储介质存储指令,并且主中央处理单元(“CPU”)执行指令中的一些指令,而图形处理单元(“GPU”)执行其他指令。在至少一个实施例中,计算机系统的不同组件具有单独的处理器,并且不同的处理器执行指令的不同子集。

因此,在至少一个实施例中,计算机系统被配置为实现单独地或共同地执行本文中描述的过程的操作的一个或更多个服务,并且此类计算机系统配置有能够实现操作的执行的可应用的硬件和/或软件。进一步,实现本公开的至少一个实施例的计算机系统是单个设备,并且在另一实施例中,是包括不同地操作的多个设备的分布式计算机系统,使得分布式计算机系统执行本文描述的操作并且使得单个设备不执行所有操作。

在此提供的任何和所有实例或示例性语言(例如,“如”)的使用仅旨在更好地阐明本公开的实施例并且不对本公开的范围构成限制,除非另外要求。说明书中的语言不应被解释为指示任何未要求保护的元素对于实践本公开是必不可少的。

在此引用的所有参考文献(包括出版物、专利申请、以及专利)均通过引用结合在此,其程度如同每个参考文献被单独地并且确切地指明通过引用结合在此,并且在此以其全文列出。

在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其派生词。应当理解,这些术语可能不旨在作为彼此的同义词。而是,在具体示例中,“连接”或“耦合”可以用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”还可以指两个或更多个元件彼此不直接接触,但仍彼此合作或交互。

除非另有明确说明,可以理解的是贯穿说明书术语如“处理”,“计算”、“计算”、“确定”等指计算机或计算系统的动作和/或过程,或类似的电子计算设备,其操纵和/或变换被表示为物理的(诸如电子的)数据,计算系统的寄存器和/或存储器内的量到类似地表示为计算系统的存储器内的物理量的其他数据中,寄存器或其他此类信息存储、传输或显示装置。

以类似的方式,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并且将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或设备的一部分。作为非限制性实例,“处理器”可以是CPU或GPU。“计算平台”可以包括一个或更多个处理器。如在此使用的,“软件”过程可以包括例如随着时间执行工作的软件和/或硬件实体,如任务、线程和智能代理。而且,每一过程可指代用于循序或并行地、连续地或间歇地执行指令的多个过程。术语“系统”和“方法”在此可互换地使用,只要系统可以体现一种或更多种方法并且方法可以被认为是系统。

在本文件中,可以参考获得、获取、接收、或输入模拟或数字数据到子系统、计算机系统、或计算机实现的机器中。获得、获取、接收或输入模拟和数字数据可以以各种方式完成,如通过接收作为函数调用或对应用程序编程接口的调用的参数的数据。在一些实现中,获得、获取、接收或输入模拟或数字数据的过程可通过经由串行或并行接口传送数据来完成。在另一实现中,获得、获取、接收或输入模拟或数字数据的过程可通过经由计算机网络从提供实体向获取实体传送数据来完成。还可以参考提供、输出、传输、发送或呈现模拟或数字数据。在不同示例中,提供、输出、传送、发送或呈现模拟或数字数据的过程可通过作为函数调用的输入或输出参数、应用编程接口的参数或进程间通信机制来传送数据来完成。

尽管以上论述陈述所描述的技术的举例实施例,但其他架构可用以实施所描述的功能性,且既定处于本发明的范围内。此外,尽管以上出于讨论的目的定义了职责的特定分布,但是取决于情况,可以以不同的方式分布和划分各种功能和职责。

此外,尽管已经用结构特征和/或方法动作专用的语言描述了本主题,但应当理解,所附权利要求书中所要求保护的主题不必限于所描述的具体特征或动作。相反,特定特征和动作被公开为实现权利要求的示例性形式。

51页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:算术装置、积和算术系统和设定方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!