【论文阅读】BC-Z: Zero-Shot Task Generalization with Robotic Imitation Learning

news2024/11/13 15:13:25

Abstract

在这篇论文中,我们研究了使基于视觉的机器人操纵系统能够泛化到新任务的问题,这是机器人学习中的一个长期挑战。我们从模仿学习的角度来应对这一挑战,旨在研究如何扩展和扩大收集的数据来促进这种泛化。为此,我们开发了一个交互式和灵活的模仿学习系统,该系统可以从演示和干预中学习,并可以根据传达任务的不同形式的信息进行调节,包括预训练的自然语言嵌入或人类执行任务的视频。当将真实机器人上的数据收集扩展到100多个不同的任务时,我们发现该系统可以执行24个看不见的操作任务,平均成功率为44%,而无需对这些任务进行任何机器人演示。

Keywords: Zero-Shot Imitation Learning, Multi-Task Imitation, Deep Learning

1 Introduction

机器人技术面临的一大挑战是创建一个通用机器人,该机器人能够根据任意用户命令在非结构化环境中执行多种任务。这项工作的关键挑战是泛化:机器人必须处理新的环境,识别和操纵以前从未见过的物体,并理解从未被要求执行的命令的意图。从像素进行端到端学习是对这种多面手机器人行为建模的一种灵活选择,因为它对世界的状态表示有最小的假设。有了足够的真实世界数据,这些方法原则上应该使机器人能够在新的任务、对象和场景中进行泛化,而不需要手工编码的、特定于任务的表示。然而,实现这一目标总体上仍然难以实现。在本文中,我们研究了使机器人能够将零样本或少速 few-shot 推广到新的基于视觉的操纵任务的问题。

 我们使用模仿学习的框架来研究这个问题。先前关于模仿学习的工作已经显示了对新对象[1,2,3,4,5]和新对象目标配置[6,7]的一次或零样本泛化。然而,对新任务的零样本概括仍然是一个挑战,特别是当考虑到基于视觉的操作任务时,这些任务涵盖了不同对象的各种技能(例如擦拭、推动、拾取和放置)。实现这种泛化取决于解决与扩大数据收集和学习不同数据算法相关的挑战。

我们开发了一个具有两个关键属性的交互式模仿学习系统,可以实现高质量的数据收集和对全新任务的泛化。首先,我们的系统将共享自主性融入远程操作中,使我们能够收集原始演示数据和人为干预,以纠正机器人当前的policy。其次,我们的系统根据不同形式的任务规范灵活地调整policy,包括语言指令或执行任务的人的视频。与离散单热任务标识符[8]不同,这些连续形式的任务规范原则上可以通过在测试时提供新任务的语言或视频命令,使机器人能够将零样本或少量样本推广到新任务。这些特性之前已经被探索过;我们的目的是实证研究这些想法是否适用于广泛的现实世界任务。

我们的主要贡献是对大规模交互式模仿学习系统的实证研究,该系统解决了广泛的任务,包括零样本和对训练中未看到的任务的少量泛化。使用该系统,我们通过专家远程操作和共享自主过程的组合收集了100个机器人操纵任务的大型数据集,在该过程中,人类操作员通过修复错误来“指导”学习到的policy。在12个机器人中,7名不同的操作员收集了25877个机器人演示,总计125小时的机器人时间,以及18726个相同任务的人类视频。在测试时,该系统能够在以前从未出现在同一场景中的对象之间执行24个看不见的操纵任务。这些闭环视觉运动器policies以10hz的频率执行异步推理和控制,每集的决策量远远超过100个。我们开源了用于训练policy的演示athttps://www.kaggle.com/google/bc-z-robot.

2 Related Work

模仿学习在从低维状态学习抓握和选择位置任务方面取得了成功[9,10,11,12,13,14,15]。深度学习已经实现了直接从原始图像观察中进行模仿学习[8,16,17]。在这项工作中,我们专注于在模仿学习框架中实现对新任务的零样本和少搜索泛化

多个先验模仿学习作品已经实现了不同形式的泛化,包括对新对象的一次 one-shot泛化[1,2,3,4,18],对新对象配置的一次概括[19],和对新目标配置的6,7、20],以及对新对象[5]、场景[21]和目标配置的零样本泛化[22]。其中许多作品通过机器人演示[1,2]、人类视频[3,4]、语言指令[23,24]或目标图像[21]来适应新的场景。我们的系统灵活地对人类的视频或语言指令进行调节,我们专注于实现零样本(语言)和少热点(视频)泛化,以在真实机器人上完成全新的7-DoF操作任务,包括没有目标图像的场景,以及在训练数据中从未一起遇到任务相关对象的场景。

通过远程操作[25]或动觉教学[10]收集演示的标准,dagger[26]等主动学习方法有助于减少学习者的分布转移。不幸的是,dagger 及其一些变体 [27, 28] 是众所周知的难以应用于机器人操作,因为它们需要一个接口,其中专家必须在不控制机器人 policy 时注释正确的动作。受最近自动驾驶工作的启发,hg dagger[29]和eil[30],我们的系统只需要专家在认为policy可能出错时进行干预,并允许专家暂时完全控制policy,使其重回正轨。由此产生的数据收集方案易于使用,有助于解决分布转移问题。此外,数据收集期间的专家干预率可以用作实时评估指标,我们实证发现这与policy的成功率相关

除了模仿学习,泛化在许多其他机器人学习工作中也得到了研究。这包括将技能推广到新对象[31,32,33,34,35]、新环境[36]、从模拟到现实[37,38,39,40,41]以及新的操作技能和对象[42,43,44,45]的作品。我们专注于推广到新任务的最后一个案例,但与这些先前的工作不同,我们处理了100个具有挑战性的任务,这些任务涉及10 Hz的7 DoF控制,并在一个事件中涉及100多个决策来解决任务。

3 Problem Setup and Method Overview

我们的模仿学习系统的概述如图1所示。我们的目标是训练一个条件policy,它可以解释rgb图像,表示为,以及任务命令,它可能对应于一个人的语言字符串或视频。不同的任务对应于完成不同的目标;图2中显示了一些示例任务和相应的命令。policy是从图像和命令到动作的映射,可以写成,其中动作空间A由末端执行器的6-dof姿态以及用于连续控制平行夹爪的第7自由度组成。


图1:bc-z概述。我们收集了100个不同操纵任务的大规模数据集(25877集),并训练了一个基于任务语言字符串或人类视频的7-dof多任务policy。我们展示了该系统产生的policy能够将零样本推广到新的看不见的任务。

图2:用于评估零射击任务泛化的训练任务子集(顶行)和搁置任务子集(底两行)。左上角:给定一个根据人类视频或文本计算的预训练任务嵌入,BC-Z充当任务嵌入的“动作解码器”。

policy使用通过基于vr的遥操作设备(见图1,左)收集的大规模数据集进行训练,通过直接演示和人在环共享自主性相结合。在后者中,训练有素的policies被部署在机器人上,当机器人出错时,人类操作员会进行干预以提供纠正。该过程类似于人类门控dagger(hg dagger)算法[26,29],并为学习的policy提供迭代改进,以及可用于跟踪policy性能的连续信号。

policy架构分为编码器和控制层π,编码器q将命令w处理为嵌入,控制层π处理(s,z)以产生动作a,即。这种分解如图2所示,更多细节见第5节。它为我们的方法提供了整合辅助监督的能力,如预训练的语言嵌入,这有助于构建潜在的任务空间并促进泛化。在我们的实验中,我们将证明这能够泛化到训练中没有看到的任务,包括动词和宾语的新颖组合。

4 Data Collection and Workflow

为了使模仿学习系统能够推广到零演示的新任务,我们必须能够轻松收集各种数据集,提供纠正反馈,并大规模评估许多任务。在本节中,我们将讨论系统的这些组件。

System Setup.

我们的远程操作系统使用Oculus VR头戴式耳机,该耳机通过USB电缆连接到机器人的机载计算机上,并跟踪两个手持控制器。远程操作员站在机器人后面,使用控制器以第三人视线操作机器人。机器人在10Hz的非实时控制回路中对操作员的动作做出响应。相对快速的闭环控制允许操作员轻松演示各种任务,并在机器人在自主执行过程中即将进入不安全状态时快速干预。用户界面和数据收集的更多详细信息见附录A和B。

Environment and Tasks.

我们将每个机器人放在一张桌子前,桌子上有6到15个随机姿势的家用物品。我们收集了100项预先指定的任务(如表7和表8所示)的演示和视频,这些任务涵盖了推、挑、放等9项基本技能。然后,使用该任务的新语言描述或视频对29个新任务进行模型评估。为了使该方法在这些搁置的任务上表现良好,它必须正确解释新的任务命令,并输出与该任务一致的操作。

Shared Autonomy Data Collection.

数据收集从最初的专家阶段开始,在这个阶段,人类从头到尾演示任务。在从仅限专家的数据中学习到初始多任务policy后,我们继续在“共享自治”模式下收集演示,其中当前的policy在人类监督下尝试执行任务。在任何时候,人类都可以通过抓握“超控”开关来接管,这允许他们在policy即将进入不安全状态时,或者如果他们认为当前的policy无法成功完成任务时,短暂地完全控制机器人并执行必要的纠正。此设置启用hgdagger[29],然后将干预数据与现有数据聚合,并用于重新训练policy。对于多任务操作任务,我们收集了11108个仅限专家的初始policies演示,然后收集了另外14769个hg dagger演示,涵盖了policy部署的16次迭代,其中每次迭代都部署了在聚合数据集上训练的最新policy。总共有25877个机器人演示。我们在表4中发现,当控制相同的总发作次数时,hg dagger显著提高了性能。

Shared Autonomy Evaluation.

当成功率较低时,最好将资源用于收集更多数据以改进policy;但是评估对于调试工作流中的问题也很重要。随着预期泛化程度的提高,我们需要更多的试验来评估policy的泛化程度。这造成了资源的权衡:在测量policy成功率和收集额外的演示以改进policy之间,应该如何分配机器人时间?幸运的是,共享自主数据收集带来了额外的好处:干预率,即每集所需的平均干预次数,可以作为policy表现的指标。在图5中,我们发现干预率与总体policy成功率呈负相关

5 Learning Algorithm

上述数据收集过程产生了一个大型的多任务数据集。对于每个任务i,该数据集包含专家数据、人类视频数据和一个语言命令。我们现在讨论如何使用这些数据来训练编码器和控制层。 

5.1 Language and Video Encoders

我们的编码器q(z|w)接收语言命令或人类的视频作为输入,并生成任务嵌入z。如果命令是语言命令,我们使用预训练的多语言句子编码器[46]1作为编码器,为每个任务生成512维的语言向量。尽管简单,我们发现这些编码器在我们的实验中工作良好。

当任务命令是人类执行任务的视频时,我们使用卷积神经网络来生成z,特别是基于resnet-18的模型。受最近工作的启发[2,3],我们以端到端的方式训练这个网络。我们收集了18726个视频数据集,这些视频记录了人类在各种家庭和办公室位置、相机视角和对象配置下执行每项训练任务的情况。使用人类视频和相应演示demo的配对示例,我们对人类视频进行编码,然后将嵌入传递给控制层π(a|s,zi),然后将行为克隆损失的梯度反向传播给policy和编码器参数。

附录E中可学习嵌入的可视化表明,就其本身而言,这种端到端的方法往往会过度适应初始对象场景,学习较差的嵌入,并表现出较差的任务泛化能力。为了帮助视频嵌入在语义上更加一致,我们进一步引入了辅助语言回归损失。具体来说,这种辅助损失训练视频编码器预测具有余弦损失的任务语言命令的嵌入。最终的视频编码器目标如下:

其中Dcos表示余弦距离。由于机器人演示既是任务的视频,我们还训练编码的机器人视频以匹配语言向量。这种语言损失对于学习更有组织的嵌入空间至关重要。其他架构和培训细节见附录E。

5.2 Policy Training

给定一个固定的任务嵌入,我们通过XYZ和轴角度预测的Huber损失以及夹具角度的对数损失来训练π(a|s,z)。在训练过程中,图像会被随机裁剪、降采样,并接受标准的光度增强。下面我们描述了我们发现有帮助的另外两个设计选择。附录D中讨论了其他训练细节,如学习率、批处理大小、伪代码和其他超参数。

Open-Loop Auxiliary Predictions.        

policy预测机器人将采取的行动,以及如果以开环方式操作,policy将采取的下一个10个行动的开环轨迹。在推理时,policy闭环运行,仅基于当前图像执行第一个动作。开环预测提供了一个辅助训练目标,并提供了一种以离线方式直观检查闭环计划质量的方法(见图1,右)。

State Differences as Actions.

在标准的模仿学习实现中,在演示时采取的行动被直接用作从状态预测的目标标签。然而,以10hz的频率克隆专家动作会导致policy学习非常小的动作以及抖动行为。为了解决这个问题,我们将动作定义为未来N>1步的目标姿势的状态差异,使用自适应算法根据手臂和夹具的移动量选择N。我们在第6.3节中提供了该设计选择的消融研究,并在附录c中提供了更多详细信息

5.3 Network Architecture

我们使用深度神经网络对policy进行建模,如图3所示。policy网络使用resnet18“躯干”处理相机图像[48],该躯干从最后一个平均池层分支为多个“动作头”。每个头部都是一个多层感知器,有两个大小为256的隐藏层和relu激活,并对末端执行器动作的一部分进行建模,特别是增量xyz、增量轴角度和归一化夹持器角度。policy的条件是通过film层嵌入z的512维任务[47]。根据perez等人[47]的研究,任务调节被线性投影到4个resnet块中每个块的每个通道的通道尺度和偏移上

图3:BC-Z网络架构。来自头戴式相机的单眼RGB图像通过ResNet18编码器,然后通过两层MLP来预测每种动作模态(增量XYZ、增量轴角度和夹持器角度)。FiLM层[47]根据从语言w`或视频wh计算的任务嵌入z来调节架构。

6 Experimental Results

我们的实验旨在评估bc-z在大规模模仿学习环境中的表现。我们从bc-z在单任务视觉模仿学习中的初步验证开始。然后,我们的实验将旨在回答以下问题:

(1)bc-z是否能够从语言或人类视频形式的命令中实现对新任务的零样本和少搜索泛化?

(2) bc-z的性能瓶颈是任务嵌入还是policy?

(3) bc-z的不同组件有多重要,包括hg dagger数据收集和自适应状态差异?

我们在本节中介绍了针对这些问题的实验。 

6.1 BC-Z on Single-Task Imitation Learning

我们的首要目标是在考虑更具挑战性的多任务设置之前,验证BC-Z可以学习基于视觉的单个任务。我们选择了两个任务:一个是清空垃圾箱的任务,机器人必须从垃圾箱中抓取物体并将其放入相邻的垃圾箱;另一个是开门任务,机器人在打开门的同时必须避免碰撞。这两个任务都使用图3中的架构,除了开门任务涉及预测底座的前进和偏航速度,而不是控制手臂。清空垃圾箱数据集有2759个演示,而开门数据集有12000个演示,分布在24个会议室,36000个演示分布在5个会议室。更多任务和数据集详细信息见附录I。

在表1中,我们看到BC-Z模型能够达到每分钟3.4次拾取的拾取率,超过人类遥操作器速度的一半。进一步地,我们观察到BC-Z在训练门场景中的成功率达到87%,在室外场景中达到94%。这些结果验证了BC-Z模型和数据采集系统在单任务设置下的训练和保持场景上都能取得良好的性能。附录H提供了额外的分析。

表1:单任务箱和门的性能、平均值和标准偏差。

6.2 Evaluating Zero-Shot and Few-Shot Task Generalization

接下来,我们的目标是测试BC-Z是否可以实现对新任务的泛化。演示是在100个不同的操作任务中收集的,包括两组不相交的对象。使用不相交的对象集,我们可以专门测试对训练过程中看不到的对象-对象对和对象-动作对组合的泛化能力。对于第一组对象,我们收集了21个不同任务的演示,如表7所示,这些任务涵盖了广泛的技能,从拾取和放置任务到需要以某种方式定位对象的技能,比如“将瓶子直立”。对于第二组对象,收集了79个不同任务的演示,包括拾取和放置、表面擦拭和对象堆叠。后一个家族的操纵行为种类较少,但定义在一个更大的对象集上,对象集更杂乱。对象集如附录B所示,训练任务句的完整列表如附录J所示。

我们对29个未完成 held-out的任务进行了bc-z评估。语言条件下的policies被赋予一个新的句子,而视频条件下的policies被给予新任务的一些人类视频的平均嵌入。四个未完成的任务使用79任务族中的对象,而25个任务是通过在21任务族和79任务族之间混合对象生成的。因此,前4个任务不需要跨对象集泛化,因此更容易泛化。即便如此,我们发现这4个任务中的每一个都具有足够的挑战性,以至于在300多个带有dagger干预的演示上训练单个任务policies完全失败,任务成功率为0%。这为这些任务的难度提供了一定程度的校准。我们假设,造成这一挑战的一个主要因素是技能必须在我们的环境中推广到的广泛的位置、对象和干扰因素,以及训练数据中这些因素的广泛范围。 

在表2中,我们看到,语言条件bc-z能够将零样本推广到两种搁置任务,平均成功率为32%,在24个搁置任务上显示出非零成功。在24个成功率为非零的任务中,bc-z在以从未见过的语言嵌入为条件时,平均成功率为44%。当对人类视频进行条件化处理时,我们发现泛化要困难得多,但bc-z仍然能够以非零的成功率泛化到九个新任务,特别是当任务不涉及新的对象组合时。从定性上讲,我们观察到语言制约的policy通常会向正确的对象移动,这清楚地表明任务嵌入反映了正确的任务,正如我们在补充视频中进一步说明的那样。最常见的故障源是“最后一厘米”错误:未能关闭夹具,未能松开物体,或者在松开夹具中的物体时差点错过目标物体。

表2:对不在训练数据集中的任务进行零样本(语言)和少搜索(视频)泛化的成功率。前4个任务仅使用79任务族中的对象。其余的任务混合了21个任务和79个任务族之间的对象,需要进一步概括。括号内的数字为1单位标准偏差。语言条件反射可以推广到几个拒绝的任务,而视频条件反射在任务族之间不混合对象的任务上显示出希望。随着干扰对象的减少,整体性能略有提高。

Is Performance Bottlenecked on the Encoder or the Policy? 

现在我们看到bc-z可以在一定程度上推广到大量被搁置的任务,我们问性能是否更多地受到编码器q(z|w)、控制层π(a|s,z)或两者的推广的限制。为了理清这些因素,我们通过三种方式测量了policy在训练任务上的成功率:one-hot task identifier、训练任务命令的语言嵌入和训练任务的人类视频的视频嵌入。该比较见表3。one-hot和语言之间的相似性能表明,潜在的语言空间是足够的,在执行任务时,语言条件下的性能在控制层比嵌入层更受阻碍。视频条件policies的性能下降更为显著,这表明从视频中推断任务要困难得多,特别是对于held-out的任务。 

 

表3:21项训练任务和所有28项执行任务的平均训练与泛化性能。

6.3 Ablation Studies and Comparisons

我们使用(训练)21任务族验证了几个bc-z设计决策的重要性。我们的第一组消融评估基于“将瓶子放入陶瓷碗中”命令,该命令具有任何任务中最多的演示(1000)。我们首先测试多任务训练是否有助于提高性能:我们将在所有任务的25877个演示上训练的多任务系统与仅在1000个演示上为目标任务训练的单个任务policy进行了比较。在表4(左)中,单任务基线仅取得了5%的成功。这一低数字与第6.2节中抵制任务的低单任务绩效是一致的:在多个机器人和操作员身上收集数据可能会使任务更难学习。只有在跨多个任务汇集数据时,bc-z才能学会解决任务。我们消除了第5.3节中描述的自适应状态差分方案,发现它很重要;当天真地选择n=1的未来状态来计算专家动作时,policy会适应噪声并移动得太慢,导致状态偏离良好的轨迹。 

接下来,我们将取消hg dagger的使用,同时保持数据总量不变。具体来说,我们比较了使用50%专家演示和50%hg-dagger干预训练的policies的性能,与使用100%专家演示的性能。在表4(右)中,我们发现hg dagger在“将瓶子放在陶瓷碗中”任务和其他7个训练任务上都比克隆专家演示显著提高了任务绩效。关于这种比较的更多细节见附录k。最后,在图5中,我们评估了测量hg dagger干预是否可以为我们提供policy性能的实时代理。我们发现,干预频率与policy的成功率呈负相关,这是通过不需要干预的成功发作的比例来衡量的。这一结果表明,我们确实可以将这一指标与hg dagger一起用于开发目的。

 

图5:平均干预次数与任务成功率。每个点代表hg dagger数据收集期间评估的policy。干预的平均次数与成功率之间存在明显的相关性,这表明干预可以作为绩效的实时指标。

表4:消融研究。左:“把瓶子放在陶瓷碗里”任务中的多任务模型与单任务模型。跨任务和具有自适应状态差异的训练对于良好的训练效果非常重要。右:DAgger对“将瓶子放在陶瓷碗中”(1-Task)和表7中的8-Task子集的比较。在数据量相同的情况下,DAgger可以更快地达到更高的成功率。

7 Discussion

我们提出了一种多任务模仿学习系统,该系统将灵活的任务嵌入与100个任务演示数据集上的大规模训练相结合,使其能够泛化到基于用户提供的语言或视频命令的训练中没有看到的全新任务。我们的评估涵盖了29个看不见的基于视觉的操纵任务,涉及各种物体和场景。我们实证研究的关键结论是,简单的模仿学习方法可以以一种促进新任务泛化的方式进行扩展,而无需这些任务的额外机器人数据。也就是说,我们了解到,我们不需要更复杂的方法来实现任务级的泛化。通过实验,我们还了解到,100个训练任务足以实现对新任务的泛化,HG DAgger对于良好的性能很重要,冻结的、预训练的语言嵌入可以在不进行任何额外训练的情况下实现出色的任务调节器。 

我们的系统确实有一些局限性。首先,新任务的表现差异很大。然而,即使对于不太成功的任务,机器人也经常表现出至少理解部分任务的行为,伸手去拿正确的物体或执行语义相关的动作。这表明,未来工作的一个令人兴奋的方向是将我们的policies用作对下游任务进行微调的通用初始化,在这种情况下,额外的训练,也许是自主rl,可能会带来更好的性能。我们语言命令的结构遵循简单的“(动词)(名词)”结构。解决这一限制的一个方向是用各种人类提供的注释重新标记数据集[24],这可以使系统能够处理语言结构中的更多变化。另一个限制是视频条件policy的性能较低,这鼓励了未来研究如何提高基于视频的任务表示的泛化能力,并提高模仿学习算法的整体性能,因为低级控制错误也是一个主要瓶颈

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

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

相关文章

掌握回流与重绘面试回答:优化网页加载与响应速度

认识回流reflow和重绘repaint 理解回流reflow:(也可以称之为重排) 第一次确定节点的大小和位置,称之为布局(layout)。 之后对节点的大小、位置修改重新计算称之为回流 什么情况下引起回流呢? 比如DOM结构发生改变(添加新的节点或者移除节…

Cortex-A7的GIC(通用中断控制器):边沿触发和电平触发中断的区别

0 资料 ARM Generic Interrupt Controller Architecture version 2.0 Architecture Specification1 边沿触发和电平触发中断的区别 1.1 边沿触发和电平触发中断官方解释 边沿触发(Edge-triggered) This is an interrupt that is asserted on detectio…

架构设计——概念和基础

🏠1 架构基础 想要搞清楚架构到底指什么,架构与框架的区别,就需要了解梳理系统、子系统、模块、组件、框架和架构 1.1系统与子系统 1.1.1系统 wiki:系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元…

无限制使用OpenAI最新o1-mini、o1-preview模型:经济高效的AI推理模型

OpenAI 最新推出的 o1 模型是该公司推理模型家族的首位成员,它通过创新的“思维链”训练模式,显著提升了逻辑推理和问题解决的能力。o1 模型在编程竞赛问题、数学奥林匹克资格赛以及物理、生物和化学问题的基准测试中表现出色,甚至在某些领域…

数据爬虫中遇到验证码的解决方法

在数据爬虫中遇到验证码是一个常见且复杂的问题,验证码的存在主要是为了阻止自动化工具(如爬虫)对网站进行过度访问或数据抓取,以保护网站的安全性和数据的准确性。 一、验证码的基本概念与类型 验证码(CAPTCHA&…

PointNet++改进策略 :模块改进 | LFA | RandLA-Net,通过随机采样与局部特征聚合提升大规模3D点云处理效率

论文题目:RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds发布期刊:CVPR作者地址:1牛津大学、2中山大学、3国防科学技术大学代码地址:https://github.com/QingyongHu/RandLA-Net介绍 这篇论文题为《RandLA-Net: Efficient Semantic Segmentatio…

我又做了一个国标GB28181设备模拟器的Windows版本,让国标28181开发更简单,不用再费劲弄个摄像机来调试国标GB28181开发了

之前我搞过一个《EasyGBD国标GB28181设备端模拟器帮助测试国标GB28181平台(EasyGBD->EasyGBS)》,当时,主要是在安卓手机上,用摄像机的本地摄像头来做为视频源、用摄像机的麦克风做为音频源,对外…

基于windows的mysql5.7安装配置教程

目录 0.写在前面的话 1.下载安装包 2.进行目录选择和解压操作 3.配置环境变量 4.创建my.ini文件 5.管理员运行终端 6.安装mysqld 7.初始化数据库 8.启动mysql服务 9.进入mysql管理终端 10.修改root密码 11.刷新权限 12.注销内容 13.重启mysql 14.输入密码测试 1…

Node.js 安装及项目实践

node.js安装 node安装,选择版本 一直next,或者自己修改路径,添加两个包 选择自己的安装的node的路径,cmd或者winr cmd 显示node与npm的版本号 node -vnpm -v可以跟着这个博客将node安装 2024最新版Node.js下载安装及环境配…

云原生信息安全:筑牢数字化时代的安全防线

云原生信息安全:筑牢数字化时代的安全防线 一、云原生信息安全概述 云原生安全包含两层重要含义。一方面,面向云原生环境的安全,目标是防护云原生环境中的基础设施、编排系统和微服务等系统的安全。在云原生内部,安全机制多以云原…

Java--String类(StringBuilder与StringBuffer)

String类的特征: String类的特点: 1. String 类在设计时就是不可改变的, String 类实现描述中已经说明了 String部分源码如下: 2. 所有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象 例如…

string的模拟实现and友元

一、引言 “知所从来,方知其往。”只有了解一个物体的构造才能更好的使用它。正所谓“不入虎穴,焉得虎子。”那我们学会使用一个类了,可不可以建造一个简易的类和对象出来呢?答案显而易见。因为这是C的内容,所以我们用…

C++八股文之STL篇

🤖个人主页:晚风相伴-CSDN博客 思维导图链接:STL 持续更新中…… 💖如果觉得内容对你有帮助的话,还请给博主一键三连(点赞💜、收藏🧡、关注💚)吧 &#x1f64…

找搭子是什么意思?有没有找搭子的平台?靠谱找搭子软件推荐!

“找搭子” 指寻找在特定活动或兴趣方面有共同爱好的伙伴。比如饭搭子一起吃饭,运动搭子共同健身。它满足人们在特定场景下的社交需求,让生活更丰富有趣,是一种新型社交方式。以下是国内排名靠前的找搭子平台 1. 咕哇找搭子小程序&#xff1a…

Mac下nvm无法安装node问题

背景 最近换用mac开发,然后使用nvm(版本0.40.1)进行node安装的时候出现了一些问题 使用 nvm ls-remote发现只有 iojs 版本 原因可能是nodejs升级了某个协议导致的 解决方案 可以使用 NVM_NODEJS_ORG_MIRRORhttp://nodejs.org/dist nvm ls-re…

Cartographer源码理解

一、前言 最近一个半月,利用空余时间对Cartographer源码进行了简单的阅读,在这里做了个简单梳理,和大家分享交流。 cartographer源码量其实是有点大的,逐行逐句去解释实在是有心无力了,而且已经有大佬做了类似的事情…

分治算法归并排序

分治算法 基本概念 把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题…直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 分治法的基本步骤 分治法在每一层递归上都有三个步骤: step1分…

单细胞CCA整合流程学习(SeuratV5/V4)

CCA(Canonical Correlation Analysis)和 Harmony 是两种常用于单细胞 RNA 测序(scRNA-seq)数据整合和批次效应校正的方法。 CCA 通过计算两个(或多个)数据集的线性组合,使这些组合之间的相关性…

1、vectorCast单元测试常用操作

一、自动创建测试工程 1、设置工作目录 进入软件主页面,点击file,选择set working directory,随便选择一个保存该项目的目录即可。 2、创建一个空工程 编译器选择vector自带的编译器,vectorCast MinGW C。 此时项目工程就创建好了 2.1、配置编译器节点 点击编译器节点…

JAVA毕业设计173—基于Java+Springboot+vue3的酒店民宿管理系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue3的酒店民宿管理系统(源代码数据库)173 一、系统介绍 本项目前后端分离(可以改为ssm版本),分为用户、员工、管理员三种角色 1、用户&#xff1a…