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

【三维分割】LangSplat: 3D Language Gaussian Splatting(CVPR 2024 highlight)

论文:https://arxiv.org/pdf/2312.16084
代码:https://github.com/minghanqin/LangSplat


文章目录

  • 一、3D language field
  • 二、回顾 Language Fields的挑战
  • 三、使用SAM学习层次结构语义
  • 四、Language Fields 的 3DGS
  • 五、开放词汇查询(Open-vocabulary Querying)
  • 六、实验
  • 代码实现


一、3D language field

  早期构建三维特征场的尝试包括蒸馏特征场[20]和神经特征融合场[43]。他们通过跨多个视图将LSeg [21]或DINO [4]特征提炼为一个NeRF,学习了3D一致特征。Shen等人[39]通过将clip征提取成NeRF,进一步提取特征场进行few-shot 语言引导的自动操作。[Panoptic lifting for 3d scene understanding with neural fields. CVPR 2023][In-place scene labelling and understanding with implicit scene representation. ICCV 2021]将语义信息嵌入到NeRF中,例如,Semantic NeRF [54]在NeRF中联合编码外观和几何语义,用于新的语义视图合成。LERF [18] 是第一个将CLIP特性嵌入到NeRF中的公司,它利用强大的CLIP表示方式实现了开放词汇表的3D查询。DINO特性也被用于监督LERF,以提高其性能。Liu等人[Weakly supervised 3d open-vocabulary segmentation.NeurIPS 2023]还利用CLIP和DINO特征训练NeRF模型用于3D开放词汇分割。

  

二、回顾 Language Fields的挑战

  输入图像 I ∈ R 3 × H × W I∈R^{3×H×W} IR3×H×W;取一组校准图像{ I t ∣ t = 1 , 2 , . . . , T I_t|t=1,2,...,T Itt=1,2,...,T}作为输入,用其训练一个3D Language Fields Φ Φ Φ。大多数现有的方法使用CLIP编码器 V V V 提取图像特征,监督3D语言字段 Φ Φ Φ,利用CLIP对齐的文本图像潜在空间,促进开放词汇表查询。然而, CLIP嵌入是由图像对齐的,而不是由像素对齐的 。即 V ( I t ) ∈ R D V(I_t)∈R^D V(It)RD是一个图像级的特征,而我们需要一个像素对齐的语言嵌入 L t ∈ R D × H × W L_t∈R^{D×H×W} LtRD×H×W。同时,像素对齐的语言特征具有点模糊性 ,对象上的单个点有助于影响区域的多个语义层次(例如,猫耳朵上的一个点,同时指向猫的耳朵、猫头和整个猫,应该被三种类型的文本查询激活)

  为了解决问题,现有方法[18,24]从裁剪后的图像patch中提取出CLIP特征的层次结构,即对坐标为 v = ( w , h ) v=(w,h) v=(w,h)的像素,在不同物理尺度下,以v为中心patch中获得相应的CLIP特征,patch可以完全包含对象。多尺度patch方法有两个局限性首先,patch特征是不精确的,因为它们经常包含额外的上下文对象信息,导致过度平滑的语言域,对象边界模糊。为了缓解不稳定的问题,大多数方法[18,24]利用额外的像素对齐的DINO特性来监督网络。但是,学习到的三维语言特征仍然不精确,如图1所示。其次,推理需要在多个尺度上同时渲染,才能找到最优尺度。随着尺度的数量可能高达30 [18],大大降低了推理速度。

  除了渲染目标,三维建模方法的选择也很重要。大多数现有的方法[2,43]都使用NeRF来进行3D表示,它们在每个3D点上学习一个语言特征,然后将该语言特征渲染到图像上,类似于彩色渲染。然而,基于NeRF的方法受到其耗时的渲染过程的限制;同时,在实际应用中,特别是在智能机器人等领域,对高效开放词汇查询的需求也很高。

三、使用SAM学习层次结构语义

在这里插入图片描述

  SAM 可以准确地将一个像素与周围属于同一对象的像素进行分组,从而将图像分割成多个边界清晰的对象掩模。利用SAM,我们可以捕获三维场景中对象的语义层次,为每个输入图像提供准确和多尺度的分割map。

  具体来说,使用32×32的规则网格进行point 提示,获得三个不同语义级别 mask: M 0 s 、 M 0 p 、 M 0 w M_0^s、M_0^p、M_0^w M0sM0pM0w,分别代表子部分、部分和整个物体。然后根据IoU评分、stability评分和mask之间的重叠率,去除集合的冗余mask。过滤后的mask 集合为: M s 、 M p 、 M w M^s、M^p、M^w MsMpMw,将场景划分为语义上有意义的区域,用于提取区域CLIP特征。在数学上,所获得的像素对齐的语言嵌入为( M l ( v ) M^l (v) Ml(v)表示在语义级别 l l l上,像素 v v v属于的mask):

在这里插入图片描述

  从3D语言场景中渲染的每个像素,现在都拥有一个与精确的语义上下文相一致的CLIP特性。这种对齐减少了模糊性,并提高了基于语言的查询的准确性。我们可以学习一个准确的三维语言场,即使没有常用的DINO正则化。我们基于SAMs的方法的另一个优点是预定义的 语义尺度。由于我们对“整体”、“部分”和“子部分”级别有不同的分割映射,因此我们可以在这些预定义的尺度上直接查询三维语言字段。这就消除了跨多个绝对尺度进行密集搜索的需要,从而使查询过程更加高效

四、Language Fields 的 3DGS

  在获得了一组二维图像{ L t l ∣ t = 1 , . . . , T L^l_t|t=1,...,T Ltlt=1,...,T}上的语言嵌入后,我们可以通过建模三维点和二维像素之间的关系来学习三维语言场景。3DGS明确地将三维场景表示为各向异性三维高斯分布的集合,每个高斯 G ( x ) G (x) G(x) 由均值 µ ∈ R 3 µ∈R^3 µR3和协方差矩阵Σ参数化:

在这里插入图片描述

其中 c i c_i ci是第 i i i个高斯值的颜色,N表示tile中的高斯值, C ( v ) C(v) C(v)是像素v处的渲染颜色, α i = o i G i 2 D ( ⋅ ) α_i = o_iG_i^{2D}(·) αi=oiGi2D() o i o_i oi是第 i i i个高斯的不透明度, G i 2 D ( ⋅ ) G_i^{2D}(·) Gi2D()表示投影到二维上的第i个高斯的函数。

  本文提出了3D language GS,它用三个language embedding { f s , f p , f w f^s,f^p,f^w fs,fp,fw}来增强每个3DGS。这些嵌入来自于CLIP特征。增强的高斯函数被称为三维语言高斯,采用基于tile的光栅化器来保持渲染效率:

在这里插入图片描述

F l ( v ) F^l(v) Fl(v)表示语义级别 l l l在像素 v v v处渲染的语言嵌入。通过将语言信息直接合并到3DGS中,3DLanguage Fields 能够响应基于语言的查询。

   由于CLIP嵌入是高维特征,直接在CLIP潜在空间上学习 f l f^l fl显著增加了内存和时间成本。与学习没有球谐系数的RGB颜色相比,学习512维CLIP特征使存储3D高斯数据的内存需求增加了35倍以上,很容易导致L1 cache内存耗尽。为了降低内存成本和提高效率,我们 引入了一种场景级别的 language autoencoder,将场景中的CLIP嵌入映射到一个较低维的潜在空间,从而减少了内存需求。CLIP模型使用4亿对(图像、文本)对进行训练,它的d维潜在空间可能非常紧凑,因为它需要在这个空间中对齐任意的文本和图像。然而,Language Fields Φ Φ Φ 是特定于场景的,可以利用场景先验来压缩CLIP特征。事实上,对于每个输入图像,我们将得到数百个被SAM mask,明显小于CLIP训练中使用的图像数量。因此,一个场景中所有的mask都稀疏地分布在CLIP潜在空间中,允许我们使用一个场景特定的 Autoencoder进一步压缩这些CLIP特征

  编码器 E E E D D D维CLIP特征 L t l ( v ) ∈ R D L^l_t(v)∈R^D Ltl(v)RD映射到 H t l ( v ) = E ( L t l ( v ) ) ∈ R D H_t^l(v) = E(L^l_t (v))∈R^D Htl(v)=E(Ltl(v))RD,其中d≪D。解码器 Ψ Ψ Ψ从压缩表示重构原始CLIP嵌入。Autoencoder 在CLIP嵌入上重建目标为 ( d a e d_{ae} dae表示距离函数,具体采用 l 1 l_1 l1和余弦距离损失):

在这里插入图片描述

  Language Gaussian 在特定场景的latent space 中学习 language embedding,而不是CLIP潜在空间,有 f l ∈ R d f^l∈R^d flRd。实验取d = 3(模型效率和准确性的均衡)。与直接建模D维CLIP嵌入相比,我们的方法通过合并场景先验显著降低了内存成本。语言嵌入的优化目标:

在这里插入图片描述
  推理遵循等式(4),将language embedding 从3D渲染到2D,并使用场景特定解码器 Ψ Ψ Ψ恢复CLIP图像嵌入 Ψ ( F t l ) ∈ R D × H × W Ψ(F_t^l)∈R^{D×H×W} Ψ(Ftl)RD×H×W这允许使用CLIP文本编码器进行开放词汇表查询

  

五、开放词汇查询(Open-vocabulary Querying)

  由于CLIP模型提供的图像和文本之间的对齐空间,学到的3D language field 支持开放词汇表3D查询,包括开放词汇表3D对象定位和开放词汇表3D语义分割。许多现有的开放词汇表三维语义分割方法[24]通常从一个类别列表中选择类别,其中包括图像中出现的类别。然而,获得一个全面的野外场景类别列表是具有挑战性的。与它们不同的是,我们的方法在给定任意文本查询时生成精确的对象mask。

  按照LERF计算language embeddinig ϕ i m g ϕ_{img} ϕimg 与每个文本查询 ϕ q r y ϕ_{qry} ϕqry的相关性得分(其中, ϕ c a n o n i ϕ^i_{canon} ϕcanoni是从“object”, “things”, “stuff”,
和“texture”中选择的预定义规范短语的CLIP嵌入):

在这里插入图片描述
每个文本查询可以得到三个相关性映射,表示在特定的语义级别上的结果。遵循在LERF 的策略,选择产生最高相关性得分的语义level。对于三维对象定位任务,我们直接选择相关性得分最高的点。对于三维语义分割任务,我们过滤出相关性分数低于所选阈值的点,并预测剩余区域的对象mask。

六、实验

  数据集。LERF数据集[18]是使用iPhone的app多摄像头捕获的,由复杂的野外场景组成,为三维对象定位任务设计的, 这里我们通过注释文本查询的地面真相掩码来扩展LERF数据集,允许在LERF数据集上评估开放词汇表的三维语义分割。由于用于三维对象定位的原始LERF注释相对简单,因此在某些场景下的性能已经接近饱和。因此,我们进一步手动注释了其他具有挑战性的定位样本,以更好地评估方法的性能。我们报告了在LERF [18]后的三维对象定位任务的定位精度,并报告了三维语义分割任务的IoU结果。 我们还使用了3DOVS数据集[24],包含了不同pose和背景下捕获的长尾对象的集合。这个数据集是为开放词汇表三维语义分割开发的,其中提供了完整的类别列表。 其他方法使用完整的列表来生成预测的掩码,而我们只使用查询类别来生成相应的掩码。mIoU度量用于这个数据集

  实验细节。图像语言特征提取,使用OpenCLIP ViT-B/16模型;SAM使用ViT-H模型来分割二维mask;每个场景先使用3DGS来训练一个RGB,训练3万次迭代,每个场景都包含大约250万个点;然后固定三维高斯的所有其他参数,如均值和不透明度来训练我们的三维language gaussian。在这个阶段,只有语言特征是可学习的。语言特性训练3万次迭代,Autoencoder由一个MLP实现512维的CLIP特征压缩;1440×1080分辨率的场景,模型在NVIDIA RTX-3090 GPU上进行了25分钟训练,大约需要4GB的内存。

  LERF数据集上算法对比。表1:算法达到84.3%的总体准确率,优于LERF;表2显示了三维语义分割的IoU结果,比LERF好14.0%

在这里插入图片描述

  可视化分析图1按照[20]PCA成分分析,可视化了学习到的三维language field。可以看到,LERF学习到的特征不能生成物体之间的清晰的边界,而我们的方法仅使用CLIP特征给出精确的物体形状。图3和图4中展示了对象定位和语义分割的可视化结果。我们观察到,LERF产生的激活区域更分散,而我们的激活区域更集中,与LERF产生的激活区域相比,我们的激活区域可以更好地符合真实形状

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  

  

  消融实验

在这里插入图片描述

代码实现

  1. 安装环境
# 1.克隆项目到本地
git clone https://github.com/minghanqin/LangSplat.git --recursive# 2.安装依赖包
conda env create --file environment.yml
conda activate langsplat# 3.安装 sam
pip install git+https://github.com/facebookresearch/segment-anything.git
# 4.克隆并安装 segment-anything-langsplat
git clone https://github.com/minghanqin/segment-anything-langsplat.git
cd segment-anything-langsplat
pip install .
  1. 准备数据(数据应为以下格式)
<dataset_name>
|---images
|   |---<image 0>
|   |---<image 1>
|   |---...
|---input
|   |---<image 0>
|   |---<image 1>
|   |---...
|---output
|   |---<dataset_name>
|   |   |---point_cloud/iteration_30000/point_cloud.ply
|   |   |---cameras.json
|   |   |---cfg_args
|   |   |---chkpnt30000.pth
|   |   |---input.ply
|---sparse|---0|---cameras.bin|---images.bin|---points3D.bin
  1. 开始训练(分为5步执行,可直接执行process.sh)
# 1: 生成场景的 Language Feature。图片需要放在 <dataset_name>中的"input" 文件夹
python preprocess.py --dataset_path  data/lego(这是我自己的路径) # 2.训练 Autoencoder,得到低维的 3-dims Language Feature
cd autoencoder
python train.py --dataset_path /home/xzz/LangSplat/data/lego(这是我自己的路径) --dataset_name lego --encoder_dims 256 128 64 32 3 --decoder_dims 16 32 64 128 256 256 512 --lr 0.0007python test.py --dataset_name $dataset_path --output
# 3.最终训练语言场for level in 1 2 3
dopython train.py -s $dataset_path -m output/${casename} --start_checkpoint $dataset_path/$casename/chkpnt30000.pth --feature_level ${level}# e.g. python train.py -s data/sofa -m output/sofa --start_checkpoint data/sofa/sofa/chkpnt30000.pth --feature_level 3
done# 4.对不同level分割结果的渲染
for level in 1 2 3
do# render rgbpython render.py -m output/${casename}_${level}# render language featurespython render.py -m output/${casename}_${level} --include_feature# e.g. python render.py -m output/sofa_3 --include_feature
done

相关文章:

【三维分割】LangSplat: 3D Language Gaussian Splatting(CVPR 2024 highlight)

论文&#xff1a;https://arxiv.org/pdf/2312.16084 代码&#xff1a;https://github.com/minghanqin/LangSplat 文章目录 一、3D language field二、回顾 Language Fields的挑战三、使用SAM学习层次结构语义四、Language Fields 的 3DGS五、开放词汇查询&#xff08;Open-voca…...

Wireshark:自定义类型帧解析

文章目录 1. 前言2. 背景3. 开发 Lua 插件 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. 背景 Wireshark 不认识用 tcpdump 抓取的数据帧&#xff0c;仔细分析相关代码和数据帧后&#xff0c…...

ES6 特性全面解析与应用实践

1、let let 关键字用来声明变量&#xff0c;使用let 声明的变量有几个特点&#xff1a; 1) 不允许重复声明 2) 块儿级作用域 3) 不存在变量提升 4) 不影响作用域链 5) 暂时性死区 6&#xff09;不与顶级对象挂钩 在代码块内&#xff0c;使用let命令声明变量之前&#x…...

Qt跨线程信号槽调用:为什么信号不能像普通函数那样调用

1. 信号与槽机制的基本原理 在 Qt 中&#xff0c;信号与槽机制是一种事件驱动的通信方式&#xff0c;用于对象之间的解耦交互。其关键特点如下&#xff1a; 信号不能直接调用 信号只是一个声明&#xff0c;并没有实际的函数实现。它们通过 emit 关键字在对象内部被触发&…...

Zookeeper(79)如何进行Zookeeper的监控?

对 Zookeeper 进行监控是确保其高可用性和性能的关键步骤。监控 Zookeeper 通常包括以下几个方面&#xff1a; 健康检查&#xff1a;检查 Zookeeper 节点是否在线。性能指标&#xff1a;监控关键性能指标&#xff0c;如请求延迟、事务处理量等。日志监控&#xff1a;监控 Zook…...

【江科大STM32】TIM输出比较-PWM功能(学习笔记)

一、PWM驱动LED呼吸灯 接线图&#xff1a; PWM的初始化: 具体步骤&#xff1a; ①RCC开启时钟&#xff08;把要用的TIM外设和GPIO外设时钟都打开&#xff09; ② 配置时基单元&#xff0c;包括前面的时钟源选择 ③配置输出比较单元&#xff0c;里面包括CCR的值&#xff…...

playbin之autoplug_factories源码剖析

一、autoplug_factories_cb /* Called when we must provide a list of factories to plug to pad with caps.* We first check if we have a sink that can handle the format and if we do, we* return NULL, to expose the pad. If we have no sink (or the sink does not…...

Spring Cloud之注册中心之Nacos的使用

目录 Naacos 服务注册/服务发现 引⼊Spring Cloud Alibaba依赖 引入Nacos依赖 引入Load Balance依赖 配置Nacos地址 服务端调用 启动服务 Naacos Nacos是Spring Cloud Alibaba的组件, Spring Cloud Alibaba遵循Spring Cloud中定义的服务注册, 服务发现规范. 因此使⽤Na…...

React antd的datePicker自定义,封装成组件

一、antd的datePicker自定义 需求&#xff1a;用户需要为日期选择器的每个日期单元格添加一个Tooltip&#xff0c;当鼠标悬停时显示日期、可兑换流量余额和本公会可兑流量。这些数据需要从接口获取。我需要结合之前的代码&#xff0c;确保Tooltip正确显示&#xff0c;并且数据…...

【tplink】校园网接路由器如何单独登录自己的账号,wan-lan和lan-lan区别

老式路由器TPLINK&#xff0c;接入校园网后一人登录&#xff0c;所有人都能通过连接此路由器上网&#xff0c;无法解决遂上网搜索&#xff0c;无果&#xff0c;幸而偶然看到一个帖子说要把信号源网线接入路由器lan口&#xff0c;开启新世界。 一、wan-lan&#xff0c;lan-lan区…...

散户情绪周期模型(情绪影响操作)

目录 一、个股上涨阶段情绪演化二、个股下跌阶段情绪演化三、底部震荡阶段情绪演化四、情绪观察与操作工具箱1. 情绪自测量表&#xff08;每日收盘后记录&#xff09;2. 情绪-指标对照表 五、高阶情绪管理技巧1.认知重构训练2.生理指标监控&#xff08;需配合智能手表&#xff…...

对比Grok3 普通账户与 30 美元 Super 账户:默认模式、Think 和 DeepSearch 次数限制以及如何升级

面对这个马斯克旗下的"最聪明"的人工智能&#xff0c;很多人都不知道他们的基本模式&#xff0c;本期将从几个方面开始说明&#xff1a; Grok3的背景与功能 账户类型及其详细背景 使用限制 使用限制对比表 如何充值使用 Super 账户 纯干货&#xff0c;带你了解…...

小程序Three Dof识别 实现景区AR体验

代码工程 GitCode - 全球开发者的开源社区,开源代码托管平台 dof...

主流Linux发行版优缺点整理及对比指南(文末附表格)

Linux发行版种类繁多&#xff0c;各有其设计理念和适用场景。本文整理常见发行版的优缺点&#xff0c;并附对比表格&#xff0c;帮助用户根据需求选择最适合的系统。 1. Ubuntu 定位&#xff1a;适合新手的通用型桌面/服务器系统优点&#xff1a; 安装简单&#xff0c;社区支持…...

用大白话解释搜索引擎Elasticsearch是什么,有什么用,怎么用

Elasticsearch是什么&#xff1f; Elasticsearch&#xff08;简称ES&#xff09;就像一个“超级智能的图书馆管理系统”&#xff0c;专门帮你从海量数据中快速找到想要的信息。它底层基于倒排索引技术&#xff08;类似书籍的目录页&#xff09;&#xff0c;能秒级搜索和分析万…...

坐标变换及视图变换和透视变换(相机透视模型)

文章目录 2D transformationScaleReflectionShear&#xff08;切变&#xff09;Rotation around originTranslationReverse变换顺序复杂变换的分解 齐次坐标&#xff08;Homogenous Coordinates&#xff09;3D transformationScale&TranslationRotation Viewing / Camera t…...

C# 基于.NET Framework框架WPF应用程序-MQTTNet库实现MQTT消息订阅发布

C# 基于.NET Framework框架WPF应用程序-MQTTNet库实现MQTT消息订阅发布 MQTT简述MQTTNet简述创建项目&#xff08;基于.NET Framework框架&#xff09;安装MQTTNet库项目源码运行效果 MQTT简述 mqtt官网 MQTTNet简述 MQTTnet MQTTnet 是一个强大的开源 MQTT 客户端库&#…...

Python实现视频播放器

Python实现视频播放器 Python实现视频播放器&#xff0c;在如下博文中介绍过 Python实现本地视频/音频播放器https://blog.csdn.net/cnds123/article/details/137874107 Python简单GUI程序示例 中 “四、视频播放器” https://blog.csdn.net/cnds123/article/details/122903…...

介绍一款飞算JavaAI编程工具,集成到idea,图文并茂

飞算的插件下载地址&#xff0c;里边也有安装步骤&#xff1a; JavaAI 下载 从file-》setting-》plugin&#xff0c;然后走图中所示 选择从磁盘安装插件&#xff1a;找到下载好的压缩包然后进行idea重启 根据提示模块可以生成代码&#xff0c;就是需要等待&#xff0c;后期不…...

【大数据】Spark Executor内存分配原理与调优

【大数据】Spark Executor内存管理与调优 Executor内存总体布局 统一内存管理 堆内内存 (On-heap Memory) 堆外内存 (Off-heap Memory) Execution 内存和 Storage 内存动态占用机制 任务内存管理&#xff08;Task Memory Manager&#xff09; 只用了堆内内存的示例 用了…...

Python 课堂点名桌面小程序

一、场景分析 闲来无事&#xff0c;老婆说叫我开发一个课堂点名桌面小程序&#xff0c;给她在课堂随机点名学生问问题。 人生苦短&#xff0c;那就用 Python 给她写一个吧。 二、依赖安装 因为要用到 excel&#xff0c;所以安装两个依赖&#xff1a; pip install openpyxl…...

配置Spring Boot中的Jackson序列化

配置Spring Boot中的Jackson序列化 在开发基于Spring Boot的应用程序时&#xff0c;Jackson是默认的JSON序列化和反序列化工具。它提供了强大的功能&#xff0c;可以灵活地处理JSON数据。然而&#xff0c;Jackson的默认行为可能无法完全满足我们的需求。例如&#xff0c;日期格…...

Rust学习总结之-match

Rust 有一个叫做 match 的极为强大的控制流运算符&#xff0c;它允许我们将一个值与一系列的模式相比较&#xff0c;并根据相匹配的模式执行相应代码。模式可由字面量、变量、通配符和许多其他内容构成。 一&#xff1a;match定义 可以把 match 表达式想象成某种硬币分类器&a…...

实践教程:使用DeepSeek实现PDF转Word的高效方案

&#x1f388;Deepseek推荐工具 PDF文件因其跨平台、格式稳定的特性被广泛使用&#xff0c;但在内容编辑场景中&#xff0c;用户常需将PDF转换为可编辑的Word文档。传统的付费工具&#xff08;如Adobe Acrobat&#xff09;或在线转换平台存在成本高、隐私风险等问题。本文将使…...

鸿蒙 ArkUI 实现 2048 小游戏

2048 是一款经典的益智游戏&#xff0c;玩家通过滑动屏幕合并相同数字的方块&#xff0c;最终目标是合成数字 2048。本文基于鸿蒙 ArkUI 框架&#xff0c;详细解析其实现过程&#xff0c;帮助开发者理解如何利用声明式 UI 和状态管理构建此类游戏。 一、核心数据结构与状态管理…...

az devops login报错:Failed to authenticate using the supplied token.

PowerShell&#xff0c;az devops login报错&#xff1a; Failed to authenticate using the supplied token. 检查了一下PAT token是对的。 检查命令&#xff1a; az devops login --organization https://dev.azure.com/xxxxxxxx/ 乍一看好像没问题问题&#xff0c;然后想…...

C ++ 静态存储区+堆空间

静态存储区 特点&#xff1a; 1&#xff1a;生命周期很长&#xff0c;main函数开始之前就存在&#xff0c;main函数结束&#xff0c;才结束 2&#xff1a;同名变量的管理&#xff0c;与栈不一样(重名变量前提&#xff0c;作用域一样)&#xff1a; 栈&#xff1a;遇到重名变…...

gtest 和 gmock讲解

Google Test&#xff08;gtest&#xff09;和 Google Mock&#xff08;gmock&#xff09;是 Google 开发的用于 C 的测试框架和模拟框架&#xff0c;以下是对它们的详细讲解&#xff1a; Google Test&#xff08;gtest&#xff09; 简介 Google Test 是一个用于 C 的单元测试框…...

docker的下载与使用(一)

本文默认使用linux系统以及会linux的基本指令&#xff0c;windows下安装docker较为繁琐 docker是什么 Docker 是一个开源的应用容器引擎&#xff0c;基于go 语言并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&…...

鸿蒙HarmonyOS NEXT开发:组件-样式-基础 2

// 1 // 2 ArkUI 基本语法 // 方舟开发框架(简称:ArkUI),是一套 构建HarmonyOS应用 界面 的框架。 // 构建页面的最小单位就是 "组件"。 // 组件名(参数) { // 内容 // } // .属性1() // .属性2() // .属性N() import text from @ohos.graphics.text // @En…...

如何理解数据库的几种事务隔离级别?以及如何理解脏读、不可重复度、幻读?

在多用户并发访问数据库时&#xff0c;数据库系统需要通过事务隔离级别来控制不同事务之间的相互影响。不同的隔离级别可以避免或减少在并发环境下可能出现的数据不一致或冲突。常见的事务隔离级别有四种&#xff1a;读未提交&#xff08;Read Uncommitted&#xff09;、读已提…...

计算机网络基础简答题资料(对口高考)

1、什么是计算机网络&#xff1f;计算机网络的功能有哪些&#xff1f; 答案&#xff1a;计算机网络&#xff0c;是指将分布在不同地理位置、具有独立功能的多台计算机及其外围设备&#xff0c;通过通信设备和通信线路连接起来&#xff0c;在网络操作系统、网络管理软件及网络通…...

在docker容器中运行vllm部署deepseek-r1大模型

# 在本地部署python环境 cd /app/ python -m venv myenv # 激活虚拟环境 source /app/myenv/activate # 要撤销激活一个虚拟环境&#xff0c;请输入: deactivate# 进入虚拟环境安装modelscope pip install modelscope# 下载大模型&#xff08;7B为例&#xff09; modelscope do…...

HeidiSQL如何替换代码中的某些信息

1.SQL代码里的某些内容&#xff0c;比如2025年这个日期信息&#xff0c;我想替换成2024年的&#xff0c;按照:“搜索”---“替换文本”然后按照图片上的步骤来就可以了&#xff0c;特别是在sql代码有几百行甚至几千行的时候使用 2.SQL代码的表格对象中的数据如何一次性把某个内…...

Wireshark 插件开发实战指南

Wireshark 插件开发实战指南 环境搭建流程图 #mermaid-svg-XpNibno7BIyfzNn5 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-XpNibno7BIyfzNn5 .error-icon{fill:#552222;}#mermaid-svg-XpNibno7BIyfzNn5 .error-t…...

【大模型➕知识图谱】大模型结合医疗知识图谱:解锁智能辅助诊疗系统新范式

【大模型➕知识图谱】大模型结合医疗知识图谱:解锁智能辅助诊疗系统新范式 大模型结合医疗知识图谱:解锁智能辅助诊疗系统新范式引言一、系统架构1.1 系统架构图1.2 架构模块说明1.2.1 用户输入1.2.2 大模型(语义理解与意图识别)1.2.3 Agent(问题解析与任务分配)1.2.4 问…...

大模型应用落地具体规划方案

摘要 本篇文章主要探讨大模型应用落地的具体规划方案&#xff0c;包含六点内容的分享&#xff0c;分别是&#xff1a; 大模型本地部署架构 大模型应用交互场景 基于阿里云RAG 项目的实现方案 大模型推荐落地场景方案 大模型应用落地发展规划 大模型开源架构选型推荐 在阅…...

【Qt】MVC设计模式

目录 一、搭建MVC框架 二、创建数据库连接单例类SingleDB 三、数据库业务操作类model设计 四、control层&#xff0c;关于model管理类设计 五、view层即为窗口UI类 一、搭建MVC框架 里面的bin、lib、database文件夹以及sqlite3.h与工程后缀为.pro文件的配置与上次发的文章…...

python量化交易——金融数据管理最佳实践——qteasy创建本地数据源

文章目录 qteasy金融历史数据管理总体介绍本地数据源——DataSource对象默认数据源查看数据表查看数据源的整体信息最重要的数据表其他的数据表 从数据表中获取数据向数据表中添加数据删除数据表 —— 请尽量小心&#xff0c;删除后无法恢复&#xff01;&#xff01;总结 qteas…...

深入探索Python机器学习算法:监督学习(线性回归,逻辑回归,决策树与随机森林,支持向量机,K近邻算法)

文章目录 深入探索Python机器学习算法&#xff1a;监督学习一、线性回归二、逻辑回归三、决策树与随机森林四、支持向量机五、K近邻算法 深入探索Python机器学习算法&#xff1a;监督学习 在机器学习领域&#xff0c;Python凭借其丰富的库和简洁的语法成为了众多数据科学家和机…...

word转换为pdf后图片失真解决办法、高质量PDF转换方法

1、安装Adobe Acrobat Pro DC 自行安装 2、配置Acrobat PDFMaker &#xff08;1&#xff09;点击word选项卡上的Acrobat插件&#xff0c;&#xff08;2&#xff09;点击“首选项”按钮&#xff0c;&#xff08;3&#xff09;点击“高级配置”按钮&#xff08;4&#xff09;点…...

【MATLAB例程】三维下的IMM(交互式多模型),模型使用CV(匀速)和CA(匀加速)

给出三维下的交互式多模型&#xff08;IMM&#xff09;matlab例程&#xff0c;模型使用匀速运动CV和匀加速运动CA&#xff0c;滤波使用EKF&#xff08;扩展卡尔曼滤波&#xff09; 文章目录 代码运行结果程序结构 代码讲解模型定义&#xff1a;轨迹生成&#xff1a;IMM核心流程…...

千峰React:Hooks(下)

useLayoutEffect useLayoutEffect在useEffect之前触发 这样会闪屏&#xff0c;因为是异步的&#xff0c;两次都渲染了 import {useEffect,useState } from react;function App() {const [msg,setMsg] useState(hello App)useEffect(() > {setMsg(hello useEffect)});retu…...

突破网络壁垒:实现 Mac SSH 访问 Windows WSL Ubuntu 的最佳实践20250301

突破网络壁垒&#xff1a;实现 Mac SSH 访问 Windows WSL Ubuntu 的最佳实践 背景与痛点 在现代开发环境中&#xff0c;开发者通常会面临不同操作系统之间的协同工作。例如&#xff1a; 主要开发环境位于 Windows 的 WSL Ubuntu 子系统需要从局域网内的 Mac 设备进行远程访问…...

【开源-鸿蒙土拨鼠大理石系统】鸿蒙 HarmonyOS Next App+微信小程序+云平台

✨本人自己开发的开源项目&#xff1a;土拨鼠充电系统 ✨踩坑不易&#xff0c;还希望各位大佬支持一下&#xff0c;在GitHub给我点个 Start ⭐⭐&#x1f44d;&#x1f44d; ✍GitHub开源项目地址&#x1f449;&#xff1a;https://github.com/lusson-luo/HarmonyOS-groundhog-…...

RAG 阿里云

RAG-阿里云Spring AI Alibaba官网官网 RAG-阿里云Spring AI Alibaba官网官网 AI应用跑起来&#xff0c;取消一下航班的操作666...

python -ssh学习

def exe_sshcmd(ip,username,userpswd,port,cmd): """ 功能&#xff1a;SSH登录到指定设备&#xff0c;并执行对应的命令 入参&#xff1a;前四项为ssh登录shell的ip和port&#xff0c;具备管理员权限的用户名和密码&#xff0c; cmd可以…...

【Java学习】内部类

面向对象系列六 一、类级别 1.静态成员 2.非静态成员与方法 二、类的创建与成员管理 1.类的创建 2.类的成员管理 三、常见的内部类 1.非静态内部类 2.静态内部类 3.匿名内部类 4.局部内部类 一、类级别 1.1静态成员 静态成员是类级别的是能一路直属都是在类层面的&…...

养生,开启健康生活之门

在这个快节奏的时代&#xff0c;人们在忙碌奔波中&#xff0c;往往忽略了自身健康。养生保健&#xff0c;不再是老年人的专属&#xff0c;而是各个年龄段维持良好生活状态的关键&#xff0c;它是我们开启健康生活的一把钥匙。 规律作息是养生的基石。人体就像一台精密的仪器&am…...

1-3压缩命令

文章目录 1. tar1.1 压缩&#xff08;.tar.gz .tgz .tar.bz2 &#xff09;1.2 解压缩(.tar.gz .tgz .tar.bz2 ) 2.zip2.1 压缩(.zip)2.2 解压缩 3.xz3.1 压缩&#xff08;.tar.xz&#xff09;3.2 解压缩 1. tar 1.1 压缩&#xff08;.tar.gz .tgz .tar.bz2 &#xff09; c…...