RoboVLM——通用机器人策略的VLA设计哲学:如何选择骨干网络、如何构建VLA架构、何时添加跨本体数据
前言
本博客内解读不少VLA模型了,包括π0等,且如此文的开头所说
前两天又重点看了下openvla,和cogact,发现
- 目前cogACT把openvla的动作预测换成了dit,在模型架构层面上,逼近了π0
- 那为了进一步逼近,感觉可能会有人把cogACT中的VLM模块(dinov2+sigclip+llama2)换成paligemma
总之,各种vlm + 各种动作预测头/方法,会出来很多vla
当然,各种VLA我在本文的开头已经详细介绍过,可以参看《GRAPE——RLAIF微调VLA模型:通过偏好对齐提升机器人策略的泛化能力(含24年具身模型汇总)》
而适用于通用机器人策略的VLA也不是随意设计的,背后都有一整套的设计哲学、逻辑、方法论,本文便基于RoboVLMs——其对应的论文为《Towards Generalist Robot Policies: What Matters inBuilding Vision-Language-Action Models》,探讨这背后的设计哲学
尽管有的设计哲学——动作空间是连续的还是离散的,在之前诸多模型的效果PK上,我们早已看出来,但为系统起见,还是也放在本文的介绍中
第一部分 RoboVLMs
1.1 引言与相关工作
1.1.1 VLM骨干和结构的研究
在构建通用机器人策略的其中一种途径是基于VLM微调并进行一定的架构调整来学习机器人基础模型,从而最终成为VLA
而这个途径之所以广受欢迎,在于VLMs在通过对网络规模数据的广泛训练中展示了学习多模态数据(如文本、图像/视频)的通用且鲁棒的表示的强大能力。这种能力可以激发机器人基础模型的适应,以弥合高度多样化的开放世界场景和有限的机器人数据之间的差距
然而,大规模视觉-语言预训练在多大程度上促进通用机器人策略仍然是一个未解决的问题。此外,伴随着不同类型的LLM骨干、训练数据、模型规模、架构和训练方案,迅速涌现出大量多样化的不同VLMs
故,哪种VLM骨干更适合机器人操作也是成功开发VLAs的一个关键问题
除了不同骨架的多样性之外,对于通用机器人策略,包括VLA,其结构更加复杂且形式多样
基于现有的最流行的工作[4-π0,7-Rt-2,20-Vima,22-Openvla,24-Vision-language foundation models as effective robot imitators,34-R3m,35-Open x-embodiment,39-Octo,47-Unleashing large-scale video generative pre-training for visual robot manipulation,55-3d-vla]——这其中大部分的工作,都可以在此文 《GRAPE——RLAIF微调VLA模型:通过偏好对齐提升机器人策略的泛化能力(含24年具身模型汇总)》开头的总结里看到对应的介绍链接
作者提出了一种分类方法,基于
- 历史和动作信息如何在VLA中被整合
- 动作空间是连续的还是离散的
如下图图2所示,考虑了4种结构形式「根据两个主要层次对VLA结构进行分类:1)动作空间(纵轴);2)是否整合了历史信息(横轴)——比如左边是one-step 右边是historical。此外,对于涉及历史的VLAs,根据历史信息的组织模式将涉及历史的VLAs分为策略头和交错形式。请注意,这种分类不仅考虑了从预训练的VLMs中派生的模型,还包括那些虽然没有在VLMs上预训练(因此不被称为VLAs),但可以为将VLMs转变为VLAs提供见解的策略架构」
对于历史信息建模,识别出两种形式:
- 一步建模one-step modeling——见上图左侧●,仅利用当前状态或观察来产生动作;
- 历史建模history modeling,处理历史状态或观察的滑动窗口
关于历史信息的聚合,将其分为两种方法:
- 交错建模interleaved modeling▲——见上图右上角、右下角,将历史观察和动作序列以交错格式整合
- 策略头policy head ▀——见上图中间偏右上,分别处理每个历史步骤,并在一个独立的策略头中融合信息以进行动作预测
不同的结构以不同的方式利用预训练的VLMs。因此,当面临不同类型的环境和任务时,它们在鲁棒性、泛化能力和数据效率方面可能具有不同的特征
1.1.2 数据的质量、多样性、跨本体数据、训练方法的研究
除了VLA本身,用于开发VLA的训练数据的质量和多样性同样重要。随着著名VLA的近期进展[4-π0,7-Rt-2,22-Openvla,35-Open x-embodiment,39-Octo],来自不同来源的大规模数据对于在对抗分布外任务和环境的鲁棒性和泛化方面进一步提高性能非常重要
然而,它们在详细的训练方法上存在很大差异:一些利用额外的数据进一步预训练VLMs,使表示更接近机器人操作任务[4-π0],而另一些则与领域内任务共同训练VLA[7-Rt-2,22-Openvla,35-Open x-embodiment,39-Octo]
此外,通过充分预训练在多样化操作技能上,期望机器人策略能以最少的示范学习新技能[13]。因此,在开发高效VLA的情况下,何时利用大规模跨化身数据成为一个有趣的问题
为了彻底研究上述问题并找到VLA的最有效解决方案,作者的研究选择了4种VLA结构、8种不同骨架和3种不同的训练数据方案来训练VLA模型
1.1.3 RoboVLMs:使任何VLM能轻松集成到VLA中
在作者的实验中,他们提出了一个新的框架,RoboVLMs,将VLM转移到VLA,并提供了一个统一、灵活、易于使用的开源框架,使任何VLM能轻松集成到VLA中,几乎不需要额外努力,允许机器人从业者研究、比较和部署未来的VLA
此外,他们还在一个自收集的真实世界机器人操作数据集上训练和评估了建成的VLA,该数据集由100个操作任务和总共74K条轨迹组成
- 具体来说,他们最初选择了三个常用的VLMs——LLaVA、Flamingo和KosMos 作为骨架,将它们与四种VLA结构结合起来,检查动作空间、观察视野和历史聚合方法的效果
对于应该如何制定VLA?
通过广泛的研究和实验,连续动作始终优于自回归离散动作,同时结合历史背景对于提高性能和解决部分可观测性至关重要
发现连续动作空间的策略头建模表现最佳后,又比较了8种不同的VLMs作为骨架与策略头形式,以回答哪个骨架更适合
对于哪种VLM骨干更适合用于VLA?
作者对8种不同的VLM骨干进行的广泛研究显示,两种杰出的VLM骨干,即KosMos [36]和Paligemma [3],显著优于其他骨干。这些结果强调,全面的视觉-语言预训练对于实现卓越的VLA性能至关重要 - 同时,比较了不同VLA结构的泛化和数据效率
对于模型架构,直接与策略头集成的视觉-语言模型(VLM)表现优于其他形式,因为一致使用,即视觉-语言token应以其原始预训练格式进行处理,并添加策略头以整合过去的视觉和本体感知观察以进行有效决策
对于数据效率
更大的VLM进一步提高效率,需更少的数据即可实现更高的性能 - 对于何时利用跨化身数据的问题
虽然普遍认为使用跨体数据进行预训练或后训练能提高性能,但这一观点尚未得到严格验证。他们的研究结果表明,使用跨体数据进行预训练并不总能显著改善最终性能。然而,在目标数据集上对跨体预训练模型进行后训练可以显著提高性能
故作者比较了
预训练(使用Open X-Embodiment训练的VLA)
微调(使用目标数据集训练的VLA)
后训练(使用Open X-Embodiment预训练并进一步用目标数据集微调的VLA)——相当于预训练 + 微调
- 最后,为了确认具有最佳配置的VLA在真实世界中的适用性,作者在真实世界机器人操作场景中训练和评估了它们,展示了在
1)未见的干扰物
2)未见的背景
3)未见的目标对象
4)新技能描述方面的泛化能力
此外,利用相同机器人或任务的操作数据可以明显提升性能
例如,模块化方法利用预训练的视觉和语言模块来编码多模态输入的潜在表示 [6- Rt-1,31-What matters in language conditioned robotic imitation learning over unstructured data],而替代方法则依赖于使用多样化的机器人数据集进行直接训练 [39-Octo]。即使在VLA研究中,对于架构或训练方案也没有共识 [7-Rt-2, 8-Gr-2, 22-Openvla, 24-Vision-language foundation models as effective robot imitators]
1.2 主要结果及发现
利用RoboVLMs这个框架,作者进行了广泛的实验以解决几个关键问题
- 为什么更喜欢 VLA?
- 应该如何制定 VLA?
- 哪种 VLM 主干更适合 VLA?
- 应该何时利用跨实体数据集?
如下表 I 所示
作者进一步将 4 个基本问题分为 6 个研究问题,并实施 VLA 的连续实验以回答每个研究问题。使用适当的主干和结构构建的 VLA 模型可以大幅超越最新的通用机器人策略
为了全面评估 VLA 的性能,在这项工作中,作者对所有模型进行了基准测试,具体而言,如下图图 3 所示
选择了两个知名且广泛使用的模拟基准(CALVIN[32] 和 SimplerEnv[40])以及一个现实世界的机器人操作实验来评估 VLA 模型
- CALVIN[32] 是一个用于多任务桌面操作的模拟基准,数据集根据不同的场景设置分为 A、B、C和 D 四个部分,并提供 34 个基本任务,总共包含 24K 人工远程操作演示,并附有语言指令注释
评估指标包括完成1 ∼5 个连续任务的成功率,以及成功执行的任务平均数量(简称为Avg. Len.) - 真实机器人基准测试[8]包括超过70K的远程操作人类轨迹,用于微调机器人策略,涵盖105个操作任务
为了评估模型在该基准测试上的性能,采用[23- Gr-mg: Leveraging partially annotated data via multi-modal goal conditioned policy]中概述的方法,在一个简单设置和四个具有挑战性的未见设置中测试每个模型
这些设置的示例如下图图4所示
总共,在20个任务中评估每个VLA,每个任务有5个设置,每个设置有3次执行,并报告每个设置的平均成功率。基准测试的详细描述见附录K和附录D。这些基准测试中包含的所有任务都由单臂机器人驱动,导致7个自由度的动作——夹持器的6D姿态和一维的开/关状态。机器人观测可以从本体感受器信息、视觉观测和语言输入中获得
1.2.1 为什么偏爱VLA?——是否合适构建通用策略、现实世界中的表现如何
1.2.1.1 是否合适构建通用策略
关于为什么需要VLA?可以先回答
问题1:VLA是否是构建通用机器人策略的合适选择?
具体来说,作者展示了研究中表现最好的VLA,它在CALVIN和SimplerEnv基准测试中创造了新的最先进成果,以明显优势超越了所有其他机器人策略
所有结果如表II和图5所示「在CALVIN基准上的模拟性能,所有模型均在拆分ABCD/ABC上训练,并在拆分D上评估。KosMos P.H.代表使用KosMos-2作为骨干和策略头作为架构的VLA,且使用RoboVLMs框架构建,最大训练5个周期——即KosMos P.H. represents the VLA utilizing KosMos-2 as backbone and policy head as architecture, built with theRoboVLMs framework, and is maximally trained for 5 epochs」
从这些表格中,可以看到,RoboVLM大幅超越了现有的最先进通用策略,并为机器人操作任务在模拟和实际实验中建立了一个强有力的基准
具体来说,可以轻松观察到以下事实
- 在CALVIN 基准测试中,RoboVLM模型在所有指标上都达到了最高性能,并在从ABC 转移到D(一个在训练分割中未见过的新场景)时展示了卓越的泛化能力,单个任务执行的绝对提升为12.6 %,连续5 个任务的总提升为30.3 %
平均而言,在零样本设置下,RoboVLM可以在每次单独展开中完成5 个任务中的4.25 个,超越了之前的SOTA 模型(GR-1)1.09 个任务 - 在SimplerEnv 中,RoboVLM在WidowX + Bridge 和Google Robol 环境中都实现了最高的平均性能,展示了对不同设置和多样化操作任务的普遍有效性和鲁棒性
此外,作者还研究了视觉-语言预训练对泛化和数据效率的影响(图6和表IV),详细结果见附录H
- 在CALVIN的泛化中,作者采用官方设置:在ABC的分割上训练模型,并在D上验证性能
- 为了评估数据效率,我们在模型规模从3B到9B和各种数据规模上进行实验:10%的训练数据(0.1x ABCD),标准设置(ABCD),以及500%的训练数据(5x ABCD),额外的数据来自于官方发布的未标记数据集,遵循Wu等人[47]中介绍的设置,不同数据规模的详细结果见附录E
可以看到,视觉-语言预训练对于泛化和数据效率都是至关重要的。这个观察是直观的,因为对齐的视觉-语言表示提供了一个稳固的视觉理解基础,使策略能够专注于学习操作技能。因此,可以得出结论
发现1:VLA是通用机器人策略的有前途路径
1.2.1.2 VLA在现实世界的场景中的表现如何
然而,尽管VLA在模拟中表现良好,由于模拟到现实的差距[54],VLA是否适合实际机器人应用仍然是一个未解的问题,故,作者提出第二个开放问题
问题 2:在现实世界的场景中,VLA 的表现如何?
如上所述,作者在现实世界的场景中部署了表现最佳的RoboVLM模型,即基于仅解码器KosMos的模型,以验证其有效性
如下图图4所示,作者的实验涉及20个具有多种技能的任务,包括打开、关闭、按按钮、拾取和放置等任务
对于每项任务,我们评估五次执行,包含基本设置、新技能描述、未见过的干扰因素、未见过的目标对象和未见过的背景
- 该机器人系统用于真实实验,基于一个7自由度的Kinova Gen3机械臂,配备Robotiq 2F-85夹爪,更多关于真实机器人的细节请参见第四节
- 输入方面,分别获取机器人头部和手腕上的两台摄像机的RGB图像
头部摄像机提供工作空间的概览,而夹爪摄像机则提供末端执行器与环境之间交互区域的近距离观察
在真实机器人基准上微调由RoboVLMs构建的Octo-Base、OpenVLA和KosMos P.H.,并比较它们的性能。结果如图7所示
他们观察到,由RoboVLMs构建的最佳VLA(KosMos P.H.)在所有评估设置中均表现最佳,尤其是在简单和未见过的背景上,展示了其有效性和泛化能力,这与SimplerEnv和CALVIN模拟中的结果一致
至于定性结果在附录K中展示,包括各种设置下的成功执行和一些具有代表性的失败案例。KosMos P.H.不仅在基本设置任务如打开抽屉、拾取茄子等方面优于基线模型,而且在未见过的物体、干扰物和背景上也能实现更好的性能
此外,如下图图8所示
KosMos P.H. 展现出自我纠正能力,它能够识别末端执行器的不正确位置,并纠正其未来的轨迹以成功完成任务。请注意,这种能力在其他测试的基线中没有出现,而这种数据不包含在训练数据集中
如此可以得到
发现2:由RoboVLMs构建的最佳设置的VLA在实际场景中表现出强大的有效性和鲁棒性
1.2.2 如何制定VLA?策略头结合历史观测和连续动作,且提高泛化和数据效率
1.2.2.1 如何对机器人操作任务中的观测、状态和动作进行建模
更具体地说,应该如何在VLA的背景下对机器人操作任务中的观测、状态和动作进行建模?
为了解决这个问题,作者实现了几种变体,利用了各种开源VLM骨干网络,如OpenFlamingo [35]、LLaVA [28]和KosMos [36-Kosmos-2: Grounding multimodal large language models to the world]
这些变体结合了不同的历史信息建模策略和动作空间,如在Sec.I中讨论和分类的那样。CALVIN中各种VLA结构的性能总结在表III中
根据这些结果,我们得出以下关键观察:
- 连续动作很重要
通过比较两种类型的动作空间,连续和离散,如表III所示,观察到在单帧公式下,连续动作空间始终优于离散动作,尤其是在任务时间跨度增加时
这一发现是直观的:连续动作可以表示高精度的浮点值,而离散动作仅限于索引动作区间。对于长时间跨度任务,累积的复合错误显著降低了离散动作的性能 - 历史观察事项
如表 III 所示,在相同的 VLM 结构下(无论是编码器-解码器还是仅解码器),将历史观察作为输入的模型始终优于一步模型,在所有任务中均实现了显著更高的成功率。这种改进不受历史融合策略的影响
此外,增加可观察历史的长度可以提高性能,尽管会带来更高的计算开销 - 策略头改进历史融合
在利用历史的公式中,交错历史公式的表现不如通过额外的策略头合并历史。假设策略头保留VLM 的原始视觉-语言融合能力,同时有效地整合历史信息
此外,交错的公式在训练和推理过程中会导致显著更高的内存和 FLOP 成本。这表明,通过附加的策略头来结合历史信息对于 VLAs 是一种更有效和高效的方法
发现3:VLA在使用多步骤的历史观测作为输入和连续动作作为输出时,其性能最佳。为了将历史与连续动作空间结合,策略头结构表现更佳
1.2.2.2 不同的公式化如何影响VLAs的泛化和数据效率?
然而,除了性能本身之外,现代VLA面临的最重要挑战之一是实现对新对象和环境设置的泛化,这对于在各种机器人和场景中的实际部署至关重要
因此,VLA应在开放世界环境中继承VLM的泛化能力,同时在有额外域内训练样本可用时保持高数据效率。因此,他们进一步探讨以下问题
问题4:不同的公式化如何影响VLAs的泛化和数据效率?
为了解决这个问题,作者对各种VLA公式的泛化和数据效率进行了实证研究和评估,旨在为训练高性能的VLA提供实用见解
具体来说,他们通过在不同数据规模上使用CALVIN数据集训练不同架构和公式的模型,评估由RoboVLMs构建的不同VLA的泛化和数据效率
如前所述,他们重点比较交错和策略头公式——使用OpenFlamingo和KosMos骨干网络,这些配置在所有配置中显示出强大的潜力
请注意,交错的公式只能与仅解码器结构配对。图9和表IV中展示的结果导致以下观察
- 关于泛化性能(图9),作者的最佳模型基于KosMos骨干网络,并利用策略头进行历史融合,在零样本设置中仅表现出轻微的性能下降
相比之下,其他公式化方法则经历了显著的性能下降。这个发现强调了模型架构对泛化的显著影响
这一结论在图5的结果中得到了进一步支持,其中评估集中的任务与新指令配对;
以及在图7中,他们的最佳模型在所有未见任务上大幅领先于其他模型 - 对于数据效率,他们观察到与泛化类似的趋势
他们的最佳模型在训练数据缩减时始终实现最高性能,并且与其他公式相比,性能下降速度显著较慢
此外,不同规模的编码器-解码器VLA比较显示,较大的模型往往更具数据效率
如此,得出
发现4:在泛化能力和数据效率方面,利用策略头进行历史融合是最好的
1.2.3 哪种VLM骨干网络更适合VLA?KosMos和Paligemma表现更好
在大规模视觉-语言数据集上训练VLMs需要极高的资源。因此,他们基于多样化选择的预训练大规模视觉-语言骨干进行VLAs,它们具有不同的架构、训练数据规模、模型大小和潜在嵌入
这些包括
- Flamingo模型家族[1](编码器-解码器)
- 以及一系列仅解码器的VLMs,包括LLaVA[28]、Qwen-VL[2]、MoonDream[44]、UForm[41]、Paligemma[3]和KosMos[36]
值得注意的是,在本节中,为了公平比较,所有模型均使用静态图像进行训练,而非同时使用静态和手持相机。尽管这种方法可能无法提供完全受控的比较,但他们的广泛实验旨在提供关于不同VLM骨干对VLA影响的见解
结果如表V所示,揭示了以下观察
KosMos和Paligemma表现出明显更好的性能:从表V可以看出,这两个骨干比其他骨干有显著的优势。它们的优越性能得益于在大型视觉语言数据集上进行的充分视觉语言预训练——也从侧面解释了为何目前的vla sota模型π0,选择PaliGemma作为其中的VLM结构部分的原因
这一结果是直观的,因为广泛的预训练促进了视觉和语言特征之间更强的对齐——这种对齐对语言条件操控任务至关重要
从而也就说明了
发现5:VLAs从VLMs主干的“大型视觉语言数据集上进行的充分视觉语言预训练”中受益
1.2.4 应该何时利用跨实体数据集?
// 待更
相关文章:
RoboVLM——通用机器人策略的VLA设计哲学:如何选择骨干网络、如何构建VLA架构、何时添加跨本体数据
前言 本博客内解读不少VLA模型了,包括π0等,且如此文的开头所说 前两天又重点看了下openvla,和cogact,发现 目前cogACT把openvla的动作预测换成了dit,在模型架构层面上,逼近了π0那为了进一步逼近&#…...
【SpringBoot教程】Spring Boot + MySQL + HikariCP 连接池整合教程
🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 在前面一篇文章中毛毛张介绍了SpringBoot中数据源与数据库连接池相关概念,今天毛毛张要分享的是关于SpringBoot整合HicariCP连接池相关知识点以及底层源码…...
0.91英寸OLED显示屏一种具有小尺寸、高分辨率、低功耗特性的显示器件
0.91英寸OLED显示屏是一种具有小尺寸、高分辨率、低功耗特性的显示器件。以下是对0.91英寸OLED显示屏的详细介绍: 一、基本参数 尺寸:0.91英寸分辨率:通常为128x32像素,意味着显示屏上有128列和32行的像素点,总共409…...
【insert函数】
在 C 中,std::string::insert 是一个功能强大的成员函数,用于在字符串的指定位置插入内容。它有多个重载版本,支持插入 字符、字符串、子字符串 等。以下是 insert 所有相关函数的详细介绍: 1. 插入字符串 函数签名: …...
Python 如何进行文本匹配:difflib| python 小知识
Python 如何进行文本匹配:difflib| python 小知识 difflib是Python标准库中的一个工具,用于比较和处理文本差异。它提供了一组用于比较和处理文本差异的功能,可以用于比较字符串、文件等。本文将详细介绍difflib模块的用法和实现细节&#x…...
MySQL误删数据怎么办?
文章目录 1. 从备份恢复数据2. 通过二进制日志恢复数据3. 使用数据恢复工具4. 利用事务回滚恢复数据5. 预防误删数据的策略总结 在使用MySQL进行数据管理时,误删数据是一个常见且具有高风险的操作。无论是因为操作失误、系统故障,还是不小心执行了删除命…...
可以称之为“yyds”的物联网开源框架有哪几个?
有了物联网的发展,我们的生活似乎也变得更加“鲜活”、有趣、便捷,包具有科技感的。在物联网(IoT)领域中,也有许多优秀的开源框架支持设备连接、数据处理、云服务等,成为被用户们广泛认可的存在。以下给大家…...
为AI聊天工具添加一个知识系统 之74 详细设计之15 正则表达式 之2
本文要点 要点 本项目(为AI聊天工具添加一个知识系统)中的正则表达式。 正则表达式的三“比”。正则表达式被 一、排比为三种符号(元符号-圈号,特殊符号-引号,普通符号-括号) 引号<<a线性回归bo…...
Java 注解与元数据
Java学习资料 Java学习资料 Java学习资料 一、引言 在 Java 编程中,注解(Annotation)和元数据(Metadata)是两个重要的概念。注解为程序提供了一种在代码中嵌入额外信息的方式,这些额外信息就是元数据。元…...
【橘子Kibana】Kibana的分析能力Analytics简易分析
一、kibana是啥,能干嘛 我们经常会用es来实现一些关于检索,关于分析的业务。但是es本身并没有UI,我们只能通过调用api来完成一些能力。而kibana就是他的一个外置UI,你完全可以这么理解。 当我们进入kibana的主页的时候你可以看到这样的布局。…...
度小满前端面试题及参考答案
<form>标签使用过哪些 tag? <form>标签中常使用的标签有很多。 <input>:这是最常用的标签之一,用于创建各种类型的输入字段,如文本框、密码框、单选按钮、复选框、文件上传框等。通过设置type属性来指定输入类型,例如type="text"创建文本输入…...
Padas进行MongoDB数据库CRUD
在数据处理的领域,MongoDB作为一款NoSQL数据库,以其灵活的文档存储结构和高扩展性广泛应用于大规模数据处理场景。Pandas作为Python的核心数据处理库,能够高效处理结构化数据。在MongoDB中,数据以JSON格式存储,这与Pandas的DataFrame结构可以很方便地互相转换。通过这篇教…...
LQ1052 Fibonacci斐波那契数列
题目描述 Fibonacci斐波那契数列也称为兔子数列,它的递推公式为:FnFn-1Fn-2,其中F1F21。 当n比较大时,Fn也非常大,现在小蓝想知道,Fn除以10007的余数是多少,请你编程告诉她。 输入 输入包含一…...
华硕笔记本装win10哪个版本好用分析_华硕笔记本装win10专业版图文教程
华硕笔记本装win10哪个版本好用?华硕笔记本还是建议安装win10专业版。Win分为多个版本,其中家庭版(Home)和专业版(Pro)是用户选择最多的两个版本。win10专业版在功能以及安全性方面有着明显的优势ÿ…...
编译器gcc/g++ --【Linux基础开发工具】
文章目录 一、背景知识二、gcc编译选项1、预处理(进行宏替换)2、编译(生成汇编)3、汇编(生成机器可识别代码)4、链接(生成可执行文件或库文件) 三、动态链接和静态链接四、静态库和动态库1、动静态库2、编译…...
八股文 (一)
文章目录 项目地址一、前端1.1 大文件上传,预览1.2 首页性能优化1.2 流量染色,灰度发布1.3 Websock心跳机制,大数据实时数据优化1.4 Gpu 加速 fps优化1.5 echarts包大小优化和组件封装1.6 前端监控系统1.7 超大虚拟列表卡顿1. 实现2. 相关问题(1) 什么是虚拟化列表,为什么要…...
c语言无符号的变量不能和有符号的直接比较,或者使用移项解决符号问题
使用移项解决问题,简单来说就是无符号运行不要有减号,使用移项后的加号代替 if(uEventDirLimitSize > uEventAndNormalDirSize) {if((uEventDirLimitSize - uEventAndNormalDirSize) > pStConfig->stParam.stUserParam.uEventRemain){return O…...
安卓日常问题杂谈(一)
背景 关于安卓开发中,有很多奇奇怪怪的问题,有时候这个控件闪一下,有时候这个页面移动一下,这些对于快速开发中,去查询,都是很耗费时间的,因此,本系列文章,旨在记录安卓…...
电力晶体管(GTR)全控性器件
电力晶体管(Giant Transistor,GTR)是一种全控性器件,以下是关于它的详细介绍:(模电普通晶体管三极管进行对比学习) 基本概念 GTR是一种耐高电压、大电流的双极结型晶体管(BJT&am…...
【美】Day 1 CPT申请步骤及信息获取指南(Day1 CPT)
参考文章:【美】境外申请Day 1 CPT完整流程(境外Day 1 CPT) 文章目录 **一、申请前准备:了解Day 1 CPT基本要求****二、选择Day 1 CPT学校****1. 搜索学校****2. 筛选标准** **三、申请流程****1. 提交学校申请****2. 转SEVIS记录…...
梯度下降优化算法-动量法
1. 动量法的数学原理 1.1 标准梯度下降回顾 在标准梯度下降中,参数的更新公式为: θ t 1 θ t − η ⋅ ∇ θ J ( θ t ) \theta_{t1} \theta_t - \eta \cdot \nabla_\theta J(\theta_t) θt1θt−η⋅∇θJ(θt) 其中: θ t …...
游戏引擎介绍:Game Engine
简介 定义:软件框架,一系列为开发游戏的工具的集合 可协作创意生产工具,复杂性艺术,注重realtime实时 目的 为艺术家,设计师,程序员设计工具链 游戏引擎开发参考书 推荐:Game Engine Archite…...
zookeeper-3.8.3-基于ACL的访问控制
ZooKeeper基于ACL的访问控制 ZooKeeper 用ACL控制对znode的访问,类似UNIX文件权限,但无znode所有者概念,ACL指定ID及对应权限,且仅作用于特定znode,不递归。 ZooKeeper支持可插拔认证方案,ID格式为scheme…...
ResNeSt: Split-Attention Networks 参考论文
参考文献 [1] Tensorflow Efficientnet. https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet. Accessed: 2020-03-04. 中文翻译:[1] TensorFlow EfficientNet. https://github.com/tensorflow/tpu/tree/master/models/official/efficien…...
正反转电路梯形图
1、正转联锁控制。按下正转按钮SB1→梯形图程序中的正转触点X000闭合→线圈Y000得电→Y000自锁触点闭合,Y000联锁触点断开,Y0端子与COM端子间的内部硬触点闭合→Y000自锁触点闭合,使线圈Y000在X000触点断开后仍可得电。 Y000联锁触点断开&…...
【数据结构】空间复杂度
目录 一、引入空间复杂度的原因 二、空间复杂度的分析 ❥ 2.1 程序运行时内存大小 ~ 程序本身大小 ❥ 2.2 程序运行时内存大小 ~ 算法运行时内存大小 ❥ 2.3 算法运行时内存大小 ❥ 2.4 不考虑算法全部运行空间的原因 三、空间复杂度 ❥ 3.1空间复杂度的定义 ❥ 3.2 空…...
系统学英语 — 句法 — 复合句
目录 文章目录 目录复合句型主语从句宾语从句表语从句定语从句状语从句同位语从句 复合句型 复合句型,即:从句。在英语中,除了谓语之外的所有句子成分都可以使用从句来充当。 主语从句 充当主语的句子,通常位于谓语之前&#x…...
SQL server 数据库使用整理
标题:SQL server 数据库使用整理 1.字符串表名多次查询 2.读取SQL中Json字段中的值:JSON_VALUE(最新版本支持,属性名大小写敏感) 1.字符串表名多次查询 SELECT ROW_NUMBER() OVER (ORDER BY value ASC) rowid,value…...
*胡闹厨房*
前期准备 详细教程 一、创建项目 1、选择Universal 3D,创建项目 2、删除预制文件Readme:点击Remove Readme Assets,弹出框上点击Proceed 3、Edit-Project Setting-Quality,只保留High Fidelity 4、打开 Assets-Settings ,保留URP-HighFidelity-Renderer 和 URP-High…...
.NET 8 项目 Docker 方式部署到 Linux 系统详细操作步骤
本文将详细介绍如何将一个 .NET 8 项目通过 Docker 部署到 Linux 系统中。以下步骤包括从项目的创建、Dockerfile 的编写、镜像构建、到最后在 Linux 上的容器运行。 1. 环境准备 在开始之前,请确保你已经具备以下环境: Linux 系统(如 Ubu…...
状态码对照表
别瞎自定义状态码了 1xx:信息性状态码 状态码名称使用场景100Continue客户端应继续请求,等待后续响应。101Switching Protocols服务器根据客户端的请求切换协议。102Processing服务器正在处理请求,但尚未完成。103Early Hints提供给客户端的…...
【愚公系列】《循序渐进Vue.js 3.x前端开发实践》027-组件的高级配置和嵌套
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...
Autosar-Os是怎么运行的?(多核系统运行)
写在前面: 入行一段时间了,基于个人理解整理一些东西,如有错误,欢迎各位大佬评论区指正!!! 目录 1.Autosar多核操作系统 1.1多核启动过程 1.2多核运行过程 1.2.1核间任务同步 1.2.2Counte…...
WPF3-在xaml中引用其他程序集的名称空间
1. 如何在XAML里引用类库中的名称空间和类2. 小结 1. 如何在XAML里引用类库中的名称空间和类 首先需要记住一点:把类库引用到项目中是引用其中名称空间的物理基础,无论是C#还是XAML都是这样。 一旦将一个类库引用进程序,就可以引用其中的名…...
无人机红外热成像:应急消防的“透视眼”
无人机红外热成像:应急消防的“透视眼” 亲爱的小伙伴们,每年一到夏天,应急消防的战士们就像上紧了发条的闹钟,时刻准备应对各种灾害。炎热天气让火灾隐患“蹭蹭”往上涨,南北各地还有防洪救灾、台风、泥石流等灾害轮…...
飞牛NAS安装过程中的docker源问题
采用CloudFlare进行飞牛NAS的远程访问 【安全免费】无需公网IP、端口号,NAS外网访问新方法_网络存储_什么值得买 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF {"registry-mirrors": ["https://docker.1panel.dev&quo…...
python基础语法(4) ----- 学习笔记分享
目录 Python 使用库 以及 实战的一些案例 1. 标准库 1.1 认识标准库 1.2 使用import导入模块 1.3 代码示例:日期及结算 1.4 代码示例:字符串操作 1.5 代码示例 : 文件查找工具 2. 第三方库 2.1 认识第三方库 2.2 使用pip 2.3 代码示例:生成二维码 (1) 使用搜索引擎,…...
Linux 内核学习 3b - 和copilot 讨论pci设备的物理地址在内核空间和用户空间映射到虚拟地址的区别
前提知识: 可以把内核当作一个需要特殊权限运行的程序,那么不同的程序,相同的设备物理地址就会映射到不同的虚拟地址 (见Linux 内核学习 3 - 虚拟内存和物理内存)。 You said 同一个pcie 设备物理地址在linux 内核和用…...
算法【有依赖的背包】
有依赖的背包是指多个物品变成一个复合物品(互斥),每件复合物品不要和怎么要多种可能性展开。时间复杂度O(物品个数 * 背包容量),额外空间复杂度O(背包容量)。 下面通过题目加深理解。 题目一 测试链接:[NOIP2006 提…...
【Linux】 冯诺依曼体系与计算机系统架构全解
Linux相关知识点可以通过点击以下链接进行学习一起加油!初识指令指令进阶权限管理yum包管理与vim编辑器GCC/G编译器make与Makefile自动化构建GDB调试器与Git版本控制工具Linux下进度条 冯诺依曼体系是现代计算机设计的基石,其统一存储和顺序执行理念推动…...
【深度学习】 UNet详解
UNet 是一种经典的卷积神经网络(Convolutional Neural Network, CNN)架构,专为生物医学图像分割任务设计。该模型于 2015 年由 Olaf Ronneberger 等人在论文《U-Net: Convolutional Networks for Biomedical Image Segmentation》中首次提出&…...
“深入浅出”系列之算法篇:(2)openCV、openMV、openGL
OpenCV是一个的跨平台计算机视觉库,可以运行在Linux囚、Windows 和Mac OS操作系统上。它轻量级而且高效,由一系列 C函数和少量C类构成,同时也提供了Python 接口,实现了图像处理和计算机视觉方面的很多通用算法。 OpenMV是一个开源,低成本&am…...
低代码系统-产品架构案例介绍、得帆云(八)
产品名称 得帆云DeCode低代码平台-私有化 得帆云DeMDM主数据管理平台 得帆云DeCode低代码平台-公有云 得帆云DePortal企业门户 得帆云DeFusion融合集成平台 得帆云DeHoop数据中台 名词 概念 云原生 指自己搭建的运维平台,区别于阿里云、腾讯云 Dehoop 指…...
web3py+flask+ganache的智能合约教育平台
最近在学习web3的接口文档,使用web3pyflaskganache写了一个简易的智能合约教育平台,语言用的是python,ganche直接使用的本地区块链网络,用web3py进行交互。 代码逻辑不难,可以私信或者到我的闲鱼号夏沫mds获取我的代码…...
(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验六----流域综合处理(超超超详细!!!)
流域综合处理 流域综合治理是根据流域自然和社会经济状况及区域国民经济发展的要求,以流域水流失治理为中心,以提高生态经济效益和社会经济持续发展为目标,以基本农田优化结构和高效利用及植被建设为重点,建立具有水土保持兼高效生态经济功能的半山区流域综合治理模式。数字高程…...
基于 WPF 平台使用纯 C# 实现动态处理 json 字符串
一、引言 在当今的软件开发领域,数据的交换与存储变得愈发频繁,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,以其简洁、易读、便于解析和生成的特点,被广泛应用于各种应用程序中。在 W…...
DRF开发避坑指南01
在当今快速发展的Web开发领域,Django REST Framework(DRF)以其强大的功能和灵活性成为了众多开发者的首选。然而,错误的使用方法不仅会导致项目进度延误,还可能影响性能和安全性。本文将从我个人本身遇到的相关坑来给大…...
WordPress免费证书插件
为了在您的网站上启用HTTPS,您可以使用本插件快速获取Let’s Encrypt免费证书。 主要功能: 支持快速申请Let’s Encrypt免费证书支持通配符证书申请,每个证书最多可以绑定100个域名支持自动续期证书支持重颁发证书,证书过期或失…...
MongoDB平替数据库对比
背景 项目一直是与实时在线监测相关,特点数据量大,读写操作大,所以选用的是MongoDB。但按趋势来讲,需要有一款国产数据库可替代,实现信创要求。选型对比如下 1. IoTDB 这款是由清华大学主导的开源时序数据库&#x…...
ANSYS学习笔记(十)网格质量的诊断和提高
网格质量的好坏不能单纯只看meshing给出的网格质量结果,要根据实际的计算物理场景来判断,需要求解的地方物理量大梯度的位置网格越密越好。 网格质量:在有限网格数量限制下,离散误差小的网格是好网格,是高质量网格。网…...