当前位置: 首页 > news >正文

视觉-语言导航:综述与类别

22年4月来自国防科大的论文“Vision-Language Navigation: A Survey and Taxonomy”。

视觉-语言导航 (VLN) 任务要求智体遵循人类语言指令,在未曾见过的环境中导航。这个充满挑战的领域涉及自然语言处理、计算机视觉、机器人技术等领域,并催生了众多专注于各种 VLN 任务的优秀成果。本文对这些任务进行了全面的综述,并根据这些任务中语言指令的不同特点,对其进行了深入的分类。根据导航指令是一次性给出还是多次给出,本文将任务分为两类:单轮任务和多轮任务。对于单轮任务,根据指令是指定单个目标位置还是指定多个位置的序列,将其进一步细分为目标导向任务和路径导向任务。对于多轮任务,根据智体是否允许对指令提出质疑,将其细分为被动任务和交互式任务。这些任务需要智体具备不同的能力,并需要不同的模型设计。本文总结了这些任务的进展,并探讨了现有 VLN 模型和任务设置的局限性。最后,讨论了 VLN 的几个未解决的问题,并指出了未来的一些机会。

如图所示,VLN 智体通常将视觉观察和语言指令作为输入,输出是导航动作、自然语言、操作动作或识别物体位置。

请添加图片描述

本文简要介绍计算机视觉、自然语言处理和机器人导航领域的一些技术背景。然后,详细描述不同类型的 VLN 数据集和模拟器。如表所示,总结典型的数据集和相关的模拟器,之后说明具体任务。

请添加图片描述

除了导航之外,一些任务可能与其他操作交织在一起,例如操纵物体、回答问题、定位目标物体。需要注意的是,如果一个任务有多个任务设置,该分类只会考虑导航部分。最后给出结论。如图总结一个知识图谱:

请添加图片描述

数据集

SUNCG [64]数据集包含 45,622 个人工设计的 3D 场景,涵盖从单室到多层住宅的各种类型。这些 3D 场景包含大量物体、空间布局和其他元素,旨在为 3D 物体识别研究人员提供良好的平台。平均每个场景包含 8.9 个房间和 1.3 层楼,并且每个场景包含多种房间和物体类别。SUNCG 数据集中包含超过 20 种类型的房间和 80 多种物体类别,共包含 404,508 个房间实例和 5,697,217 个物体实例。

研究人员已使用 3D 坐标以及内部房间和物体类型对数据集中的每个场景进行了注释。在每个时间步,智能体可以访问以下信号:a) 当前第一人称视角的视觉 RGB 信号;b) 当前视角下所有可见物体的语义(实例)分割掩码;c) 深度信息。对于不同的任务,这些信号可能有不同的用途,例如,作为特征平面或辅助目标。

Matterport 3D [65] 是一个近期主流的数据集,包含从现实中收集的 90 个场景,总共 194,400 张 RGB-D 图像。该数据集已通过 3D 重建以及 2D 和 3D 语义分割进行了完整注释。

整栋建筑的精确全局对齐以及全面多样的全景视图集支持各种监督和自监督计算机视觉任务,例如视图重叠预测、语义分割和区域分类等。
2D-3D-S [66]是一个支持 2D、2.5D 和 3D 域的室内环境数据集,包含多模态、3D 网格和点云数据。该数据集包含超过 70,000 张 RGB 图像,并标注了深度、语义注释和摄像机配置等完整信息。

Replica [67]是一个照片级逼真的三维室内环境,包含 18 个由高质量图像渲染的不同场景。所选场景注重环境的语义多样性和规模。每个场景由密集网格、高分辨率纹理、原始语义类别、实例信息、平面镜和玻璃反射器组成。

内置数据集的模拟器

LANI [19] 是一个基于 Unity 3D 的海量 3D 导航数据集,共包含 6,000 条语言指令。其环境是一个有围栏的方形草地。每个场景包含 6 到 13 个随机放置的地标,这些地标是从 63 个独特地标中采样而来的。智体具有离散动作:前进、停止、左转和右转。在每个时间步,智体执行一个动作,以图像形式观察周围环境的第一人称视角,并获得标量奖励。模拟器提供了一个 socket API 来控制智体和环境。

AI2-THOR [20]5 是一个大规模近乎照片级逼真的 3D 室内数据集,智体可以在场景中导航并与物体交互以执行任务。 AI2-THOR 可应用于许多不同领域的研究,例如深度强化学习、规划、视觉问答以及目标检测与分割等。

VizDoom[24]6 是基于第一人称射击游戏 Doom 修改而来。为了方便研究人员使用,ViZDoom 设计得小规模、高效,并可高度定制,适用于不同的实验领域。此外,VizDoom 支持不同的控制模式、自定义场景、访问深度缓冲区,并且可以在无图形界面的情况下运行,从而提高了算法执行效率。

Gibson[68]7 基于虚拟化的真实空间,体现了智体的特性,并使其受到复杂语义场景的约束。Gibson 数据集包含 572 个建筑场景和 1447 层楼,每个场景都配备全景图像和摄像头配置。该数据集的基本格式与 2D-3D-S 数据集 [66] 类似,但更加多样化,空间大小提高了 2 个数量级。 Gibson 的模拟器还集成了 2D-3D-S 数据集 [66] 和 Matterport3D [65] 可供可选使用。

模拟器

House3D [26] 包含多种房间类型和内部物体,并支持 MacOS 和 Linux 操作系统。其 3D 场景基于 SUNCG 数据集,并带有丰富的注释信息。为了构建逼真的 3D 环境,House3D 为 SUNCG 场景提供了基于 OpenGL 的渲染器。在此环境中,智体可以自由移动,并接收不同类型的研究任务。

Matterport3D 模拟器 [10] 是一个基于 Matterport3D 数据集 [65] 的大型机器学习研究平台,用于智体的研究和开发。智体可以通过采用与全景视角相符的姿势,在场景中虚拟地“移动”。每个场景都有一个对应的加权无向图,因此边的存在表示机器人可以在两个视角之间导航过渡。该模拟器不定义或限制智体的目标、奖励函数或任何其他上下文,因此研究人员可以根据实验设置设计这些指标。

Habitat [69] 是一个用于照片级真实感三维环境研究的平台,集成多个常用的 VLN 数据集。具体来说,该模拟器支持 Matterport3D [65]、Gibson [68] 和 Replica [67] 数据集。此外,Habitat 还包含一个模拟器 Habitat-Sim 和一个模块化库 Habitat-API。Habitat-API 旨在帮助研究人员验证和改进智能算法。

在面向目标的任务中,语言指令仅包含具体的目标,而没有具体的路线,因此智体需要自行制定规划。从任务定义、评估指标、相关工作和典型方法等方面,介绍几种面向目标的任务。

LANI

任务定义:Misra [19] 通过众包方式收集导航指令语料库。用 LANI 模拟器随机生成环境,并为每个环境生成一条参考路径。生成的参考路径靠近邻近地标,用于引出指令。之后,使用 Amazon Mechanical Turk 进行标注。实验环境是模拟的,相对简单。此外,Blukis [70] 提出一个与 LANI 类似的真实世界学习框架。

典型方法:在 Misra [19] 的工作中,这项指令遵循任务被分解为两个子模块:目标预测和动作生成。提出一种语言条件图像生成网络架构 LINGUNET,用于构建从视觉输入到目标输出的映射。

基于 LANI,Blukis [73] 提出一种将自然语言指令和原始观测输入映射到四轴飞行器无人机连续控制的方法,该方法使用了 Blukis [71] 提供的四轴飞行器模拟器环境。为了指示智体在导航过程中应该访问的位置以及应该在的位置停止,建立一个模型来预测位置-访问分布,然后根据预测的分布生成动作。

为了将模拟与现实相结合,Blukis [70] 提出一个学习框架,将语言指令和图像映射到低级动作输出。此外,监督强化异步学习 (SuReAL) 在模拟和现实中均有应用,训练期间无需在现实世界中飞行。 SuReAL 结合了用于预测下一个目标的监督学习和用于连续动作输出的强化学习。

最近,Blukis [74] 研究如何将推理扩展到新目标。由于缺乏足够的训练数据,使用一种基于额外增强现实数据训练的少样本方法,将语言指令与目标关联起来。该方法可以将目标与其在语言指令中的提及进行匹配。

具身问答

任务概述:具身问答 (EQA) 任务要求智体提出一个问题(例如,“杯子是什么颜色的?”)。智体通常位于环境中的随机位置(房屋或建筑物),并可以通过第一人称视角图像观察环境。智体的动作空间包括前进、转弯和扫射(strafe)等。理解问题后,智体需要在环境中收集有用的信息以进行回答。与先前的研究 [78] 不同,智体不会接收任何关于环境(地图、位置、房间、物体)或任务(生成问题的功能程序)的全局或结构化表示。

EQA 基于 House3D 模拟器和 SUNCG 数据集构建。为了确保数据集的质量,内部环境必须真实且典型,并且不得存在异常情况。此任务中的场景至少包含一个厨房、一个餐厅、一个客厅和一个卧室。 EQA v1 数据集包含 750 多个环境中的 5000 多个问题,涉及 7 种不同房间类型中的 45 个不同物体。每个环境中有 1 到 22 个相关问题,平均 6 个。介词问题比其他类型的问题少,因为许多经常出现的空间关系很容易在不进行探索的情况下解决,并且无法通过熵阈值处理。

典型方法:Das [25] 给出一个基线模型,该模型包含四个模块,即视觉、语言、导航和回答,并分两个阶段进行训练。首先,导航和回答模块使用模仿/监督学习来独立训练自动生成的导航专家演示。然后,导航架构使用策略梯度进行微调。该模型可以将原始感官输入映射到导航动作和答案生成。

Anand [79] 探索用于 EQA 的盲(仅提问)模型,该模型忽略环境和视觉信息。直观地看,盲模型是一种退化的解决方案,但除了一些罕见的初始化情况外,它在 EQA 上达到了最先进的结果。

Yu [84] 将 EQA 扩展为多目标版本,即多目标 EQA。由于问题更加复杂,智能体需要导航到多个位置,并在回答问题之前执行一些比较推理步骤。设计一个用于解决 MT-EQA 的新模型,该模型由四个模块组成:问题到程序生成器、导航器、控制器和 VQA 模块。

真实室内环境中远程具身视觉参考表达

任务概述:真实室内环境中远程具身视觉参考表达 (REVERIE) [11] 任务要求智体通过简洁的高级自然语言指令(在起始位置无法观察到)正确定位远程目标物体。由于目标物体和起始物体位于不同的房间,因此智体需要首先导航到目标位置。与其他导航任务不同,如果智体认为已定位目标物体并决定输出其区域,则此任务中的智体可以执行检测操作。检测操作完成后,本回合结束。

典型方法:Qi [11] 提出一个模块化模型,该模型包括三部分:导航模块,决定下一步要采取的动作;指针模块,根据语言引导尝试定位目标对象;交互模块,响应将从指针获得的参考表达理解信息发送给导航模块,以指导其做出更准确的动作预测。

Lin [88] 提出两个预训练任务,分别称为场景落地任务和物体落地任务,以及一个新的记忆增强型注意动作解码器。预训练任务鼓励智体学习在哪里停止以及要注意什么,而动作解码器则利用过去的观察结果,有效地融合视觉和文本信息。

在面向路径的任务中,语言指令会详细描述沿途看到的物体以及智体的路线。如果智体能够理解指令并按照指令中的路径导航,它就能到达最终目的地,成功完成导航任务。从任务定义、评估指标、相关工作和典型方法等方面,介绍几种面向路径的任务。

房间-到-房间

任务描述:房间-到-房间 (R2R) 是一个基于视觉的自然语言导航数据集,其场景为照片级真实环境 [10]。该数据集中的环境由导航图定义,其中节点表示具有以自身为中心的全景图像位置,边表示用于智体导航的有效连接。该数据集(包括训练/验证/测试集)包含完整的指令和路径注释,每条路径包含 3 条不同的相关指令。真实路径的平均长度为 4 到 6 条边。

R2R 任务的输入是来自以自身为中心的全景摄像机的图像和指令。需要注意的是,图像会随智体的运动而更新,而指令则在开始时给出。例如,给出一条指令“朝前门走,但在前门前左转,然后穿过拱门,走到中间房间的中间并停下。”,智体需要理解该指令并尽快从起点执行到目标位置。

典型方法:R2R 任务最为引人注目,VLN 的大部分研究工作都基于此。这些工作的基本框架是 Seq2Seq 模型,但它们侧重于提升模型性能的不同方面,因此为了便于理解,将它们分为 7 类,即探索策略、超越 Seq2Seq 架构、强化学习与模仿学习、语言落地、数据增强、预训练模型和其他相关研究。

探索策略。在这一类中,相关工作侧重于寻找从起始位置到目的地的有效快速路径。Ma [103] 提出一个模块来估计智体朝着目标所取得的进度。基于此,Ma [104] 设计两个用于探索的模块,即用于前进或后退的 Regret 模块和用于通过显示已访问的方向及其相关进度估计来帮助智体决定下一步行动方向的 Progress Marker 模块。虽然所有当前方法都使用集束搜索(BS)来做出局部行动决策或对整个轨迹进行评分,但 Ke [105] 提出带有回溯 (FAST) 导航器的前沿-觉察搜索。当智体意识到自己迷失时,FAST 导航器可以通过异步搜索显式回溯。这也可以在其他模型上即插即用。Huang [106] 定义两个域内子任务:跨模态对齐 (CMA) 和下一个视觉场景 (NVS)。在 CMA 和 NVS 的帮助下,智体在特定环境中学习到的视觉和文本表示可以迁移到其他环境。

Seq2Seq 之外的架构。受注意网络最新进展的鼓舞,许多基于 Transformer 的研究应运而生,将其归类为超越 Seq2Seq 架构。Landi [111] 设计感知、转换和行动 (PTA) 架构,以便将先前动作的完整历史记录用于不同的模态。 Magassouba [112] 提出了跨模态掩码路径transformer,它对语言和环境状态特征进行编码,以便像循环网络方法一样按顺序生成动作。此外,该方法使用特征掩码来更好地模拟指令和环境特征之间的关系。Wu [113] 和Mao [114] 对视觉和文本输入使用多头注意机制来增强模型的性能。Qi [117] 区分语言指令中的目标和动作信息,而大多数现有方法对此关注甚少,并提出一个目标和动作-觉察模型 (OAAM),可以分别处理这两种不同形式的基于自然语言的指令。OAAM 使每个进程能够灵活地将以目标为中心(以动作为中心)的指令与其对应的视觉感知(动作方向)匹配。为了捕捉环境布局并进行长期规划,Wang 等 [118] 提出了结构化场景记忆 (SSM),它允许智体访问其过去的感知并探索环境布局。凭借这种富有表现力和持久性的空间表示,智体在细粒度指令落地、长期推理和全局决策问题中展现出优势。

强化学习与模仿学习。许多研究发现,将模仿学习和强化学习与 VLN 模型相结合大有裨益。Wang [119]、Tan [120]、Hong [115]、Parvaneh [121] 和 Wang [108] 均采用两种不同的学习范式训练模型:1)模仿学习,其中智体被迫模仿其老师的行为;2)强化学习,帮助智体探索演示路径之外的状态-动作空间。具体而言,在模仿学习中,智体在每个时间步采取老师的动作 a_t,以有效地学习遵循真实轨迹。在强化学习中,智体从动作概率 p_t 中采样动作 as_t,并从奖励中学习,这使智体能够探索环境并提高泛化能力。在学习导航时,结合 IL 和 RL 可以平衡开发和探索。

语言落地。这类方法旨在通过多模态信息融合的方法更好地将语言指令落地,从而提高智体导航的成功率。Wang [119] 提出一种跨模态基础架构,将语言落地于局部视觉信息和全局视觉轨迹。Hu [126] 建议将基落地过程分解为一组可以访问不同模态(包括目标检测)的专家模型,并在预测时将它们集成在一起,以更有效地利用所有可用的模态。为了使智体更好地理解文本和视觉模态之间的对应关系,Zhang [109] 设计一个由两种互补的注意机制组成的跨模态基础模块。Kurita & Cho [127] 构建一个神经网络来计算所有可能指令的概率分布,并使用贝叶斯规则构建基于语言的策略。通过全面的实验,该方法比传统的判别式方法具有更好的可解释性。

数据增强。使用自动生成的导航指令作为额外的训练数据可以增强模型性能。Fried [95] 提出了一个说话人-跟随者框架,用于监督学习中的数据增强和推理。Hong [128] 使用子指令及其对应的路径丰富基准数据集 R2R,即细粒度房间-到-房间数据集 (FGR2R)。通过将子命令与路径中对应的视点配对,FGR2R 可以在训练过程中更好地为智体提供足够的语义信息。Agarwal [129] 提出一个正在开发的“说话人”模型,该模型分两步生成导航指令。首先,使用强注意机制沿轨迹选择一系列离散的视觉地标,然后生成以这些地标为条件的语言。与传统的数据增强方法不同,Parvaneh [121] 提出一种高效的算法来生成不依赖于手工制定或特定规则领域的反事实实例。这些反事实实例被添加到训练中,提高了智体在新环境中测试时的能力。在 [130] 中,反事实思想还有另一种应用。一种称为对抗路径采样器 (APS) 的模型不可知方法来采样路径,以逐步优化智体导航策略。

预训练模型。通过预训练模型获得的通用特征表示可应用于各种任务,并已在许多领域得到证实。强大的预训练主干网络在下游任务中也能发挥高效作用,例如计算机视觉中的图像识别和自然语言处理中的问答。尤其是 Vaswani [135] 在大型语料库上使用“掩码语言模型”目标 [5] 进行预训练的 Transformer 网络,在大多数自然语言处理任务中均表现出色。此外,Su [136] 开发 VL-BERT,一种用于视觉语言任务的可预训练通用表征。在视觉语言网络 (VLN) 领域,预训练方法的应用主要体现在两个方面:

• 使用预训练模型解决视觉语言网络 (VLN) 任务。 在 Li [137] 中,智体使用预训练的语言模型(例如 BERT [135] 和 GPT-3 [138])进行训练,并使用随机采样在未见过的环境中很好地泛化。Hao [139] 提出的预训练视觉和语言导航器 (PREVALENT) 模型使用图像-语言-动作三元组进行预训练,并在 R2R 任务上进行微调。基于 PREVALENT 模型的使用,智体可以在未见过的环境中更好地完成任务。
• 在 VLN 任务上使用预训练的 VL 或 VLN 模型。由于 VLN 任务中训练数据的限制,Majumdar [141] 尝试使用大量从网络上抓取的资源来解决此问题。因此,提出 VLN-BERT,并证明在微调特定路径指令数据之前,使用来自网络的图像-文本对对其进行预训练可以显著提高 VLN 任务的性能。Hong [142] 提出 VLN BERT,这是一个多模态 BERT 模型,配备时间感知的循环函数,可以为智体提供更丰富的信息。

街景导航

现有研究主要关注简单的视觉输入,且环境多为室内场景。实际上,由于语言和视觉方面的挑战已被简化,这些环境中视觉输入的复杂性和多样性有限。因此,许多研究人员对基于谷歌街景的户外导航感兴趣。

1)Touchdown:Chen [34] 提出 Touchdown,这是一个基于真实视觉观察进行自然语言导航和空间推理的数据集。定义两个任务(即导航和空间描述解析),要求智体应对一系列不同的推理和学习挑战。这是第一个大规模户外 VLN 任务。在此任务中,智体在移动到每个可导航点时会接收 360°RGB 全景图像,并与无向导航图相连。该环境包含来自纽约市的 29,641 张全景图像和 61,319 条边。

Xiang [150] 致力于赋予智体识别能力,使其能够在复杂的户外环境中停在正确的位置。引入“学习停止”模块来解决这个问题,这是一个简单且与模型无关的模块,可以轻松添加到其他模型中以提升其导航性能。

为了便于实验,Zhu [151] 将原始 StreetLearn 数据集划分为一小部分,即 Manh-50,主要覆盖曼哈顿地区,包含 31,000 个训练数据。此外,还提出多模态文本风格迁移学习方法,为外部资源生成风格修改后的指令,并解决数据稀缺问题。

2)StreetLearn:为了改进端到端户外 VLN 研究,Mirowski [37] 提出基于谷歌街景的 StreetLearn 任务,这是一个以自我为中心的、照片级逼真的交互式户外导航任务。Mehta [152] 公开发布 Touchdown 所需的 29000 张原始街景全景图像。该任务的评估指标包括任务完成度、最短路径距离、编辑距离加权的成功率、归一化动态时间规整和成功率加权动态时间规整。Mirowski [153] 使用深度强化学习方法解决户外城市导航问题。基于谷歌街景的图像和连通性,提出一种具有交互式环境的双路径导航模型。

3)其他户外导航任务:
• StreetNav。StreetNav 是 Hermann [36] 提出的 StreetLearn 的扩展。主要区别在于 StreetNav 通过随机采样起点和目标位置,将谷歌地图的驾驶指令添加到数据集中,这类似于自动驾驶环境。
• Talk to Nav。Vasudevan [154] 基于谷歌街景开发一个交互式视觉导航环境,名为 Talk to Nav 数据集,其中包含 10,714 条路线。还设计一个有效的模型,用于在远距离城市环境中创建大规模导航指令。
• 街景。基于谷歌街景,Cirik [155] 在美国 10 个城市的 100 个地区采样 10 万条路线,以构建户外指令跟踪任务环境。他们认为户外导航更具挑战性,因为户外环境更加混乱,目标更加多样化。
• RUN。Paz-Argaman & Tsarfaty [35] 提出现实城市导航 (RUN) 任务,旨在基于真实、密集的城市地图解释导航指令,该任务包含 2,515 条由 Amazon Mechanical Turk 作品注释的指令。
• ARRAMON。Kim [38] 提出 ARRAMON 任务,该任务包含两个子任务:物体收集和物体指涉表达理解。在该任务中,智体需要在复杂的合成户外环境中,通过基于自然语言指令的导航,逐一找到并收集不同的目标物体。

先前的研究要求智体在单轮指令的环境中导航。近年来,对话式交互式助手蓬勃发展,其交互通常是一个多轮过程。对于多轮任务,引导者会分多轮向智体发出指令,直到智体达到指定的目标。根据智体是否可以质疑指令,将多轮任务细分为:被动任务和交互式任务。

被动任务

在被动任务中,指令会分阶段发送给智体,指令中包含的信息通常足够清晰,智体只需理解指令含义并移动到目标位置即可。此类任务的指令顺序因具体问题而异。

交互式任务

在交互式任务中,人类向导和智体通常是合作的,如果遇到信息不足或模糊的情况,智体可以向人类向导询问。通过这种交互式方式,智体可以持续获取信息,从而完成导航任务。

可能的机遇

1)知识融合:知识使人类更加聪明,例如,可以将日常生活中的经验总结为知识,并在未来加以运用。直观地讲,知识能够提升模型在大多数人工智能任务中的表现,这在最近已被证实是有效的 [9, 159]。因此,如何将知识引入 VLN 模型并使其有效运作是研究人员未来需要思考的问题。一些可能的途径包括:
• 算法知识。机器学习中的许多算法可以通过持续训练积累知识,例如关于环境动态、空间表征或动作的物理效应的知识,从而更好地适应新环境。
• 外部知识库。人类在解决类似问题时经常需要常识的帮助。例如,有了“马桶通常在盥洗室”的常识,智体就不应该在客厅里浪费时间寻找马桶。此外,这些知识在之前未见过的环境中很可能仍然有效,从而有可能实现更好的泛化能力。
• 认知架构。人类可以出色地完成像VLN这样的任务,因此认知科学和人脑中的一些原理可以用于启发式模型的构建。例如,记忆可以增强VLN模型的推理能力。海马体等大脑区域在空间记忆和其他认知功能中发挥着相互交织的作用。其他一些有用的认知理论,如Soar和ACT-R,也同样强大,但迄今为止尚无基于它们的研究。

2)从模拟到现实:由于存在许多实际应用场景,物理智体有望在现实世界中完成 VLN 任务。例如,在搜救任务中,机器人可以利用视觉线索进行搜索,并使用语言与人类受害者进行交互 [164]。目前,VLN 任务的研究仍停留在模拟环境中。模拟平台的优势在于易于验证模型,并且使用方便快捷。然而,许多现实世界案例中的一些重要物理约束无法被模拟器很好地刻画,因此被忽略。因此,模拟环境与现实世界之间仍然存在很大差距,阻碍了模拟平台上取得的进展向现实世界场景的迁移。未来构建一个集成更多真实物理特征(例如触觉感知[165]、人类水平的运动控制[166]和音频输入[167])的模拟环境,将提升VLN模型在现实世界中的表现。

此外,训练VLN模型通常需要大量的计算资源,这使得在便携式设备(例如小型无人机[71])上部署此类模型变得难以实现。解决这个问题的一个方向是设计更轻量级的网络结构,其中包含计算负载低、内存消耗低的操作或层。例如,可以通过量化网络权重或将模型精简为轻量级模型来压缩模型,以降低复杂度。其他可能的解决方案包括模型剪枝方法和对模型权重进行哈夫曼编码。

相关文章:

视觉-语言导航:综述与类别

22年4月来自国防科大的论文“Vision-Language Navigation: A Survey and Taxonomy”。 视觉-语言导航 (VLN) 任务要求智体遵循人类语言指令,在未曾见过的环境中导航。这个充满挑战的领域涉及自然语言处理、计算机视觉、机器人技术等领域,并催生了众多专…...

基于SpringBoot的家政预约系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

什么是子网委派?

Azure 子网委派的概念 子网委托使您能够为所选的 Azure PaaS 服务指定一个特定的子网,并将其注入到您的虚拟网络中。子网委托为客户提供了完全的控制权,可以管理 Azure 服务与其虚拟网络的集成。 当您将子网委托给 Azure 服务时,您允许该服务为该子网建立一些基本的网络配…...

5个yyds的.Net商城开源项目

今天一起来盘点下5个商城开源项目。 1、支持多语言、多商店的商城,.Net7 EF7领域驱动设计架构(Smartstore) 项目简介 Smartstore 支持桌面和移动平台、多语言、多商店、多货币的商城,并支持SEO优化,支持无限数量的…...

如何快速隔离被攻击的服务器以防止横向渗透

网络延迟过高会显著影响用户体验和服务性能&#xff0c;以下是系统化的排查思路和解决方案&#xff1a; --- ### **1. 快速定位问题范围** #### **基础检查** - **测试延迟目标**&#xff1a; bash ping <目标IP或域名> # 检查基础延迟&#xff08;ICMP…...

【解决】自己的域名任何端口都访问不到,公网地址正常访问,服务器报错500。

一、问题描述 后端项目部署在服务器上&#xff0c;通过域名访问接口服务器报错500&#xff0c;通过浏览器访问殒命的任何端口都是无法访问此网站。 但是通过公网地址访问是可以正常访问到的&#xff0c;感觉是域名出现了问题 二、解决过程 先说结论&#xff1a;问题原因是…...

Kubernetes MCP服务器(K8s MCP):如何使用?

#作者&#xff1a;曹付江 文章目录 1、什么是 Kubernetes MCP 服务器&#xff1f;1.1、K8s MCP 服务器 2、开始前的准备工作2.1. Kubernetes集群2.2. 安装并运行 kubectl2.3. Node.js 和 Bun2.4. &#xff08;可选&#xff09;Helm v3 3、如何设置 K8s MCP 服务器3.1. 克隆存储…...

RHCE 练习三:架设一台 NFS 服务器

一、题目要求 1、开放 /nfs/shared 目录&#xff0c;供所有用户查询资料 2、开放 /nfs/upload 目录&#xff0c;为 192.168.xxx.0/24 网段主机可以上传目录&#xff0c;并将所有用户及所属的组映射为 nfs-upload,其 UID 和 GID 均为 210 3.将 /home/tom 目录仅共享给 192.16…...

SpringBoot(二)--- SpringBoot基础(http协议、分层解耦)

目录 前言 一、SpringBoot入门 1.入门程序 2.解析 二、HTTP协议 1.HTTP概述 2.HTTP请求协议 2.1 GET方式的请求协议 2.2 POST方式的请求协议 2.3 两者的区别 2.4 获取请求数据 3.HTTP响应协议 三、分层解耦 1.三层架构 2.IOC&DI 2.1 入门 2.2 IOC详解 2.…...

mongodb部署Shard Cluster

一、创建集群认证文件 mkdir ./data ./confopenssl rand -base64 756 > ./conf/keyfilechmod 400 ./conf/keyfiledocker network create mongo-cluster二、部署configsever副本集 #!/bin/bash inamemongodb:8.0.9 conf_namemongo_conf_ replset_nameconfrsecho "…...

【大数据】MapReduce 编程--索引倒排--根据“内容 ➜ 出现在哪些文件里(某个单词出现在了哪些文件中,以及在每个文件中出现了多少次)

将 Hadoop 所需的 JAR 文件添加到项目中&#xff0c;确保可以使用 Hadoop 的 API JAR (Java Archive) 文件是一种用于打包多个 Java 类文件、资源文件&#xff08;如图片、配置文件等&#xff09;以及元数据的压缩文件格式。它类似于 ZIP 文件&#xff0c;但 JAR 文件通常用于 …...

使用PHP对接东南亚、日本、印度和印度尼西亚股票数据源

本文将介绍如何通过StockTV提供的API接口&#xff0c;使用PHP语言来获取并处理东南亚&#xff08;包括马来西亚、新加坡等&#xff09;、日本、印度以及印度尼西亚的股票市场数据。我们将以获取市场列表、查询公司信息、查看涨跌排行榜为例&#xff0c;展示具体的操作流程。 准…...

从基础到高级:网站反爬技术全景解析与第三方工具对比

网站反爬与用户行为检测实战指南:从基础防护到智能识别 在当今数据驱动的互联网时代,网站面临着日益复杂的爬虫攻击和恶意行为威胁。本文将系统性地介绍网站反爬与用户行为检测的技术体系,包括基本原理、防护策略、第三方组件选型以及真实案例分析,帮助开发者构建更加安全…...

docker安装Prometheus+Grafana

docker 安装Prometheus 下载镜像 很多镜像服务器都不行了&#xff0c;我用的这个地址还可以 查看可用docker镜像地址&#xff1a;https://cloud.tencent.com/developer/article/2485043 docker pull docker.xuanyuan.me/prom/prometheus:latest启动 docker run -itd --name…...

解决 Linux Bash 脚本因换行符问题导致的 “bash^M: No such file or directory“ 错误

一、问题重现 最近在部署一个 Bash 脚本时遇到一个诡异的问题&#xff1a; bash $ chmod x deploy.sh $ ./deploy.sh /usr/bin/env: ‘bash\r’: No such file or directory 明明脚本内容正确&#xff0c;权限也设置好了&#xff0c;为什么会出现这样的错误&#xff1f; 二…...

DS1302实时时钟模块

目录 0.单片机定时器时钟的几个缺点&#xff1a; 1.DS1302介绍 2.引脚定义和应用电路 3.原理图 4.内部结果框图&#xff0c;RAM&#xff08;寄存器&#xff09; 5.寄存器定义 6.时序定义 7.DS1302时钟代码 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a…...

redis的List为什么用ziplist和quicklist

redis的List为什么用ziplist和quicklist 压缩列表&#xff08;ziplist&#xff09; 是一种节省内存的数据结构&#xff0c;最早是 Redis 中为了减少内存开销而引入的一种顺序存储结构。它不是标准库里的内容&#xff0c;而是某些底层系统&#xff08;比如 Redis&#xff09;在…...

Java 后端基础 Maven

Maven 1.什么是Maven 2.Maven的作用 Maven核心 Maven概述 IDEA集成Maven 1.创建Maven项目 点击设置里的 Project Structure 将jdk和编译语言进行设置 随后点击apply点击ok 2.Maven坐标 3.导入Maven项目 将文件夹复制到当前项目的目录下 在这个目录下&#xff0c;在磁盘中…...

开源情报的发展前景与行业运用

开源情报系统在实际中的应用正随着技术进步和社会需求的增长而不断拓展&#xff0c;其在国家安全、军事、经济、公共卫生等多个领域展现出显著价值。以下是结合最新动态与案例的综合分析&#xff1a; 一、国家安全&#xff1a;从传统到现代的情报体系升级 开源情报在国家安全…...

《黑马前端ajax+node.js+webpack+git教程》(笔记)——node.js教程+webpack教程(nodejs教程)

黑马程序员前端AJAX入门到实战全套教程&#xff0c;包含学前端框架必会的&#xff08;ajaxnode.jswebpackgit&#xff09;&#xff0c;一套全覆盖 文章目录 Node.js与Webpack-01.Node.js入门定义和作用什么是前端工程化&#xff1f;&#xff08;离不开node.js&#xff09;Node.…...

Canvas设计图片编辑器全讲解(一)Canvas基础(万字图文讲解)

一、前序 近两年AI发展太过迅速&#xff0c;各类AI产品层出不穷&#xff0c;AI绘图/AI工作流/AI视频等平台的蓬勃发展&#xff0c;促使图片/视频等复杂内容的创作更加简单&#xff0c;让更多普通人有了图片和视频创作的机会。另一方面用户内容消费也逐渐向图片和视频倾斜。在“…...

disryptor和rabbitmq

disryptor和rabbitmq Disruptor 是什么&#xff1f; Disruptor 是一个由 LMAX Exchange 开发的高性能、低延迟的进程内&#xff08;in-process&#xff09;并发编程框架/库。它最初是为了解决金融交易系统中高吞吐量、低延迟消息传递的需求而设计的。 核心特点和设计理念&am…...

java基础-关键字:static、单例模式

1.例如&#xff1a;我们创造一个人的类&#xff0c;我们希望他是中国人类&#xff0c;所以我们希望所有对象都共有中国人的属性&#xff1b; import org.w3c.dom.ls.LSOutput;import java.sql.Connection; import java.sql.SQLOutput; import java.util.Arrays;public class Ma…...

深入解析PyTorch中MultiheadAttention的参数key_padding_mask与attn_mask

1. 基本背景 在multiheadattention中存在两个mask&#xff0c;一个参数是key_padding_mask&#xff0c;另外一个是attn_mask&#xff0c;尽管这两个参数是被人们所熟知的填充掩码和注意力掩码&#xff0c;但是深度理解以便清晰区分对于深刻理解该架构非常重要。 2. 参数Key_p…...

【Hadoop】--HA高可用搭建--3.2.2

修改环境配置文件 hadoop-env.sh # 在文件末尾添加以下内容&#xff1a; # java_home记得修改 export JAVA_HOME/usr/java/jdk1.8.0xxxx export HDFS_NAMENODE_USERroot export HDFS_DATANODE_USERroot export HDFS_ZKFC_USERroot export HDFS_JOURNALNODE_USERroot export YA…...

OpenCv(7.0)——银行卡号识别

文章目录 前言1.1 模板处理模块读取模板图像并预处理轮廓检测与处理构建数字模板库 1.2 银行卡图像预处理图像尺寸标准化形态学操作二值化与闭操作 1.3 卡号区域定位轮廓筛选逻辑 1.4 数字识别与结果展示完整代码展示总结 前言 本代码实现基于传统图像处理技术&#xff0c;通过…...

新手怎么样制作网站?

如果你是没有任何的建站基础&#xff0c;又没有任何的网站管理经验&#xff0c;那么应该如何开展网站制作呢&#xff1f;今天由我给大家分享一下网站制作的步骤和流程&#xff1a; 一、制定网站的核心主题&#xff1a; 在用户开展网站制作的之前&#xff0c;先确定一下以下的内…...

React集成百度【JSAPI Three】教程(002):设置不同的环境效果

文章目录 2、设置不同的天气2.1 安装antd前端UI库2.2 是否开启动态天空2.3 创建天气组件2.4 代码2.0版本下载2、设置不同的天气 2.1 安装antd前端UI库 安装命令: npm install antd --save2.2 是否开启动态天空 天气中的阴天、多云需要在开启动态天空后才能有效显示。在页面…...

Helm Chart 中配置多个 Docker Registry 地址以实现备用访问

在 Helm Chart 中配置多个 Docker Registry 地址以实现备用访问&#xff0c;可以通过以下几种方式实现&#xff1a; 1. 在 values.yaml 中定义多个 Registry 在 values.yaml 中定义主 Registry 和备用 Registry&#xff0c;以便在部署时灵活切换&#xff1a; # values.yaml …...

星云智控v1.0.0产品发布会圆满举行:以创新技术重构物联网监控新生态

星云智控v1.0.0产品发布会圆满举行&#xff1a;以创新技术重构物联网监控新生态 2024年5月15日&#xff0c;成都双流蛟龙社区党群服务中心迎来了一场备受业界瞩目的发布会——优雅草科技旗下”星云智控v1.0.0”物联网AI智控系统正式发布。本次发布会吸引了包括沃尔沃集团、新希…...

利用ffmpeg截图和生成gif

ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpgffmpeg -i input.mp4 -ss 00:00:10 -vframes 180 output.jpg -vframes 180代表截取180帧, 实测后发现如果视频是60fps,那么会从第10秒截取到第13秒-i input.mp4&#xff1a;指定输入视频文件。-ss 00:00:10&#xff1a;…...

OpenCV CUDA 模块中的矩阵算术运算-----在频域中执行两个复数频谱的逐元素乘法的函数mulSpectrums()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 mulSpectrums()是OpenCV CUDA 模块中用于在频域中执行两个复数频谱的逐元素乘法的函数。 该函数实现了以下运算&#xff1a; d s t s r c 1 ⋅…...

可视化图解算法41:搜索二维矩阵(二维数组中的查找)

1. 题目 牛客网 面试笔试TOP101 | LeetCode 74. 搜索二维矩阵 描述 在一个二维数组array中&#xff08;每个一维数组的长度相同&#xff09;&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺序排序。请完成一个函数&#xf…...

OpenCV CUDA模块中的矩阵算术运算------创建卷积操作对象的工厂方法 cv::cuda::createConvolution

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 createConvolution函数是OpenCV CUDA 模块中用于创建卷积操作对象的工厂方法。它返回一个指向 cv::cuda::Convolution 接口的智能指针&#xff0…...

从代码学习深度学习 - 用于预训练词嵌入的数据集 PyTorch版

文章目录 前言辅助工具代码绘图工具 (utils\_for\_huitu.py)数据处理工具 (utils\_for\_data.py)读取数据集 (PTB)构建词表下采样高频词中心词和上下文词的提取负采样小批量加载训练实例整合代码:构建数据加载器总结前言 词嵌入(Word Embedding)是将词语映射到低维连续向量…...

基于jsp+mysql+Spring的Springboot旅游网站管理系统设计和实现

基于jspmysqlSpring的Springboot旅游网站管理系统设计和实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定…...

【Rust迭代器】Rust迭代器用法解析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

嵌入式学习笔记DAY23(树,哈希表)

一、树 1.树的概念 之前我们一直在谈的是一对一的线性结构&#xff0c;现实中&#xff0c;还存在很多一对多的情况需要处理&#xff0c;一对多的线性结构——树。 树的结点包括一个数据元素及若干指向其子树的分支&#xff0c;结点拥有的子树数称为结点的度。度为0的结点称为叶…...

操作系统————五种页面置换算法(OPT,FIFO,LRU,NRU,加强版NRU)大总结

❤️❤️❤️算法1&#xff1a;最佳置换算法&#xff08;OPT&#xff09; 算法思想&#xff1a; 值得注意的是这是一种理想型算法&#xff0c;实际上并不可能实现&#xff0c;读者需要注意 下面我们来解析一下它的原理&#xff1a; 我们假设有三个内存块&#xff0c;对于页面…...

数据结构(二) 线性表

一. 线性表 1.定义 线性表是由n(n>0)个具有相同数据类型的数据元素构成的有限序列。其中&#xff0c;元素之间通过顺序关系排列&#xff0c;每个元素有且只有一个直接前驱和一个直接后继(除首尾元素外) 二.线性表的顺序表示(顺序表) 1.存储方式 使用连续的内存空间(数组)存储…...

TS04:高性能四通道自动灵敏度校准电容触摸传感器

在现代电子设备中&#xff0c;电容触摸传感器的应用越来越广泛&#xff0c;而高性能的传感器芯片是实现良好用户体验的关键。 TS04 四通道电容触摸传感器&#xff0c;凭借其自动灵敏度校准功能和多种特性&#xff0c;成为理想的解决方案。本文将简要介绍 TS04 的主要特性、功能…...

鸿蒙 系统-安全-程序访问控制-应用权限管控

Ability Kit 提供了一种允许应用访问系统资源&#xff08;如&#xff1a;通讯录等&#xff09;和系统能力&#xff08;如&#xff1a;访问摄像头、麦克风等&#xff09;的通用权限访问方式&#xff0c;来保护系统数据&#xff08;包括用户个人数据&#xff09;或功能&#xff0…...

ArcGIS Pro 3.4 二次开发 - 框架

环境&#xff1a;ArcGIS Pro SDK 3.4 .NET 8 文章目录 框架1 框架1.1 如何在 DockPane 可见或隐藏时订阅和取消订阅事件1.2 执行命令1.3 设置当前工具1.4 激活选项卡1.5 激活/停用状态 - 修改条件1.6 判断应用程序是否繁忙1.7 获取应用程序主窗口1.8 关闭 ArcGIS Pro1.9 获取 …...

打破传统仓库管理困局:WMS如何重构出入库全流程

引言 在制造业与零售业高速发展的今天&#xff0c;仓库管理仍普遍面临效率低、错发漏发频发、库存数据滞后等痛点。人工登记导致30%的错单率&#xff0c;货位混乱让拣货耗时增加50%&#xff0c;而账实不符引发的二次采购成本更吞噬着企业利润。如何突破传统管理桎梏&#xff1…...

npm 安装时 SSL 证书过期问题笔记

问题描述: npm error code CERT_HAS_EXPIRED npm error errno CERT_HAS_EXPIRED npm error request to https://registry.npm.taobao.org/axios failed, reason: certificate has expired 这表明当前配置的 npm 镜像源&#xff08;淘宝镜像 https://registry.npm.taobao.org&…...

【大数据】MapReduce 编程-- PageRank--网页排名算法,用于衡量网页“重要性”-排序网页

PageRank 是 Google 创始人拉里佩奇&#xff08;Larry Page&#xff09;和谢尔盖布林&#xff08;Sergey Brin&#xff09;在 1998 年提出的一种网页排名算法&#xff0c;用于衡量网页“重要性”的一种方式。它是搜索引擎中用于排序网页的一种基础算法 一个网页越是被其他重要…...

Craw4AI:LLM友好的网页爬虫

GitHub&#xff1a;https://github.com/unclecode/crawl4ai 更多AI开源软件&#xff1a;发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI Crawl4AI旨在让网页爬取和数据提取变得简单而高效。无论构建复杂的 AI 应用程序还是增强大语言模型&#xff0c;Crawl4AI 都能…...

idea 安装飞算-javaAI 插件使用

文章目录 前言idea 安装飞算-javaAI 插件使用1. 介绍一下飞算-AI2. 安装使用 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的…...

Lombok

Lombok Lombok 是一个 Java 库&#xff0c;通过注解自动生成样板代码&#xff08;如 Getter/Setter、构造函数等&#xff09;&#xff0c;从而简化开发。在你提供的代码中&#xff0c;AllArgsConstructor 就是一个 Lombok 注解。以下是 Lombok 常用注解及其作用的详细说明&…...

起点与破圈

写了多年代码&#xff0c;我为什么开始转向算法&#xff0c;直到如今投身于大模型领域&#xff1f; 作为一名拥有 10 年经验的开发者&#xff0c;我的职业路径几乎覆盖了技术发展的多个阶段。从最早使用 Flask/Django 开发网站&#xff0c;到后来构建大数据系统、设计服务器架…...