【论文解读】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 实验

下一篇

5 结论

下一篇

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

这款IDEA插件真的爱了

IDEA是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作,一般需要打开额外的调试工具。 今天给大家介绍一款IDEA插件:Api…

单机版-redis(手动部署)

单机版-redis部署 部署模式:单机版-redis部署 Redis版本:redis-4.0.1 部署redis方式:手动部署 在完成第三步时已完成配置,后续为操作命令以及注意事项; 在进行操作数据库时,需要关注第五步注意事项,会涉…

Unity 场景烘培 ——unity灯光和设置天空盒(二)

提示:文章有错误的地方,还望诸位大神指出。 文章目录 前言一、光源种类1.Directional Light(方向光,平行光)2.Point Light(点光源)3.Spotlight(聚光灯)4.Area Light(区域光&#xff…

【网络奇遇记】那年我与计算机网络的初相识 —— 网络的体系结构

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. 常见的三种计算机网络体系结构1.1 开放系统互连参考模型1.2 TCP/IP参考模型1.3 原理参考模型 二…

SSM项目初始化流程与操作概念解释-SpringBoot简化版

文章目录 1.引入概念2.导入依赖3.项目配置4.依照SpringMVC框架构建项目 1.引入概念 例如某一个XX系统,该系统存在前台页面(给用户直观看或使用),和后台页面(给管理人员调整数据和权限)。 这二个页面都通过…

世界坐标系,相机坐标系,像素坐标系转换 详细说明(附代码)

几个坐标系介绍,相机内外参的回顾参考此文。 本文主要说明如何在几个坐标系之间转换。 本文涉及: 使用相机内参 在 像素坐标系 和 相机坐标系 之间转换。使用相机外参(位姿)在相机坐标系 和 世界坐标系 之间转换。(qw,qx,qy,qz,tx,ty,tz)形式的外参如何使用。以具体情景为…

CSGO饰品持续跌价,市场真的要崩盘了吗?

CSGO饰品市场会崩盘吗?CSGO还能做多久? CSGO饰品持续跌价,市场真的要崩盘了吗? 除非v社那边有什么大动作,不然就市场而言,饰品恐怕永远不会崩盘。 原因其实很简单,只要庄家和大户不崩&#xf…

leetcode刷题日记:141. Linked List Cycle(环形链表)

这一题是给我们一个链表让我们判断这是否是一个环形链表,我们知道如果一个链表中有环的话这一个链表是没有办法访问到尾的, 假若有如图所示的带环链表: 我们从图示中很容易看出来这一个链表在访问的时候会在里面转圈,我们再来看看…

进程控制3——进程程序替换

进程的创建有fork,进程的退出有main函数的return,exit,_exit函数 而进程的退出中,一个进程的退出只能有三种情况,退出成功结果对/不对,或者是运行异常收到信号终止 但是我们发现我们用代码创建的子进程它是…

面试鸭 - 专注于面试刷题的网站

网上面试题有很多,但此套面试题真实、原创、高频,全网最强。 题目涵盖大中小公司,真实靠谱,有频率和难度的标记,助你成为Offer收割机。 面试鸭地址:https://mianshiya.skyofit.com/ 本套题是我原创&…

【Mysql】学习笔记

目录 基本操作登录指令:启动、关闭、重启mysql指令(适用于centos7):查看mysql运行状态:删除和创建表 修改密码(ubuntu18.04可行,其余版本行不行不知道)3 使用MYSQL了解数据库和表 4 …

java基础--JVM的学习1--jvm基础和class文件的组成

文章目录 JVM概念JVM功能 JVM组成class文件一般信息 常量池字段方法 反编译 使用到了idea的jclasslib插件 JVM概念 全称Java Virtual Machine,java虚拟机。 将java字节码文件正确的加载和允许。 JVM功能 解释运行 对字节码指令实时的解释成机器码,让计…

【数字人】7、GeneFace++ | 使用声音和面部运动系数的关系作为 condition 来指导 NeRF 重建说话头

文章目录 一、背景二、相关工作2.1 唇形同步的 audio-to-motion2.2 真实人像渲染 三、方法3.1 对 GeneFace 的继承3.2 GeneFace 的结构3.2.1 Pitch-Aware Audio-to-Motion Transform3.2.2 Landmark Locally Linear Embedding3.2.3 Instant Motion-to-Video Rendering 四、效果 …

学人工智能等于失业?

随着科技的快速发展,人工智能已经渗透到我们生活的方方面面,从手机、智能家居到自动驾驶汽车,都离不开人工智能技术的支持。 因此,学习人工智能已经成为越来越多人追求高薪职业的选择。在这篇文章中,我们将探讨学习人…

Linux基本指令及周边(第一弹)

文章目录 前言mkdir指令(重要):tree指令rmdir指令 && rm 指令(重要):touch指令ls指令pwd指令cd 指令用户家目录man指令(重要):mv指令(重要)cat指令绝…

Linux 系统误将 chmod 权限改成 了 000,如何恢复?

Linux 系统误将 chmod 权限改成 了 000,如何恢复? busybox 是 Linux 标配,含有大多数主流 Linux 命令,你可以把它的存在当作救急备份。简单功能都可以调用 busybox 完成。这也就意味着很多原始命令出故障的情况下都可以用 busybox 暂时替代。…

调用本地大模型实现聊天机器人ChatBot

AWS Instance本地部署大模型 AWS上申请带GPU的instance,例如g4dn系列,申请instance后安装CUDA的driver,driver安装完成后,就可以在带gpu的instance上部署开源的大模型了。如果想了解在aws上部署本地模型细节,可以阅读…

upload-labs关卡11(双写后缀名绕过)通关思路

文章目录 前言一、回顾前几关知识点二、靶场第十一关通关思路1、看源代码2、bp抓包双写后缀名绕过3、检查文件是否成功上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的…

主键问题以及分布式 id

分布式 id 需要处理的问题主要是同一时间在多台机器中保证生成的 id 唯一,为了这么做我们可以这么做: 分布式 id 生成策略 先说几个已经被淘汰的策略引出分布式 id 的问题 1,UUID:UUID 随机并且唯一,在单一的数据库…

JS进阶——构造函数数据常用函数

1、深入对象 1.1 创建对象三种方式 1.1.1 利用对象字面量创建对象 1.1.2 利用new Object创建对象 1.1.3 利用构造函数创建对象 1.2 构造函数 构造函数:是一种特殊的函数,主要用来初始化对象 使用场景:常规的{...}语法允许创建一个对象。…