【论文阅读】PERCEIVER-ACTOR: A Multi-Task Transformer for Robotic Manipulation

news2024/9/21 16:16:59

Abstract

transformers凭借其对大型数据集的扩展能力,彻底改变了视觉和自然语言处理。但在机器人操作中,数据既有限又昂贵。通过正确的问题表述,操纵仍然可以从变形金刚中受益吗?我们使用peract来研究这个问题,peract是一种用于多任务6-dof操作语言条件行为克隆agent。peract使用感知器transformer[1]对语言目标和rgb-d体素观测值进行编码,并通过“检测下一个最佳体素动作”输出离散化动作。与在2d图像上操作的框架不同,体素化的3d观察和动作空间为有效学习6-dof动作提供了强大的结构先验。通过这个公式,我们从每个任务的几个演示中训练了一个多任务transformer,用于18个rlbench任务(有249个变体)和7个真实世界任务(有18个变体)。我们的结果表明,在各种桌面任务中,peract的表现明显优于非结构化图像到动作agents和3d convnet基线。

Keywords:Transformers, Language Grounding, Manipulation, Behavior Cloning

 1 Introduction

Transformers[2]已经在自然语言处理和计算机视觉中广泛应用。通过将问题作为序列建模任务,并对大量不同的数据进行训练,Transformers在多个领域取得了突破性的成果[3,4,5,6]。即使在通常不涉及序列建模的领域中[7,8],Transformers也被用作通用架构[9]。但在机器人操作中,数据既有限又昂贵。我们还能把Transformers的力量用正确的问题表述带到六自由度操纵吗?

语言模型对tokens序列进行操作[10],视觉transformers对图像patch序列进行操作[4]。虽然存在像素transformers[11,1],但它们的数据效率不如使用卷积或补丁 patches 来利用图像的二维结构的方法。因此,尽管transformers可能与领域无关,但它们仍然需要正确的问题表述来实现数据效率。在直接将2d图像映射到6-dof动作的行为克隆(bc) agents中也存在类似的效率问题。像gato[9]和bc-z[12,13]这样的智能体已经显示出令人印象深刻的多任务能力,但它们需要数周甚至数月的数据收集。相比之下,最近在强化学习方面的工作,如c2farm[14],构建了一个体素化的观察和动作空间,利用3d卷积神经网络有效地学习3d动作的视觉表征。同样,在这项工作中,我们的目标是利用transformers利用体素补丁的3d结构进行高效的6-dof行为克隆(类似于视觉transformers[4]利用图像补丁的2d结构)。

为此,我们提出了peract (perception - actor的缩写),这是一种语言条件bc agent,它可以学习模仿各种各样的6自由度操作任务,每个任务只需要几个演示。peract编码一系列rgb-d体素补丁,并预测离散的平移、旋转和夹持动作,这些动作在观察-行动循环中由运动规划器执行。peract本质上是一个经过监督学习训练的分类器,用于检测类似于cliport[16,17]等先前工作的动作,只不过我们的观察和动作是用3d体素而不是2d图像像素表示的

由于高维输入的缩放问题 scaling issues,在端到端bc方法中,体素网格不像图像那么普遍。但在peract中,我们使用percepver Transformer[1]来编码高达100万体素的高维输入,仅使用一小组潜在向量。这种基于体素的公式 formulation 提供了强大的结构先验,具有以下几个优点:融合多视图观察的自然方法,学习稳健的以行动为中心的表征[18,19],以及在6-dof中实现数据增强——所有这些都有助于通过专注于多样化而不是狭隘的多任务数据来学习可推广的技能。

为了研究这种公式 formulation 的有效性,我们在rlbench[15]环境中进行了大规模实验。我们在18个不同的任务上训练了一个多任务agent,这些任务有249个变体,涉及一系列可理解和不可理解的行为,如将酒瓶放在架子上和用棍子拖动物体(见图1-a-j)。每个任务还包括几个姿势和语义变化,对象的位置、颜色、形状、大小和类别各不相同。我们的结果表明,在不使用实例分割、对象姿势、内存或符号状态的任何显式表示的情况下,peract明显优于图像到动作agents(34倍)和3d convnet基线(2.8倍)。我们还使用franka panda验证了我们的方法,该多任务agent在7个真实任务上从头开始训练,总共只进行了53次演示(见图1 k-o)。

图1。语言条件操纵任务:peract是一个语言条件多任务agent,能够模拟各种6-dof操纵任务。我们在rlbench[15]中对18个模拟任务进行了实验(a-j;仅显示了10个),其中有几个姿势和语义变化。我们还用franka panda在7个真实世界的任务(k-o;只显示了5个)上演示了我们的方法,用53个演示训练了多任务agent。请参阅补充视频,了解模拟和现实世界的推出情况。

 总之,我们的贡献如下:

  • 一个用transformers来感知、执行和指定目标的新问题表述。
  • 一个有效的以行动为中心的框架,用于在6-dof行动中接地语言 grounding language。
  • 在一系列模拟和现实世界任务中调查多任务agents的实证结果。

2 Related Work

Vision for Manipulation.

传统上,机器人感知方法使用明确的“对象”表示,如实例分割、对象类别、姿势[20,21,22,23,24,25]。这些方法很难处理像布和豆子这样的可变形的颗粒状物品,因为这些物品很难用几何模型或分割来表示。相比之下,最近的方法[26,17,16,27]在没有任何“对象性”假设的情况下学习以动作为中心的表示,但它们仅限于具有简单拾取和放置原语的自上而下 top-down 的2d设置。在3d方面,james等人提出了c2farm[14],这是一种以行动为中心的强化学习(rl) agent,具有粗粒度到细粒度的3d- unet主干。从粗到细的方案有一个有限的接受域 receptive field,不能在最好的水平上观察整个场景。相比之下,peract通过transformer骨干学习具有全局接受域的以动作为中心的表示。此外,peract使用bc而不是rl,这使我们能够通过使用语言目标来轻松训练多任务agent来完成多个任务。

End-to-End Manipulation

方法[28,29,30,31]对对象和任务的假设最少,但通常被表述为图像到动作的预测任务。直接在RGB图像上进行6自由度任务的训练通常效率很低,通常需要几次演示或几集 episodes 才能学习像重新排列对象这样的基本技能。相比之下,PERACT使用体素化观察和动作空间,在6自由度设置中效率更高,鲁棒性更强。虽然其他关于6-DoF抓取的研究[32,33,34,35,36,37]使用了RGB-D和点云输入,但它们尚未应用于顺序任务或与语言条件反射一起使用。另一项工作通过使用预训练的图像表示[16,38,39]来引导BC来解决数据效率低下的问题。虽然我们的框架是从零开始训练的,但这种预训练方法可以在未来的工作中集成在一起,以获得更高的效率和对看不见的对象的泛化。

Transformers for Agents and Robots.

transformers已成为多个领域的流行架构。从nlp开始[2,3,40],最近在视觉[4,41],甚至rl[8,42,43]。在机器人技术中,transformers已被应用于辅助遥操作[44]、腿部运动[45]、路径规划[46,47]、模仿学习[48,49]、形态控制器[50]、空间重排[51]和抓取[52]。transformers在多领域设置中也取得了令人印象深刻的结果,例如在gato[9]中,单个transformer在16个领域domains上进行了训练,如字幕 captioning 、语言基础 language-grounding、机器人控制等。然而,gato依赖于非常大的数据集,比如15k集用于块堆叠 block stacking,94k集用于元世界[53]任务。我们的方法可能会补充像gato这样的agents,后者可以使用我们的3d配方来提高效率和鲁棒性。

Language Grounding for Manipulation.

一些工作已经提出了机器人动作中语言基础的方法[54,55,56,57,58,59,60,61,62,63,64,65]。然而,这些方法使用无纠缠的管道 disentangled pipelines (理解为非端到端方法) 进行感知和行动,语言主要用于指导感知[66]。最近,已经提出了一些端到端方法[13,12,67,68,69],用于用语言指令调节bc agents。这些方法需要在几天甚至几个月内收集数千个人类演示或自主情节。相比之下,peract只需要几分钟的训练数据就可以学习到鲁棒的多任务policies。对于基准测试,存在几种模拟环境[70,17,53],但我们使用rlbench[15],因为它具有6-dof任务的多样性,并且易于使用模板语言目标生成演示。

3 PERCEIVER-ACTOR

peract是一个用于6自由度操作的语言条件行为克隆agent。关键思想是学习以语言目标为条件的行为的知觉表征。给定场景的体素化重建,我们使用Perceiver transformer[1]来学习每体素特征。尽管有非常大的输入空间,percepver使用一组小的潜在向量来编码输入。然后使用每体素特征来预测下一个最佳动作,根据离散的平移、旋转和每个时间步的抓手状态。peract完全依赖于当前的观察来确定顺序任务的下一步要做什么。请参见图2了解概述。

第3.1节和第3.2节描述了我们的数据集设置。第3.3节描述了我们使用PERACT的问题公式,第3.4节提供了培训PERACT的详细信息。进一步的实施细节见附录B。

图2。peract概述。peract是一个经过监督学习训练的语言条件行为克隆agent,用于检测动作。peract以语言目标和由rgb-d传感器重建的体素网格作为输入。体素被分割成3d块,语言目标用预训练的语言模型进行编码。这些语言和体素特征作为一个序列附加在一起,并使用percepver transformer进行编码[1]。尽管输入序列非常长,但percepver使用一小组潜在向量对输入进行编码(见附录图6)。通过解码器将这些编码上采样回原始体素尺寸,并用线性层进行重塑,以预测离散化的平移、旋转、打开夹持器和避免碰撞动作。这个动作是用一个运动规划器执行的,之后新的观察被用来预测下一个离散的动作,在一个观察-行动循环中直到终止。

 3.1 Demonstrations

我们假设访问一个数据集(n个专家演示),每个演示与英语语言目标。这些演示由一位专家在运动规划器的帮助下收集,以达到中间姿势。每个演示ζ是一个连续动作的序列与观测值。动作由6自由度姿态、夹持器打开状态以及运动规划器是否使用碰撞避免达到中间姿态组成:。观测结果由来自任意数量的相机的RGB-D图像组成。我们在模拟实验中使用了四个摄像头,但在真实实验中只使用了一个摄像头

3.2 Keyframes and Voxelization

继James等人[14]之前的工作之后,我们通过关键帧提取和体素化构建了一个结构化的观察和动作空间。

训练我们的agent直接预测连续动作是低效和嘈杂的。因此,对于每个演示ζ,我们提取一组关键帧动作用一个简单的启发式方法捕捉动作序列中的瓶颈末端执行器姿势[71]:如果(1)关节速度接近于零且(2)夹持器打开状态没有改变,则动作是关键帧。演示中的每个数据点ζ可以被转换为“预测下一个(最佳)关键帧动作”任务[14,72,73]。参见附录图f,以了解该过程的说明。

为了在3d中学习以动作为中心的表征[18],我们使用体素网格[74,75]来表示观察空间和动作空间。观测体素v由rgb-d观测数据重建而成,通过三角剖分 triangulation  将观测体素v融合从已知的相机外内参。默认情况下,我们使用的体素网格,这相当于1.0m3的公制体积。关键帧动作k被离散化,这样训练我们的bc agent可以被表述为“下一个最佳行动 ”"next best action"分类任务[14]。平移 Translation 只是最接近抓手手指中心的体素。旋转离散成5度块为每三个旋转轴。夹持器打开状态是一个二进制值。collision也是一个二进制值,用于指示运动规划器是应该避免体素网格中的所有内容还是什么都不做;在这两种避碰模式之间切换是至关重要的,因为任务通常涉及基于接触的动作(例如,拉开抽屉)和非基于接触的动作(例如,到达手柄而不碰撞到任何东西)。

3.3 PERACT Agent

peract是一种基于transformer的[2]agent,它接受体素观察和语言目标(v, l),并输出离散化的平移、旋转和夹持器打开动作。这个动作由运动规划器执行,然后重复这个过程,直到达到目标。

语言目标 l 用预训练的语言模型进行编码。我们使用clip的[76]语言编码器,但任何预训练的语言模型都足够了[13,69]。我们对clip的选择为未来的工作开辟了可能性,即使用与语言对齐的预训练视觉特征,以便更好地泛化到看不见的语义类别和实例[16]。

体素观测v被分割成尺寸为5^3的3d块(类似于vit[4])。在实现中,这些斑块是用一个核大小和步长为5的3d卷积层提取的,然后被平面化成一个体素编码序列。语言编码通过线性层进行微调,然后添加体素编码形成输入序列。我们还将可学习的位置嵌入添加到序列中,以合并体素和token位置。

语言和体素编码的输入序列非常长。标准的Transformer具有自关注连接和个补丁的输入,很难适合商用gpu的内存。相反,我们使用Perceiver[1]Transformer。Perceiver是一个潜在空间Transformer,它不是关注整个输入,而是首先计算输入和一组更小的潜在向量(随机初始化和训练)之间的交叉注意。这些潜在信号是用自关注层编码的,对于最终输出,这些潜在信号再次与输入交叉关注,以匹配输入大小。参见附录图6的说明。默认情况下,我们使用2048个512维的潜在变量,但在附录g中,我们实验了不同的潜在大小。

 Perceiver Transformer使用6个自注意层对潜在进行编码,并从输出交叉注意层输出一系列补丁编码。这些补丁编码通过三维卷积层和三线性 tri-linear 上采样来解码64维体素特征。解码器包括从编码器的跳过连接(如unets[77])。然后使用每体素特征来预测离散的动作[14]。为了进行平移,将体素特征重塑为原始体素网格(1003),形成动作值的3d q函数。对于旋转、夹持打开和碰撞,特征被最大池化,然后用线性层解码形成各自的q函数。最佳行动t是通过简单地最大化q函数来选择的

其中(x, y, z)为体素在网格中的位置,(ψ, θ, φ)为欧拉角的离散旋转,ω为夹持器打开状态,κ为碰撞变量。有关q -prediction的示例,请参见图5。 

图5。q -预测示例:来自PERACT的 translation q -预测的定性示例以及专家行动,用虚线圈突出显示。左边两个是模拟任务,右边两个是真实世界的任务。更多示例参见附录J。

3.4 Training Details

peract是通过监督学习,使用来自演示数据集的离散时间输入动作元组进行训练的。这些元组由体素观察、语言目标和关键帧动作组成。在训练过程中,我们随机采样一个元组,并监督agent在给定观察值和目标(v,l)的情况下预测关键帧动作k。对于平移,真实动作真值表示为一个单热体素编码。旋转也用每个旋转轴一个 one-hot 编码来表示,r个旋转箱 R rotation bins (所有实验的R=5度)。同样,开合变量和碰撞变量是二进制一热向量。agent像分类器一样用交叉熵损失进行训练

其中, 。为了鲁棒性,我们还用平移和旋转扰动来增强v和k。详见附录E。

默认情况下,我们使用100^3的体素网格大小。我们通过重放具有离散动作的专家演示来进行验证测试,以确保100^3是足够的执行分辨率。agent在8个nvidia v100 gpu上以16的批量进行了16天的训练(600k迭代)。我们在Perceiver[1]之后使用lamb[78]优化器

对于多任务训练,我们只需从数据集中的所有任务中采样输入动作元组。为了确保在采样过程中,具有较长视野的任务不会被过度表示,每个批次都包含均匀分布的任务。也就是说,我们首先对一组大小为bs的任务进行均匀采样,然后为每个采样的任务选择一个随机的输入动作元组。通过这种策略,长距离任务需要更多的训练步骤来完全覆盖输入动作对,但在梯度更新过程中,所有任务都被赋予相等的权重

4 Results

我们进行实验来回答以下问题:

(1)与非结构化图像到动作框架和3D卷积网络等标准架构相比,PERACT的有效性如何?影响PERACT性能的因素是什么?

(2) Transformers的全局感受野真的比具有局部感受野的方法有益吗?

(3) PERACT可以在有噪声数据的现实世界任务上进行训练吗?

4.1 Simulation Setup

为了可重复性和基准测试,我们在模拟中进行了初步实验。

Environment.

模拟设置在CoppelaSim[79]中,并通过PyRep[80]进行接口连接。所有实验都使用带有平行夹具的Franka Panda机器人。如附录图7所示,输入观测值是从位于前部、左肩、右肩和手腕上的四个RGB-D相机捕获的。所有相机均无噪音,分辨率为128×128。

Language-Conditioned Tasks.
我们在18个rlbench[15]任务上进行训练和评估。示例请参见peract.github.io,单个任务的详细信息请参见附录a。每个任务包括几个变体,范围从2到60种可能性不等,例如,在堆块任务中,“堆2个红色块”和“堆4个紫色块”是两个变体。这些变体在数据生成过程中随机采样,但在评估过程中保持一致,以便进行一对一的比较。一些rlbench任务被修改为包括额外的变体,以进行压力测试多任务和语言基础能力。18个任务中共有249个变体,提取的关键帧数量在2到17之间。一集中的所有关键帧都有相同的语言目标,该目标是由模板构建的(但针对真实世界的任务进行了人工注释)。请注意,在所有实验中,我们不测试对看不见的对象的泛化能力,也就是说,我们的训练对象和测试对象是相同的。然而,在测试期间,agent必须处理新的对象姿势、随机采样的目标和随机采样的场景,这些场景具有对象颜色、形状、大小和类别的不同语义实例化。这里的重点是评估在所有任务和变体上训练的单个多任务agent的性能

Evaluation Metric.

每个多任务agent都在所有18个任务上独立评估。评估得分为0分表示失败,100分表示完全成功。没有部分学分。我们报告了每项任务25次评估事件(25×18=450次总事件)的平均成功率,其中agents训练了n=10,100次演示。在评估过程中,agent会一直采取行动,直到预言机指示任务完成或达到最多25个步骤。

4.2 Simulation Results

表1报告了在所有18个任务上训练的多任务agents的成功率。由于训练18个个体agents的资源限制,我们无法调查单个任务agents。

表1。多任务测试结果。各种多任务agents任务的成功率(平均%),每项任务进行10或100次演示训练,并在每项任务25次发作时进行评估。每个评估事件的得分为0分(失败)或100分(成功)。peract的表现优于最具竞争力的基线c2farm-bc[14],在10个演示中平均提高了1.33倍,在100个演示中提高了2.83倍。

 Baseline Methods.

我们通过对比两个语言条件基线(Image-BC和c2farm-bc)来研究我们的问题公式的有效性。Image-BC是一个图像到动作agent,类似于bc-z[12]。在bc-z之后,我们使用FiLM[81]进行CLIP[76]语言特征的调节,但视觉编码器接收RGB-D图像,而不仅仅是RGB图像。我们还研究了cnn和vit视觉编码器。c2farm-bc是james等人[14]开发的一种3d全卷积网络,在rlbench任务上取得了最先进的成果。与我们的agent类似,c2farmbc也可以检测体素化空间中的动作,但它使用从粗到细的粒度方案来检测两个体素化级别的动作32^3个具有1m网格的体素,以及从第一级“放大”后具有0.15^3m网格的32^3个体素。请注意,在最高级别上,c2farm-bc的分辨率(0.47cm)高于peract(1cm)。我们使用与james等人[14]相同的3d convnet架构,但我们没有用rl训练它,而是用交叉熵损失进行bc(来自第3.4节)。我们还使用clip[76]语言功能在瓶颈处对其进行调节,如lingUNets[82,16]中所述。

Multi-Task Performance.

表1比较了Image BC和C2FARMBC与PERACT的性能。由于演示不足,Image BC在大多数任务上的性能几乎为零。imageBC在单视图观察中处于不利地位,必须从头开始学习手眼协调hand-eye coordination。相比之下,PERACT基于体素的公式自然允许集成多视图观察、学习6-DoF动作表示和3D数据增强,所有这些在基于图像的方法中都是不容易实现的。C2FARM-BC是最具竞争力的基线,但它的感受野有限,主要是因为粗粒到细粒的方案,部分是由于仅卷积的架构

在表1中的25/36项评估中,PERACT的表现优于C2FARM-BC,10次演示的平均改善率为1.33倍,100次演示的改善率为2.83倍。对于许多任务,C2FARM-BC实际上在更多的演示中表现较差,这可能是由于容量不足。由于额外的训练演示包括需要优化的额外任务变体,它们最终可能会损害性能

一般来说,10次演示就足以让peract在打开抽屉(3种变体)等变化有限的任务上取得>65%的成功。但是,具有更多变化的任务,如堆块(60个变化),需要更多的数据,有时只是为了涵盖所有可能的概念,如“青色块”,这些概念可能没有出现在训练数据中。请参阅补充视频中的模拟部署,以了解这些评估的复杂性。对于三个任务:插入钉子、堆叠杯子和放置杯子,所有agents都几乎没有成功。这些是非常高精度的任务,偏离几厘米或几度可能会导致不可恢复的故障。但在附录h中,我们发现专门针对这些任务训练单任务agents可以略微缓解这个问题

Ablations.

表1报告了PERACT w/o Lang,一个没有任何语言条件的agent。如果没有语言目标,agent就不知道底层任务,只能随意执行。我们还报告了图3中打开抽屉任务的额外消融结果。总结这些结果:(1)跳跃连接有助于更快地训练agent,(2)Perceiver transformer对于在全局感受野中实现良好性能至关重要,(3)提取良好的关键帧动作对于监督训练至关重要,因为随机选择或固定间隔的关键帧会导致零性能。

图3。消融实验。消融关键部件后PERACT的成功率。

 Sensitivity Analysis

在附录g中,我们研究了影响peract性能的因素:the number of Perceiver latents 隐变量数量、体素化分辨率和数据增强。我们发现,更多的潜在向量通常会提高agent对更多任务进行建模的能力,但对于简单的短期任务,更少的latents就足够了。同样,对于不同的体素化分辨率,一些任务可以用粗糙的体素网格(如32^3)来解决,但一些高精度任务需要完整的100^3网格。最后,数据增强中的旋转扰动通常有助于提高鲁棒性,主要是通过将agent暴露在对象的更多旋转变化中

4.3 Global vs. Local Receptive Fields

为了进一步研究我们的transformer agent的全局感受野,我们对打开抽屉的任务进行了额外的实验。打开抽屉的任务有三种变体:“打开顶部抽屉”、“打开中间抽屉”和“打开底部抽屉”,由于接受域有限,很难区分抽屉把手,因为它们在视觉上都是相同的

图4报告了peract和c2farm-bc agents经过100次演示的训练。虽然打开抽屉的任务可以通过较少的演示来解决,但在这里我们希望确保数据不足不是问题。我们包括具有不同体素化方案的几个版本的c2farm-bc。例如,[16,16]分别表示1m3和0.15m3的16^3个体素网格的两个级别。[64]表示64^3个体素网格的单层,没有粗粒度到细粒度方案。peract是唯一一个成功率超过70%的agent,而所有c2farm-bc版本的成功率都是约33%,这表明transformer的全局感受野对于解决任务至关重要
 

 图4。全局与局部受体场实验。PERACT与各种C2FARM-BC[14]基线的成功率

4.4 Real-Robot Results 

我们还用franka emika panda上的真实机器人实验验证了我们的结果。设置细节见附录d。在没有任何模拟到真实的转移或预训练的情况下,我们从零开始在总共53个演示中的7个任务(有18个独特的变体)上训练了一个多任务peract agent。有关展示任务多样性和对场景变化鲁棒性的定性结果,请参阅补充视频。表2报告了小规模评估的成功率。与模拟结果类似,我们发现peract能够在简单的短期任务上实现>65%的成功率,例如从少数演示中按压洗手液。最常见的故障涉及预测不正确的夹具打开动作,这通常会导致agent进入看不见的状态。这可以在未来的工作中通过使用hg dagger风格的方法来纠正agent[12]来解决。其他问题包括agent像之前的工作一样利用数据集中的偏差[16]。这可以通过扩大具有更多不同任务和任务变体的专家数据来解决

 表2。多任务模型训练了7个现实世界任务的成功率(平均百分比)(见图1)。

 5 Limitations and Conclusion

我们提出了peract,一种基于transformer的多任务agent,用于6-dof操纵。我们对模拟和现实世界任务的实验表明,正确的问题公式,即检测体素动作,在数据效率和鲁棒性方面有很大的不同。

虽然peract功能强大,但将其扩展到灵巧的连续控制仍然是一个挑战。peract受制于基于采样的运动规划器来执行离散动作,并且不容易扩展到多指手等n-dof执行器。有关peract局限性的详细讨论,请参阅附录l。但总的来说,我们很高兴通过Transformers扩展机器人学习,专注于机器人操作的多样化而非狭隘的多任务数据。

附录

A Task Details

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

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

相关文章

图解Redis 02 | String数据类型的原理及应用场景

介绍 在 Redis 中,String 是一种重要的数据类型,是最基本的 key-value 结构,在这个结构中, value 是一个字符串。value 所能容纳的数据最大长度为512M。 需要注意的是,这里的字符串不只指文本数据,它还可…

Https AK--(ssl 安全感满满)

免责声明:本文仅做分享! 目录 https探测 openssl Openssl连接服务器获取基本信息 连接命令: 指定算法连接: 测试弱协议连接是否可以连接: 得到的内容包括: sslscan 在线查询证书 https AK type 中间人AK sslsplit 工具…

【C++题解】1997. 孤独的素数

欢迎关注本专栏《C从零基础到信奥赛入门级(CSP-J)》 问题:1997. 孤独的素数 类型:二维数组 题目描述: 在一个 n 行 m 列的矩阵王国中,生活着一些整数,其中一些是素数,一些不是素数…

数据中心一体化智能运维方案

数据中心基础运维概述 在当今这个信息化的时代,数据中心作为支撑企业信息化建设的核心枢纽,其运维工作的重要性不言而喻。某数据中心深知运维工作的关键性,因此,从基础环境到网络、服务器存储以及基础软件,每一环节都力…

openeuler 22.03 lts sp4 使用 kubeadm 部署 k8s-v1.28.2 高可用集群

文章目录 [toc]废话篇这篇文章什么时候写的为什么是 openeuler为什么是 22.03 lts sp4高可用架构题外话 干活篇环境介绍系统初始化相关关闭防火墙关闭 selinux关闭 swap开启内核模块开启模块自动加载服务 sysctl 内核参数调整清空 iptables 规则安装各种依赖和工具修改 .bashrc…

R语言的基础知识R语言函数总结

R语言与数据挖掘:公式;数据;方法 R语言特征 对大小写敏感通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母)。不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头&…

Python数据分析案例60——扩展变量后的神经网络风速预测(tsfresh)

案例背景 时间序列的预测一直是经久不衰的实际应用和学术研究的对象,但是绝大多数的时间序列可能就没有太多的其他的变量,例如一个股票的股价,还有一个企业的用电量,人的血糖浓度等等,空气的质量,温度这些…

【工具推荐】Agently:一款灵活易用的 AI 应用开发框架

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正! 如果对您有帮助,烦请点赞、关注、转发、订阅专栏! 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】(全…

LAMP环境搭建记录:基于VM的Ubuntu虚拟机

LAMP环境搭建记录:基于VM的Ubuntu虚拟机 我们从这样的角度出发: 一、简述LAMP环境 二、搭建LAMP环境 一、什么是LAMP环境 首先,该词是复合: ​ LAMP Linux Apache MySQL PHP 其中,逐项简述为: …

基于STM32的温度、电流、电压检测proteus仿真系统(OLED、DHT11、继电器、电机)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STM32F103C8T6 采用DHT11读取温度、滑动变阻器模拟读取电流、电压。 通过OLED屏幕显示,设置电流阈值为80,电流小阈值为50,电压阈值为60,温度阈值…

幼儿与非幼儿识别系统源码分享

幼儿与非幼儿识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

跨域训练评估BEVal:自动驾驶 BEV 的跨数据集评估框架

跨域训练评估BEVal:自动驾驶 BEV 的跨数据集评估框架 Abstract 当前在自动驾驶中的鸟瞰图语义分割研究主要集中在使用单个数据集(通常是nuScenes数据集)优化神经网络模型。这种做法导致了高度专业化的模型,可能在面对不同环境或…

苹果手机怎么清理照片内存

在使用苹果手机的过程中,照片往往是占用大量存储空间的主要元凶。随着时间的推移,无论是拍照、截图还是通过应用下载的图片,都会逐渐堆积,消耗宝贵的内存资源。合理清理照片内存不仅可以帮助你释放空间,还能优化设备的…

【算法】动态规划—最长回文子序列

思路分析 关于”回文串“的问题,是面试中常见的,本文提升难度,讲一讲”最长回文子序列“问题,题目很好理解: 输入一个字符串 s,请找出 s 中的最长回文子序列长度。 比如输入 s"aecda"&#xff0c…

vscode中如何配置c/c++环境

“批判他人总是想的太简单 剖析自己总是想的太困难” 文章目录 前言文章有误敬请斧正 不胜感恩!一、准备工作二、安装 VSCode 插件三、配置 VSCode1. 配置编译任务(tasks.json)2. 配置调试器(launch.json) 四、运行和调…

用EA和SysML一步步建模(07)蒸馏器系统上下文图01

用EA和SysML一步步建模的操作指南(01) 用EA和SysML一步步建模(02)导入ISO-80000 用EA和SysML一步步建模(03)创建包图和包的关系 用EA和SysML一步步建模(04)创建“需求组织”包图 …

jd 京东h5st 最新版 分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 有相关问题请第一时间头像私信联系我…

尚品汇-秒杀列表、详情、倒计时、获取下单码(五十二)

目录: (1)秒杀列表与详情 (2)在service-activity-client模块添加接口 (3)秒杀详情页面功能介绍 (1)秒杀列表与详情 封装秒杀列表与详情接口、 封装接口 package com…

Python 解析 Charles JSON Session File (.chlsj)

Charles 代理,是一款抓包软件,可以帮助我们抓取浏览器请求跟响应。 1、在 Filter 里面输入需要抓包的网址 2、右键 Export Session 3、文件类型选择 JSON Session File (.chlsj) 保存 4、解析响应的数据结构 response.body.text 是文本字符串。 # 导入…

SOMEIP_ETS_113: SD_Empty_Options_Array

测试目的: 验证DUT能够拒绝一个选项数组长度为0的SubscribeEventgroup消息,并以SubscribeEventgroupNAck作为响应。 描述 本测试用例旨在确保DUT遵循SOME/IP协议,当接收到一个选项数组长度为0的SubscribeEventgroup消息时,能够…