“AI玩手机”原理揭秘:大模型驱动的移动端GUI智能体

作者|郭源

前言

在后LLM时代,随着大语言模型和多模态大模型技术的日益成熟,AI技术的实际应用及其社会价值愈发受到重视。AI智能体(AI Agent)技术通过集成行为规划、记忆存储、工具调用等机制,为大模型装上“手脚”,使其能够利用强大的多模态感知交互与推理决策能力,与真实世界进行有效交互,成为连接人类与数字世界的桥梁,并迎来前所未有的发展机遇。(了解更多关于智能体的见解:《在后LLM时代,关于新一代智能体的思考》) 。

近期,在诸多类型的智能体中,能够自动化执行GUI(Graphical User Interface,图形用户界面)交互任务的多模态智能体受到了广泛的关注。多模态GUI智能体能在手机、平板、电脑等终端设备上,通过模拟人类的点击、滑动、输入等操作,与图形用户界面进行交互,完成信息获取和功能执行。例如下图中,移动端GUI智能体框架AppAgent[1]能够通过接受自然语言指令,理解用户意图,并制定执行计划,在手机APP中完成指定任务,展现了其强大的应用能力。

总体来说,多模态GUI智能体具备以下显著优势:

  • 高实用价值:手机作为人类最常用的工具,将AI技术与手机深度融合,将带来极大的实用价值;
  • 构建“AI操作系统”:有助于打破海量应用间的壁垒,实现手机功能间的统一管理;
  • 提升用户体验:通过自动化完成重复繁琐的GUI操作,不仅能为日常生活带来便利,还能帮助行动不便的用户轻松使用手机功能,展现出更强的泛化性和拟人性。

近期,国内外众多企业纷纷瞄准GUI智能体领域,推出了一系列相关工作和产品,如Anthropic推出的基于Claude 3.5“Computer Use”功能、微软的解析屏幕截图、标注可交互元素的工具OmniParser、荣耀搭载智能体的个人化全场景AI操作系统MagicOS 9.0等 。

本文将聚焦于GUI智能体中的移动端智能体,从能力维度、核心挑战、技术细节、研究概况、发展瓶颈及未来趋势等多个方面,进行深入解析与探讨。

移动端GUI智能体的技术范式

总的来说,对于大模型驱动的移动端GUI智能体,其核心在于将任务指令、历史轨迹、当前状态、补充提示等信息输入大模型,经大模型推理后形成形式化的动作决策,并通过驱动工具在设备上执行。其技术范式可以从输入模态和基座模型两个维度进行分类。

目前,移动端GUI智能体大多在安卓(Android)平台上实现,这得益于安卓平台在调试工具、模拟器搭建和开源数据等方面的透明度和成熟度。

在输入模态方面,技术可以分为纯文本模态输入和多模态信息输入。纯文本模态主要依赖于Android平台的调试工具(如ADB)和模拟器,通过获取无障碍树(Accessibility Tree,ally tree) 或利用OCR(光学字符识别技术)和IconNet(GUI元素识别网络)等视觉工具解析截屏,获取界面元素和视图信息,然后将这些信息与任务目标、动作历史等一起输入语言模型进行决策。

例如,Google的Android in the Wild[2]和AndroidControl[3]两篇工作中的智能体实现,均采用了将屏幕信息以html格式的文本形式输入给模型的方法。而AndroidWorld[4]中的T3A模型,则是通过获取无障碍树生成的元素列表作为屏幕信息的输入,该列表还详细列出了各个元素上可执行的操作。模型经过推理后,会输出一个具体的操作指令,如{"action_type": "scroll","direction": "down"},这种格式化的动作指令经过解析后,可以无缝对接Android调试工具,从而在实体设备上执行相应的操作。

AitW中屏幕解析得到的html

然而,纯文本信息输入模式存在依赖后台工具、解析错误、视觉信息缺失等问题。随着多模态大模型技术的发展,将屏幕截图作为视觉输入已成为操作新范式。例如,AutoGUI[5]创新性地基于第一性原理,构建了多模态GUI自主智能体。研究者们在1B级别的Encoder-Decoder多模态架构(BLIP2视觉编码器 + FLAN-Alpaca语言模型)上进行GUI训练,能够依据用户目标、历史动作及当前截图进行动作决策,实现了“所见即所得,决策即控制”;论文MM-Navigator[6]中探讨了利用GPT-4V进行GUI操作的可能性,通过输入带元素标注的屏幕截图和任务相关的信息,该模型在常用任务上展现了出色的零样本(Zero-shot)执行能力。

如今,将屏幕截图作为主要输入,并辅以工具及后台解析作为场景感知信息,已成为场景输入模态的主流方案。通过内生能力增强、屏幕解析工具插件等手段,智能体正逐步减少对后台信息、标注信息的依赖,以更便捷地适应更广泛的场景,这已成为一个技术发展的趋势。

在基座模型方面,技术路线包括基于闭源强模型API和基于开源模型领域训练两种。

针对闭源模型技术路线,人们发现GPT-4V,Gemini-1.5-Pro等SoTA多模态大模型已具备在GUI操作中展现零样本执行的潜力,并探究了Prompt的精细设计、输入信息的场景增强及多智能体合作等潜在领域。例如,AitZ(Android in the Zoo)[7]提出有别于传统Chain-of-Action和Chain-of-Thought Reasoning的Chain-of-Action Thought推理机制,该机制将场景观察,动作规划,操作Grounding等决策流程显式地集成到推理链路中,从而显著提高了决策成功率,Mobile-Agent-v2框架则通过Planning Agent、Decision Agent及Reflection Agent进行协作,辅以memory等机制,进一步提高了任务的完成成功率。

相比之下,开源且参数较小的模型具有部署成本低、推理效率更高以及便于个性化适配等优点,但其通用性和领域能力相对较弱。为了增强基座模型在GUI领域的能力,CogAgent[8],MobileVLM[9],Qwen2-VL[10],OS-ATLAS[11]等工作通过收集大规模GUI领域数据,对模型进行了场景元素感知、动作Grounding等任务的领域训练。监督微调(Supervised Fine-Tuning,SFT)已被证明能有效提升模型在领域内的表现。例如,Auto-GUI,CoCo-Agent[12]等工作利用静态操作轨迹进行微调,取得了领域内动作预测表现的大幅提升。而DigiRL[13]引入offline-to-online强化学习机制,在探索轨迹上训练模型,成功提升了端到端的任务成功率。

移动端GUI智能体的数据构造

我们可以将GUI领域的数据划分为两大类:预训练任务数据和操作序列数据。

预训练任务数据涵盖了交互数据以及标注的单界面数据,这些数据通过GUI grounding、GUI VQA等训练任务,能够有效提升智能体在GUI领域的专业知识和能力。而操作序列数据则是一系列与下游任务一致的序列式数据,包含用户指令和GUI交互轨迹。

在构造这些数据时,我们可以采用多种方法,包括人类手动标注、模型自动化标注以及人类静态标注与模型数据增强相结合的混合标注方式 。目前,主流的GUI交互序列数据集,如Android in the Wild和AndroidControl,都是采用任务分发与人类众包团队标注的方式获得的。其具体做法是让标注者通过web工具在电脑端操作手机,并记录操作轨迹。

为了进一步提升数据集的质量,有些研究采用了数据增强的方法。例如,AitZ使用GPT-4o对人类标注的静态交互数据进行额外信息的标注,如场景简述、动作思考等,模拟合成人类的分析、决策过程。

在模型自动化数据方面,OS-ATLAS通过DFS和随机游走探索从模拟器中收集界面相关信息,以构建训练数据集。此外,DigiRL和DistRL尝试了让智能体在交互式环境中自生成行为轨迹,并用于训练。

下图展示了AndroidControl数据集的论文中(2024年6月)对各个常用静态GUI轨迹数据集的对比和总结。

值得一提的是,许多测评和实践结果都表明,现有的基于微调的开源GUI智能体基座在领域外测试任务上常常表现出灾难性的OOD性能下降(后面部分中会详细展开) 。这凸显了构建多样、丰富的GUI训练数据的迫切性。Google在AndroidControl中进行了GUI Data Scaling Law的探索,并指出要想在OOD任务上达到与当前领域内相当的表现,训练数据量需要增加1-2个数量级。因此,搭建一个自动化、可扩展的数据构建框架对开源、通用GUI智能体的开发以及迭代具有重要意义。

移动端GUI智能体的基座增强

在这一部分,我将深度剖析移动端GUI智能体的核心能力构成,并探讨这些领域内的最新研究进展。

从宏观视角来看,智能体的行为逻辑可以总结为其与复杂外界环境的交互过程。这一过程包含从环境中获取当前状态的观察(Observation) ,基于环境状态、自身知识及任务目标进行推理(Thought/Reasoning) ,进而做出动作决策并执行于环境(Act) ,并最终进行观察总结(Reflection) 。这三个阶段分别对应环境感知能力、规划推理能力以及动作落实(Grounding)能力。此外,在实际落地部署时,高效部署能力和场景泛化能力也是衡量GUI智能体性能的关键指标。

环境感知(Perception)能力

环境感知能力主要指GUI智能体对其操作设备(所处环境)的观察和解读能力,包含对环境特征的感知(如屏幕上的文本、控件、布局等视觉层面)和对环境内容的理解(如各元素的功能、屏幕状态等知识层面信息) 。

传统的多模态预训练方法往往侧重于图像整体标签的识别,而忽视了细粒度元素和布局的理解,同时,缺乏GUI相关的领域数据,导致在面对复杂GUI界面时,模型容易出现场景感知残缺和知识匮乏等问题。例如,在下图的安卓屏幕截图中,基于GPT-4V的智能体在执行创建特定日程的任务时,并没有感知到“All-day”选项没有被勾选这个重要信息,导致无法满足用户需求。

环境感知能力缺陷例子

为了增强环境感知能力,可以从数据增强和模型增强两个层面入手。在数据层面,通过引入后台无障碍树中包含的界面信息和外部工具的屏幕的解析信息来补充输入,以弥补模型感知能力的不足。例如,AndroidWorld中M3A,AitZ等工作。微软近期开源的OmniParser微调了一个目标识别的YOLO模型和一个对元素做Image Caption的BLIP模型,能够轻量化地实现解析屏幕,识别并标注出当前界面中的UI元素信息作为辅助信息输入,可以作为灵活的插件来赋能智能体感知增强。

在模型层面,需要通过创新模型架构和训练数增强模型在预训练阶段对复杂GUI界面和元素的处理、分析能力。例如,开源GUI专家模型CogAgent中,通过设计轻量级的“高分辨率交叉注意力模块”,在降低显存和计算开销的同时,可以成功理解高分辨率图片。小米MobileVLM收集大量GUI界面数据,设计了元素列表生成、动作空间生成、GUI任务执行等预训练任务,增强基座模型的GUI领域知识和环境感知能力。

长远来看,环境感知和理解能力应当随着训练数据和策略的进步,集成为多模态基座模型的内生能力。

规划推理(Reasoning)能力

规划推理能力是指智能体结合世界知识和场景理解,制定实现用户需求的下一步动作规划的过程。可以形式化为输入用户目标 、场景观察和交互历史,输出自然语言形式的动作计划 。

在推理内容结构方面,GUI智能体推理范式包含直接构建动作链的Chain-of-Action(CoA)范式和逐步推理后做出决策的Chain-of-Thought(CoT)范式。此外,Android in the Zoo提出Chain-of-Action Thought(CoAT)范式,将决策拆分为屏幕总结、动作思考和动作预测步骤,提升了决策准确率。

以上几种范式既可以作为强基座模型做Prompting时的模式选择,也是构造GUI下游任务微调数据时的格式参考。OpenAI o1-preview的发布揭示了Inference Scaling在推理领域中的巨大潜力。这一技术不仅在数学、代码等LLM推理任务中展现了其搜索和优化的强大功能,还与智能体在复杂环境中的任务规划、执行工作流存在着天然的契合。具体而言,我们可以将智能体所处的每个状态建模为一个节点,而智能体在环境中的搜索、执行、回溯等过程,则可以建模为部分可观测马尔可夫决策过程(Partially Observable Markov Decision Process, POMD) 。

例如,Agent Q[14]在WebAgent的设定下进行了智能体自主学习框架的实践。它在每个决策节点采样多个动作方案进行尝试,并结合蒙特卡洛树搜索(MCTS)算法和自我评价机制,构建偏好数据进行迭代优化。这一方法显著超过了行为克隆和强化微调等传统基线方法的表现。WebPilot[15]利用Planner、Control、Explorer、Appraiser等机制,借鉴MCTS的思想在环境中进行尝试探索、调整回溯等,在尝试中得出正确的行为轨迹。基于Inference Scaling的复杂场景推理优化,有望成为提升智能体规划推理能力和泛化性能的关键技术。

此外,多智能体协作(如UFO[16]框架中以Host Agent+Actor Agent的dual Agent模式来进行复杂任务的规划)和智能体行为流程优化(如M3A框架中引入React+Reflextion思路)也是进一步提升GUI规划推理能力的有效尝试。

动作落实(Grounding)能力

动作落实能力是将自然语言形成的动作计划转换为形式化的操作指令的能力。由于智能体与真实环境进行交互的本质要求,这一能力成为了GUI智能体另一大性能考验。

SeeAct中的研究表明,GPT-4V在web agent(网页智能体)任务上拥有较强的通用性计划制定能力,即能够制定被验证为正确的自然语言形式行为规划 ,然而,其将计划落实到具体场景的能力却存在明显局限。这一问题同样存在于具有富媒体多控件的移动端GUI任务中。因此,针对grounding能力的强化训练也成为了GUI基座模型强化的一个重要任务。

在模型训练方面,研究者们通过构造大量数据来增强GUI智能体基座模型的grounding能力。例如,SeeClick[17]从Common Crawl中收集了约300k个网站,从html中收集元素;同时,还整理面向Mobile端的Widget-Captioning和Rico数据集,构造了大规模的GUI grounding数据集,用于训练Qwen-VL模型得到SeeClick。

UGround[18]则通过网页合成大量高质量的训练数据,利用先进的MLLM生成多样化的指代表达,并训练一个强大的通用视觉定位模型,以精确地将这些表达映射到GUI上的坐标 。

此外,OS-ATLAS构建了自动化数据收集框架,构建了涵盖web、desktop、mobile端的13M GUI grounding数据,对多模态基座进行了大规模的GUI预训练,从而成功验证了GUI grounding任务上的scaling law,并大幅提升了模型作为预训练基座的GUI能力。

在决策范式方面,如SeeAct这样将动作规划和grounding解耦的决策范式也被越来越多地采纳。例如,清华等机构近期发布的AutoGLM便采用了这种模式。此外,UGround等工作还尝试了闭源模型+开源模型协同工作的模式,用理解、推理能力强大的闭源模型(如GPT-4o)作为规划模型,用grounding上做过强化训练的开源模型(如SeeClick,UGround)来执行Action Grounding操作,各取所长,提高表现。

AutoGLM决策模式

高效部署(Efficiency)能力

由于移动端GUI智能体的部署和应用场景的实际需求,轻量化、高效部署推理也是其重要的能力要求。使用闭源模型api进行复杂的提示词工程(prompt engineering)虽然能提升性能,但往往伴随高昂的时间和token成本。因此,使用小模型执行任务更符合应用需求。

Auto-GUI利用1B级别的Encoder-Decoder多模态架构,实现了近乎实时的预测速度,每轮动作预测耗时不足1秒,且GPU显存占用低于10GB。

华为、UCL联合推出的LiMAC框架,结合了 Transformer 网络和一个小型的微调版 VLM,实现了高效任务的处理。LiMAC首先利用一个约500M参数量的紧凑型模型处理任务描述和智能手机状态,有效应对大部分动作需求。对于需要自然语言理解的动作(如撰写短信或查询搜索引擎),则会调用一个 VLM 来生成必需的文本。这种混合策略不仅可以降低了计算需求,还提高了响应速度,任务执行时间明显缩短(速度提升30倍,平均每个任务只需3秒),同时提高了准确性。

尽管如此,模型的轻量化和复杂任务规划推理能力以及对不同应用场景的泛化性能之间仍然需要寻求一个平衡点,为未来的研究留下了广阔的空间。

场景泛化(Generalization)能力

理想的移动端GUI智能体不应局限于少数常用App中预定义高频任务,而具备在广泛场景(如系统更新、新下载的App以及训练数据中未包含的小程序)中的强大泛化能力。良好的泛化能力,一方面要求提高并充分激活基座模型的基础能力,另一方面则需要确保训练数据多样性,防止过拟合。

在模型的环境适配方面,OmniParser的屏幕信息解析功能和AppAgent的环境探索机制在一定程度上帮助了模型在未知领域的泛化。

在训练数据方面,已有的工作证实了:

  • 仅在特定GUI数据集上微调的开源模型,在领域外任务上的表现往往不尽如人意。
  • 要使模型在领域外的表现与领域内相当,通常需要比领域内多一到两个数量级的训练数据。
  • 利用在线轨迹进行偏好学习,展现出帮助模型更好适应环境的潜力。

移动端GUI智能体的性能评估

当前,GUI智能体的基准测试主要聚焦在两个方向:

  • 单步动作决策平均准确率
  • 端到端任务完成成功率

在GUI智能体发展早期,受限于测试环境,研究者往往依赖于人类标注的静态GUI操作序列数据集。利用GUI智能体来预测当给定了用户指令、动作历史、当前截屏、标注信息等的下一步动作,并将其与人类标注的执行合成标准(作为ground truth)进行比较,从而评估动作类型预测准确率以及动作预测准确率。

Google发布的Android in the Wild(AitW)数据集便是此类评测方法的典型代表。AitW数据集是由人类标注团队众包标注的一个大规模GUI操作轨迹数据集,它包含了30K个不同的任务指令、715K段任务执行轨迹,以及每张截图对应的IconNet、OCR识别结果。单步动作预测测试表明,SoTA多模态大模型在动作预测上展现出一定能力,而经过微调的开源模型在领域内测评中表现突出。

下图是CoCo-Agent中所做的各个模型在AitW上的测试结果。基于全面感知,轨迹微调的llava在测试中表现显著优于GPT-4,达到SoTA水平。

但是,基于单步动作决策的测评模式与真实部署场景中端到端的任务执行模式仍存在差距。另外,人类标注的静态数据集因噪声、GUI操作任务多样性等原因,可能导致性能测评上的偏差。因此,近期多个国内外团队基于安卓模拟器搭建了端到端的GUI Agent任务执行测试环境,通过模拟器系统信号或VLM评估模型,来测定端到端任务完成成功率。

DigiRL选取了AitW的任务指令和系统版本,但是让模型在安卓模拟器的交互式环境中尝试执行任务。在这样的测试模式下,在单步动作预测测试中表现优异的Auto-UI、CogAgent模型显示出很低的任务完成率。而在离线静态轨迹和在线主动探索轨迹上进行强化学习后,Auto-UI的测试集任务完成成功率由14.6%提升到71.9%,这体现了强化学习方法在提升端到端任务完成能力上的潜力。同时,类似Mobile-Agent-Bench,AndroidWorld等测试基准也展现了主流GUI Agent框架在端到端任务执行上实际表现并不理想。

9月,SPA-Bench[19]团队构建了一个涵盖中英文、系统及第三方应用、单一应用及跨应用场景的GUI测试基准,集成了7个基于GPT-4o的闭源智能体和4个经过微调的开源智能体,进行了全面的性能评估,包括任务成功率、任务执行时间、token消耗数。测试结果显示:

  • 在领域内表现良好的开源微调模型在领域外任务执行上展现出极其严重的OOD性能下降,表现远不如基于闭源模型的智能体;
  • 由于基座模型和训练数据的原因,GUI Agent在中文任务上的表现弱于英文任务;
  • 基座模型在跨app复杂任务上的表现显著弱于单app简单任务;
  • 调用闭源模型api、设计多流程决策、多智能体合作等精细prompt策略能提高表现,但同时也增加了执行时间和token的开销。

总的来说,移动端GUI智能体的评估经历了从单步动作预测到端到端任务成功率测评,从分布内任务到通用任务泛化能力,从简单任务到跨App,甚至跨平台(移动端+PC端)的演变。测试结果表明,无论是开源模型还是闭源模型,在高效、泛化地执行GUI操作任务方面还有较大差距。尤其是开源模型,因训练数据多样性缺乏而导致的OOD性能下降问题尤其显著。此外,不同智能体实现中输入模态、形式和输出动作空间的差异也为测评基准的搭建带来挑战。因此,我们期待未来能有更加统一、规范的动作空间和任务测试形式,以推动GUI智能体的进一步发展。

移动端GUI智能体的安全风险

随着GUI性能的持续增强,其潜在的安全风险也愈发受到关注。研究工作EnvDistrac讨论了环境中的干扰带来的风险,即智能体是否会被环境中的信息所诱导,忘记原始指令。研究者构建了弹框、搜索、推荐和聊天四种常见的攻击场景,插入与任务无关的攻击指令,发现在有风险的环境中,智能体容易受到干扰,不仅会放弃原始用户目标还可能做出不忠实的行为。

杨笛一团队针对OS智能体设计了一种新的弹窗攻击的方法,利用Attention Hook(注意力钩子)、Instruction(指令)、Info Banner(信息横幅)等多种弹窗攻击机制使Claude的计算机操作表现大幅下降。这些工作揭示了在大规模部署使用GUI智能体之前,我们需要更强大的安全措施。

移动端GUI智能体的未来展望

从前文的技术分析中,我们可以总结出移动端GUI智能体面临的几大挑战:

  • 闭源模型导致的高执行成本和开销:采用闭源模型api及多流程、多智能体决策机制,会显著增加任务决策时间和token消耗,难以应用于实际场景;
  • 开源模型的OOD性能瓶颈:虽然经过GUI训练增强后的开源模型在领域内表现优异,甚至优于GPT-4o等SoTA闭源模型,但在领域外数据上却展现出严重的OOD性能下降,泛化性能较差。传统的基于行为克隆(Behavior Cloning,BC)的微调方法不足以构建具有强大泛化性能的GUI操作智能体;
  • 对后台及标注信息的过度依赖:现有的决策范式和框架多依赖于系统后台信息和外部工具标注信息,这限制了智能体在通用领域外任务以及微信小程序、IOS系统等难以获得后台信息的场景下的表现;
  • 数据构造的低效与不可扩展性:目前主流的GUI数据集,尤其是操作序列数据集,大都依赖人类众包标注得到,数据生产效率低、成本高、可扩展性差;
  • 复杂任务的规划、执行能力弱:在执行跨App、长序列,复合任务等复杂GUI任务时成功率显著偏低;
  • 对复杂GUI场景的理解能力欠缺
  • 很容易被环境注入攻击劫持,存在安全风险

从这些挑战出发,我们可以展望这一技术领域的未来发展方向:

  • 端云协同机制:发挥云端模型高性能和端侧模型高效、保护隐私的优势,设计端云协同工作的机制,平衡效率和性能;
  • 轻量化模型GUI操作能力:通过知识蒸馏、高效微调、混合结构等方法让轻量化小模型拥有GUI操作能力;
  • 自主数据合成与探索:统建智能体通过自主探索、分享、记忆等机制掌握工具、适应新环境的能力,自动合成轨迹数据;
  • 文生图技术辅助数据构建:通过文生图技术模拟app界面并构建数据,减轻对实际交互式环境中收集数据的依赖;
  • 规划、推理、错误分析机制的优化:引入长程规划、过程监督、自我反思及基于搜索的复杂推理等机制,进一步提高智能体在复杂任务中的表现;
  • 智能体行为安全对齐:构建用户-智能体-环境的三方安全对齐机制,完善人机交互、隐私保护等现实问题。

参考资料:

  1. https://arxiv.org/abs/2312.13771
  2. https://arxiv.org/abs/2307.10088
  3. https://arxiv.org/abs/2406.03679
  4. https://arxiv.org/abs/2405.14573
  5. https://arxiv.org/abs/2309.11436
  6. https://arxiv.org/abs/2311.07562
  7. https://arxiv.org/abs/2403.02713
  8. https://arxiv.org/abs/2312.08914
  9. https://arxiv.org/abs/2409.14818
  10. https://arxiv.org/abs/2409.12191
  11. https://arxiv.org/abs/2410.23218
  12. https://arxiv.org/abs/2402.11941
  13. https://arxiv.org/abs/2406.11896
  14. https://arxiv.org/abs/2408.07199
  15. https://arxiv.org/abs/2408.15978
  16. https://arxiv.org/abs/2402.07939
  17. https://arxiv.org/abs/2401.10935
  18. https://arxiv.org/abs/2410.05243
  19. https://arxiv.org/abs/2410.1516

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小R的二叉树探险 | 模拟

问题描述 在一个神奇的二叉树中,结构非常独特: 每层的节点值赋值方向是交替的,第一层从左到右,第二层从右到左,以此类推,且该二叉树有无穷多层。 小R对这个二叉树充满了好奇,她想知道&#xf…

Unity类银河战士恶魔城学习总结(P141 Finalising ToolTip优化UI显示)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ UI部分暂时完结!!! 本章节优化了UI中物品描述的显示效果,技能描述的显示效果 并且可以批…

windows实现VNC连接ubuntu22.04服务器

最近弄了一个700块钱的mini主机,刷了ubuntu22.04系统,然后想要在笔记本上通过VNC连接,这样就有了一个linux的开发环境。最后实现的过程为: 安装vnc服务器 安装 VNC 服务器软件: sudo apt update sudo apt install t…

Perforce《2024游戏技术现状报告》Part3:生成式AI、版本控制、CI/CD等游戏技术的未来趋势与应用

游戏开发者一直处于创新前沿。他们的实践、工具和技术受到各行各业的广泛关注,正在改变着组织进行数字创作的方式。 近期,Perforce发布了《2024游戏技术现状报告》,通过收集来自游戏、媒体与娱乐、汽车和制造业等高增长行业的从业者、管理人…

初阶数据结构之队列的实现

1 队列的定义 什么是队列呢?队列只允许在一端进行插入数据操作,在另一端进行删除数据操作。队列具有先进先出FIFO(First In First Out)的特性。 队头:删除数据的一端称为队头。 队尾:插入数据的一端称为队尾。 2 队列底层结构…

阿里云私服地址

1.解压apache-maven-3.6.1-bin 2.配置本地仓库&#xff1a;修改conf/dettings.xml中的<localReoisitory>为一个指定目录。56行 <localRepository>D:\apache-maven-3.6.1-bin\apache-maven-3.6.1\mvn_repo</localRepository> 3.配置阿里云私服&#xff1a;…

小狐狸AI数字人分身声音克隆形象克隆口播口型同步SAAS系统源码

AI数字人软件系统的未来趋势和用途正朝着多模态交互和智能化方向发展。 1. **多模态交互**&#xff1a;AI数字人技术正在从单一的文本或语音交互&#xff0c;转变为更加自然的多模态交互方式&#xff0c;包括语言对话、行为互动和自主学习能力。这种技术的提升使得数字人能够更…

Idea忽略提交文件、Idea设置文件隐藏、Idea提交时隐藏部分文件、git提交时忽略文件

文章目录 一、在idea中commit文件时隐藏文件方式一&#xff1a;创建.gitignore文件&#xff08;推荐&#xff09;方式二&#xff1a;‌通过File Types设置隐藏文件方式三&#xff1a;通过Git配置忽略文件‌&#xff08;不推荐&#xff09;总结 二、可能遇到的问题2.1、.gitigno…

ARM 架构(Advanced RISC Machine)精简指令集计算机(Reduced Instruction Set Computer)

文章目录 1、ARM 架构ARM 架构的特点ARM 架构的应用ARM 架构的未来发展 2、RISCRISC 的基本概念RISC 的优势RISC 的应用RISC 与 CISC 的对比总结 1、ARM 架构 ARM 架构是一种低功耗、高性能的处理器架构&#xff0c;广泛应用于移动设备、嵌入式系统以及越来越多的服务器和桌面…

如何使用Jest测试你的React组件

在本文中&#xff0c;我们将了解如何使用Jest&#xff08;Facebook 维护的一个测试框架&#xff09;来测试我们的React组件。我们将首先了解如何在纯 JavaScript 函数上使用 Jest&#xff0c;然后再了解它提供的一些开箱即用的功能&#xff0c;这些功能专门用于使测试 React 应…

健康养生点点滴滴

在当下纷扰忙碌的尘世中&#xff0c;养生宛如一支灵动的画笔&#xff0c;精心地为人们勾勒出健康生活的绚丽图景。它绝非仅是对躯体的片面保养&#xff0c;更是对精神世界的深度润泽&#xff0c;一种执着于身心交融、契合无间的生活美学。 饮食养生&#xff0c;仿若画卷中那细…

《TCP/IP网络编程》学习笔记 | Chapter 15:套接字与标准 I/O

《TCP/IP网络编程》学习笔记 | Chapter 15&#xff1a;套接字与标准 I/O 《TCP/IP网络编程》学习笔记 | Chapter 15&#xff1a;套接字与标准 I/O标准 I/O 函数标准 I/O 函数的两个优点标准 I/O 函数和系统函数之间的性能对比标准 I/O 函数的几个缺点 使用标准 I/O 函数利用 fd…

[面试]-golang基础面试题总结

文章目录 panic 和 recover**注意事项**使用 pprof、trace 和 race 进行性能调试。**Go Module**&#xff1a;Go中new和make的区别 Channel什么是 Channel 的方向性&#xff1f;如何对 Channel 进行方向限制&#xff1f;Channel 的缓冲区大小对于 Channel 和 Goroutine 的通信有…

鸿蒙进阶-状态管理

大家好啊&#xff0c;这里是鸿蒙开天组&#xff0c;今天我们来学习状态管理。 开始组件化开发之后&#xff0c;如何管理组件的状态会变得尤为重要&#xff0c;咱们接下来系统的学习一下这部分的内容 状态管理机制 在声明式UI编程框架中&#xff0c;UI是程序状态的运行结果&a…

深度学习每周学习总结J6(ResNeXt-50 算法实战与解析 - 猴痘识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 0. 总结ResNeXt基本介绍 1. 设置GPU2. 导入数据及处理部分3. 划分数据集4. 模型构建部分5. 设置超参数&#xff1a;定义损失函数&…

IDEA 2024.3 版本更新主要功能介绍

IDEA 2024.3 版本提供的新特性 IntelliJ IDEA 2024.3 的主要新特性&#xff1a; AI Assistant 增强 改进的代码补全和建议更智能的代码分析和重构建议Java 支持改进 支持 Java 21 的所有新特性改进的模式匹配和记录模式支持更好的虚拟线程调试体验开发工具改进 更新的 UI/UX 设…

java基础概念37:正则表达式2-爬虫

一、定义 【回顾】正则表达式的作用 作用一&#xff1a;校验字符串是否满足规则作用二&#xff1a;在一段文本中查找满足要求的内容——爬虫 二、本地爬虫VS网络爬虫 2-1、本地爬虫 示例&#xff1a; 代码优化&#xff1a; public static void main(String[] args) {// 大…

AmazonS3集成minio实现https访问

最近系统全面升级到https&#xff0c;之前AmazonS3大文件分片上传直接使用http://ip:9000访问minio的方式已然行不通&#xff0c;https服务器访问http资源会报Mixed Content混合内容错误。 一般有两种解决方案&#xff0c;一是升级minio服务&#xff0c;配置ssl证书&#xff0c…

JavaWeb——Mybatis

6. Mybatis MyBatis是一款优秀的持久层框架&#xff0c;用于简化JDBC的开发 6.1. Mybatis入门 6.1.1. 入门程序 6.1.2. JDBC 6.1.3. 数据库连接池 6.1.4. Lombok 6.2. Mybatis基础操作 6.2.1. 删除 6.2.1.1. 根据主键删除 6.2.1.2. 预编译SQL #{id}在编译过程中会替换成?…

MongoDB数据备份与恢复(内含工具下载、数据处理以及常见问题解决方法)

一、工具准备 对MongoDB进行导入导出、备份恢复等操作时需要用到命令工具&#xff0c;我们要先检查一下MongoDB安装目录下是否有这些工具&#xff0c;正常情况下是没有的:)&#xff0c;因为新版本的MongoDB安装时不包含这些工具&#xff0c;需要我们手动下载安装。下载成功之后…