大模型时代的具身智能系列专题(四)

google deepmind团队

谷歌旗下最大的两个 AI 研究机构——地处伦敦 DeepMind 与位于硅谷的 Google Brain 合并成立新部门 Google DeepMind。其将机器学习和系统神经科学的最先进技术结合起来,建立强大的通用学习算法。代表作有AlphaGo,AlphaStar,AlphaFold等。近期在具身智能方面诞生了RT系列的作品。

主题相关作品

  • RT-1
  • RT-2
  • RT-H
  • RT-Trajectory

RT-1

RT1的出现就是为了解决:
• 机器人学习中的泛化问题。尤其是在真实世界控制任务中,模型需要能够处理多样化的任务、环境和对象。
• 机器人数据收集的难度和成本较高问题。训练具有良好泛化能力的学习模型,解决了如何在机器人领域中利用大规模、多样化的任务无关数据集来训练模型的问题
fig1
使用Everyday robots的移动机械手,它有7个自由度的手臂,一个两指夹持器和一个移动底座
fig2
我们的训练数据由人类提供的演示组成,我们用机器人刚刚执行的指令的文本描述来标注每个片段。指令通常包含一个动词和一个或多个描述目标对象的名词。为了将这些指示组合在一起,我们将它们分成许多技能。

tab1
RT-1的Transformer架构模型通过开放式任务无关训练和高容量架构来吸收多样化的机器人数据。RT-1模型结合了FiLM(Feature-wise Linear Modulation)调节的EfficientNet、TokenLearner以及Transformer,以实现高效的推理速度和实时控制的可行性。RT-1 的输入由图片序列、自然语言指令构成,输出由机械臂运动的目标位姿( x, y, z, roll, pitch, yaw)、gripper stαtus 、模式转换指令构成。

robotics transformers

fig

Instruction and image tokenization

使用预训练的EfficientNet和Universal Sentence Encoder来处理图像和文本指令,提取特征。通过FiLM层将图像特征和文本嵌入结合起来,以增强模型对任务相关特征的提取。
6张动作视频历史帧序列(分辨率300×300)输入到预训练的 ImageNet EfficientNet-B3 模型中得到 9×9×512 的 spatial feature map 然后flatten得到81个visual tokens
为了融合语言指令,RT-1 使用 Universal Sentence Encoder(USE)对指令进行 embedding,然后将这个 embedding 作为预训练的FiLM(Feature-wise Linear Modulation)层的输入
RT-1的图像和指令 tokenization 总共有16M的参数,包含26层 MBConv 块和FiLM层,输出 81个 vision-language tokens。

为了包含语言指令,我们以预训练语言嵌入的形式将image tokenizer设置在自然语言指令上,从而允许在早期提取与任务相关的图像特征并提高RT-1的性能。指令首先通过Universal Sentence Encoder(Cer et al., 2018)嵌入。然后将该嵌入用作输入,将identity初始化的FiLM层(Perez等人,2018)添加到预训练的EfficientNet中,以调节图像编码器。通常,将FiLM层插入预训练网络的内部会破坏中间激活,并抵消使用预训练权值的好处。为了克服这个问题,我们初始化稠密层(fc和hC)的权重,使FiLM仿射变换为零,允许FiLM层最初充当恒等并保留预训练权重的函数。我们发现,在没有ImageNet预训练的情况下,使用从头初始化的effentnet进行训练时,identity-initialized FiLM也会产生更好的结果,但它并没有超过上面描述的初始化。

TokenLearner

使用TokenLearner模块来减少Transformer需要处理的token数量,从而提高推理速度
为了进一步压缩需要处理的token数量并加快推理速度,RT-1采用了TokenLearner,这是一个element-wise attention module,它学习如何将大量token映射到更少的token集合中。

fig1
实现思路:
• 计算一个空间注意力图,突出显示重要区域(使用卷积层或 MLP)。
• 然后将这个空间自注意力图应用到输入中,来为每个区域进行不同的加权(忽略不必要的区域),并将结果空间池化,来生成最终学习的 token。
• TokenLearner将来自FiLM-EfficientNet层的81个视觉token降采样到8个最终token,这些token随后被传递给Transformer层。

Decoder-only Transformer

采用Transformer模型来学习图像、文本和动作之间的映射关系,并输出离散化的动作token。
实现思路:
• 将6张图的序列,每张图的8个token concat 成48个token
• 输入到一个decoder-only的Transformer里,包含有8个自注意力层和19M的参数,用于输出action token。

Action tokenization

action token在RT-1中被离散化为256个区间。这包括臂部运动的7个维度(x、y、z、滚转、俯仰、偏航、夹持器开度)和基座运动的3个维度(x、y、偏航)。
RT-系列训练中使用的动作字符串表示。这样一个字符串的例子可以是一系列机器人动作令牌号码,例如“1 128 91 241 5 101 127 217”,其中每个数字代表一个特定的动作区间(旋转、位置变化)。
pos
对所有的 action 进行归一化,然后拼接,得到下面这个轨迹:
fig2

Loss

我们使用标准的分类交叉熵目标和因果mask(早先在基于transformer的controllers上用的)

Inference speed

与许多大型模型的应用(如自然语言或图像生成)相比,需要在真实机器人上实时运行的模型的独特要求之一是快速和一致的推理速度。考虑到执行本工作中所考虑的指令的人类速度(我们测量的速度在2 - 4秒范围内),我们希望模型不会明显慢于此。根据我们的实验,这一要求对应于至少3hz的控制频率和由此产生的模型推理时间预算,给定系统中的其他延迟,小于100ms。

Model selection

通过Real to sim来近似评估跨多任务的模型性能,训练一个retinaGAN将仿真图像转成真实图像:
在这里插入图片描述

RT-2

前作RT1的限制:
• RT1 是纯 low-level controller 的任务,训练的时候不会从互联网规模的丰富语义知识中受益
• 机器人控制数据成本高,数据集小(130k),模型泛化性能差
• 模型参数量少(35M),无法具有理解和推理能力
• PaLM-E 这些又是 high-level planning 的,训练的时候会从互联网规模的丰富语义知识中受益,但是本质上是充当状态机的角色,只是解释命令并将其解析为单个原语(例如拾取和放置对象)

解决思路:
• 利用好PaLM-E 这种预训练的能力来增强泛化能力
○ RT1 只是尽可能地拟合数据集的轨迹,泛化能力有限
○ RT1+PaLM-E 可以找一些更符合人的行为的轨迹
• 即训练一个单一的模型同时具有以下两种能力:
○ 将机器人的观察转换成动作的能力(RT1)
○ 多模态大模型的推理能力(PaLM-E 等)

方法

结合high-level planning 的VLM 和大规模网络数据,使用网络数据和机器人轨迹联合微调SOTA VLM 得到Vision-Language-Action Models,即将大型预训练VLM 的能力直接集成到机器人的low-level control中(或者反过来说),从而促进泛化并实现语义推理的涌现
fig2

Pre-Trained Vision-Language Models(high-level reasoning & planning)

在这里插入图片描述
利用预训练的视觉-语言大模型(PaLI-X(5B & 55B)和PaLM-E(12B)),输入图片序列和文本,产生一个 token序列
1. 大规模数据集:这些模型通常在包含数十亿图像-文本对的大规模数据集上进行预训练,这些数据集涵盖了多种语言和广泛的主题,从而使模型能够学习到丰富的视觉和语义知识。
2. 多模态学习:预训练视觉-语言模型通过同时处理视觉(图像)和文本(描述、问题等)输入,学习到跨模态的表示,这使得模型能够理解和生成与视觉内容相关的自然语言。
3. 强大的基础能力:通过在多样化的互联网数据上进行预训练,这些模型获得了强大的基础能力,包括对象识别、场景理解、属性抽取和复杂的推理任务。
4. 迁移学习:预训练模型的一个关键优势是它们可以通过迁移学习适应特定的下游任务。这意味着在预训练阶段学到的知识可以迁移到新的任务上,通常通过在特定任务的数据上进行微调来实现。
注意:
• PaLM-E 生成连续的是控制指令(high-level instruction),如上图所示,而不是 action,直接output action的工作比如Gato、VIMA、RT-1等
• 文章只是假定了存在一个low-level policy or planner(low-level controller),可以将这些instruction翻译成low-level actions

Robot-Action Fine-tuning

RT-2将预训练的视觉-语言模型(VLMs)进一步训练,使其能够直接控制机器人的动作。这个过程的目标是让模型学会将视觉输入和语言指令映射到具体的机器人动作上,从而实现对机器人的闭环控制。
• 为了使视觉语言模型能够控制机器人,就必须训练它们来输出动作(low-level controller 而不是high-level instruction)
• 7个tokens表示一个动作,同 RT1
• 既学习从state/observation -> action 的映射
• 也能够从互联网的语言、视觉语言数据的大规模预训练中获益(Internet-scale training)
实现
标准的VLM模型可以输出完整的自然语言token;VLA模型需要输出能够被机器人执行的token,因此RT-2限制输出词汇表,仅采样可用的action token来实现对齐
• action 来自于当前图像、语言命令和特定timestep的机器人动作
• 把 action 对齐成 action tokens(同 RT1),这些action tokens 在模型的训练集中被当作自然语言text toekn 一样处理。
• 即:VLM 输出 text token,但是机器人需要 action token
在这里插入图片描述
训练的时候,把 action token 对齐为 text token,变成multimodal sentences放到训练集中,微调(co-finetune) VLM 得到 VLA
• web data:1B图片文本对,包含109种语言
• 机器人数据和RT-1相同,130k条数据;“Pick Object”, “Move Object Near Object”, “Place Object Upright”, “Knock Object Over”, “Open Drawer”, “Close Drawer”, “Place Object into Receptacle”, and “Pick Object from Receptacle and place on the counter”
• 在共同微调阶段,模型被训练来理解和生成这种结合了自然语言和动作标记的序列。模型学习如何根据视觉输入和语言指令生成正确的动作标记序列。
• 与原始web data一起 co-finetune 机器人数据,增加机器人数据集上的采样权重来平衡每个训练批次中robotics data和web data的比率。
推理的时候,transformer自回归生成的tokens会被de-tokenize为action(每一个timestep的action,交由机器人去执行)
这种action tokens和文本tokens对齐的方式在机器人policy中利用了VLM的backbone和pretraining,一定程度转移了泛化性、语义理解、机器人控制方面的推理能力

实验

• 该工作中训练的最大模型有55B参数;
• 可以直接运行在用于实时机器人控制的GPU上;
• 这是到目前为止最大的模型,用于端到端的机器人控制;
• 模型部署在muti-TPU的云服务上,通过网络调用这个服务;
• 最大的模型,RT2-PaLI-X-55B,运行频率1-3Hz;
• 小点的模型,5B参数,可以运行5Hz;
实验目标
• 评估RT-2在已知任务上的表现。
• 测试RT-2对新对象、背景和环境的泛化能力。
• 观察和量化RT-2的新兴能力,包括语义理解和基本推理。
• 研究模型参数数量和其他设计决策对泛化能力的影响。
• 探索RT-2是否能够展示类似于视觉-语言模型的链式推理能力。

指标

fig4
fig6
• 在已知任务上,RT-2与其他基线模型相比没有显著差异。
• 在泛化到新对象、背景和环境的实验中,RT-2比基线模型表现出约2倍的改进。
• 在评估新兴能力的实验中,RT-2在符号理解、推理和人类识别任务上显著优于基线模型。
• 在模型大小和训练策略的消融实验中,发现更大的模型和共同微调策略能够带来更好的泛化性能。

总结

做的事情和大致的思路其实和以前的RT-1, VIMA等模型没啥区别,本质上就是一种将预训练的 PaLM-E 等预训练的 VLM 大模型如何加进这些模型中,不过从VLM finetune、action token对齐text token是比较新的点
限制:
• RT-2可以执行更加复杂的指令,这是因为从自然语言到动作能更容易被理解;但是不能泛化到新的行为上,因为网络上获取的数据只能帮助模型学会更多的视觉语义信息,无法学会新的行为
• 由于机器人数据集总体量级很少,并且无法搜集机器人没有做过的行为
• 可以从人类行为的视频中提取数据
无法实时推理:机器人控制模型需要模型能够实时推理,RT-2参数量太大,无法实时推理。后续工作的重点可以考虑模型量化和蒸馏,加快推理速度。

RT-H

现有方法的问题:
1. 任务与动作之间的映射学习难度增加:随着任务变得更加语义上多样化,例如从“拿起可乐罐”到“倒杯咖啡”,在多任务数据集中共享数据变得更加困难,因此学习将高级任务映射到动作需要更多的示例数据。
2. 数据共享困难:在多任务学习中,由于任务描述的语言变得更加多样化,例如“拿起可乐罐”与“倒一杯咖啡”,这使得从高级语言任务描述中学习到的共享结构变得更加困难。
3. 干预和纠正的挑战:在交互式模仿学习中,机器人执行任务时的学习依赖于人类的反馈。现有方法通常需要在机器人的动作空间进行干预,如通过遥控操作或触觉教学,这对非专家来说可能具有挑战性,并且难以扩展。
4. 语言干预的局限性:一些工作研究了使用语言作为干预媒介的方法,例如在任务预测不正确时提供人类指导。但是,这些方法通常定义了一组固定的细粒度语言纠正,并将其映射到这些纠正原语上,这在更复杂的情境中可能缺乏上下文性。
5. 数据驱动方法的局限性:数据驱动的方法需要大量的语言纠正数据集,或者在部署期间需要共享自主性,这可能限制了方法的实用性和可扩展性。
fig1

RT-H在高层次任务描述(task descriptions)和低层次动作(action)之间引入一个中间层,即语言动作(language motions),这些语言动作是用更细粒度的短语来描述机器人的低级动作,例如“向前移动手臂”或“向右旋转手臂”。 这种方法的优势在于:
• 共享模型结构和数据:尽管"拿起可乐罐"和"倒一杯咖啡"在语义上是不同的任务,但它们都可能涉及到相似的低级动作,如"移动手臂"或"旋转手腕",因此,即使任务在语义上不同,它们在语言动作层面可能完全重叠。通过学习这些共同的动作模式,RT-H能够更有效地在多个任务之间共享和迁移学习到的知识,能够在多任务数据集中更好地共享数据,从而提高其在执行多样化任务时的灵活性和鲁棒性。
• 上下文感知:RT-H学习的语言动作不仅与当前任务相关,还依赖于场景的上下文。这意味着相同的语言动作可以在不同的场景和任务中有不同的具体动作,从而提供了更大的灵活性和适应性。
• 人类干预和纠正:人类还可以通过语言动作来纠正机器人的行为,而不需要复杂的机器人操作,机器人也可以从这些纠正中学习,从而提高性能。
• 从纠正中学习:RT-H不仅可以响应人类的语言纠正,还可以从这些纠正中学习,以改进其性能。通过收集语言动作纠正数据并重新训练模型,RT-H能够更有效地从经验中学习,并提高其在新任务上的表现。

方法

RT-H模型架构

RT-H模型是基于VisionLanguage Model (VLM)的,具体来说,它使用了与RT-2相同的PaLI-X 55B架构。这个架构包括以下几个关键部分:
1. ViT Encoder:用于处理输入的图像,将图像转换为一系列的tokens。
2. Encoder-Decoder Transformer:将图像tokens和自然语言tokens结合起来,用于进一步的处理和动作预测。
3. 动作表示:动作被离散化为一系列的可能性(例如,将每个动作维度离散化为256个可能的状态),并被编码为整数值。
fig2

动作层次化:(task->motion->action)

RT-H模型引入了一个动作层次结构,其中包括两个主要的查询阶段:
1. 语言运动查询(Language Motion Query):先利用 VLM(RT2)将 task 和 scene 预测出一个细粒度的语言动作 motion
2. 动作查询(Action Query):再同样利用 VLM(RT2)将 motion 和 scene 预测出一个细粒度的机器人动作 action(这里是token)

high-level的policy将观察和任务描述映射为中间行为:
eq1
Low-level的policy将:观察、任务描述和中间行为映射为low-level的行为:
eq2
行为层次policy定义为:
eq3

交互式模仿学习和纠正

人类干预和纠正(在线干预)

RT-H模型允许人类通过自然语言干预和纠正机器人的行为。这种干预可以在机器人执行任务的任何阶段进行,以帮助机器人更好地完成任务或避免错误。具体来说,当机器人在执行任务时遇到困难或错误时,人类可以提供新的语言动作指令来指导机器人。例如,如果机器人在拿起一个物体时动作不正确,人类可以输入新的指令,如“向左移动手臂”或“更慢地旋转手腕”,以纠正机器人的动作。 这种干预方式有几个优点:
1. 直观性:使用自然语言进行干预使得非专家用户也能够轻松地与机器人交流和指导。
2. 灵活性:人类可以根据当前场景和任务的具体情况提供定制化的纠正。
3. 易于扩展:与需要物理操作(如遥控操作)的干预方法相比,语言干预更容易扩展到多个用户和多样化的任务。 这种在线干预可以用于评估模型的性能,或者在模型部署后进行微调。

从纠正中学习(离线干预)

RT-H模型不仅可以响应人类的纠正,还可以从这些纠正中学习,以改进其未来的行为。当人类提供纠正时,这些纠正被视为额外的训练数据。模型会收集这些纠正数据,并将其与成功的任务执行数据一起用于进一步训练。 从纠正中学习的过程包括以下几个步骤:
1. 收集数据:在机器人执行任务并接受人类纠正时,系统会记录下相关的观察数据、任务描述和语言动作纠正。
2. 更新模型:使用收集到的纠正数据,模型会更新其语言运动查询部分,以便在未来更好地预测正确的行为。这一过程不需要重新训练整个模型,只需更新负责语言运动预测的部分。
3. 提高性能:通过从实际的纠正中学习,模型能够逐步提高其在执行任务时的性能,减少错误并更好地适应新的任务和环境。

实验

训练

RT-H模型的训练遵循以下步骤:
1. 预训练:使用大规模的互联网数据集对VLM进行预训练,以学习丰富的视觉和语言知识。
2. 联合训练:在预训练的基础上,使用专家演示数据集对RT-H模型进行联合训练。这包括同时训练语言运动查询和动作查询,以便模型能够学习如何将高级任务描述映射到低级动作。
3. 训练数据的组成:训练数据由原始数据集(包括动作和语言运动查询)和纠正数据集(仅语言运动查询)组成。这种混合数据集的训练方法有助于模型在学习如何从语言运动中预测动作的同时,也能从人类的纠正中学习。
4. 采样权重:为了确保每个训练样本都能被适当地考虑,RT-H在训练时使用了不同的采样权重。例如,预训练查询占50%,演示数据中的语言运动查询和动作查询各占23%,纠正数据中的语言运动查询占4%。

指标

fig3

性能提升:RT-H在多个任务上表现出比RT-2更高的成功率,平均提高了15%。这表明使用语言动作作为中间层的方法能够有效地利用多任务数据集,并提高策略的鲁棒性和灵活性。
fig4

上下文感知:RT-H能够根据当前场景和任务指令的上下文来适应其动作。实验中展示了相同的语言动作如何在不同的情境下导致微妙的动作变化,证实了RT-H的上下文感知能力。

fig5
对新指令的响应:RT-H不仅能够执行训练中学习到的语言动作,还能够灵活地响应人类在运行时提供的新的、未见过的指令。
fig6

人类干预的效果:实验中,通过人类干预,RT-H的成功率得到了显著提高。这表明RT-H能够有效地响应人类的语言纠正,并根据这些纠正来调整其行为。
fig7

泛化能力:RT-H在新场景、新物体和新任务上的泛化能力得到了测试。实验结果显示,RT-H能够在新环境中执行任务,并在完全未见的任务上通过少量纠正成功完成任务。
tab2

动作层次结构的优势:与没有使用动作层次结构的模型相比,RT-H在多个任务上都显示出更高的性能。这证明了动作层次结构在提高数据共享和策略泛化方面的优势。

总结

RT-H利用语言动作,如“向前移动手臂”作为高级任务和低级动作之间的中间预测层。RT-H训练将语言描述的任务映射到语言动作中,然后使用推断的语言动作来预测动作,其中两个步骤都取决于视觉输入和任务。使用一个自动化的过程来标记语言运动,该过程可以扩展到各种各样的任务,而不需要人工标记成本。我们使用像RT-2这样的单一转换模型来实例化RT-H,其中动作和语言运动查询都是用大量互联网规模的数据共同训练的。RT-H(1)通过学习看似不同的任务之间的共享任务结构,实现了不同任务之间的更多数据共享,从而更有能力大规模地摄取多任务数据集,并且(2)适用于在场景和任务背景下改变底层行为的语言运动修正。在实验中证明了RT-H在不同的多任务数据上优于RT-2和动作层次消融。然后证明了RT-2在语言运动空间中是高度可校正的,甚至对于看不见的语言运动也是如此,并且从这些语言运动校正中学习优于从基于远程操作的校正中学习。最后,与RT-2相比,RT-H对场景和物体变化的鲁棒性更强。这些结果显示了使用语言的行动层次结构的前景,我们相信RT-H为扩大数据收集和机器人学习提供了坚实的基础。

RT-H为未来的工作开辟了几个令人兴奋的途径。

  • 首先,我们在一个大而多样的数据集上测试RT-H,获得了最先进的性能,但绝对成功率仍然有提高的空间,即使在进行校正训练之后。我们相信,正如RTH更具样本效率的语言运动校正所证明的那样,未来的工作应该扩大离线数据集和校正管道——语言运动甚至可以用来帮助连接具有许多不同实施例(如oxe)的数据集,甚至可以从仅用语言描述动作的人类视频中学习。
  • 其次,尽管我们对比了不同的动作层次,但未来的工作需要确定中间层的最佳抽象级别(例如,使用对象参考语言与我们的语言运动)。此外,我们在这项工作中主要只测试一个中间动作层,或者只是一个动作推理步骤,但未来的工作可能会定义多个动作推理步骤,用户可以在任何抽象级别进行干预。例如,我们可以添加一个任务预测级别,从像“打扫房间”这样的长期水平指令到像“捡可乐罐”这样的单个任务,然后将任务映射到语言动作,然后是动作。为了分解层次结构中任何级别的修正,甚至可以教模型自动定位层次结构中的修正,然后自回归预测较低级别的动作,直到它认为它已经达到机器人动作级别。
  • 第三,语言运动代表了一个语境和压缩的空间,在这个空间中可以预测动作。人们可以在RT-H中利用这种运动情境性来大大压缩强化学习方法和策略探索的行动空间,可能利用语言运动预测作为先验。我们怀疑语言运动将提供更有意义的探索程度和更有效的政策学习样本,同时对人类来说也具有高度的可解释性和可纠正性。即使在模仿学习中,也有几项研究表明了跨演示者的行动一致性的重要性,我们假设使用语言动作作为压缩的行动空间可以导致更一致的行动,从而提高样本效率的策略学习。

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

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

相关文章

鸿蒙ArkTS声明式开发:跨平台支持列表【组件快捷键事件】

组件快捷键事件 开发者可以设置组件的自定义组合键,组合键的行为与click行为一致,组件在未获得焦点状态下也可以响应自定义组合键,每个组件可以设置多个组合键。 说明: 开发前请熟悉鸿蒙开发指导文档: gitee.com/li-s…

香橙派 AiPro通过Micro USB接口进行串口调试

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、配置步骤1.安装CH343驱动2.配置串口参数 二、使用步骤总结 前言 最近在玩一个新玩具香橙派 AiPro,除了通过SSH方式连接开发板以外,…

华为机考入门python3--(32)牛客32-密码截取

分类:最长对称子串、动态规划 知识点: 生成二维数组 dp [[0] * n for _ in range(n)] 求最大值 max(value1, value2) 动态规划的步骤 a. 定义问题 长度为n下最长的对称子串的长度 b. 确定状态 dp[i][j]表示字符串从索引i到j的子串是否为对称…

封装,static,代码块,对象的打印

封装,static,代码块,对象的打印 1. 封装1.1 封装的概念1.2 包的概念1.3 访问修饰限定符1.4 被封装的属性如何set和get? 2. static2.1 再谈学生类2.2 static修饰成员变量2.3 static修饰成员方法2.4 static成员变量初始化 3. 代码块…

IGMP——组播成员端网络协议

目录 一.IGMP基本概念 (1)组播转发困境 (2)感知组播成员方式 (3)IGMP版本 二.IGMP各版本的区别与联系 (1)IGMPV1 1.普遍组查询报文 2.成员关系报告报文 3.IGMPV1报文格式 4…

java第十七课 —— 递归

方法递归调用 递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂问题,同时可以让代码变得简洁。 递归重要规则 执行一个方法时,就创建一个新的受保护的独立空间(栈空间)。方…

922. 按奇偶排序数组 II - 力扣

1. 题目 给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数 。 对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。 你可以返回 任何满足上述…

微服务架构-异步消息传递设计模式

微服务架构-异步消息传递设计模式 异步消息允许服务发送消息后立即返回,而不需要等待消息被处理完毕,这种异步方式可以大大提高系统的处理速度、和吞吐量。 微服务架构,通常涉及多个服务之间的相互调用,如果通信只是在少数几个微…

lama-cleaner中的Paint-by-Example使用

Lama Cleaner是一个免费的、开源的、完全自托管的修复工具,里面提供了很多最前沿的AIGC模型。可以使用它从图片中删除任何不需要的物体、缺陷、人物,或删除和替换图片上的任何内容。本文章详细介绍了该工具的所有功能,并体验了下每个功能的实…

Shell编程之正则表达式与文本处理器

一、正则表达式 之前学习了 Shell 脚本的基础用法,已经可以利用条件判断、循环等语句编辑 Shell 脚本。接下来我们将开始介绍一个很重要的概念——正则表达式(RegularExpression,RE)。 1.1正则表达式概述 下面先来了解一下正则表…

BUUCTF---web---[BJDCTF2020]ZJCTF,不过如此

1、点开连接,页面出现了提示 传入一个参数text,里面的内容要包括I have a dream。 构造:?/textI have a dream。发现页面没有显示。这里推测可能得使用伪协议 在文件包含那一行,我们看到了next.php的提示,我们尝试读取…

卢文岩博士受邀参与中国科学院大学校友论坛 解码DPU核心价值

近日,第五届中国科学院大学校友创新论坛正式举行,本次论坛聚焦科技前沿领域,旨在搭建高端对话平台,促进产学研深度融合。在大算力时代——AI技术前沿沙龙上,中科驭数高级副总裁、CTO卢文岩博士受邀分享《DPU——连接算…

Mac | Mac 移动硬盘无法分区问题

现象问题 电脑配置:MacBook Pro M1,系统 Sonoma Mac 系统新升级了 Sonoma,结果出现各种问题。外接屏幕居然不能旋转 90 ,查了一下是Sonoma系统导致的,以及莫名发热的问题。想着要么回退一下系统算了,于是网…

unity3D获取某天的0点和23点59分59秒

系列文章目录 unity工具 文章目录 系列文章目录unity工具 👉一、前言👉二、获取某一天的0点和23点59分59秒1-1.代码如下1-2.调用方法如下1-2-1.获取当天的时间1-2-2.获取某一天的时间 👉三、当月第一天0时0分0秒👉四、当月最后一…

3D点云焊缝提取 平面交线 投影

文章目录 1. 效果2. 思路3. 源码 1. 效果 2. 思路 计算点云法向量;计算点云位姿Pose;翻转Pose中的Z轴方向,使其一致;通过Pose的Z轴对点云进行方向过滤;对点云聚类;根据目标点云的高度提取目标点云;提取两块…

从 0 开始实现一个博客系统 (SSM 项目)

相关技术 Spring Spring Boot Spring MVC MyBatis Html Css JS pom 文件我就不放出来了, 之前用的 jdk8 做的, MySQL 用的 5.7, 都有点老了, 你们自己看着配版本就好 实现功能 用户注册 - 密码加盐加密 (md5 加密)前后端用户信息存储 - 令牌技术用户登录 - (使用 拦截…

外汇天眼:风险预警!以下平台监管牌照被撤销!

监管信息早知道!外汇天眼将每周定期公布监管牌照状态发生变化的交易商,以供投资者参考,规避投资风险。如果平台天眼评分过高,建议投资者谨慎选择,因为在外汇天眼评分高不代表平台没问题! 以下是监管牌照发生…

DISCO: Disentangled Control for Realistic Human Dance Generation

NTU&Microsoft CVPR24https://github.com/Wangt-CN/DisCo 问题引入 提高human motion transfer模型的泛化性;给出 f , g f,g f,g作为参考图片的前背景,然后给出单个pose p p t pp_t ppt​或者pose序列 p { p 1 , p 2 , ⋯ , p T } p \{p_1,p_2…

流水账(CPU设计实战)——lab3

Lab3 Rewrite V1.0 版本控制 版本描述V0V1.0相对V0变化: 修改了文件名,各阶段以_stage结尾(因为if是关键词,所以module名不能叫if,遂改为if_stage,为了统一命名,将所有module后缀加上_stage&a…

杭州威雅学校:在学业与生活平衡中找到更好的自己

进入威雅杭州校园, 沿湖边小道步行约5分钟, 四栋寄宿学院与教学区隔湖相望, 威雅人更喜欢叫他们: 「Cavell」&「Dove」 「Elgar」&「Hawking」 提起「寄宿制」,人们本能地会把它和「住校」划等号。 这种…