[大语言模型-论文精读] 以《黑神话:悟空》为研究案例探讨VLMs能否玩动作角色扮演游戏?

1. 论文简介

论文《Can VLMs Play Action Role-Playing Games? Take Black Myth Wukong as a Study Case》是阿里巴巴集团的Peng Chen、Pi Bu、Jun Song和Yuan Gao,在2024.09.19提交到arXiv上的研究论文。
在这里插入图片描述

  • 论文: https://arxiv.org/abs/2409.12889
  • 代码和数据: https://varp-agent.github.io/
  • DEMO视频: https://live.csdn.net/v/425911

在这里插入图片描述

论文创新点

  • 提出了VARP框架,该框架不依赖游戏API,而是直接使用游戏截图作为输入,通过VLMs进行推理,生成控制游戏角色的动作。
  • 定义了一套针对ARPG游戏的基准任务,并构建了相应的人类操作数据集,为未来研究提供了宝贵的资源。
  • 引入了自我优化动作生成模块(SOAG)和可分解任务特定辅助模块(DTSA),提高了代理在复杂任务中的性能和泛化能力。

核心算法模型

  • VARP框架:由动作规划系统和人类引导轨迹系统组成,能够处理视觉输入并生成复杂的动作输出。
  • 动作规划系统:包含基础VLMs组、自我优化动作生成模块(SOAG)和可分解任务特定辅助模块(DTSA),用于动作推理和生成。
  • 人类引导轨迹系统:利用人类操作数据,通过检索和学习人类行为,指导代理完成复杂任务。

关键实验数据

  • 基准任务:在《黑神话:悟空》游戏中定义了12个任务,其中75%与战斗相关。
  • 数据集:收集了包含1000条记录的人类操作数据集,包括鼠标键盘操作和游戏截图。
  • 性能:VARP代理在没有人类引导的情况下,在简单和中等难度的战斗任务中达到了90%的成功率,接近新手玩家的表现。

附论文内容简要翻译, 仅供学习参考~~~

摘要

近期,基于大型语言模型(LLM)的代理在各个领域取得了显著进展。其中最受欢迎的研究领域之一是将这些代理应用于视频游戏。传统上,这些方法依赖于游戏API来获取游戏环境和动作数据。然而,这种方法受到API可用性的限制,并且不反映人类玩游戏的方式。随着视觉语言模型(VLMs)的出现,代理现在具备了增强的视觉理解能力,使它们能够仅使用视觉输入与游戏互动。尽管取得了这些进展,当前方法在动作导向任务中仍面临挑战,尤其是在动作角色扮演游戏(ARPGs)中,强化学习方法虽然普遍,但泛化能力差,需要大量的训练。为了解决这些限制,我们选择ARPG《黑神话:悟空》作为研究平台,探索现有VLMs在需要视觉输入和复杂动作输出的场景中的性能边界。我们在游戏内定义了12个任务,其中75%专注于战斗,并引入了几个最先进的VLMs到这个基准测试中。此外,我们将发布一个包含游戏玩法视频和操作日志(包括鼠标和键盘动作)的人类操作数据集。此外,我们提出了一个新颖的VARP(视觉动作角色扮演)代理框架,包括动作规划系统和视觉轨迹系统。我们的框架展示了执行基本任务的能力,并在90%的简单和中级战斗场景中取得成功。这项研究旨在为在复杂动作游戏环境中应用多模态代理提供新的见解和方向。

1 引言

近年来,基于LLM的代理在各个领域取得了重大突破,尤其是通过工具和记忆模块的整合,如AutoGPT和Reflection中所见。其中,将基于LLM的代理应用于视频游戏已成为最受欢迎的研究领域之一。这些方法将视频游戏的信息输入到LLM中,然后通过代理框架进行复杂的推理和整合,最终产生可以直接与游戏互动以完成任务的键盘和鼠标命令。先前的工作大多集中在访问视频游戏API以读取游戏环境和动作信息。例如,Wang等人提出的框架已成功应用于Minecraft游戏。代理可以在游戏内实现自主挖掘、建造和攻击敌人。然而,这种方法并不与人类玩游戏的方式一致,而且大多数游戏并不提供开放的API,这限制了这种方法的广泛应用。最近,像GPT-4o这样的视觉语言模型的出现,进一步增强了这些代理的视觉理解能力,展示了在移动应用和游戏中更广泛的潜力。例如,Cradle框架已在Red Dead Redemption 2 (RDR2)中实现。它直接使用RDR2的游戏截图作为输入,而不是使用API读取游戏内存信息。然而,Cradle在很大程度上依赖于游戏截图中的基于文本的引导信息来创建新技能。对于任务或游戏中文本引导较弱的情况,例如一些动作角色扮演游戏(ARPG),Cradle无法利用VLMs的有效性能。对于ARPG,许多研究人员采用强化学习方法,为特定任务预定义了惩罚和奖励。经过广泛的训练期和多次迭代后,训练有素的代理可以完成给定的特定任务。然而,基于RL的代理只能在它们被训练的环境中完成任务,并且很难转移到其他任务。ARPG包含大量的专业任务,这对RL代理的泛化能力提出了重大挑战。我们在表1中对比了一些代表性的方法。

在这里插入图片描述

因此,大多数现有研究都集中在相对简化的设置上。这种简化主要源于两个重大挑战:1)即时视觉输入。由于环境数据并不总是通过游戏API可访问,从视觉输入中学习成为一种更直接的策略,特别是在AAA游戏中(以大量时间、大量资源、大量金钱为特点),理解即时视觉输入至关重要。2)动作导向任务。动作游戏在玩家中非常受欢迎;然而,在这个领域,基于RL的代理仍然占据主导地位,它们需要大量的训练时间并且泛化能力差。对于基于VLM的代理来说,ARPG的游戏界面提供的文本提示非常少,大多数动作需要通过经验和自我创新来学习。因此,以前的代理发现很难从视觉输入中提取有效的指导信息。

在本文中,我们将选择AAA ARPG《黑神话:悟空》作为我们的研究平台,进行广泛的实验。我们致力于建立一个基于VLM的代理框架,彻底调查现有模型(例如GPT-4o、Gemini)在需要视觉输入和复杂动作输出的场景中的性能边界。其中,视觉输入仅指模型通过理解和分析游戏截图来做出决策,而复杂动作输出则需要模型执行复杂和连续的动作,如战斗场景中的精确操作。

为了实现这一目标,我们在游戏《黑神话:悟空》中定义了12个任务,其中75%的任务与战斗相关。几个最先进的VLM模型,包括GPT-4o,将被纳入这个基准测试,以全面探索它们的性能边界。随后,为了推进基于VLM的代理在AAA动作游戏的发展,我们将开源一个人类操作数据集,其中包含鼠标和键盘命令记录以及游戏玩法录像。最后,我们创新性地提出了一个VARP(视觉动作角色扮演)代理框架,包括一个动作规划系统和一个人类引导的轨迹系统。具体来说,动作规划系统负责生成适合战斗场景的动作组合,而人类引导的轨迹系统通过检索从人类数据中学习。通过广泛的评估,我们提出的框架展示了完成基本任务的能力,如捡起物品和打开宝箱,同时在90%的简单和中级战斗中取得成功。我们希望这项研究能为在复杂动作游戏环境中应用多模态代理提供新的见解和方向。本文主要贡献:

  • 基准测试:我们基于游戏《黑神话:悟空》定义了12个任务,其中75%专注于战斗。我们将几个最先进的视觉语言模型(VLMs),包括GPT-4o,纳入此基准测试中,以全面探索它们的能力边界。
  • 数据集:我们发布了一个包含游戏玩法视频及相关操作日志(包括鼠标移动、点击和键盘动作)的数据集,包含1000条记录。
  • 框架:我们提出了一个名为VARP的代理框架,它由动作规划系统和人类引导的轨迹系统组成。通过这些系统,代理能够执行复杂动作组合并从人类操作中学习。

2. 算法方法

2.1 概述

我们提出了一个名为VARP代理的新颖框架,它直接以游戏截图为输入。通过一组视觉语言模型(VLMs)的推理,最终生成可以直接操作游戏角色的Python代码形式的动作。每个动作都是由各种原子命令组合而成的序列。这些原子命令包括轻攻击、躲避、重攻击、恢复健康等。同时,VARP代理维护三个库:情境库、动作库和人类引导库。这些库可以被检索和更新,以存储用于自我学习和人类指导的密集知识。总体而言,VARP代理分为两个系统:动作规划系统和人类引导的轨迹系统,如图1所示。在动作库中,“def new_func_a()”表示由动作规划系统生成的新动作,而“def new_func_h()”表示由人类引导的轨迹系统生成的新动作。“def pre_func()”表示预定义的动作。以下各节将详细阐述每个系统。
在这里插入图片描述

2.2 动作规划系统

动作规划系统主要用于动作推理和生成。该系统使用情境库和可更新的动作库作为知识检索基础。在输入游戏截图的引导下,系统使用一组VLMs选择或生成适合当前情境的动作。生成的情境和动作被存储或更新在这两个库中。此外,我们提出了可分解任务特定辅助模块,以将大型任务分解为更小的子任务,然后由多个VLMs分布式处理,以减少模型遗忘和幻觉的发生。我们还引入了一个自我优化动作生成模块,以鼓励VLMs针对某些困难任务生成新的动作,从而更有效、更高质量地完成复杂任务。

2.2.1 基础VLMs组

受Cradle启发,我们的主要流程继续采用Cradle中的五个基础模块,其中一些基础模块调用VLM进行推理,形成一个基础的VLMs组。在初始化期间,我们手动预定义了一些动作,并将它们放入动作库作为先验知识。每个动作都是一个带有详细文本注释的Python函数,我们计算了这些注释的嵌入以便存储。信息收集负责从采样的游戏截图中收集信息,包括与情境和动作相关的文本和视觉信息。文本信息主要包括文本指南、文本标签和通知;视觉信息主要涵盖环境位置、角色动作和界面图标。前者借助OCR工具进行文本识别,后者使用目标检测工具进行视觉定位。自我反思以情境库中最后一段视频中的几个游戏截图为输入,评估上次执行的动作是否成功产生了正确的效果以及当前任务是否已完成。如果执行失败,该模块需要提供失败原因以指导下一步动作生成。任务推理基于前述模块的结果推断出要执行的当前任务,并生成任务描述。技能策划计算任务描述的嵌入与动作库中文本注释嵌入之间的相似度,以找到一些匹配的动作,这些动作形成候选动作集。决策制定利用思维链(Chain of Thought, CoT)方法,通过深入分析多个顺序问题(例如是否启用战斗模式、恢复健康或选择可用的法术技能等),最终从候选动作集中推断出最合适的动作,执行Python代码,并操作键盘和鼠标来控制玩家角色以完成任务。这五个基础模块将每个中间产品记录到情境库中。

2.2.2 自我优化动作生成模块

基础VLMs组只能从预定义的动作库或具有清晰文本提示的游戏截图中获取动作。对于ARPG中的某些任务,如实时战斗,这种方法无法学习新动作。因此,我们提出了一个自我优化动作生成模块(SOAG),允许VARP代理在战斗中总结敌人的动作,从而优化现有动作并生成新动作以反击敌人攻击。新动作是两个原子命令的组合:躲避和轻击。优化目标是最大化躲避敌人攻击的能力以及在最小化玩家角色健康损失的同时击中敌人。

具体来说,在SOAG中,我们引入了一个负责动作函数生成的组件。该组件以信息收集和自我反思的结果以及当前和上次的游戏截图为输入。它分析当前任务下敌人的特征,如名称、外观、武器等。最重要的是,它需要分析敌人当前和之前的动作。例如,对于名为Bullguard的强敌,其攻击动作大致可以分为:“用斧头向前冲”和“连续向下砍三次斧头”等。因此,该组件需要基于当前敌人的动作推断新的躲避和反击动作。例如,对于“用斧头向前冲”,新动作应该是先躲避一次,然后连续攻击;对于“连续向下砍三次斧头”,新动作应该是在躲避三次后再反击。生成的新动作是“躲避”和“轻攻击”原子操作的排列组合。生成的动作存储在动作库中,并附有详细的文本注释。

2.2.3 可分解任务特定辅助模块

在ARPG中,尤其是在BMW游戏中,VLM的推理涉及大量的标记,包括多个图像和长文本。VLM使用的注意力机制为长文本中的所有标记分配注意力。随着输入长度的增加,注意力分布变得越来越稀释。在基础VLMs组中,由于每个模块的输入标记过多,模型可能无法有效关注关键信息,导致遗忘和幻觉等错误。这个问题在决策制定模块中尤为明显,VLM在回答多个问题时经常出错。

为了解决这个问题,我们将基础模块分解,并为特定任务添加了多个并行辅助子模块,然后由VLM进行集成。结构类似于MLP。具体来说,如图1中的动作规划工作流程所示,我们将原来处理多个任务的决策制定模块分解为5个子模块。1)敌人子模块用于分析敌人的状态(如其健康、位置等)和动作描述,协助代理获取敌人的详细信息。2)战斗子模块通过观察游戏屏幕右下角的重攻击状态来决定使用哪种战斗方式,包括轻攻击或重攻击。3)健康子模块负责不断监控玩家的健康条。如果健康消耗过多,它通过优先恢复健康的动作来协助代理。4)法术技能子模块在同时分析战斗状态下的情况的同时监控玩家的法术技能状态,以确定使用可用法术技能的适当时机。5)集成子模块负责整合所有子模块的输出,并推理以确定当前特定任务的候选动作集中的最佳动作。可分解任务特定辅助模块将长标记分解并专注于每个单独的问题,显著提高了决策制定模块的准确性。
在这里插入图片描述

2.3 人类引导轨迹系统

人类动作被视为有价值的数据,隐含着丰富的物理和游戏世界知识,这可以引导非常复杂任务的高级动作组合,例如寻路任务和高难度战斗任务。为了从这些隐含数据中学习人类经验,我们首先收集了人类数据集,然后使用它来提高VARP代理的性能。人类操作数据的收集过程和数据集分析将在第3.1节中详细说明,包括鼠标键盘日志和游戏截图记录。在本节中,我们关注如何使用它来实现人类引导的轨迹系统。在本节中,我们将我们注释的数据集称为人类引导库。它是由游戏截图和人类操作组成的对集合,每对都有唯一的时间戳。

对于游戏中非常困难的任务,我们首先截取当前游戏界面的截图。基于这个游戏截图,我们在人类引导库中查询最相似的截图。然后我们将这个截图以及随后的n帧截图及其相应的操作输入到人类引导轨迹系统中。该系统将使用VLM分析和总结输入的图像和操作,最终输出一个新的人类引导动作,然后存储在动作库中供动作规划系统选择和执行。

3 实验

3.1 数据集收集

我们收集了一个包含鼠标和键盘日志以及游戏截图记录的人类操作数据集。具体来说,我们招募了200名志愿者来玩《黑神话:悟空》游戏并记录他们的操作,其中大约70%的人是第一次体验这款游戏。为确保数据集的质量,我们淘汰了未完成任务的志愿者的无效数据。在两周的时间里,我们最终收集了总共1000条有效数据条目。具体来说,超过90%的任务11(即击败游荡的亡灵)被丢弃,表明即使是玩家也难以在一次尝试中击败这个boss。此外,我们观察到志愿者在注释过程中表现出多余的动作,如过度的鼠标点击和滚动。因此,一些志愿者将被要求再次玩游戏以识别最优动作,这些精炼的数据将在我们的发布数据集中被标记为“清洁”。更多细节请参考补充材料。
在这里插入图片描述

3.2 基准和任务定义

为了调查现有视觉语言模型(VLMs)在玩动作游戏方面的能力,我们根据游戏的叙事定义了10个基本任务和2个挑战任务,其中75%的任务发生在战斗场景中。如图2所示,所有任务都集中在游戏的第一章,这是由于VLMs的理解和推理能力有限。在基准测试方面,我们允许代理测试每个任务5次,并计算每个任务的成功率。对于战斗任务,如果玩家角色击败了敌人,则认为任务成功;如果玩家角色被敌人击败并杀死,则认为任务失败。我们已经手动评估了12个任务的难度,并将它们分类为简单、中等、困难和非常困难。由于《黑神话:悟空》游戏中缺乏地图和指引,并且存在许多“隐形墙”,我们将任务12,自主导航(即在五分钟内从出生点移动到牛头怪的位置)归类为非常困难的任务。即使是对人类新手来说,这也是一个具有挑战性的任务。我们使用这个基准的成功率来评估VARP代理和各种VLMs的性能。

3.3 实施细节

所有评估都在配备NVIDIA RTX 4090 GPU的机器上执行,运行Windows操作系统。我们使用三个最受欢迎的VLM来驱动我们的代理:GPT4o-2024-05-13、Claude 3.5 Sonnet和Gemini 1.5 pro。我们还利用OpenAI的textembedding-ada-002模型为每个动作生成嵌入。BMW游戏的游戏界面大小设置为1920×1080。在VLMs推理期间,我们使用照片模式暂停游戏。我们使用Grounding DINO进行游戏截图中的人物和物体检测,以协助VLMs更好地提取有用信息。

3.4 性能评估

为了评估没有人类引导的VARP代理的性能,我们在我们的提议基准上进行了实验,同时禁用了VARP代理的人类引导轨迹系统。在这次性能评估中,我们只测试了基准,并与人类新手玩家进行了比较。

我们计算了由不同VLMs驱动的VARP代理和人类新手玩家在完成每个任务时的成功率。如图3所示,VARP代理和人类新手玩家在任务1到8上的成功率都很高,大多数任务的成功率接近100%。在任务9中,VARP代理的平均成功率为40%,这也证实了它的“中等”难度。任务10中的敌人是玩家在游戏中遇到的第一个boss级怪物。对于人类新手玩家,这项任务的成功率为15.63%,而VARP代理的平均成功率为20%。任务11被归类为“非常困难”,因此人类新手和VARP代理的成功率都很低。具体来说,VARP代理受到VLMs推理速度的限制,无法实时输入每一帧游戏画面,只能在第二级时间间隔输入关键帧。在ARPG中,这很容易导致错过敌人攻击的关键信息。因此,任务11对代理来说特别具有挑战性。在自主导航方面,人类可以轻易地在五分钟内找到关卡的最终boss敌人,但对于VLMs来说,这是一个几乎不可能完成的任务。没有人类引导,成功率为0%。由于游戏没有为导航任务提供指引或提示,并且包含许多“隐形墙”,VLMs缺乏在没有人类帮助的情况下感知3D场景中正确路径的能力。

总之,VARP代理在任务1到11的表现已经接近新手人类玩家。然而,在3D场景感知和先验知识方面,VARP代理仍然远远不如人类。
在这里插入图片描述
在这里插入图片描述

4 结论

在本研究中,我们探索了当前视觉语言模型(VLMs)在复杂动作角色扮演游戏(ARPGs)中的潜力,以《黑神话:悟空》作为实验平台。我们提出的VARP框架引入了一种新颖的游戏互动方法,利用仅视觉输入进行ARPG环境中的动作规划。VARP框架通过在基本和中等战斗场景中实现90%的成功率,展示了其潜力,表明VLMs可以有效利用在传统上由强化学习主导的任务中。我们提出的基准可以有效评估视觉代理在《黑神话:悟空》游戏中的性能。此外,我们提供的人类操作数据集为未来研究提供了宝贵的资源,使得在视觉复杂环境中研究类似人类的游戏玩法和动作决策成为可能。我们的发现强调了多模态代理在提高动作导向任务中的泛化能力和性能方面的潜力。展望未来,这项研究的见解可能为更复杂的代理设计铺平道路,这些代理能够处理ARPGs及其它领域中更广泛的挑战。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1542315.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Mixamo动画使用技巧

1、登录Mixiamo网站 2、下载人物模型 3、找到FBX文件 选中人形骨骼 3、下载动画 4、拖拽FBX 5、注意事项 生成的FBX文件中会包含一个骨骼一个动画 如果人物有骨骼,则不需要,没有需要对应此包中的骨骼,骨骼不可以通用,动画通用 …

某集群管理系统存在任意文件读取漏洞

你为什么要拼命努力?父母的白发,想去的地方很远,想要的东西很贵,喜欢的人很优秀,周围人的嘲笑,以及,天生傲骨。 漏洞描述 利用漏洞,攻击者可以读取 Windows 或 Linux 服务器上的任…

【QT开发-Pyside】使用Pycharm与conda配置Pyside环境并新建工程

知识拓展 Pycharm 是一个由 JetBrains 开发的集成开发环境(IDE),它主要用于 Python 编程语言的开发。Pycharm 提供了代码编辑、调试、版本控制、测试等多种功能,以提高 Python 开发者的效率。 Pycharm 与 Python 的关系 Pycharm 是…

微信小程序教程:如何在个人中心实现头像贴纸功能

在微信小程序中,个性化设置是提升用户体验的重要手段。本文将详细介绍如何在个人中心模块中实现头像贴纸功能,让用户可以自由地装饰自己的头像。 头像贴纸功能允许用户在个人头像上添加装饰性贴纸,增加个性化表达。以下是实现该功能的主要步骤…

安全帽佩戴识别摄像机:守护安全的智能之眼

在现代工业和建筑等诸多领域中,安全始终是重中之重。每一处施工现场、每一个生产车间都潜藏着可能对人员造成伤害的风险因素。而安全帽,作为保护工作人员头部免受伤害的关键装备,其是否被正确佩戴就显得尤为关键。此时,安全帽佩戴…

mysql数据库--索引

索引 1.索引 在数据中索引最核心的作用就是:加速查找 1.1 索引原理 索引的底层是基于BTree的数据存储结构 如图所示: 很明显,如果有了索引结构的查询效率比表中逐行查询的速度要快很多且数据越大越明显。 数据库的索引是基于上述BTree的…

硬件(驱动开发概念)

驱动程序开发 裸机驱动(无操作系统) Linux驱动 以计算机技术为基础,在软件和硬件层间可以被剪裁的专业硬件计算机系统 SOC:片上系统 Kernel:内核 x86 (CISC:complex instruction set computer 复杂指令…

一款前后端分离CRM客户关系管理系统,支持客户,商机,线索,合同,发票,审核,商品等功能(附源码)

前言 在当今竞争激烈的商业环境中,企业面临着各种挑战,其中包括如何更有效地管理和跟进潜在客户以提高销售业绩。传统的客户管理方式往往效率低下,无法实时更新客户-信息,导致销售机会流失。因此,市场上急需一款能够简…

GitHub 上高星 AI 开源项目推荐

FIFO-Diffusion 介绍:FIFO-Diffusion 是一个创新的开源项目,它能够基于文本描述生成无限长度的高品质视频,而无需任何预先的模型训练。这一技术的核心在于其高效的内存管理策略和先进的扩散模型,使得即使是小型GPU配置也能轻松应…

ES学习笔记

目录 简介 原理 基础概念 lucene总结 es的进步 实现过程 写入流程 搜索过程 和Mysql搭配 学习来源:https://i12pc3nf6d.feishu.cn/wiki/FnPwwGXGli1ANGkaMz5chvhmn2e#share-OYKJdYhehotnMgxrBiUcZSJJnCb https://i12pc3nf6d.feishu.cn/wiki/FnPwwGXGli1ANG…

【Linux】【Hadoop】大数据基础实验一

实验一:熟悉常用的Linux操作和Hadoop操作 一、实验目的 Hadoop运行在Linux系统上,因此,需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作和Hadoop操作,为顺利开展后续其他实验奠定基础。 二、实验平台 操作系统…

comp 9517 Computer Vision week2

图像处理 1.空间域操作(Spatial domain operation)1.1 点(Point operation)1.2 邻域(Neighbourhood operation)空间滤波(spatial filtering)修复边界问题(fixing the border problem)通过卷积进行空间滤波(Spatial filtering by convolution)卷积特性:滤波器强度梯度…

Java 缓存机制与缓存失效

在分布式系统中,缓存 是提高系统性能、减轻数据库压力的常用技术。合理的缓存策略不仅能提升响应速度,还能节省资源。不过,缓存并不是万能的,缓存失效 是开发中必须考虑的问题。如果处理不好,可能会导致数据不一致或性…

使用库函数点亮一个LED灯

软件设计 STM32Gpio的介绍 如果想让LED0点亮,那么R12就要是高电平,LED0就要是低电平,也就是PF9就是低电平 F407系统主频要工作在168MHZ F103的话是工作在72mhz F429的话就180MHZ 接着我们就要使能Gpio的时钟,使能之后对GPIO相关…

YOLOV8输出预测框的坐标信息

结果:(前提是对应类别的yolov8模型已经训练好) 具体实现: 在ultralytics\utils\plotting.py里面 CtrlF搜索box_label 再次照片的最后一行输入: # 左上角cv2.putText(self.im, f"({p1[0]}, {p1[1]})", (p1…

19.初始C语言指针

初始C语言指针 1.指针的认识2.指针变量的引入3.指针变量的类型4.指针的应用场景15.指针的应用场景26.作业 1.指针的认识 指针 地址 //int a 10; //类型 变量名 内存地址 值 1.变量名直接访问2.通过地址访问&:取地址运算符* :将地址内的值读取…

Nacos未授权下载配置信息

0x01 漏洞描述: Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos存在未授权文件下载,攻击者在不登录情况下可未授权下载系统配置文件。 攻击者利用该漏洞可未授权获取到系统配置文件,如数据库和Redis连接地址…

【Delphi】创建应用程序和 LiveBindings示例(FMX)

一、创建一个FMX程序 界面上放置上如下3个控件:TProgressBar1, TArcDial1,TTrackBar1。 二、打开LiveBindings Designer 设计器 三、在 LiveBindings Designer 中,您的绑定图只包含对象,您可以将它们连接起来。 四、在设计器中,在…

openFrameworks_如何使用ofxXmlSettings和ofxGui来创建识别界面

效果图: 代码及详解 1.添加两个插件的头文件: #include "ofxGui.h" #include "ofxXmlSettings/src/ofxXmlSettings.h" 2.添加GUI部分,然后在.h声明右边的openframeworks的UI部分,包括面板ofxPanel,按钮ofx…

Tomcat 漏洞复现

1、CVE-2017-12615 1、环境开启 2、首页抓包,修改为 PUT 方式提交 Tomcat允许适用put方法上传任意文件类型,但不允许isp后缀文件上传,因此需要配合 windows的解析漏洞 3、访问上传的jsp文件 4、使用工具进行连接 2、后台弱⼝令部署war包 1…