基于语义-拓扑-度量表征引导的大语言模型推理的空中视觉语言导航

news2025/1/27 9:02:29

1. 摘要翻译及主要贡献点

摘要:

空中视觉语言导航(VLN)是一项新兴任务,它使无人机能够通过自然语言指令和视觉线索在户外环境中导航。由于户外空中场景中复杂的空间关系,这项任务仍然具有挑战性。本文提出了一种端到端的零样本框架,用于空中VLN任务,其中引入了大语言模型(LLM)作为动作预测的代理。具体而言,我们开发了一种新颖的语义-拓扑-度量表征(STMR),以增强LLM的空间推理能力。这是通过提取并投影与指令相关的地标语义掩码到一个包含周围地标位置信息的俯视地图中实现的。进一步地,该地图被转换为包含距离度量的矩阵表示,作为LLM的文本提示,用于根据指令进行动作预测。在真实和模拟环境中的实验成功证明了该方法的有效性和鲁棒性,在AerialVLN-S数据集上的导航成功率(OSR)上实现了15.9%和12.5%的绝对提升。

主要贡献点:

  • 提出首个基于LLM的端到端空中VLN框架: 该框架无需训练,也无需额外的低级动作规划器,易于集成。
  • 提出语义-拓扑-度量表征(STMR): 这是一种独特的矩阵表示方法,包含拓扑、语义和度量信息,旨在显著增强LLM在户外环境中的空间感知推理能力。
  • 在真实环境中的广泛实验证明了该方法的有效性: 提出的方法在AerialVLN-S任务上大幅超越了之前的最先进方法,为未来的零样本空中VLN任务建立了强大的基线。

2. 引言(第一章)总结

空中视觉语言导航(Aerial VLN)是一项突破性任务,它使无人机能够理解自然语言指令和相应的视觉信息,在户外环境中导航。该技术可以消除对人类飞行员手动操作无人机的需求,从而缓解人机交互的障碍,并可能使搜索、救援和交付任务受益。

近年来,VLN任务发展迅速。考虑到大语言模型(LLM)强大的推理能力,一些VLN方法已经开始使用LLM作为代理来解析指令和预测动作。然而,现有方法大多针对室内或地面户外环境设计,对空中VLN任务关注较少。实际上,户外3D空间丰富的语义信息、复杂的空间关系和大规模特性,使得现有VLN方法难以适应空中场景。

为了克服这些挑战,本文提出了一种基于零样本LLM的空中VLN框架,该框架以自然语言指令、RGB图像和深度图像作为输入,并直接通过单步推理更新进行动作预测。具体来说,设计了语义-拓扑-度量表征(STMR)来为LLM提供提示。

3. 主要贡献(模型架构、数据集、算法等)章节

3.1 相关工作

a) 视觉语言导航(VLN)

VLN旨在使自主代理能够通过理解并执行基于视觉上下文的自然语言指令来导航复杂环境。早期VLN方法使用序列到序列的LSTM来预测低级动作或从全景图预测高级动作。为了增强视觉文本对应关系的处理过程,提出了几种注意力机制。此外,还探索了强化学习来改进策略学习。此外,基于Transformer的架构在处理长距离上下文信息方面表现出色。最近的工作利用LLM的推理和对话能力,取得了巨大进展。然而,大多数方法都是在地面、离散VLN设置下开发的,这简化了导航,将其视为在地面上预先定义的图上进行遍历。这限制了无人机在现实世界中的自由移动空间。由于大规模和复杂的环境,空中VLN仍然具有挑战性。

b) 无人机导航

无人机导航在过去几十年中引起了广泛关注。在指令的指导下,Blukis等人使用模仿学习来预测低级速度命令。另一种方法预测可解释的位置访问分布,以指导无人机的控制动作,使用监督学习和模仿学习的组合进行高效训练。Misra等人将指令执行分解为两个阶段,分别使用监督学习进行目标预测和策略梯度进行动作生成。AerialVLN提供了一个更具挑战性的空中VLN数据集,侧重于大规模环境,并提供了一个前瞻性指导方法作为基线。尽管取得了进展,这些方法的通用性和性能仍需改进。

c) LLM在机器人规划和交互中的应用

最近,LLM在理解和推理方面展示了令人印象深刻的能力。为了利用这些能力,已经提出了几种有前景的方法,将LLM应用于机器人系统。一些方法涉及使用在模拟中优化的LLM生成的奖励来改进控制。其他方法利用LLM选择子目标作为抽象来增强导航和操作的策略。此外,研究还探索了使用LLM生成可执行代码用于控制和感知基元。尽管潜力巨大,LLM仍然容易产生自信的幻觉输出,例如引用场景中未观察到的对象。为了缓解幻觉现象,我们提出了一种基于矩阵的表示方法,包含拓扑、语义和度量信息,以便更好地提示LLM。

3.2 方法

3.2.1 问题表述

在空中VLN任务中,问题被表述为以自由形式的语言指令为指导的导航。在每个情节开始时,无人机被放置在初始姿态 P = [ x , y , z , ϕ , θ , ψ ] P=[x,y,z,\phi,\theta,\psi] P=[x,y,z,ϕ,θ,ψ] ,其中 ( x , y , z ) (x,y,z) (x,y,z) 表示无人机的位置, ( ϕ , θ , ψ ) (\phi,\theta,\psi) (ϕ,θ,ψ) 表示无人机姿态的俯仰角、横滚角和偏航角。提供自然语言指令 L L L 以指定无人机应遵循的路径。为了实现导航目标,无人机同时考虑指令和视觉感知,并在每个时间步 t t t 从动作空间(向右、向左、向上、向下、向前、向后)中预测一个动作以及相应的参数。当无人机预测“停止”动作或达到预定义的最大动作数时,导航结束。如果无人机在距离目标位置不到20米的地方停止,则认为导航成功。

3.2.2 语义-拓扑-度量表征(STMR)

之前的基于LLM的VLN方法使用自然语言来描述当前观察结果,或者使用拓扑图的节点和边来模拟环境的空间信息。然而,在开放场景中,简单的方向词,如“旁边”或“旁边”,不足以描述复杂的空间关系,这很容易在LLM中引入歧义。为了应对这一挑战,我们引入了语义-拓扑-度量表征(STMR),以增强LLM的空间感知推理能力。具体来说,STMR逐步将每个步骤的RGB图像 I t R I_{t}^{R} ItR 和深度图 I t D I_{t}^{D} ItD 作为输入,并生成一个动态更新的矩阵表示,其输出包含语义、拓扑和度量信息。STMR的细节如下。

a) 2D视觉感知:

受Grounding DINO G D ( ⋅ ) \mathrm{GD}(\cdot) GD() 强大的开放词汇检测能力,以及Tokenize Anything模型 T A ( ⋅ ) \mathrm{TA}(\cdot) TA() 的字幕和分割能力的启发,我们将这两个模型集成到我们的2D视觉感知器中,如图3所示。给定单个RGB图像 I t R I_{t}^{R} ItR 和指令 L L L 作为输入,我们首先使用由LLM驱动的地标提取器 LE ⁡ ( ⋅ ) \operatorname{LE}(\cdot) LE() 获得详细的地标类别,然后通过 G D ( ⋅ ) \mathrm{GD}(\cdot) GD() 识别每个类别的相应边界框。接下来,我们使用 T A ( ⋅ ) \mathrm{TA}(\cdot) TA() 将每个边界框作为提示,并为当前RGB图像 I t R I_{t}^{R} ItR 输出一组2D语义掩码 m ( t ) ˉ \bar{m^{(t)}} m(t)ˉ 和字幕 Ω ˉ z ( t ) \bar{\mathbf{\Omega}}_{\boldsymbol{z}}(t) Ωˉz(t) 。整个过程可以描述为:

为了提高语义掩码的简洁性,并减少LLM推理过程中因众多开放词汇类别而造成的误导,我们提出了一种文本匹配方法来缓解过度分类。如图3所示,我们的方法包括对从指令中提取的地标和每个 I t R I_{t}^{R} ItR 中生成的字幕 z ( t ) z^{(t)} z(t) 进行矢量化。然后,我们使用TF-IDF【36】计算这些矢量化地标和字幕之间的余弦相似度。如果相似度得分超过阈值 τ >  ⁣ 0.8 \tau>\!0.8 τ>0.8 ,则将地标分类为当前视图中可见。通过实施此策略,我们有效地简化了语义掩码,并确保LLM的推理侧重于相关类别。

b) 子目标驱动的俯视地图:

考虑到俯视视图比第一人称视角更能表达空间关系,我们进一步利用深度图像 I t D I_{t}^{D} ItD 将语义掩码映射到3D空间,然后将其转换为俯视地图。具体来说,通过2D视觉感知器处理的RGB图像 I t R I_{t}^{R} ItR ,我们通过为每个像素分配语义标签来生成第一人称视角预测,从而得到一个包含识别对象和区域的分割图像。随后,深度图像 I t D I_{t}^{D} ItD 被转换为3D点云,其中每个像素根据其深度值和相机参数映射到3D点 ( X ˙ , Y , Z ) ({\dot{X}},Y,Z) (X˙,Y,Z)

X = ( u − c x ) I t D ( u , v ) f x , Y = ( v − c y ) I t D ( u , v ) f y , Z = I t D ( u , v ) , X=\frac{(u-c_{x})I_{t}^{D}(u,v)}{f_{x}},Y=\frac{(v-c_{y})I_{t}^{D}(u,v)}{f_{y}},Z=I_{t}^{D}(u,v), X=fx(ucx)ItD(u,v),Y=fy(vcy)ItD(u,v),Z=ItD(u,v),

其中 ( u , v ) (u,v) (u,v) 是像素坐标, ( c x , c y ) (c_{x},c_{y}) (cx,cy) 是相机的中心点坐标, ( f x , f y ) (f_{x},f_{y}) (fx,fy) 是焦距。分割后的RGB图像的语义标签被映射到相应的3D点云,得到包含语义信息的点云 ( X , Y , Z , C i ) (X,Y,Z,C_{i}) (X,Y,Z,Ci) ,其中 C i C_{i} Ci 是语义类别。然后将3D点云划分为离散体素,其中每个体素使用【37】中描述的最大池化将其实体云聚合为一个语义类别。考虑到无人机通常在地面物体上方飞行,对于特定坐标 ( x , y ) (x,y) (x,y) ,将位于 ( x , y ) (x,y) (x,y) 位置的最高 z z z 坐标的体素的语义标签投影到俯视地图中:

T o p D o w n M a p ( x , y ) = V o x e l ( x , y , z t o p ) , \begin{array}{r}{\mathrm{TopDownMap}(x,y)=\mathrm{Voxel}(x,y,z_{t o p}),}\end{array} TopDownMap(x,y)=Voxel(x,y,ztop),

其中 z t o p z_{t o p} ztop 表示在位置 ( x , y ) (x,y) (x,y) 处的最高 z z z 坐标, V o x e l ( x , y , z t o p ) \mathrm{Voxel}(x,y,z_{t o p}) Voxel(x,y,ztop) 表示相应的语义标签。因此,我们得到了一个包含语义信息的俯视地图。

值得注意的是,由于LLM优先考虑当前子目标中的地标,如果子目标中包含的类别出现在任何 z z z 坐标的体素中,则该类别将首先被投影到俯视地图中。因此,我们可以修改公式(3)如下:

T o p D o w n M a p ( x , y ) = {  ⁣ ⁣ C i , C i   i n ⊂  ⁣ ⋅  ⁣ g o a l V o x e l ( x , y , z t o p ) , o t h e r w i s e .  ⁣ ⁣ \mathrm{TopDownMap}(x,y)=\left\{\!\!\begin{array}{l l}{{C_{i},}}&{{C_{i}\ \mathrm{in\sub\!\cdot\!goal}}}\\ {{\mathrm{Voxel}(x,y,z_{t o p}),}}&{{\mathrm{otherwise.}}}\end{array}\!\!\right. TopDownMap(x,y)={Ci,Voxel(x,y,ztop),Ci ingoalotherwise.

在每个步骤中,无人机的位置也将作为航路点记录,并带有特殊值并投影到俯视地图中。

c) 矩阵表示:

我们发现,直接将图像格式的俯视地图输入到视觉语言模型(VLM)中通常会产生较差的推理结果。因此,我们处理视觉地图,将其转换为基于文本的矩阵表示,并将其输入到LLM中以指导导航。具体来说,无人机逐步收集观察结果,并逐步构建周围环境的子目标驱动的俯视地图。考虑到机载传感器的感知质量和现代LLM的有效处理能力,我们定义了以无人机当前位置为中心的局部地图,如图1所示。随后,我们通过将局部地图划分为 20 × 20 20\times20 20×20 坐标网格,并在每个网格中应用语义最大池化,使其最终包含一个语义类别。特别是,我们根据频率对局部地图中每个网格内的所有值进行排序,只显示最频繁的特征作为该网格的最终类别。每个类别(例如建筑物或汽车)通过不同的数字标签来区分。此外,每个网格之间的距离 r r r ( 5 m ) 5\mathrm{m}) 5m) 也作为度量信息输入到LLM中。在这种情况下,LLM可以直接推理每个地标之间的位置关系。

3.3 为LLM规划设计文本提示

鉴于LLM在推理和规划方面训练有素,我们通过格式化的提示和动作空间来补充其空间感知和场景理解能力。该提示包含两个组成部分。首先,准备任务描述,包括环境和无人机的定义,以及输入和输出的格式。我们要求LLM在捕获观察结果后,利用链式思维推理【38】,按照观察-思考-规划-历史的顺序逐步思考,以预测下一个动作。关于输入指令,LLM提取子目标,并且指令中给出的地标将在任务定义中根据场景变化进行更新。其次,为了提高提示的质量,我们实施了一个循环改进过程。这涉及为LLM设计一套新的指令,包括与STMR模块相对应的“历史动作”和“下一个规划”等元素。任务描述还强调更新规划状态,包括三种状态,即待办、在进行中和已完成。在无人机探索过程中,STMR在这个迭代过程中逐渐更新,以提高提示的准确性和相关性。

3.4 LLM提示示例

[任务描述] 你是现实世界中一个具体的无人机。你需要在一些标记的地方之间探索,并最终找到目的地停止。

[输入格式]: “指令”是全局的、逐步的详细指导。“历史”是您之前执行的动作。“地图”是一个俯视坐标地图,使用 2 0 ∗ 20 20^{*}20 2020 矩阵 M M M 来表示坐标。矩阵中的数字代表不同的地标。您位于矩阵的 [ 10 , 10 ] [10,10] [10,10] 处,这是一个特殊值,表示您的方向,例如,west0表示正西方向,偏航角为0度。矩阵中相邻数字之间的距离在现实世界中是5米。矩阵 M M M 中的数字代表:

[0:未探索 1:道路 2:建筑物 … -1:您过去轨迹]。 “规划”记录您现在可以参考的之前长期多步规划信息。

[输出格式] “思考”:您对任务的思考,可能包括您的理解、环境、历史等。“观察”:地图的描述。“规划”:您更新的规划。“动作”:您的下一个动作。

逐步思考。首先,根据“地图”判断,给出第一个“思考”,并描述您的方向。其次,检查当前“规划”中的地标是否在您当前位置5米范围内,然后根据“指令”和之前的“规划”更新您的多步“规划”。每个规划都需要遵循一个状态词(TODO, In Process, Completed)。最后,再次根据“地图”判断,并根据动作格式给出具体的“动作”。动作格式:动作:(右,左,抬起,下降,直走,后退),(角度(0-15度)),(距离(0-10米))。

指令:起飞并直穿水面到道路…

历史:[起飞5米…]

地图:STMR

规划:

  1. (已完成) 起飞5米。
  2. (已完成) 转向180度。
  3. (已完成) 直穿水面到道路。
  4. (进行中) 向左转以对齐道路。
  5. (待办)…

4. 实验部分

4.1 实验设置

a) 数据集

我们使用【1】提供的一个新颖且复杂的数据集进行实验,我们将其称为“AerialVLN-S”数据集,以评估空中VLN任务的性能。该数据集旨在模仿现实世界的城市环境,包含超过870种不同类型的对象,以及包括市中心、工厂、公园和村庄在内的各种场景。此外,AerialVLN-S数据集包含由经验丰富的无人机飞行员记录的8,446条飞行路径,这些飞行员拥有AOPA(飞机所有者与飞行员协会)证书,确保路径的真实性和质量。我们使用AerialVLN-S作为基准,分别从验证可见集和验证不可见集中选取12个场景和5个场景进行评估。值得注意的是,测试集不可用,因为评估服务器【1】现在无法访问。

b) 评估指标

为了严格评估我们方法的性能,我们使用了一套全面的评估指标,如【1】所示。我们关注几个关键方面,即导航误差(NE),它量化了无人机停止点与实际目的地之间的距离;成功率(SR),它衡量成功到达目的地(20米范围内)的导航比例;以及导航成功率(OSR),这是一个理想化的指标,它认为轨迹上任何接近目的地20米内的点都是成功的。

c) 实现细节

我们的框架在模拟器和真实环境中都进行了实现。对于模拟环境,我们评估了算法在airsim和UE4上的性能,使用的是一台配备Intel i9第12代CPU和NVIDIA RTX 4090 GPU的笔记本电脑。对于户外环境,我们在一架Q250机身上进行测试,搭载Intel RealSense D435i深度相机,以及运行Ubuntu 18.04的NVIDIA Jetson Xavier NX作为机载计算机。我们使用GPT-4V和GPT-4o的在线API,其中采用默认参数。

4.2 实验结果

a) 模拟器中的定量结果

表I比较了我们的方法与其他几项工作。随机和动作采样分别表示随机采样动作和根据训练集的动作分布进行采样。LingUNet【25】假设代理从一开始就能看到目的地,该方法被【1】转换为逐步范式。Seq2Seq【13】是一种基于学习的循环策略,直接预测下一个动作。CMA是【1】中的基线模型,考虑了多模态之间的注意力。LAG是【1】中的主要方法,设计了一种前瞻性指导来调整路径。相比之下,我们的方法在大多数指标上明显优于其他方法,证明了我们的方法的优势。我们发现,与其在每个时间步处理整个长指令和视觉观察,不如将格式化的分解子目标更有利于每个动作和地标的细粒度对齐。此外,在我们的STMR指导下,无人机对其自身的空间位置和其他语义约束有更好的理解,这在长指令环境中具有明显的优势,并导致更稳健的执行。

b) 真实环境中的定量结果

为了测试我们的解决方案在现实世界中的表现,我们收集了10个户外场景,包括街道场景和森林,地面真实长度从50米到500米不等。然后,我们将我们的方法应用于真实的无人机,并调用云端LLM(使用GPT-4o)来导航这些具有挑战性的环境。在本实验中,我们采用并比较了基于LLM的VLN方法MapGPT【10】和NavGPT【6】。从演示快照图4中可以看出,我们的方法可以对齐视觉和文本地标,并理解命令。最终,无人机成功到达目的地。表II还表明,提出的方法比大多数最新的基于LLM的VLN方法取得了更好的结果。

c) 失败案例分析

在模拟中,我们分析了两种最常见的失败情况,这些失败是由错误的规划或执行造成的。第一个典型的失败是对模糊指令的误解。在一些指令中,有许多连续的命令,没有任何地标,例如“向左转,然后向右移,然后直走”,这些命令没有对象供LLM参考。这种情况将直接导致重复执行一个步骤。第二个典型的错误是由视觉感知器的准确性造成的。尽管现代感知模型显示出强大的能力,但它们在识别不同视角的对象方面仍需改进。结果,关键地标可能不会映射到矩阵表示中,导致无法完成正确的动作。这一观察与我们的现实世界实验相符,大多数错误都来自感知。

4.3 综合分析

我们进行了几项消融研究,以评估所提出框架的有效性。所有消融实验均在AerialVLN-S任务的验证不可见数据集上进行。对应的结果如表III、表IV和表V所示。

图4:真实环境中的定性结果。相同动作的短距离移动被合并为一个长距离移动,如图像序列所示。

a) 显式空间信息

为了证明STMR的空间表示能力,我们进一步将其与其他提示格式进行比较,作为LLM的空间信息提示。在Topo格式(表III的第1行)中,我们维护一个语言形成的地图,该地图捕获不同节点之间的拓扑关系。每个节点记录视觉观察的文本描述,节点之间的连通性使用文本提示描述。例如,“地点1与地点2、4、0、3相连”。在度量格式(第2行)中,我们安排从8个不同方向相对于代理当前方向的视觉观察,并将其连接成一个单独的提示。每个视觉观察记录地标的方位和距离,例如,“左前方10米远的一个白色建筑”。可以看出,第2行比第1行提高了SR 1.2%(绝对值),但导航性能仍然较差,因为对于某些地标,如道路和河流,无人机仍然无法根据某一点距离描述获得区域级空间信息。我们的STMR结合了语义、拓扑和度量信息,显著增强了无人机的探索能力,并在SR和OSR的准确性上提高了10%以上。

b) 子目标的状态更新

为了确保每个子目标都能被执行,尽管环境发生变化,在每个迭代中,LLM不会改变原始路径计划,但会根据观察结果更新当前子目标的状态,包括待办、在进行中和已完成。我们将这种策略与根据每个迭代中的观察结果更新整个多步路径规划(第1行)进行比较。结果如表IV所示。这种策略并没有显著提高导航成功率(OSR),表明所提出的STMR已经提供了足够的容量来全面导航环境。尽管如此,它对决策过程产生了积极影响,使成功率(SR)从9.0%提高到10.8%。

c) 直接视觉输入和STMR

由于GPT-4V和GPT-4o具有强大的多模态能力,它们可以使用视觉和文本提示进行推理。然而,对于它们来说,直接从逐步输入的RGB图像中理解地标语义是具有挑战性的。这可能是因为LLM在空间感知推理方面的无能。如表V所示,使用LLM的提出的STMR表示方法明显优于直接输入RGB图像与VLM。

5. 结论与未来工作

本文通过引入基于LLM的端到端框架解决了具有挑战性的空中VLN任务。为了增强LLM的空间推理能力,我们提出了语义-拓扑-度量表征(STMR)。STMR首先将指令相关地标及其位置整合到俯视地图中,随后将该地图转换为包含语义、拓扑和距离度量信息的矩阵表示。将提出的STMR作为LLM提示的一部分,我们显著提高了无人机的导航能力。我们的框架在AerialVLN-S数据集上取得了最先进的成果,证明了其有效性。在未来,我们将探索一个灵活的框架,与人类进行交互,以消除指令中的歧义。

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

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

相关文章

React 前端框架实战教程

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 引言 React 是由 Facebook 开发的前端 JavaScript 库,旨在构建高效、灵活的用户界面,尤其适用于单页应用…

c语言中的数组(上)

数组的概念 数组是⼀组相同类型元素的集合; 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。 数组中存放的多个数据,类型是相同的。 数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组。 数组创建 在C语言…

Spring Boot 中的事件发布与监听:深入理解 ApplicationEventPublisher(附Demo)

目录 前言1. 基本知识2. Demo3. 实战代码 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 基本的Java知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全&am…

【记录】日常|从零散记录到博客之星Top300的成长之路

文章目录 shandianchengzi 2024 年度盘点概述写作风格简介2024年的创作内容总结 shandianchengzi 2024 年度盘点 概述 2024年及2025年至今我创作了786即84篇文章,加上这篇就是85篇。 很荣幸这次居然能够入选博客之星Top300,这个排名在我之前的所有年份…

定时器按键tim_key模版

低优先级放在高优先级内势必是程序卡死 把高优先级放到低优先级内,会使程序卡死 可修改 Debuger调试方法 Pwm rcc #include "my_main.h" uint8_t led_sta0x10; char text[30]; void LED_Disp(uint8_t dsLED) {HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPI…

Swing使用MVC模型架构

什么是MVC模式? MVC是一组英文的缩写,其全名是Model-View-Controller,也就是“模型-视图-控制器”这三个部分组成。这三个部分任意一个部分发生变化都会引起另外两个发生变化。三者之间的关系示意图如下所示: MVC分为三个部分,所以在MVC模型中将按照此三部分分成三…

ui-automator定位官网文档下载及使用

一、ui-automator定位官网文档简介及下载 AndroidUiAutomator:移动端特有的定位方式,uiautomator是java实现的,定位类型必须写成java类型 官方地址:https://developer.android.com/training/testing/ui-automator.html#ui-autom…

gitee——报错修改本地密码

有时候当我们向远端push本地的仓库时会有一些报错的行为。 如下: 这是因为我们在gitee修改了密码时,本地还没有更新提交,总是报错 解决修改密码报错 如下: 1.在本地点击搜索栏找到控制面板 步骤如下

小盒科技携手体验家,优化智能教育服务体验,打造在线教育新高度

北京小盒科技有限公司(简称“小盒科技”,由“作业盒子”更名而来)是一家专注于教育科技的公司,致力于利用人工智能、大数据等先进技术,为中小学教育提供创新的解决方案和产品。 近日,「小盒科技」携手体…

Docker Hub 全面解析及应对策略

在现代 DevOps 和容器化应用开发中,Docker Hub 是一个不可或缺的工具。然而,一些地区或企业对 Docker Hub 的访问受到限制,甚至全面禁止。这种现象引发了开发者和运维人员的广泛关注。那么,为什么 Docker Hub 会被禁用&#xff1f…

分布式理解

分布式 如何理解分布式 狭义的分布是指,指多台PC在地理位置上分布在不同的地方。 分布式系统 分布式系**统:**多个能独立运行的计算机(称为结点)组成。各个结点利用计算机网络进行信息传递,从而实现共同的“目标或者任…

macOS使用LLVM官方发布的tar.xz来安装Clang编译器

之前笔者写过一篇博文ubuntu使用LLVM官方发布的tar.xz来安装Clang编译器介绍了Ubuntu下使用官方发布的tar.xz包来安装Clang编译。官方发布的版本中也有MacOS版本的tar.xz,那MacOS应该也是可以安装的。 笔者2015款MBP笔记本,CPU是intel的,出厂…

ppp综合实验

IP地址 r1 r2 r3 r4 hdlc封装 pap认证 r2 r3 chap认证 r2 r4 MGRE 主认证 [r1]int Tunnel 0/0/0 [r1-Tunnel0/0/0]ip add 192.168.4.1 24 [r1-Tunnel0/0/0]tunnel-protocol gre p2mp [r1-Tunnel0/0/0]source 12.1.1.1 [r1-Tunnel0/0/0]nhrp entry multicast dynamic [r1-Tu…

HBuilderX构建Vue项目

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl HBuilderX概述 HBuilderX是一款专为开发者设计的高效开发工具,致力于提升开发者的编码效率和体验。HBuilderX既适合追求极致效率的极客,也适合希望简…

基于微信小程序的英语学习交流平台设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

使用 Confluent Cloud 的 Elasticsearch Connector 部署 Elastic Agent

作者:来自 Elastic Nima Rezainia Confluent Cloud 用户现在可以使用更新后的 Elasticsearch Sink Connector 与 Elastic Agent 和 Elastic Integrations 来实现完全托管且高度可扩展的数据提取架构。 Elastic 和 Confluent 是关键的技术合作伙伴,我们很…

JDK17 HashMap

HashMap ArrayList用动态数组存放元素,而HashMap用动态数组(桶)存储键值对。 如果两个键值对映射到桶同一个索引,则称为散列冲突。HashMap采用拉链法解决冲突,即桶中每个索引指向一个链表或者红黑树,多个键…

ansible自动化运维实战--通过role远程部署nginx并配置(8)

文章目录 1、准备工作2、创建角色结构3、编写任务4、准备配置文件(金甲模板)5、编写变量6、编写处理程序7、编写剧本8、执行剧本Playbook9、验证-游览器访问每台主机的nginx页面 在 Ansible 中,使用角色(Role)来远程部…

Python网络自动化运维---用户交互模块

文章目录 目录 文章目录 前言 实验环境准备 一.input函数 代码分段解析 二.getpass模块 前言 在前面的SSH模块章节中,我们都是将提供SSH服务的设备的账户/密码直接写入到python代码中,这样很容易导致账户/密码泄露,而使用Python中的用户交…

计算机的错误计算(二百二十二)

摘要 利用大模型化简计算 实验表明,虽然结果正确,但是,大模型既绕了弯路,又有数值计算错误。 与前面相同,再利用同一个算式看看另外一个大模型的化简与计算能力。 例1. 化简计算摘要中算式。 下面是与一个大模型的…