首页 > 其他分享 >论文阅读:Point Cloud Transformer

论文阅读:Point Cloud Transformer

时间:2023-11-21 11:01:18浏览次数:34  
标签:Transformer 嵌入 Point 特征 PCT 点云 注意力 Cloud

Point Cloud Transformer

摘要

不规则的领域和缺乏排序使得设计用于点云处理的深度神经网络具有挑战性。本文提出了一个名为Point Cloud Transformer(PCT)的新型框架,用于点云学习。PCT以Transformer为基础,Transformer在自然语言处理中取得了巨大的成功,并在图像处理中显示出巨大的潜力。它在处理一连串的点时具有固有的互换不变性,使其非常适合于点云学习。为了更好地捕捉点云中的局部环境,我们在最远点采样和最近邻搜索的支持下加强了输入嵌入。广泛的实验表明,PCT在形状分类、部分分割和正常估计任务上达到了最先进的性能。

1. 简介

从点云中直接提取语义是机器人、自动驾驶、增强现实等一些应用中的迫切要求。与二维图像不同,点云是无序的和非结构化的,这使得设计神经网络来处理它们具有挑战性。Qi等人[21]通过使用多层感知器(MLPs)、maxpooling和刚性变换来确保在排列和旋转下的不变性,开创了点云特征学习的PointNet。受卷积神经网络(CNN)在图像处理领域取得的巨大进展的启发,最近的许多工作[24, 17, 1, 31]都考虑定义卷积算子,可以聚合点云的局部特征。这些方法要么对输入的点序列进行重新排序,要么对点云进行体素化,以获得一个用于卷积的规范域。

最近,自然语言处理中的主流框架Transformer[26]被应用于图像视觉任务,比流行的卷积神经网络有更好的性能[7, 30]。Transformer是一个解码器结构,包含三个主要模块,用于输入(词)嵌入、位置(顺序)编码和自我注意。自我注意模块是核心部分,根据全局背景为其输入特征生成精炼的注意特征。首先,自我注意将输入嵌入和位置编码的总和作为输入,并通过训练好的线性层为每个词计算三个向量:查询、关键和价值。然后,任何两个词之间的注意力权重可以通过匹配(点乘)它们的查询和关键向量来获得。最后,注意力特征被定义为所有具有注意力权重的价值向量的加权和。显然,每个词的输出注意力特征与所有的输入特征相关,使得它能够学习全局背景。Transformer的所有操作都是可并行的,并且与顺序无关。从理论上讲,它可以取代卷积神经网络中的卷积操作,具有更好的通用性。关于自我注意的更详细介绍,请参考第3.2节。

论文阅读:Point Cloud Transformer_点云

图1. 由PCT生成的注意力图和部分分割图。前三列:不同查询点的逐点注意力图(用✩表示),黄色到蓝色表示注意力权重增加。最后一列:部分分割的结果。

受Transformer在视觉和NLP任务中的成功启发,我们在传统Transformer的原理基础上提出了一个用于点云学习的新型框架PCT。PCT的关键思想是利用Transformer固有的顺序不变性,避免定义点云数据的顺序,通过注意力机制进行特征学习。如图1所示,注意力权重的分布与部分语义高度相关,并且不随空间距离的增加而严重衰减。点云和自然语言是相当不同的数据类型,所以我们的PCT框架必须为此做出一些调整。这些调整包括:

- 基于坐标的输入嵌入模块。在Transformer中,应用位置编码模块来表示自然语言中的词序。这可以区分不同位置的同一个词,并反映词与词之间的位置关系。然而,点云并没有一个固定的顺序。在我们的PCT框架中,我们将原始位置编码和输入嵌入合并为一个基于坐标的输入嵌入模块。它可以产生可区分的特征,因为每个点都有唯一的坐标,代表其空间位置。

- 优化的偏移-注意模块。我们提出的偏移注意力模块方法是对原始自我注意力的有效升级。它的工作原理是用自我注意模块的输入和注意特征之间的偏移量取代注意特征。这有两个优点。首先,同一物体的绝对坐标可以在刚性转换中完全不同。因此,相对坐标通常更加稳健。其次,Laplacian矩阵(程度矩阵和邻接矩阵之间的抵消)已被证明在图卷积学习中非常有效[3]。从这个角度来看,我们把点云看作是一个图,"浮动 "邻接矩阵是注意力图。同时,在我们的工作中,注意力图将被缩放,每行的总和为1。因此,程度矩阵可以被理解为身份矩阵。因此,偏移-注意力优化过程可以近似理解为拉普拉斯过程,这将在第3.3节详细讨论。此外,我们在第4节中介绍了偏移-注意和自注意,做了充分的比较实验,以证明其有效性。- 邻域嵌入模块。显然,一个句子中的每个词都包含基本的语义信息。然而,各点的独立输入坐标与语义内容只有微弱的关系。注意力机制在捕捉全局特征方面是有效的,但它可能忽略了局部的几何信息,而这些信息对点云学习也是至关重要的。为了解决这个问题,我们使用邻居嵌入策略来改进点的嵌入。它还通过考虑包含语义信息的局部点组之间的注意力而不是单个点来帮助注意力模块。通过上述调整,PCT变得更适合于点云特征学习,并在形状分类、部分分割和正常估计任务上取得了最先进的性能。本文的主要贡献总结如下。

1. 我们提出了一种新型的基于变换器的点云学习框架,即PCT,它具有固有的互变性,完全适用于非结构化、无序的不规则域的点云数据。

2. 我们提出了带有隐式拉普拉斯算子和归一化细化的偏移注意,与Transformer中的原始自注意模块相比,它更适合于点云学习。

3. 广泛的实验表明,具有显式局部环境增强功能的PCT在形状分类、部分分割和法线估计任务上取得了最先进的性能。

2. 相关工作

2.1. NLP中的Transformer

Bahdanau等人[2]提出了一种带有注意力机制的神经机器翻译方法,其中注意力权重是通过RNN的隐藏状态计算的。 Lin 等人[18]提出了自注意力来可视化和解释句子嵌入。在此基础上,Vaswani 等人 [26] 提出了用于机器翻译的 Transformer;它仅基于自注意力,没有任何递归或卷积运算符。 Devlin等人[6]提出了双向变压器(BERT)方法,这是NLP领域最强大的模型之一。最近,XLNet [35]、Transformer-XL [5] 和 BioBERT [15] 等语言学习网络进一步扩展了 Transformer 框架。

然而,在自然语言处理中,输入是有序的,单词具有基本语义,而点云是无序的,单个点一般没有语义意义。

2.2.视觉转换器

许多框架都将注意力引入了视觉任务。 Wang等人[27]提出了残差注意力使用堆叠注意力模块进行图像分类。 Hu等人[10]提出了一种新颖的空间编码单元SE块,其思想源自注意力机制。张等人. [37]设计了SAGAN,它使用自注意力来生成图像。使用 Transformer 作为优化神经网络的模块的趋势也越来越明显。 Wu 等人[30]提出了视觉变换器,将 Transformer 应用于视觉任务中来自特征图的基于标记的图像。最近,Dosovitskiy [7] 提出了一种基于 patch 编码和 Transformer 的图像识别网络 ViT,表明在足够的训练数据下,Transformer 提供了比传统卷积神经网络更好的性能。 Carion 等人 [4] 提出了一种端到端检测 Transformer,它将 CNN 特征作为输入,并使用 Transformer 编码器-解码器生成边界框。

受 ViT 中使用的局部补丁结构和语言单词中的基本语义信息的启发,我们提出了一种邻居嵌入模块,该模块聚合来自点的局部邻域的特征,可以捕获局部信息并获取语义信息。

2.3.基于点的深度学习

PointNet [21] 开创了点云学习。随后,Qi等人提出了PointNet++[22],它使用查询球分组和分层PointNet来捕获局部结构。随后的几项工作考虑了如何定义点云上的卷积运算。一种主要方法是将点云转换为常规体素阵列以允许卷积运算。 Tchapmi 等人[24]提出了 SEGCloud 进行逐点分割。它使用三线性插值将 3D 体素的卷积特征映射到点云,并通过完全连接的条件随机场保持全局一致性。 Atzmon 等人 [1] 提出了带有扩展和限制运算符的 PCNN 框架,用于在基于点的表示和基于体素的表示之间进行映射。对体素进行体积卷积以提取点特征。 Hermosilla 等人的 MCCNN [8] 允许非均匀采样的点云;卷积被视为蒙特卡罗积分问题。类似地,在Wu等人[31]提出的PointConv中,通过蒙特卡罗估计和重要性采样来执行3D卷积。

另一种方法将卷积重新定义为对不规则点云数据的操作。 Li等人[17]介绍了一种点云卷积网络PointCNN,其中训练χ变换以确定卷积的一维点顺序。 Tatarchenko等人[23]提出了切线卷积,它可以从投影的虚拟切线图像中学习表面几何特征。 Landrieu等人[13]提出的SPG将扫描的场景划分为相似的元素,并建立超点图结构来学习对象部分之间的上下文关系。潘等人[34]使用并行框架将 CNN 从传统域扩展到弯曲的二维流形。然而,它需要密集的 3D 网格数据作为输入,因此不适合 3D 点云。 Wang等人[29]为动态图设计了一个EdgeConv算子,允许通过恢复局部拓扑来进行点云学习。

其他各种方法也使用注意力机制和 Transformer。 Yan等人[33]提出PointASNL来处理点云处理中的噪声,使用自注意力机制来更新局部点组的特征。 Hertz 等人 [9] 提出了 PointGMM,用于具有多层感知器(MLP)分裂和注意力分裂的形状插值。

与上述方法不同的是,我们的 PCT 是基于 Transformer 的,而不是使用 self-attention 作为辅助模块。虽然 Wang 等人 [28] 的框架使用 Transformer 来优化点云配准,但我们的 PCT 是一个更通用的框架,可用于各种点云任务。

3. 点云表示的转换器

在本节中,我们首先展示如何将PCT学习的点云表示应用于点云处理的各种任务,包括点云分类、零件分割和法线估计。此后,我们详细介绍了PCT的设计。我们首先通过直接将原始 Transformer [26] 应用到点云来引入 PCT 的简单版本。然后,我们解释完整的 PCT 及其特殊的注意机制,以及邻居聚合以提供增强的局部信息。

3.1.使用 PCT 编码器进行点云处理。

PCT的总体架构如图2所示。PCT旨在将输入点转换(编码)到新的高维特征空间,该空间可以表征点之间的语义亲和力,作为各种点云处理任务的基础。 PCT 的编码器首先将输入坐标嵌入到新的特征空间中。嵌入的特征随后被输入到 4 个堆叠注意力模块中,以学习每个点的语义丰富且有区别的表示,然后是线性层来生成输出特征。总的来说,PCT 的编码器与原始 Transformer 的设计理念几乎相同,只是放弃了位置嵌入,因为点的坐标已经包含了这些信息。我们建议读者参考 [26] 了解原始 NLP Transformer 的详细信息。

形式上,给定一个输入点云 P 2 R N×d,其中 N 个点每个都具有 d 维特征描述,首先通过输入嵌入模块学习去维嵌入特征 Fe 2 RN×de。通过PCT得到的逐点do维特征表示Fo 2 R N×do,然后通过特征维度连接每个注意力层的注意力输出,然后进行线性变换来形成:

论文阅读:Point Cloud Transformer_点云_02

其中 ATi 表示第 i 个注意力层,每个注意力层具有与其输入相同的输出维度,Wo 是线性层的权重。稍后将解释输入嵌入和注意力的各种实现。

为了提取表示点云的有效全局特征向量 Fg,我们选择连接两个池化算子的输出:在学习的逐点特征表示上的最大池化(MP)和平均池化(AP)[29] 。

论文阅读:Point Cloud Transformer_点云_03

分类。使用 PCT 的分类网络的细节如图 2 所示。为了将点云 P 分类为 Nc 个对象类别(例如桌子、桌子、椅子),我们将全局特征 Fg 馈送到分类解码器,该解码器包括两个级联前馈神经网络 LBR(结合 Linear、BatchNorm (BN) 和 ReLU 层),每个层的 dropout 概率为 0:5,由 Linear 层最终确定,以预测最终分类分数 C 2 R Nc 。点云的类标签被确定为具有最大分数的类。

分割。对于将点云分割成 Ns 个部分(例如桌面、桌腿;一个部分不需要是连续的)的任务,我们必须预测每个点的部分标签,我们首先将全局特征 Fg 与逐点特征连接起来在佛。为了学习各种对象的通用模型,我们还将 one-hot 对象类别向量编码为 64 维特征,并将其与全局特征连接起来,遵循大多数其他点云分割网络 [22]。如图2所示,分割网络解码器的架构与分类网络的架构几乎相同,只是仅在第一个LBR上执行dropout。然后,我们预测输入点云的最终逐点分割分数 S 2 R N×Ns:最后,点的部分标签也被确定为具有最大分数的部分标签。

正常估计。对于法线估计的任务,我们通过设置 Ns = 3 使用与分割相同的架构,没有对象类别编码,并将输出逐点得分视为预测法线。

3.2.朴素 PCT

修改 Transformer [26] 以使用点云的最简单方法是将整个点云视为一个句子,将每个点视为一个单词,我们现在解释这种方法。这种朴素的 PCT 是通过实现基于坐标的点嵌入并使用[26]中引入的自注意力实例化注意力层来实现的。

首先,我们考虑一个朴素的点嵌入,它忽略了点之间的相互作用。与 NLP 中的词嵌入类似,点嵌入旨在将语义更相似的点放置在嵌入空间中更靠近的位置。具体来说,我们使用包含两个级联 LBR 的共享神经网络将点云 P 嵌入到去维空间 Fe 2 R N×de 中,每个 LBR 都有一个去维输出。

为了提高计算效率,我们凭经验设置 de = 128,一个相对较小的值。我们简单地使用点的 3D 坐标作为其输入特征描述(即 dp = 3)(这样做仍然优于其他方法),但也可以使用额外的逐点输入信息,例如点法线。

论文阅读:Point Cloud Transformer_点云_04

对于 PCT 的简单实现,我们采用原始 Transformer [26] 中引入的自注意力(SA)。自注意力,也称为内部注意力,是一种计算数据序列中不同项目之间语义亲和力的机制。 SA 层的架构如图 3 所示,切换到虚线数据流。按照[26]中的术语,设 Q; K; V 分别是通过输入特征的线性变换生成的查询矩阵、键矩阵和值矩阵如下:

论文阅读:Point Cloud Transformer_点云_05

其中 Wq、Wk 和 Wv 是共享可学习线性变换,da 是查询向量和关键向量的维度。请注意,da 可能不等于 de。在本工作中,为了计算效率,我们将 da 设置为 de=4。

首先,我们可以使用查询矩阵和关键矩阵通过矩阵点积计算注意力权重:

论文阅读:Point Cloud Transformer_点云_06

然后对这些权重进行归一化(在图 3 中表示为 SS),得到 A = (α)i;j :

论文阅读:Point Cloud Transformer_卷积_07

自注意力输出特征 Fsa 是使用相应注意力权重的值向量的加权和:

论文阅读:Point Cloud Transformer_点云_08

由于查询、键和值矩阵是由共享的相应线性变换矩阵和输入特征 Fin 确定的,因此它们都是顺序无关的。此外,softmax 和加权和都是排列无关算子。因此,整个自注意力过程是排列不变的,使其非常适合点云呈现的无序、不规则域。

最后,进一步使用自注意力特征Fsa和输入特征Fin,通过LBR网络为整个SA层提供输出特征Fout:

论文阅读:Point Cloud Transformer_点云_09

3.3.偏移注意力

图卷积网络 [3] 显示了使用拉普拉斯矩阵 L = D −E 替换邻接矩阵 E 的好处,其中 D 是对角度矩阵。同样,我们发现,当将 Transformer 应用于点云时,如果我们用偏移注意(OA)模块替换原来的自注意(SA)模块来增强我们的 PCT,我们可以获得更好的网络性能。如图 3 所示,偏移注意层通过逐元素减法计算自注意(SA)特征与输入特征之间的偏移(差)。此偏移量为 LBR 网络提供数据,以代替初始版本中使用的 SA 功能。

具体来说,等式5修改为:

论文阅读:Point Cloud Transformer_卷积_10

Fin - Fsa 类似于离散拉普拉斯算子,正如我们现在所展示的。首先,根据等式 2 和 5,以下成立:

论文阅读:Point Cloud Transformer_卷积_11

这里,Wv 被忽略,因为它是线性层的权重矩阵。 I 是与拉普拉斯矩阵的对角度矩阵 D 相当的单位矩阵,A 是与邻接矩阵 E 相当的注意力矩阵。

论文阅读:Point Cloud Transformer_卷积_12

在我们的 PCT 增强版本中,我们还通过修改公式 4 来改进归一化,如下所示:

在这里,我们在第一维上使用 softmax 算子,在第二维上使用 l1-norm 来标准化注意图。传统的 Transformer 将第一个维度缩放 1= p da 并使用 softmax 来标准化第二个维度。然而,我们的偏移注意力增强了注意力权重并减少了噪声的影响,这对下游任务是有利的。图 1 显示了偏移注意力图示例。可以看出,不同查询点的注意力图差异很大,但通常在语义上是有意义的。我们在实验中将这种精炼的 PCT(即带有点嵌入和 OA 层)称为简单 PCT(SPCT)。

3.4.用于增强局部特征表示的邻域嵌入

带有点嵌入的 PCT 是一种用于提取全局特征的有效网络。然而,它忽略了局部邻域信息,这在点云学习中也是必不可少的。我们借鉴PointNet++[22]和DGCNN[29]的思想,设计了一种局部邻居聚合策略——邻居嵌入,来优化点嵌入,以增强PCT的局部特征提取能力。

论文阅读:Point Cloud Transformer_卷积_13

如图4所示,邻居嵌入模块包括两个LBR层和两个SG(采样和分组)层。 LBR 层充当 3.2 节中嵌入的基点。我们使用两个级联的 SG 层在特征聚合期间逐渐扩大感受野,就像 CNN 中所做的那样。 SG 层在点云采样期间使用欧几里德距离聚合通过 k-NN 搜索分组的每个点的本地邻居的特征。

更具体地说,假设SG层将具有N个点的点云P和对应的特征F作为输入,并输出具有Ns个点的采样点云Ps及其对应的聚合特征Fs。首先,我们采用最远点采样(FPS)算法[22]将P下采样到Ps。然后,对于每个采样点 p 2 Ps,令 knn(p;P) 为其在 P 中的 k 个最近邻点。然后我们计算输出特征Fs如下:

论文阅读:Point Cloud Transformer_点云_14

其中F(p)是点p的输入特征,Fs(p)是采样点p的输出特征,MP是最大池算子,RP(x; k)是重复向量x k次的算子形成一个矩阵。连接采样点及其邻居之间的特征的想法来自 EdgeConv[29]。

我们使用不同的架构来完成点云分类、分割和法线估计的任务。对于点云分类,我们只需要预测所有点的全局类,因此点云的大小在两个 SG 层内减少到 512 和 256 个点。

对于点云分割或法线估计,我们需要确定逐点部分标签或法线,因此上述过程仅用于局部特征提取,而不会减小点云大小,这可以通过将每个阶段的输出设置为仍为 N 大小。

4. 实验

我们现在评估朴素 PCT(NPCT,具有点嵌入和自注意力)、简单 PCT(SPCT,具有点嵌入和偏移注意力)和完整 PCT(具有邻点嵌入和偏移注意力)的性能在两个公共数据集 ModelNet40 [32] 和 ShapeNet [36] 上,与其他方法进行了全面比较。在每种情况下均采用与[29]相同的软交叉熵损失函数和动量为0.9的随机梯度下降(SGD)优化器进行训练。其他训练参数,包括学习率、批量大小和输入格式,对于每个特定数据集都是特定的,稍后给出。

4.1. ModelNet40数据集上的分类

ModelNet40[32]包含40个对象类别的12,311个CAD模型;它广泛应用于点云形状分类和表面法线估计基准测试。为了公平比较,我们使用官方划分的 9,843 个对象进行训练,2,468 个对象进行评估。采用与 PointNet [21] 中使用的相同的采样策略,将每个对象均匀采样到 1,024 个点。在训练期间,[−0:2; 中的随机平移; 0:2],[0:67; 中的随机各向异性缩放; 1:5] 和随机输入 dropout 用于增强输入数据。在测试过程中,没有使用数据增强或投票方法。对于所有三个模型,小批量大小均为 32,使用 250 个训练时期,初始学习率为 0.01,并使用余弦退火计划来调整每个时期的学习率。

实验结果如表1所示。与PointNet和NPCT相比,SPCT分别提高了2.8%和1.0%。 PCT 取得了 93:2% 总体准确率的最佳结果。请注意,我们的网络目前不将法线视为输入,这原则上可以进一步提高网络性能。

论文阅读:Point Cloud Transformer_点云_15

论文阅读:Point Cloud Transformer_点云_16

4.2. ModelNet40数据集上的法线估计

表面法线估计是确定每个点的法线方向。估计表面法线具有广泛的应用,例如渲染。这项任务具有挑战性,因为它需要一种方法来完全理解密集回归的形状。我们再次使用模型Net40作为基准,使用平均余弦距离来衡量真实值与预测法线之间的差异。对于所有三个模型,使用的批量大小为 32、200 个训练周期。初始学习率也设置为 0.01,并使用余弦退火方案来调整每个时期的学习率。如表2所示,与PointNet相比,我们的NPCT和SPCT都有显着的改进,并且PCT实现了最低的平均余弦距离。

4.3. ShapeNet 数据集上的分割任务

点云分割是一项具有挑战性的任务,旨在将 3D 模型划分为多个有意义的部分。我们对 ShapeNet Parts 数据集 [36] 进行了实验评估,该数据集包含 16,880 个 3D 模型,训练到测试的划分为 14,006 到 2,874。它有16个对象类别和50个零件标签;每个实例包含不少于两个部分。按照 PointNet [21],所有模型都被下采样到 2,048 个点,保留逐点部分注释。训练期间,随机平移 [−0:2; 0:2],以及 [0:67; 中的随机各向异性缩放; 1:5] 用于增强输入数据。在测试过程中,我们采用了多尺度测试策略,尺度设置为[0:7; 1:4],步长为0:1。对于所有三个模型,批量大小、训练周期和学习率设置与正常估计任务的训练相同。

论文阅读:Point Cloud Transformer_卷积_17

表 3 显示了按类别分割的结果。使用的评估指标是部分平均 Intersection-overUnion,并且给出整体和每个对象类别。结果表明,我们的 SPCT 分别比 PointNet 和 NPCT 提高了 2:1% 和 0:6%。 PCT 取得了最佳结果,平均交叉比为 86:4%。图 5 显示了 PointNet、NPCT、SPCT 和 PCT 提供的进一步分割示例。

论文阅读:Point Cloud Transformer_卷积_18

4.4.计算需求分析

论文阅读:Point Cloud Transformer_卷积_19

论文阅读:Point Cloud Transformer_点云_20

我们现在通过比较表4中所需的浮点运算(FLOPs)和参数数量(Params)来考虑NPCT、SPCT、PCT和其他几种方法的计算需求。SPCT的内存需求最低,仅为1.36M参数,并且处理器负载很低,仅为 0.76 GFLOPs,但可提供高度准确的结果。这些特性使其适合部署在移动设备上。 PCT具有最佳性能,但计算和内存要求适中。如果我们追求更高的性能而忽略计算量和参数,我们可以在输入嵌入模块中添加邻居嵌入层。 3层嵌入PCT的结果如表5和表6所示。

论文阅读:Point Cloud Transformer_卷积_21

5.结论

在本文中,我们提出了一种排列不变点云变换器,它适用于具有不规则域的非结构化点云的学习。所提出的偏移注意力和标准化机制有助于使我们的 PCT 有效。实验表明,PCT 具有良好的语义特征学习能力,并在多个任务上实现了最先进的性能,特别是形状分类、零件分割和法线估计。Transformer 已经在大量训练数据的基础上展现出了强大的能力。目前,与图像相比,可用的点云数据集非常有限。将来,我们将在更大的数据集上对其进行训练,并研究其相对于其他流行框架的优缺点。此外,Transformer的编码器-解码器结构支持更复杂的任务,例如点云生成和完成。我们将把PCT扩展到更多应用领域。

标签:Transformer,嵌入,Point,特征,PCT,点云,注意力,Cloud
From: https://blog.51cto.com/u_16282361/8498011

相关文章

  • 聊聊如何利用springcloud gateway实现简易版灰度路由
    前言前阵子时间和朋友聊天,他们有个sass微服务,因为之前拆分过细,导致服务不仅调用链路过长,而且浪费服务资源,他们后面做了服务合并的重构,并即将上线。他觉得上线不能直接把线上的租户都全切到重构版的sass微服务,而是需要实现如下的效果他就问我说,有没有啥开源平台可以快速支持,因为......
  • boot3+JDK17+spring-cloud-gateway:4.0.0+spring-cloud:2022.0.0.0+Nacos2.2.1配置动
    项目依赖配置#Nacos帮助文档:https://nacos.io/zh-cn/docs/concepts.html#Nacos认证信息spring.cloud.nacos.config.username=nacosspring.cloud.nacos.config.password=nacosspring.cloud.nacos.config.contextPath=/nacos#设置配置中心服务端地址spring.cloud.naco......
  • 记录一次 maven 子模块相互依赖导致的父模块无法动态升级的问题 'parent.relativePath
        项目里面使用的commons公共模块,每次更改后之前都不会升级其版本号,导致当commons改动后,其他服务在不知道的情况下,会出现文件缺失。由于之前commons下面有12个公共子模块,所以之前一直没有升级commons模块。为了方便,于是决定每次更改commons模块后让所有的子项目都跟着升......
  • SpringCloud应用集成Nacos服务注册与发现
    SpringCloud应用集成Nacos服务注册与发现官方文档第一步:引入依赖版本见=>附录:根pom文件=>版本控制片段www.cnblogs.com/anhaoyan... <!--引入nacos用于服务注册与发现--><dependency><groupId>com.alibaba.cloud</groupId><artifact......
  • SpringCloud应用集成Nacos和Dubbo
    SpringCloud应用集成Nacos和Dubbo官网教程官方demo第一步:引入依赖版本见=>附录:根pom文件=>版本控制片段www.cnblogs.com/anhaoyan... <!--SpringBoot依赖--><dependency><groupId>org.springframework.boot</groupId><artifa......
  • SpringCloudAlibaba
    SpringCloudAlibaba官网地址什么是SpringCloudAlibabaSpringCloudAlibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过SpringCloud编程模型轻松使用这些组件来开发分布式应用服务。依托SpringCloudAlibaba,您只需要......
  • SpringCloudAlibaba版本关系
    SpringCloudAlibaba版本关系官方云原生应用脚手架由于SpringBoot3.0,SpringBoot2.7~2.4和2.4以下版本之间变化较大,目前企业级客户老项目相关SpringBoot版本仍停留在SpringBoot2.4以下,为了同时满足存量用户和新用户不同需求,社区以SpringBoot3.0和2.4分别为......
  • SpringCloud应用集成Nacos配置中心
    SpringCloud应用集成Nacos配置中心官方文档第一步:引入依赖版本见=>附录:根pom文件=>版本控制片段www.cnblogs.com/anhaoyan...<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-con......
  • SpringCloud应用集成Nacos服务注册与发现
    SpringCloud应用集成Nacos服务注册与发现官方文档第一步:引入依赖版本见=>附录:根pom文件=>版本控制片段www.cnblogs.com/anhaoyan... <!--引入nacos用于服务注册与发现--><dependency><groupId>com.alibaba.cloud</groupId><artifact......
  • SpringCloud应用集成Nacos和Dubbo
    SpringCloud应用集成Nacos和Dubbo官网教程官方demo第一步:引入依赖版本见=>附录:根pom文件=>版本控制片段www.cnblogs.com/anhaoyan... <!--SpringBoot依赖--><dependency><groupId>org.springframework.boot</groupId><artifa......