Magma:多模态 AI 智体的基础模型

news2025/2/27 13:24:27

25年2月来自微软研究、马里兰大学、Wisconsin大学、韩国 KAIST 和西雅图华盛顿大学的论文“Magma: A Foundation Model for Multimodal AI Agents”。

Magma 是一个基础模型,可在数字和物理世界中服务于多模态 AI 智体任务。Magma 是视觉-语言 (VL) 模型的重要扩展,因为它不仅保留后者的 VL 理解能力(语言智能),还配备在视觉空间世界中规划和行动的能力(时空智能)以及完成从 UI 导航到机器人操作的智体任务。为了赋予智体能力,Magma 在大量异构数据集上进行预训练,这些数据集涵盖图像、视频和机器人数据,其中图像中动作视觉目标(例如,GUI 中的可点击按钮)用标记集 (SoM) 标注以进行动作落地,视频中的目标运动(例如,人手或机械臂的痕迹)由标记痕迹 (ToM) 标注以进行动作规划。大量实验表明,SoM 和 ToM 实现很好的协同作用,并促进 Magma 模型获取时空智能,这对于如图所示的各种任务至关重要:即多模态理解、多模态动作落地和多模态智体任务。

请添加图片描述

人工智能的一个长期研究课题,是开发能够感知视觉刺激、语言输入和其他基于环境的数据并在物理和数字环境中产生有意义的具体动作以完成特定任务的自主智体。

最近,人们对开发基于视觉-语言-动作 (VLA) 模型 AI 智体的兴趣日益浓厚 [5、6、19、29、42、54]。这些模型通常在大量视觉-语言数据集上进行预训练,然后训练动作轨迹,获得根据 VL 输入采取行动的能力。然而,由于不同环境 (例如 2D 数字世界和 3D 物理世界) 之间存在固有差异,VLA 模型通常为简单起见单独训练,然后用于不同的任务。数字世界中的示例性模型,包括用于 UI 导航的 Pix2ACT [108]、WebGUM [34] 和 Ferret-UI [131]。 3D 物理世界中的 VLA 模型,包括用于机器人操控的 RT-2 [5] 和 Open- VLA [54]。尽管这些模型号称是通用模型,但它们中的大多数都优先学习特定于任务的操作策略,而这会导致通用多模态理解能力的显著下降,从而导致跨任务和领域的泛化性有限。

大型多模态模型 (LMM)。ChatGPT [97]、GPT-4 [98] 和 Llama [115] 等大语言模型 (LLM) 已展示出引人的文本推理和泛化能力。集成视觉数据的模型的引入带来 LLM 格局的重大转变,例如 GPT-4V(ision)[96]。在开源 LLM [21, 115] 的基础上,各种多模态模型取得显著进展,其中 LLaVA [71, 73] 和 MiniGPT-4 [145] 等模型将 LLM 的功能与基于 CLIP [101] 的图像编码器相结合。最近,越来越多的 LMM 被开发出来处理更广泛的任务和模态,例如区域级 LMM [7, 12, 100, 134, 137] 和视频 LMM [69, 112, 135, 139]。同时,提出更复杂的基准来评估这些能力 [8, 32, 33]。

数字世界中的 UI 智体。最近,在设计自主 GUI 智体来代替人类用户执行任务方面有很多工作。其中一项工作是训练一个端到端模型来直接预测下一个动作,代表性工作包括 Web 领域的 Pixel2Act [107] 和 WebGUM[35]、移动领域的 Ferret [132]、CogAgent [43] 和 Fuyu [4]。另一项工作涉及利用现有的多模态模型(如 GPT-4V)来执行用户任务。代表性成果包括 Web 领域的 MindAct [27]、SeeAct [141] 以及移动域的其他成果 [103、117、122]。这些成果通常利用 Web 浏览器中的 DOM 信息或移动应用中的视图层次结构,来获取屏幕可交互元素的真实位置,并使用标记集(Set-of-Mark) [125] 或更高级的定位模型 [83] 将边框叠加在屏幕截图之上,然后输入到视觉语言模型中。

机器人的视觉-语言-动作。已有多项研究调查 LMM 在机器人中的应用 [6、54、66、95、130、142、146]。其中,RT-2 [6] 在机器人轨迹数据上对 LMM 进行微调,从而能够输出离散化的机器人动作 tokens。 OpenVLA [54] 是第一个对开源 Prismatic VLM 主干 [49] 进行微调的开源 VLA 基础。LLARVA [95] 使用视觉轨迹预测作为辅助任务,为机器人手臂生成 2D 视觉轨迹以及动作的文本表示,而 TraceVLA [142] 使用视觉轨迹提示来提高机器人策略的时空感知。最近,[11, 129] 探索通过预测潜 VQVAE tokens 从视频中学习。

本研究致力于开发多模态人工智能智体的基础模型,具备多模态理解和多模态动作预测的能力,这样的智体系统应该由人类命令指定的外部目标(goal)驱动,如图所示:

请添加图片描述

多模态智体建模如下。

问题定义

一个通才多模态 AI 智体定义为 π,它将过去的视觉观察 I = {I_1 , …, I_k} 和文本中的任务描述任务作为输入,并输出一组 T ≥ 1 个 tokens,即 O 如下:

O = π(I, task, ctx) = {ol_1,· · ·,o^l_T} (1)

此公式适用于不同的任务:
2D 屏幕截图中的 UI 导航。任务可以是“预订酒店”,输出应包括表示动作语义类型(例如“类型”、“点击”等)的语言 tokens 以及应用动作的位置 (x, y) 或框 (x, y, w, h)。
3D 世界中的机器人操作。对于“关闭抽屉”之类的任务,输出包括末端执行器的 6-DoF 位移(x, y, z, yaw, pitch, roll),在某些情况下,还包括一个额外的维度来指示夹持器是否打开。
多模态理解任务。当任务纯粹是关于 I 时,例如 VQA 任务,问题会简化为多模态理解任务,该任务会为输入图像/视频生成文本描述和/或目标位置。

对于这些看似不同的输出模态,遵循一种通用做法,将所有输出转换为文本 tokens,以促进模型学习。具体来说,将二维动作转换为文本词典,如 [19] 中所述,并使用 LLM 中几乎不使用的最后 256 个离散语言 tokens 来表示机器人动作,遵循 [54]。尽管在语言空间中进行这样的统一,但任务之间存在相当大的冲突。

方法

在为多模态 AI 智体构建高性能基础时,解决两个关键挑战。

预训练目标:如何构建统一的预训练界面以促进联合训练?一种简单的方法是预测 UI 导航的 2D 坐标、末端执行器的 3D 位置以及 VL 任务的常规文本输出。然而,在实验中,这些任务在输入和输出方面都存在固有的域差距。前者在像素级别产生巨大的搜索空间,而后者直接预测本体感受动作的输出,而这并不是落地于图像观察。能否想出一个可以弥合所有任务之间差距的替代任务?
数据扩展:现有的视觉-语言-动作数据的数量和多样性有限,与 LLM 和 LMM 的语言或图像文本语料库不同。例如,最大的开源机器人数据集 OXE [23] 包含从 22 个环境中获取的约 100 万条轨迹。另一方面,像 LAION [104] 这样的大规模图像文本数据集几乎不包含对动作预训练有用的监督,因为它们都是静态的,没有动作的概念。然而,视频描述大量的人类动作和人与目标互动。能否充分利用这些视频数据进行智体预训练?

这项工作提出一种简单而有效的方法来应对上述挑战。受到标记集 (SoM) 提示 [126] 通用性的启发,利用它来将动作落地于图像,用于 UI 和机器人任务,这样模型在预测图像空间中可点击按钮或机器人手臂的数字标记时就困难得多。进一步沿时间轴扩展它,并要求模型预测标记轨迹 (ToM),这迫使模型通过预测远端未来“动作”来学习更远范围,更重要的是,它提供一种利用未标记视频数据的有效方法。SoM 和 ToM 的结合,实现数字和物理域智体任务之间的无缝协同,以及一种可扩展的方式来从原始视频中策划“动作”监督。

用于动作落地的标记集 (SoM)

SoM 提示 [126] 最初是为了增强 GPT-4V 的落地能力而提出的,随后被广泛应用于各种智体任务 [18、44、70、94、123]。与之前利用它来提示现成 LMM 来增强视觉语言基础的研究不同,这里提出训练一个用于动作落地的智体模型,即为特定任务定位可操作的点/区域,并在需要时进一步预测原子动作。

给定时间步 t 的图像观测 I_t、一个任务 task 和上下文 ctx,首先提取一组 K 个可动作的候选区域或点 P = {p_1 , …, p_K },其中 p_k 可以是四维框坐标或二维点坐标。随后,将标记和框(如果有)叠加到带有数字标签的图像相应位置,即 M = {1 : p_1, 2 : p_2,…, K : p_K},从而得到一个新的标记图像 I^M_t。

给定原子动作步中的提示图像 I^M_t,模型需要选择候选标记以及原始坐标,这大大简化智体模型的动作落地。这样,等式(1)可以改写为:

omark_t = action_t : mark_t = π(I^M_t, task, ctx) (2)

其中 o_mark 是标记 M 的子集。

如图所示一些实例来演示基于 SoM 的动作落地:UI导航、机器人操纵和人类动作。为了获得要标记的候选区域,可以利用不同的提议网络,例如图像分割模型 [56, 147]、目标检测模型 [64, 80] 或域特定模型 [83]。

请添加图片描述

用于动作规划的标记踪迹

视频数据包含大量有关人类行为和活动的信息,这些信息本质上可以用来提升智体模型的能力。然而,由于缺乏动作标签,以前的方法很少探索这个方向,除了一些专注于世界模型学习的研究[76,91]。在此提出标记踪迹(ToM),将“覆盖标记”的策略从静态图像扩展到动态视频,使智体模型能够有效地从视频中学习规划和动作。

给定视频中的视觉观察序列 I = {I_1,…,I_t},沿时间轴延伸到未来的 l 帧,I_future = {I_t+1,…,I_t+l}。给定第 t 帧 I_t 处的 K 个标记,提取接下来 l 帧中覆盖标记的相应位置,表示为踪迹 T = {M_t+1,…,M_t+l}。按照公式 (2) 中的动作类型和有效标记的预测,进一步要求模型预测有效标记的未来轨迹:

omark_t = action_t : mark_t : trace_t+1: t+l = = π( {I_1, …, I_t−1, I^M_t}, task, ctx), (3)

提出的 ToM 预测,是一种简单而有效的利用视频数据方法,并带来两个独特的建模优势:(i) I_t 迫使模型了解视频观察中的时间动态,并在采取下一步行动之前“提前展望”;(ii) 与 [77] 中预测之后的帧不同,使用更少的 tokens 来捕捉更长的时间范围和与动作相关的目标动态,同时忽略环境内容,这样预测轨迹 。

为了提取 ToM,采用点跟踪模型 Co-Tracker [48],尽管可以使用任何高性能模型。具体来说,给定一个帧序列 {I_t, I_t+1, …, I_t+l},对 s2 个网格点应用密集跟踪以提取长度为 (l + 1) 的 s2 条轨迹。给定这些 s^2 条轨迹,删除两个相邻时间步之间平均运动幅度小于某个值 ε 的轨迹。其余的轨迹被视为由给定任务驱动的前景(foreground)运动。

建模

为了保留 Magma 所需的多模态理解能力,采用当前 VLM(例如 LLaVA [71] 和 Phi-3-Vision [1])中使用的常见做法。给定视觉观察 I,用视觉编码器 V 将每帧编码为多个tokens,然后将所有tokens连接成一个序列,并将它们与编码任务描述的语言tokens一起馈送到仅解码器的 LLM。由于任务的多样性,需要一个能够无缝编码各种分辨率图像和视频的视觉编码器。鉴于此,使用卷积网络 ConvNeXt [81] 作为视觉主干,因为它默认支持任意图像分辨率。为了处理高分辨率图像(例如,UI 屏幕截图高达 2000),只需执行全局编码,而不用以前的工作中使用的功能,可以对全局上下文进行编码以及结合全局和局部裁剪 [1, 75]。

为此,将智体建模公式化为自回归解码程序:
o_t+1l,∗ ∼ p(o_t+1l |{o_1l, …, o_t^l }; V (I ), task, ctx) (4)

多模态智体预训练如下。

数据集

为了开发一个具有语言和空间智能的基础模型,该模型能够处理各种智体任务,从广泛的图像、视频和机器人领域中整理一个全面的预训练数据集。
• 机器人操作数据。对于机器人任务,遵循 OpenVLA [54] 并使用 Open-X-Embodiment [22] 的机器人数据集。
• UI 导航数据。用两个预训练数据集,SeeClick [19] 和 Vision2UI [41]。
• 指令视频。编译 Epic-Kitchen [24, 25]、Ego4d [40]、Somethingv2 [37] 和其他相关内容,考虑到粗糙但丰富的目标-驱动(goal- driven)人类行为。
• 多模态理解。最后,纳入 ShareGPT4V [14]、LLaVA-1.5 [75] 中的指令调整数据,以及一些其他与 OCR 相关的数据集 [86, 90],以实现图像理解能力。

还有更多相关数据集可用于模型预训练,例如大规模指令调整数据 [60, 114]、更多样化的视频数据 [16]。注:本研究专注于演示预训练方法

SoM 和 ToM 生成

如表所示,将 SoM 和 ToM 应用于不同的数据类型,其中 SoM 应用于所有数据类型以学习统一的动作落地。ToM 不适合 UI 数据,因为它由离散屏幕截图序列组成。

请添加图片描述

用于 UI 导航的 SoM

对于预训练数据中的 UI 截图,主要依赖基于 DoM Tree 提取的原始注释。除了从 HTML 代码中提取的边框 [19, 41] 之外,还使用从 Android 视图层次结构 [111] 派生的边框对 SeeClick 数据中的移动截图进行注释。给定提取的图像候选边框,应用如下算法 1 来分配文本标签(第 3 行)并在目标周围绘制框。为了最大限度地减少重叠的框位置,使用先前绘制框(第 5 行)确定标签的最佳位置,然后计算文本框大小并分配其坐标(第 7 行)。在评估过程中,遵循常见做法,应用 OmniParser [83] 在 ScreenSpot [19] 上进行零样本评估,并使用 [27] 提供的候选框在 Mind2Web 上进行下游训练和评估。

请添加图片描述

视频和机器人数据的 SoM 和 ToM

使用标记和踪迹作为替代动作监督来预训练 Magma 模型,进行动作落地和规划。为了提取可靠的踪迹,使用最先进的点跟踪模型 CoTracker [48] 来跟踪每个视频片段中的关键点。与以前的工作中使用的目标检测和跟踪系统 [68、95、102] 不同,点跟踪为末端执行器(机械臂或人手)和目标提供最细粒度的移动轨迹,更重要的是,由于它不需要目标识别,因此可以切实应用于任何视频。

CoTracker 的可靠性。为了确定此类踪迹的通用性,在对所有预训练数据运行算法之前检查 Co-Tracker 的可靠性。在原始论文中,CoTracker 已在多个视频数据集(如 TAP-Vid [28] 和 PointOdyssey [143])上得到充分验证。在这项工作中,提出全面的策略来处理视频中的场景转换和相机运动,如下算法 2 所示,这些策略可以有效地扩展到 Ego4D 和其他指令视频等数据集。为了进一步验证 ToM 的可靠性,对 YouCook2-BB [144] 子集上的轨迹进行定量评估,其中包含人工标注的边框。从每个带注释的边框中提取轨迹,并计算 1 秒后仍落入边框中的未来轨迹数量。在 1320 个剪辑中,获得 0.89 的精度,这表明轨迹能够可靠地捕捉时间运动。

分段和 CLIP 分数过滤。由于点跟踪系统在短时间窗口内工作,首先使用提供的注释(精心挑选的或其他方式)将每个视频分成片段,然后运行 ​​PySceneDetect [10] 将每个片段进一步细分为具有一致镜头的短视频片段。 但是,检测到的视频片段,可能并不总是与其相关的文本注释相关。 因此,使用预训练的 CLIP [101] 视觉和文本编码器来计算每个片段和文本对之间的余弦相似度得分,并过滤掉分数 < 0.25 的片段。

一旦掌握细粒度的视频片段,就应用如下算法 2 来生成 SoM 和 ToM。 给定一个有 l 帧 {I_1, I_2, …, I_l} 的视频片段,从时间步长 t 开始,并在 I_t 上放置一个等距 s2 点的网格。然后,用 CoTracker 提取 s^2 条未来轨迹,每条轨迹的长度为 (l − t)。输出还包含每条轨迹的预测遮挡标签,这些标签指示轨迹上的任何点是否在某些时间步骤中被遮挡。

请添加图片描述

抹除全局运动。许多指令视频,尤其是以自我为中心的视频 [40],包含显著的相机运动。因此,提取的轨迹可能反映外部运动,而不是完成给定任务的相关动作。通过执行单应变换 [31] 来缓解这个问题。具体来说,用未来标记位置和当前标记位置计算 3×3 变换矩阵 h_i:

h_i = H(M_t, M_t+i), (5)

给定 h_i,将单应性变换应用于 M_t+i,获得与 M_t 共享相同坐标系的 M__t+i。然后从{M_t+1,M_t+1,M^∗_t+l} 中提取公式 (3) 中要预测的标记有效轨迹。事实证明,所提出的方法可以有效地消除以自我为中心视频和以外部为中心视频的全局相机运动,如图所示:

请添加图片描述

如上述算法 2 所示,提取轨迹并在需要时应用单应性变换(第 2-4 行)后,根据两个相邻时间步骤之间的平均运动幅度将它们分为两类,即前景轨迹和背景轨迹,其中平均运动幅度至少为 ε 的轨迹(第 5 行)被视为前景。最后,选择聚类数(第 6 行),并分别对前景和背景轨迹执行 K-均值聚类(第 7 行),然后从每个聚类中随机选择一个或多个点作为最终轨迹。在实践中,分别将 s、η 和 ε 设置为 15、2 和 2。

预训练

上述数据和注释整理产生一个全面的预训练套件,涵盖(i)不同的数字和物理环境;(ii)口头和空间注释以及(iii)各种多模态理解和智体任务。如图(左)所示,包含来自 SeeClick [19] 和 Vision2UI [41] 近 2.7M 个 UI 导航屏幕截图。遵循 OpenVLA [54] 在 Open-X-Embodiment [23] 中合并 970K 条轨迹,其中包括 9.4M 个图像-语言-动作三元组。预训练数据的另一大部分是视频,其中包含来自大约 4M 个镜头一致的视频剪辑超过 25M 个样本。最后,从 ShareGPT4V [13]、LLaVa-1.5 [74] 和其他一些 OCR 相关数据集 [86, 90] 中选取 1.2M 个图像和文本对,标记为 Magma-SFT (820K)。

请添加图片描述

默认情况下,使用 LLaMA-3-8B [30] 作为语言主干,使用 ConvNext-XXlarge [81] 作为视觉主干。如图展示预训练架构。SoM 和 ToM 充当连接所有四种类型数据的口头和动作监督的桥梁,并且显著增强模型的空间智能。

请添加图片描述

除非另有说明,所有预训练都包括 Magma-SFT (820K)。用挑选的数据对模型进行最多 3 个 epochs 的预训练,学习率恒定为 1e-5,并在零样本设置下对不同任务上的预训练模型进行评估,并在下游任务上微调其权重。整个模型(包括语言模型和视觉编码器的参数)都经过调整。

如图所示真实的机器人设置:Magma 部署在 WidowX 250 机械臂上,执行一系列厨房操作任务,包括目标拾取和软操作。

请添加图片描述

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

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

相关文章

02_linux系统命令

一、绝对路径与相对路径 1.以 ./ 开始的路径名是相对路径 2.以 / 开始的路径是绝对路径. 相对路径:会随着用户当前所在的目录发生改变. 绝对路径:不会根据用户所在的路径而改变. 3.gcc 编译器 编译器把高级语言(C语言/JAVA语言/C语言)生成二进制代码的一种工具.gcc 是专用…

【leetcode hot 100 11】移动零

一、暴力解法&#xff1a;两个 for 循环&#xff0c;外层循环遍历所有可能的左边界&#xff0c;内层循环遍历所有可能的右边界 class Solution {public int maxArea(int[] height) {int max_area0;for(int i0; i<height.length; i){for(int ji1; j<height.length; j){in…

AI绘画软件Stable Diffusion详解教程(2):Windows系统本地化部署操作方法(专业版)

一、事前准备 1、一台配置不错的电脑&#xff0c;英伟达显卡&#xff0c;20系列起步&#xff0c;建议显存6G起步&#xff0c;安装win10或以上版本&#xff0c;我的显卡是40系列&#xff0c;16G显存&#xff0c;所以跑大部分的模型都比较快&#xff1b; 2、科学上网&#xff0…

轨迹控制--odrive的位置控制---负载设置

轨迹控制 此模式使您可以平滑地使电机旋转&#xff0c;从一个位置加速&#xff0c;匀速和减速到另一位置。 使用位置控制时&#xff0c;控制器只是试图尽可能快地到达设定点。 使用轨迹控制模式可以使您更灵活地调整反馈增益&#xff0c;以消除干扰&#xff0c;同时保持平稳的运…

【安卓逆向】逆向APP界面UI修改再安装

1.背景 有一客户找到我&#xff0c;说能不能把APP首页的底部多余界面去掉。 逆向实战 想要去除安卓应用软件中的内容&#xff0c;需要对APP逆向进行修改再打包。 通过工具 MIT管理器工具 提取APK包&#xff0c;点击apk文件&#xff0c;点击查看反编译apk。 搜索关键字。这里关键…

SAP Webide系列(7)- 优化FreeStyle新建项目预设模板

目录 一、背景 二、优化目标 三、定位调整点 四、调整步骤 五、效果展示 六、附言 一、背景 在每次通过Webide进行FreeStyle方式自开发SAP UI5应用的时候&#xff0c;新建项目&#xff0c;得到的模板文件都是只有很少的内容&#xff08;没有路由配置、没有设置默认全屏等…

python读取sqlite温度数据,并画出折线图

需求&#xff1a; 在Windows下请用python画出折线图&#xff0c;x轴是时间&#xff0c;y轴是温度temperature 和体感温度feels_like_temperature 。可以选择县市近1小时&#xff0c;近1天&#xff0c;近1个月的。sqlite文件weather_data.db当前目录下&#xff0c;建表结构如下…

【Linux网络编程】高效I/O--select/poll服务器

目录 多路转接之select select服务器实现 获取连接 handlerEvent select服务器代码链接 select的优缺点 多路转接之poll poll服务器实现(select服务器改写) poll的优缺点 多路转接之select select的作用 I/O的本质 等 拷贝 多路转接就是通过同时等待多个文件描述…

C语言实战项目(1)---------->猜数字游戏

在学习完循环和选择结构之后&#xff0c;我们可以做一个猜数字游戏。在此项目之前&#xff0c;如果还不会C语言的if语句、switch语句等组成选择结构的语句&#xff0c;while循环、for循环、do-while循环等组成循环结构的语句。可以参考我之前的博客&#xff1a; C语言&#xf…

Failed to start The PHP FastCGI Process Manager.

报错如下&#xff1a; Job for php-fpm.service failed because the control process exited with error code. See "systemctl status php-fpm.service" and "journalctl -xe" for details. 2月 25 21:49:00 nginx systemd[1]: Starting The PHP FastC…

【REST2SQL】15银河麒麟系统下达梦数据库部署REST2SQL

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 【RE…

晶体管输出光耦和逻辑输出光耦

晶体管输出光耦&#xff08;非线性&#xff09;和逻辑输出光耦&#xff08;线性&#xff09;的区别&#xff1a; 逻辑输出光耦的电流传输特性曲线是非线性的&#xff0c;适合于开关信号的传输&#xff0c;不适合于传输模拟量&#xff1b; 光电晶体管输出光耦的电流传输特性是线…

绕过过滤order by

一、常见绕过技术 1、注释符截断 利用注释符&#xff08;如 --、#&#xff09;截断后续查询&#xff0c;消除过滤逻辑的影响。 ORDER BY 1-- 若原查询为 SELECT * FROM table ORDER BY 用户输入&#xff0c;注入后可能忽略后续过滤逻辑。 2、大小写混淆/编码绕过 若过滤是大…

面试八股文--数据库基础知识总结(1)

1、数据库的定义 数据库&#xff08;DataBase&#xff0c;DB&#xff09;简单来说就是数据的集合数据库管理系统&#xff08;Database Management System&#xff0c;DBMS&#xff09;是一种操纵和管理数据库的大型软件&#xff0c;通常用于建立、使用和维护数据库。数据库系统…

机试刷题_1614. 括号的最大嵌套深度【python】

1614. 括号的最大嵌套深度 class Solution:def maxDepth(self, s: str) -> int:maxD 0if not s:return maxDstack []for char in s:if char(:stack.append(char)maxD max(maxD,len(stack))elif char) :stack.pop()return maxD

VM虚拟机安装与配置Ubuntu Linux操作系统详细教程~

一、下载VM虚拟机 VMware16.0.zip百度网盘下载链接:https://pan.baidu.com/s/1-l-CcAVNINqhRLSiQ26R7w?pwd=tznn 提取码: tznn 二、软件介绍 VMware(虚拟机)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,通过它可在一台电脑上同…

免费PDF工具

Smallpdf.com - A Free Solution to all your PDF Problems Smallpdf - the platform that makes it super easy to convert and edit all your PDF files. Solving all your PDF problems in one place - and yes, free. https://smallpdf.com/#rappSmallpdf.com-解决您所有PD…

组件注册方式、传递数据

组件注册 一个vue组件要先被注册&#xff0c;这样vue才能在渲染模版时找到其对应的实现。有两种注册方式&#xff1a;全局注册和局部注册。&#xff08;组件的引入方式&#xff09; 以下这种属于局部引用。 组件传递数据 注意&#xff1a;props传递数据&#xff0c;只能从父…

异步fifo学习

FIFO 本质是由 RAM 加上读写逻辑构成的先入先出的数据缓冲器。与 RAM 的区别是 FIFO 没有外部读写地址线&#xff0c;顺序写入顺序读出数据&#xff0c;其数据地址是由内部读写指针自增完成&#xff0c;因此 FIFO 在读写时不需要考虑读写冲突的问题。 根据 FIFO 工作的时钟域&a…

【有啥问啥】All-to-All 通信:原理、实现与应用

All-to-All 通信&#xff1a;原理、实现与应用 一、引言 在分布式计算和并行处理领域&#xff0c;进程之间的通信是至关重要的。All-to-All 通信作为一种高效的通信模式&#xff0c;广泛应用于各种高性能计算和分布式系统中。本文将详细介绍 All-to-All 通信的定义、工作原理…