【论文解读】CP-SLAM: Collaborative Neural Point-based SLAM System_神经点云协同SLAM系统(上)

目录

1 Abstract

 2 Related Work

2.1 单一智能体视觉SLAM(Single-agent Visual SLAM)

2.2 协同视觉SLAM(Collaborative Visual SLAM)

2.3 神经隐式表示(Neural Implicit Representation)

3 Method

3.1 神经点云里程计(Neural Point based Odometry )

3.2 循环检测和子图对齐 (Loop Detection and Sub-Map Alignment)

 3.3 分布式到集中式学习(Distributed-to-Centralized Learning)

3.4 位姿图优化和全局地图细化(Pose Graph Optimization and Global Map Refinement) 

4 实验

5 结论


论文:CP-SLAM: Collaborative Neural Point-based SLAM System | OpenReview

Thirty-seventh Conference on Neural Information Processing Systems

代码: 尚未公布

aaa0559fff0b404cbfc8f307ec3aa905.png

1 Abstract

        这篇论文介绍了一种基于协同隐式神经网络同步定位与地图构建(SLAM)系统,输为入RGB-D图像序列,系统包括完整的前端和后端模块,包括里程计、循环检测、子地图融合和全局优化。

        为了在一个统一的框架中实现所有这些模块,文章提出了一种新颖的基于神经网络的三维场景表示方法,其中每个点维护一个可学习的神经特征用于场景编码,并与特定的关键帧相关联。

        此外,我们提出了一种分布式到集中式的学习策略,用于协同隐式SLAM,以提高一致性和合作。 还提出了一种新颖的全局优化框架,类似于传统的捆绑调整,以提高系统的准确性。

        在各种数据集上的实验证明了所提方法在相机跟踪和地图构建方面的优越性。

 2 Related Work

2.1 单一智能体视觉SLAM(Single-agent Visual SLAM

        随着无人智能的发展,视觉SLAM在过去几十年中成为一个活跃的领域。Klein等人提出了一个视觉SLAM框架[15],将跟踪和地图制作分为不同的线程。这个框架被大多数当前方法所采用。      

       传统的单一智能体视觉SLAM使用过滤或非线性优化来估计摄像机的姿态。

       基于过滤的方法[27, 3, 23]更具实时性,但全局一致性较差。相比之下,基于优化的方法[28, 29, 31, 4, 8, 19]可以充分利用过去的信息。同时,多源信息被广泛整合到SLAM系统中,以改善特定模块,例如轻量级深度估计[48, 42]。

2.2 协同视觉SLAM(Collaborative Visual SLAM

        协同SLAM可以分为两类:集中式和分布式。

        CVI-SLAM[14]是一个集中式视觉惯性框架,可以在中央服务器上共享所有信息,每个代理外包计算密集型任务。

        在集中式SLAM中,服务器管理所有子地图,执行地图融合和全局捆绑调整,并将处理后的信息反馈给每个代理。这个流程在CCM-SLAM[33]中得以重现,其中每个代理配备一个简单的视觉测距,并将定位和三维点云发送到中央服务器。

        在分布式系统方面,Lajoie等人开发了一个完全分布式的SLAM[18],它基于点对点通信,可以拒绝异常值以提高鲁棒性。NetVLAD[1]在[18]中用于检测环路闭合。此外,[10]提出了专门用于多智能体系统的紧凑二进制描述符。

        与传统的协同系统相比,我们的系统可以使用更少的神经点执行密集映射。

2.3 神经隐式表示(Neural Implicit Representation

        神经隐式场在许多计算机视觉任务中表现出色,如新视角合成[24, 25, 38, 2]、场景完成[5, 11, 30]和对象建模[6, 22, 40, 45, 46]。

        在最近的研究中,一些工作[47, 41]试图从建立的神经隐式场中反向推断相机外部参数。受到神经场不同表示方式的启发,包括体素网格[21]和点云[43],NICE-SLAM[50]和Vox-Fusion[44]选择使用体素网格进行跟踪和制图,而不是使用受表达能力和遗忘问题限制的单一神经网络。它们都是与我们最相关的工作。

        此外,vMAP[16]可以在缺乏3D先验条件下有效地建模密封的对象模型。ESLAM[13]通过三面和截断有符号距离场(TSDF)来解决RGB-D SLAM。除了纯神经网络方法外,一些混合系统,如NeRF-SLAM[32]和Orbeez-SLAM[7],构建了神经地图,但使用传统方法来估计姿态。

3 Method

        我们的协同SLAM系统概述下图所示。给定一组RGB-D序列,系统基于每个代理的神经点云表示,逐步进行跟踪和地图制作。

        我们整合了一个基于学习的循环检测模块,该模块提取2D帧的唯一描述符,并通过高质量的循环约束拼接子地图。

        我们设计了一个两阶段(分布式到集中式)的MLP训练策略,以提高一致性并加强协作。

        为了减少制图和跟踪中的累积误差,我们利用子地图之间的共可见性进行全局位姿图优化作为后端处理,然后进行基于帧的地图精炼。

aaa0559fff0b404cbfc8f307ec3aa905.png

        图1:系统概览。我们的系统以单个或多个RGB-D流作为输入,执行如下的跟踪和地图制作。

        从左到右,我们在神经点场中进行可微分的射线体积渲染,以预测深度和颜色。为了获取沿射线的样本点的特征嵌入,我们在半径为r的球内插值邻居特征。

        MLPs将这些特征嵌入解码为用于体素渲染的有意义的密度和辐射度。通过计算渲染差异损失,可以优化相机运动和神经场。

        在跟踪和地图制作过程中,单一代理不断地将由NetVLAD编码的关键帧描述符发送到描述符池。中央服务器将融合子地图,并根据匹配对执行全局位姿图优化(PGO)以加深协作。

        最后,我们的系统以关键帧为中心进行地图精炼,结束整个工作流程。

3.1 神经点云里程计(Neural Point based Odometry )

        我们的系统从一个前端视觉测距模块开始,其中我们结合了位姿反传递更新和基于点的神经场,以执行顺序跟踪和制图。

        基于点的神经场。我们将图像分为4 × 4的块,并逐步投影每个块的中心像素到其对应的3D位置eq?p%20%5Cin%20%5Cmathbb%7BR%7D%5E3。为了获取锚定在 eq?p 上的特征嵌入eq?f%20%5Cin%20%5Cmathbb%7BR%7D%5E%7B32%7D ,将2D图像输入到一个未经训练的单层卷积神经网络。我们定义我们的神经点云为: 

eq?P%20%3D%20%5C%7Bp_j%2C%20f_j%20%5Cmid%20j%20%3D%201%2C%20%5Cldots%5C%7D%20%5Cquad%20%281%29

        体素渲染。我们模拟 NeRF [26] 中的可微分体素渲染策略,其中辐射度和占用度沿着射线积分,以渲染颜色和深度图。给定一个 6DoF 姿势 eq?%5C%7BR_c%2C%20O_c%5C%7D和一帧的内参,我们可以从随机选择的像素发射射线并采样eq?N_%7Btotal%7D 点。任意采样点被定义为:

eq?x_i%20%3D%20O_c%20+%20t_i%20%5Ccdot%20d%20%5Cquad%20i%20%5Cin%201%20%5Cldots%20N_%7B%5Ctext%7Btotal%7D%7D%20%5Cquad%20%282%29

其中eq?t_i%20%5Cin%20%5Cmathbb%7BR%7D 是点的深度,eq?d%20%5Cin%20%5Cmathbb%7BR%7D%5E3是单位射线方向。

        在深度信息的指导下,我们可以在真实表面附近分布我们的样本。具体而言,我们在每条射线上采样eq?N_%7B%5Ctext%7Btotal%7D%7D%20%3D%20N_%7B%5Ctext%7Bnear%7D%7D%20+%20N_%7B%5Ctext%7Buni%7D%7D个点。

        对于具有有效深度 D的任何像素,eq?t_i在间隔eq?%5B0.95D%2C%201.05D%5Deq?%5B0.95D_%7B%5Ctext%7Bmin%7D%7D%2C%201.05D_%7B%5Ctext%7Bmax%7D%7D%5D内均匀采样,分别生成eq?N_%7B%5Ctext%7Bnear%7D%7Deq?N_%7B%5Ctext%7Buni%7D%7D个样本点,其中eq?D_%7B%5Ctext%7Bmin%7D%7D 和 eq?D_%7B%5Ctext%7Bmax%7D%7D是当前深度图的最小和最大深度值。对于没有有效深度值的任何像素,eq?t_i在间隔 eq?%5BD_l%2C%201.05D_%7B%5Ctext%7Bmax%7D%7D%5D内均匀采样,生成 eq?N_%7B%5Ctext%7Btotal%7D%7D​ 个点。对于每个点eq?x_i​,我们首先在查询半径 r内查询 K 个邻居eq?%5C%7Bp_k%20%5Cmid%20k%20%3D%201%2C%20%5Cldots%2C%20K%5C%7D,然后使用一个 MLP eq?C将原始邻居特征eq?f_k转换为eq?f_%7Bk%2C%20x_i%7D,其中包含相对距离信息,即

eq?f_%7Bk%2Cxi%7D%20%3D%20C%28f_k%2C%20x_i%20-%20p_k%29%20%5Cquad%20%283%29

然后,一个辐射度 MLP eq?U使用插值特征eq?f_%7Bxi%7D​ 解码位置 eq?x_i​ 处的 RGB 辐射度 eq?c,该特征是根据反向距离权重和邻域特征进行加权插值得到的:

eq?f_%7Bx_i%7D%20%3D%20%5Csum%5Climits_%7Bk%7D%5Cfrac%7Bw_k%7D%7B%5Csum%20w_k%7D%7Bf_%7Bk%2Cx_i%7D%7Deq?w_k%20%3D%20%5Cfrac%7B1%7D%7B%5C%7Cp_k%20-%20x_i%5C%7C%7D%20%5Cquad%20%284%29

eq?c%20%3D%20U%28f_%7Bxi%7D%29%20%5Cquad%20%285%29

        如果在 eq?x_i处找不到邻居,那么eq?x_i处的占用度eq?%5Csigma 被设为零。否则,我们使用位于eq?x_i处的占用度 MLP eq?G 进行回归。我们采用类似于辐射度的基于反向距离的加权插值,但这里是在占用度水平进行插值。我们解码每个邻居的 eq?%5Csigma_i并最终进行插值:

eq?%5Csigma_k%20%3D%20G%28f_%7Bk%2Cxi%7D%29%20%5Cquad%20%286%29

eq?%5Csigma%20%3D%20%5Csum%5Climits_%7Bk%7D%20%5Cfrac%20%7Bw_k%7D%20%7B%5Csum_k%20w_k%7D%20%7B%5Csigma_k%7D%20%5Cquad%20%287%29

接下来,我们使用从 MLP 中回归得到的eq?c_%7Bx_i%7D​、eq?%5Csigma_%7Bx_i%7D​ 来估计每个点的权重eq?%5Calpha_%7Bx_i%7D​。eq?%5Calpha_%7Bx_i%7D 被视为eq?x_i处的不透明度,或者说射线在该点终止的概率,eq?z_%7Bx_i%7D是点eq?x_i 的深度。

通过沿着射线计算深度和辐射度期望值,可以渲染深度图和颜色图,如下所示:

eq?%5Chat%7BD%7D%20%3D%20%5Csum%5Climits_%7Bi%3D1%7D%5E%7BN_%7B%5Ctext%7Btotal%7D%7D%7D%20%5Calpha_%7Bxi%7D%20z_%7Bxi%7D%20%5Cquad%2C%20%5Chat%7BI%7D%20%3D%20%5Csum%5Climits_%7Bi%3D1%7D%5E%7BN_%7B%5Ctext%7Btotal%7D%7D%7D%20%5Calpha_%7Bxi%7D%20c_%7Bxi%7D%20%5Cquad%20%288%29

        映射和跟踪。我们在映射过程中使用如下所述的渲染差异损失(Eq. 9),其中包含了几何损失和在映射过程中的光度损失。对于新来的帧,我们采样 M1 个像素来优化点锚定特征eq?f_i​ 以及 MLP eq?C%2C%20U%2C%20G的参数。对于第一帧,我们需要以较高的代价对 M3 个像素进行良好的初始化,并进行约 3000∼5000 步的优化以确保后续处理的平滑进行。对于后续的映射,我们从当前帧和 5 个共视的关键帧中均匀选择像素。我们发现联合映射可以有效稳定跟踪过程。

映射损失(Lmapping)如下:

eq?%5Cmathcal%7BL%7D_%7B%5Ctext%7Bmapping%7D%7D%20%3D%20%5Cfrac%7B1%7D%7BM1%7D%20%5Csum%5Climits_%7Bm%3D1%7D%5E%7BM1%7D%20%5Cleft%7CD_m%20-%20%5Chat%7BD%7D_m%5Cright%7C%20+%20%5Clambda_1%20%5Cleft%7CI_m%20-%20%5Chat%7BI%7D_m%5Cright%7C%20%5Cquad%20%289%29

其中,eq?D_meq?I_m 表示地面真实深度和颜色图,eq?%5Chat%7BD%7D_m​、eq?%5Chat%7BI%7D_m 分别是对应的渲染结果,eq?%5Clambda_1是损失平衡权重。在跟踪过程中,我们通过反向传播进一步优化相机外参eq?%5C%7Bq%2C%20t%5C%7D,同时保持特征和 MLP 不变,其中 eq?q是四元数旋转,eq?t是平移向量。我们在新来的帧上采样 M2 个像素,并假设零运动模型,其中新帧的初始姿势与上一帧相同。考虑到颜色图的强烈非凸性,跟踪损失仅包含几何部分:

eq?%5Cmathcal%7BL%7D_%7B%5Ctext%7Btracking%7D%7D%20%3D%20%5Cfrac%7B1%7D%7BM2%7D%20%5Csum%5Climits_%7Bm%3D1%7D%5E%7BM2%7D%20%5Cleft%7CD_m%20-%20%5Chat%7BD%7D_m%5Cright%7C%20%5Cquad%20%2810%29

3.2 循环检测和子图对齐 (Loop Detection and Sub-Map Alignment)

        为了对齐子图并减小累积的位姿漂移,我们执行循环检测并计算不同子图之间的相对位姿。对于子图中的每个关键帧,我们将其与由预训练的NetVLAD [1]模型生成的描述符相关联。

        我们使用描述符之间的余弦相似度作为循环检测的判断标准。

        当摄像机在帧之间移动太多时,位姿优化容易陷入局部最优解,因此我们使用两个相似性阈值 eq?%5Clambda_%7B%5Ctext%7Bfine%7D%7Deq?%5Clambda_%7B%5Ctext%7Bcoarse%7D%7D来找到具有足够重叠并确保正确的循环相对位姿的匹配对。给定两个子图 M1 和 M2,我们找到具有最大重叠的循环帧集合eq?%5C%7BI%5E%7Bl1%7D%2C%20I%5E%7Bl2%7D%5C%7D,其相似度大于eq?%5Clambda_%7B%5Ctext%7Bfine%7D%7D,并且找到小重叠的循环帧集合eq?%7B%28I_1%5E%7Bs1%7D%2CI_2%5E%7Bs2%7D%29%2C%20...%2C%28I_n%5E%7Bs1%7D%2CI_n%5E%7Bs2%7D%29%7D,其相似度大于 eq?%5Clambda_%7B%5Ctext%7Bcoarse%7D%7D 但小于 eq?%5Clambda_%7B%5Ctext%7Bfine%7D%7D。对于eq?%5C%7BI%5E%7Bl1%7D%2C%20I%5E%7Bl2%7D%5C%7D 这样的匹配对,我们将eq?I%5E%7Bl1%7D的位姿视为初始位姿,将eq?I%5E%7Bl2%7D视为参考帧。可以使用第3.1节描述的跟踪方法获取 {M1, M2} 之间的相对位姿测量。我们可以使用这个相对位姿对子图执行三维刚体变换,使得所有子图都设置在相同的全局坐标系中,实现子图对齐的目的,如下面图2所示:

738e25a781394f2abcb297750dd3d371.png

图2:体素网格限制

(a) 如果初始坐标系统不是均匀的,那么现有的神经SLAM(例如体素网格)在子图融合期间可能会因为不对齐而受到影响。

(b) 神经点云不受3D几何形状的限制,可以自由融合。在子图融合后,我们可以从Agent1(绿色点云)和Agent2(紫色点云)的观测中查询点eq?x_i的邻居。

循环损失eq?%5Cmathcal%7BL%7D_%7B%5Ctext%7Bloop%7D%7D%28T_r%29如下:

eq?%5Cmathcal%7BL%7D_%7B%5Ctext%7Bloop%7D%7D%28T_r%29%20%3D%20%5Cfrac%7B1%7D%7BM_2%7D%20%5Csum%5Climits_%7B%5C%7BI_%7B%5Ctext%7Bl1%7D%7D%2C%20I_%7B%5Ctext%7Bl2%7D%7D%5C%7D%7D%20%5E%7BM_2%7D%20%7CD_m%28T_r%29%20-%20%5Chat%7BD%7D_m%7C%20%5Cquad%20%2811%29

        其中,eq?T_req?M_1​ 和eq?M_2之间的相对位姿,eq?Deq?%5Chat%7BD%7D分别是渲染的深度和地面真实深度。对于小重叠的循环帧集合eq?%5C%7BI_i%5E%7Bs1%7D%2C%20I_i%5E%7Bs2%7D%5C%7D,我们仅使用它们执行位姿图优化(参见3.4)。

        子图融合会导致特定区域的神经点冗余,给计算和内存带来负担。由于神经点云的稀疏性,我们采用基于网格的过滤策略,即根据神经点到 ρ³ 立方体中心的距离执行非极大值抑制。

 3.3 分布式到集中式学习(Distributed-to-Centralized Learning)

       为了增强一致性和协作性能,在协作SLAM中,我们采用了一个两阶段的MLP训练策略。在第一阶段(分布式阶段),每个图像序列被视为一个独立的个体,具有用于顺序跟踪制图的唯一组MLPs  eq?%7BC_j%2C%20U_j%2C%20G_j%7D。在循环检测和子图融合之后,我们希望在所有序列之间共享通用的MLPs(集中式阶段)。

        为此,我们引入了联邦学习机制,该机制以协作共享的方式训练单个网络。同时进行子图融合时,我们对每组MLPs进行平均,并在所有关键帧上微调平均的MLPs以统一离散的领域。随后,我们迭代地将共享的MLPs传递给每个代理进行本地训练,并将本地权重平均作为共享MLPs的最终优化结果,如下面图3所示。

441cec3355a74657b0da4863da53468c.png

  

联邦学习(Federated Learning)是一种机器学习的分布式学习方法,其中模型的训练在本地设备上进行,而不是在集中式服务器上。这种方法允许设备在本地训练模型,然后将更新的权重参数传输回中央服务器,从而使全局模型在所有设备上得以改进。 

联邦学习被用于协作性SLAM系统的两个阶段的训练过程中。在分布式阶段,每个图像序列被视为一个独立的个体,具有本地的MLPs(C,U,G)。在集中式阶段,为了提高一致性和合作,通过联邦学习机制,每个代理将其本地模型参数传输到中央服务器,中央服务器根据所有代理的权重更新来进行全局模型的训练。

这种方法的优势在于它允许在不共享原始数据的情况下进行模型训练,从而保护了用户的隐私。同时,它也有助于全局模型更好地适应整个系统的特性,提高一致性和协作水平。

3.4 位姿图优化和全局地图细化(Pose Graph Optimization and Global Map Refinement) 

        在所有序列的前端处理中,包括跟踪、制图、循环检测和子图融合,我们建立了一个全局位姿图模型,其中每帧的位姿作为节点,顺序相对位姿循环相对位姿(sequential relative pose, and loop relative pose are edges作为边。

        位姿图模型如图4所示。我们在整个位姿图上进行全局位姿图优化,参考传统视觉SLAM,将估计的轨迹强制拉近到地面真实轨迹。

d13bf4a2e7fa4622ba8fc450dc05bb7e.png

        全局位姿图优化有效地减轻了累积误差,并提高了跟踪精度。我们使用Levenberg-Marquardt算法来解决由方程12描述的这个非线性全局位姿图优化问题,其中eq?v是节点的集合,eq?E_s是顺序边的集合,eq?E_l是循环边的集合,eq?%5CLambda_i表示相应边的不确定性。

eq?v%5E*%20%3D%20%5Ctext%7Bargmin%7D_v%20%5Cfrac%7B1%7D%7B2%7D%20%5Csum%5Climits_%7Be_i%20%5Cin%20E_s%2C%20E_l%7D%20e_i%5ET%20%5CLambda_i%5E%7B-1%7D%20e_i%20%5Cquad%20%2812%29

        显然,预期神经点云的布局应该在全局位姿图优化后重新排列。然而,一个以世界为中心的点云显然不能允许这样的调整。

        为了解决这个限制,我们提出了一个以关键帧为中心的神经点场,其中每个3D点与一个关键帧关联(上图4)。

        由于这个设计,我们可以根据优化后的姿势来优化我们的点云3D位置。在全局地图细化之后,我们使用基于网格的过滤来处理出现在局部区域的神经点云冗余。

        考虑到全局地图细化后神经场和解码器之间轻微的不匹配,我们最终通过较少的优化迭代执行低成本的全局神经场微调。

4 实验

下一篇【论文解读】CP-SLAM: Collaborative Neural Point-based SLAM System_神经点云协同SLAM系统(下)-CSDN博客

5 结论

下一篇

【论文解读】CP-SLAM: Collaborative Neural Point-based SLAM System_神经点云协同SLAM系统(下)-CSDN博客

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

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

相关文章

Mac git查看分支以及切换分支

查看本地分支 git branch 查看远程仓库分支 git branch -r 查看本地与远程仓库分支 git branch -a 切换分支 git checkout origin/dev/js

一文讲清楚MySQL常用函数!

全文大约【1268】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富案例及配图视频,让你更好的理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考...... 一. 时间函数 下面给大家总结了My…

美国费米实验室SQMS启动“量子车库”计划!30+顶尖机构积极参与

​11月6日,美国能源部费米国家加速器实验室(SQMS)正式启动了名为“量子车库”的全新旗舰量子研究设施。这个6,000平方英尺的实验室是由超导量子材料与系统中心负责设计和建造,旨在联合国内外的科学界、工业领域和初创企业,共同推动量子信息科…

LeetCode【76】最小覆盖子串

题目&#xff1a; 思路&#xff1a; https://segmentfault.com/a/1190000021815411 代码&#xff1a; public String minWindow(String s, String t) { Map<Character, Integer> map new HashMap<>();//遍历字符串 t&#xff0c;初始化每个字母的次数for (int…

【LeetCode】每日一题 2023_11_21 美化数组的最少删除数(贪心/模拟)

文章目录 刷题前唠嗑题目&#xff1a;美化数组的最少删除数题目描述代码与解题思路 结语 刷题前唠嗑 LeetCode? 启动&#xff01;&#xff01;&#xff01; 原本今天早上要上体育课&#xff0c;没那么早刷每日一题的&#xff0c;本周是体测周&#xff0c;所以体育课取消了&am…

MySQL 教程 1.1

MySQL 教程1.1 MySQL 是最流行的关系型数据库管理系统&#xff0c;在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System&#xff1a;关系数据库管理系统)应用软件之一。 在本教程中&#xff0c;会让大家快速掌握 MySQL 的基本知识&#xff0c;并轻松…

放大招:腾讯云5年服务器和3年轻量应用服务器租用价格表

腾讯云3年轻量和5年云服务器CVM优惠活动入口&#xff0c;3年轻量应用服务器配置可选2核2G4M和2核4G5M带宽&#xff0c;5年CVM云服务器可以选择2核4G和4核8G配置可选&#xff0c;阿腾云atengyun.com分享腾讯云3年轻量应用服务器和5年云服务器CVM优惠活动入口和配置报价&#xff…

【点云上采样】最近邻插值上采样算法

文章目录 声明简介代码 声明 本帖更新中 简介 点云最近邻插值上采样算法是一种常见的点云处理方法&#xff0c;用于将稀疏的点云数据进行上采样&#xff0c;增加点云的密度和细节。该算法基于最近邻的原理&#xff0c;在已有的点云数据中找到最近邻的点&#xff0c;并根据其…

【Spring】bean的基础配置

bean的别名 当在Spring config文件中定义name作为别名后&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instan…

基于SSM的社区生鲜商城的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

【三种加载自定义控制器的方式 Objective-C语言】

一、关于这个手动创建Window呢,给大家说完了 1.但是呢,要给大家补充一个东西, 有时候,有的框架,可能会用到什么东西呢,我写到下面: [UIApplication sharedApplication] 什么东西,是不是应用程序对象, 然后呢,keyWindow 是不是拿到它的主窗口, 然后呢,add什么东西…

2023年11月中旬大模型新动向集锦

2023年11月中旬大模型新动向集锦 2023.11.21版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 1、谷歌生成式 AI 搜索生成体验&#xff08;SGE&#xff09;扩展到 120 多个新国家/地区 近日&#xff0c;Google 扩展了其由生成式人工智能驱…

mybatis使用foreach标签实现union集合操作

最近遇到一个场景就是Java开发中&#xff0c;需要循环多个表名&#xff0c;然后用同样的查询操作分别查表&#xff0c;最终得到N个表中查询的结果集合。在查询内容不一致时Java中跨表查询常用的是遍历表名集合循环查库&#xff0c;比较耗费资源&#xff0c;效率较低。在查询内容…

22款奔驰GLE450升级原厂360全景影像 超广角的视野

360全景影像影像系统提升行车时的便利&#xff0c;不管是新手或是老司机都将是一个不错的配置&#xff0c;无论是在倒车&#xff0c;挪车以及拐弯转角的时候都能及时关注车辆所处的环境状况&#xff0c;避免盲区事故发生&#xff0c;提升行车出入安全性。 360全景影像包含&…

Vite3构建Vue3项目

文章目录 Vite3构建Vue3项目Vite1、创建vite3项目2、安装依赖3、运行vite项目4、安装路由src目录下&#xff0c;添加加router/index.jsmain.js导入router 5、axiosaxios配置 引入element-plus1、安装2、引入1、完整引入2、按需导入1、自动导入 Vite3构建Vue3项目 Vite 什么是…

重要功能丨支持1688API 接口对接一键跨境铺货及采购,解决跨境卖家货源烦恼!

在跨境电商运营中&#xff0c;不少卖家都会优先选择1688平台产品作为跨境店铺货源。 必不可少的1688商品详情接口 阿里巴巴中国站获得1688商品详情 API 返回值说明 item_get-获得1688商品详情 1688.item_get 公共参数 请求地址: 申请调用KEY测试 名称类型必须描述keyStrin…

企企通亮相广东智能装备产业发展大会:以数字化采购促进智能装备产业集群高质量发展

制造业是立国之本&#xff0c;是国民经济的主要支柱、是推动工业技术创新的重要来源。 广东作为我国制造业大省&#xff0c;装备制造业规模增长快速&#xff0c;技术水平居于全国前列。为全面贯彻学习党的二十大精神&#xff0c;进一步推动机械装备可靠性设计&#xff0c;促进新…

8.1 Windows驱动开发:内核文件读写系列函数

在应用层下的文件操作只需要调用微软应用层下的API函数及C库标准函数即可&#xff0c;而如果在内核中读写文件则应用层的API显然是无法被使用的&#xff0c;内核层需要使用内核专有API&#xff0c;某些应用层下的API只需要增加Zw开头即可在内核中使用&#xff0c;例如本章要讲解…

本地/笔记本/纯 cpu 部署、使用类 gpt 大模型

文章目录 1. 安装 web UI1.1. 下载代码库1.2. 创建 conda 环境1.3. 安装 pytorch1.4. 安装 pip 库 2. 下载大模型3. 使用 web UI3.1. 运行 UI 界面3.2. 加载模型3.3. 进行对话 使用 web UI 大模型文件&#xff0c;即可在笔记本上部署、使用类 gpt 大模型。 1. 安装 web UI 1…

DCDC同步降压控制器SCT82A30\SCT82630

SCT82A30是一款100V电压模式控制同步降压控制器&#xff0c;具有线路前馈。40ns受控高压侧MOSFET的最小导通时间支持高转换比&#xff0c;实现从48V输入到低压轨的直接降压转换&#xff0c;降低了系统复杂性和解决方案成本。如果需要&#xff0c;在低至6V的输入电压下降期间&am…