(2020,DA)用于数据高效 GAN 训练的可鉴别数据增强(Differentiable Augmentation)

news2024/11/30 6:47:36

Differentiable augmentation for data-efficient gan training

公众号:EDPJ

目录

0. 摘要

1. 简介

2. 相关工作

3. 方法

3.1 重温数据增强

3.2 GAN 的可鉴别增强

4. 实验

4.1 ImageNet

4.2 FFHQ 和 LSUN-Cat 

4.3 CIFAR-10 和 CIFAR-100 

4.4 low-shot 生成 

4.5 分析

5. 结论 

参考

S. 总结

S.1 核心思想

S.2 网络结构 

S.3 分析


0. 摘要

鉴于训练数据量有限,生成对抗网络 (GAN) 的性能会严重恶化。 这主要是因为判别器记住了确切的训练集。 为了解决这个问题,我们提出了可鉴别增强 (Differentiable Augmentation,DiffAugment),这是一种通过对真实样本和假样本施加各种类型的可鉴别增强来提高 GAN 数据效率的简单方法。 以前尝试直接增加训练数据来操纵真实图像的分布,收效甚微; DiffAugment 使我们能够对生成的样本采用可鉴别的增强,有效地稳定训练,并导致更好的收敛。 实验证明了我们的方法在各种 GAN 架构和无条件和类条件生成的损失函数上的一致收益。 借助 DiffAugment,我们在 ImageNet 128x128 上实现了 6.80 的最先进 FID,IS 为 100.8,在 FFHQ 和 LSUN 上给定 1,000 张图像的情况下 FID 减少了 2-4 倍。 此外,仅使用 20% 的训练数据,我们就可以在 CIFAR-10 和 CIFAR-100 上达到最佳性能。 最后,我们的方法无需预训练即可仅使用 100 张图像生成高保真图像,同时与现有的迁移学习算法不相上下。

1. 简介

如图 1 所以,只提供给 BigGAN 有限训练数据的情况下,性能严重恶化。

解决这个问题的一种广泛使用的策略是数据增强,它可以在不收集新样本的情况下增加训练数据的多样性。 裁剪、翻转、缩放、颜色抖动和区域 mask(剪切)等变换是视觉模型的常用增强。 然而,将数据增强应用于 GAN 是根本不同的。 如果仅将变换添加到真实图像,则会鼓励生成器匹配增强图像的分布。 因此,输出会受到分布偏移和引入的伪影的影响(例如,被遮盖的区域、不自然的颜色,请参见图 5a)。 或者,我们可以在训练鉴别器时增强真实图像和生成图像; 然而,这会打破生成器和鉴别器之间的微妙平衡,导致收敛性差,因为它们正在优化完全不同的目标(见图 5b)。 

为了解决这个问题,我们引入了一种简单但有效的方法 DiffAugment,它对生成器和鉴别器训练的真实图像和假图像应用相同的可鉴别增强。 它使梯度能够通过增强传播回生成器,在不操纵目标分布的情况下对鉴别器进行正则化,并保持训练动态的平衡。 对各种 GAN 架构和数据集的实验一致证明了我们方法的有效性。 使用 DiffAugment,我们改进了 BigGAN,在没有截断技巧的情况下,在 ImageNet 128x128 上实现了 6.80 的 FID 和 100.8 的 IS,并在 FFHQ 和 LSUN 数据集上给定 1,000 张图像的情况下,将 StyleGAN2 基线的 FID 降低了 2-4 倍 。 我们还仅使用 20% 的训练数据在 CIFAR-10 和 CIFAR-100 上匹配了最佳性能(见图 2)。 此外,我们的方法仅需 100 个示例即可生成高质量图像(见图 3)。 在没有任何预训练的情况下,我们使用现有的迁移学习算法获得了具有竞争力的性能,而这些算法过去需要数万张训练图像。

2. 相关工作

GAN 的正则化。GAN 训练通常需要额外的正则化,因为它们非常不稳定。 为了稳定训练动态,研究人员提出了几种技术,包括实例噪声、Jensen-Shannon 正则化、梯度惩罚、谱归一化、对抗防御正则化和一致性正则化。 所有这些正则化技术都隐式或显式地惩罚鉴别器输出在输入的局部区域内的突然变化。 在本文中,我们提供了一个不同的视角,数据增强,我们鼓励判别器在不同类型的增强下表现良好。 在第 4 节中,我们表明我们的方法是对实践中正则化技术的补充。

数据增强。 许多深度学习模型采用保留标签的转换来减少过度拟合:例如颜色抖动、区域 mask、翻转、旋转、裁剪、数据混合以及局部和仿射失真。 最近,AutoML 已被用于探索给定数据集和任务的自适应增强策略。 然而,将数据增强应用于生成模型(例如 GAN)仍然是一个悬而未决的问题。 与标签对输入变换不变的分类器训练不同,生成模型的目标是学习数据分布本身。 直接应用增强将不可避免地改变分布。 我们提出了一个简单的策略来规避上述问题。

3. 方法

生成对抗网络 (GAN) 旨在通过生成器 G 和鉴别器 D 对目标数据集的分布进行建模。生成器 G 将通常从高斯分布中提取的输入隐向量 z 映射到其输出 G(z)。 鉴别器 D 学习将生成的样本 G(z) 与真实观察值 x 区分开来。 标准的 GANs 训练算法交替优化判别器的损失 L_D 和生成器的损失 L_G 给定损失函数 f_D 和 f_G:

在这里,可以使用不同的损失函数,例如非饱和损失,其中 f_D (x) = f_G (x) = log (1 + e^x),以及hinge 损失,其中 f_D (x ) = max(0 , 1 + x) 和 f_G (x) = x。

尽管为更好的 GAN 架构和损失函数做出了广泛的持续努力,但一个基本的挑战仍然存在:鉴别器倾向于在训练过程中记住观察结果。 过度拟合的鉴别器会惩罚除确切训练数据点之外的任何生成样本,由于泛化能力差而提供无信息的梯度,并且通常会导致训练不稳定。

挑战:判别器过度拟合。 在这里,我们分析了 BigGAN 在 CIFAR-10 上具有不同数据量的性能。 如图 1 所示,即使给定 100% 的数据,鉴别器的训练和验证精度之间的差距也在不断增加,这表明鉴别器只是简单地记住了训练图像。 正如 Brock 等人所观察到的,这不仅发生在有限的数据上,而且发生在大规模的 ImageNet 数据集上。BigGAN 采用了谱归一化,这是一种广泛用于生成器和鉴别器架构的正则化技术,但仍然存在严重的过度拟合问题。

3.1 重温数据增强

数据增强是许多识别任务中减少过度拟合的常用策略——它具有不可替代的作用,也可以与其他正则化技术结合应用:例如权重衰减。 我们已经证明鉴别器存在与二元分类器类似的过度拟合问题。 然而,与鉴别器的显式正则化相比,GAN 文献中很少使用数据增强。 事实上,最近的一项工作观察到直接将数据增强应用于 GAN 并不能改善基线。 因此,我们想问以下问题:是什么阻止我们简单地将数据增强应用于 GAN? 为什么增强 GAN 不如增强分类器有效? 

仅增强真实图像(Augment reals only)。 增强 GAN 最直接的方法是直接将增强 T 应用于真实图像 x,我们称之为“仅增强真实图像”:

然而,仅增强真实图像偏离了生成建模的初衷,因为模型现在正在学习 T(x) 而不是 x 的不同数据分布。 这可以防止我们应用任何显着改变真实图像分布的增强。 满足这个要求的选择,虽然强烈依赖于具体的数据集,但在大多数情况下只能是水平翻转。 我们发现应用随机水平翻转确实会适度提高性能,并且我们在所有实验中都使用它来使我们的基线更强。 我们在表 1 中定量地和图 5a 中定性地展示了执行更强增强的副作用。正如预期的那样,该模型学会了产生不需要的颜色和几何失真(例如,不自然的颜色、切口孔),正如这些增强所引入的那样,导致性能明显变差(参见表 1 中的“Augment reals only”)。

仅增强 D。 以前,“Augment reals only”对真实样本应用单边增强,因此只有当生成的分布与操纵的真实分布匹配时才能实现收敛。 从判别器的角度来看,当我们更新 D 时,可能很想增强真实样本和假样本:

这里,相同的函数 T 应用于真实样本 x 和假样本 G(z)。 如果生成器成功地对 x 的分布进行建模,则 T(G(z)) 和 T(x) 以及 G(z) 和 x 对于鉴别器应该是无法区分的。 然而,这种策略会导致更糟糕的结果(参见表 1 中的“Augment D only”)。 图 5b 绘制了应用了平移的“Augment D only”的训练动态。 尽管 D 以高于 90% 的准确率对增强图像(T(G(z)) 和 T(x))进行了完美分类,但它无法识别 G(z),生成的图像没有增强,准确率低于 10%。 结果,生成器完全通过 G(z) 欺骗了判别器,无法从判别器那里获得有用的信息。 这表明任何打破生成器 G 和鉴别器 D 之间微妙平衡的尝试都容易失败。

3.2 GAN 的可鉴别增强

“Augment reals only” 的失败促使我们对真实样本和假样本进行增强,而“Augment D only” 的失败警告我们生成器不应忽略增强样本。 因此,要通过增强样本将梯度传播到 G,增强 T 必须是可鉴别的,如图 4 所示。我们将此称为可鉴别增强 (DiffAugment):

请注意,T 必须是相同的(随机)函数,但在图 4 所示的三个位置不一定是相同的随机变换。我们在整篇论文中使用三种简单的转换选择及其组合来证明 DiffAugment 的有效性:平移(在图像大小的 [ -1/8 , 1/8] 内,用零填充),Cutout(用图像大小的一半的随机正方形 mask)和颜色(包括在 [ -0.5 , 0.5] 内的随机亮度,对比度在 [0.5 ,1.5] 内,饱和度在 [0 , 2] 内)。 如表 1 所示,BigGAN 可以使用简单的平移(Translation)策略进行改进,并使用 Cutout 和 Translation 的组合进一步提升; 当 Color 组合使用时,它对最强策略也具有鲁棒性。

图 6 分析,更强的 DiffAugment 策略通常以较低的训练精度为代价保持较高的判别器验证精度,缓解过拟合问题,最终实现更好的收敛。  

4. 实验

4.1 ImageNet

我们在 128x128 分辨率的 ImageNet 数据集上遵循性能最佳的模型 BigGAN。 此外,我们通过随机水平翻转来增强真实图像,据我们所知产生了 BigGAN 的最佳重现(FID:我们的 7.6 对比原始论文中的 8.7)。 我们对所有数据百分比设置使用简单的平移 DiffAugment。 在表 2 中,我们的方法取得了显着的进步,尤其是在 25% 的数据设置下,其中基线模型经历了早期崩溃,并在 100% 的数据可用的情况下推进了最先进的 FID 和 IS。 

4.2 FFHQ 和 LSUN-Cat 

我们进一步在 FFHQ 肖像数据集和 LSUN-Cat 数据集上以 256x256 分辨率对 StyleGAN2 进行了实验。 我们研究了不同的有限数据设置,可用的训练图像有 1k、5k、10k 和 30k。 我们将最强的 Color + Translation + Cutout DiffAugment 应用于所有 StyleGAN2 基线,而没有任何超参数更改。 真实图像还通过 StyleGAN2 中普遍应用的随机水平翻转进行了增强。 结果如表 3 所示。在所有数据百分比设置下,我们的性能提升都相当可观。 此外,使用 DiffAugment 中使用的固定策略,我们的性能与 ADA 相当,ADA 是基于自适应增强策略的并发工作。

4.3 CIFAR-10 和 CIFAR-100 

我们在类条件 BigGAN 和 CR-BigGAN 以及无条件 StyleGAN2 模型上进行实验。 为了公平比较,我们还为所有基线增加了随机水平翻转的真实图像。 基线模型已经采用了先进的正则化技术,包括谱归一化 、一致性正则化 和 R1 正则化; 然而,在 10% 的数据设置下,它们都没有取得令人满意的结果。 对于 DiffAugment,我们对 BigGAN 模型采用 Translation + Cutout,对具有 100% 数据的 StyleGAN2 采用 Color + Cutout,对具有 10% 或 20% 数据的 StyleGAN2 采用 Color + Translation + Cutout。 如表 4 中总结的那样,我们的方法独立于基线架构、正则化和损失函数(BigGAN 中的 hinge 损失和 StyleGAN2 中的非饱和损失)改进了所有基线,而没有任何超参数更改。 我们建议读者参考 IS 完整表格的补充材料。 改进是相当可观的,尤其是在可用数据有限的情况下。 据我们所知,这是 CIFAR-10 和 CIFAR-100 在所有 10%、20% 和 100% 数据设置下的类条件生成和无条件生成的最新技术水平。

4.4 low-shot 生成 

对于特定的人、物体或地标,收集大规模数据集通常是乏味的,甚至是完全不可能的。 为了解决这个问题,研究人员最近在图像生成的设置中利用了 few-shot 学习。 Wang 等人使用微调来迁移在外部大规模数据集上预训练的模型的知识。 几项工作建议仅微调模型的一部分。 下面,我们表明我们的方法不仅在不使用外部数据集或模型的情况下产生有竞争力的结果,而且与现有的迁移学习方法正交。 

我们使用与 Mo 等人相同的代码库复制最近的迁移学习算法。基于来自 FFHQ 人脸数据集的预训练 StyleGAN 模型,在他们的数据集(AnimalFace 有 160 只猫和 389 只狗)上。 为了进一步证明数据效率,我们收集了 100 次拍摄的 Obama、grumpy cat 和 panda 数据集,并在每个数据集上仅使用 100 张图像训练 StyleGAN2 模型,而没有进行预训练。 对于 DiffAugment,我们对 StyleGAN2 采用 Color + Translation + Cutout,对原始微调算法 TransferGAN 和冻结鉴别器的前几层的 FreezeD 采用 Color + Cutout。 表 5 显示 DiffAugment 在所有数据集上独立于训练算法实现了一致的增益。 在没有任何预训练的情况下,我们仍然取得了与需要数万张图像的现有迁移学习算法相当的结果,但在 100 张照片的 Obama 数据集上是个例外,其中对人脸进行预训练显然可以带来更好的泛化。 请参见图 3 和补充材料以进行定性比较。 虽然可能有人担心生成器可能会过度拟合微小的数据集(即生成相同的训练图像),但图 7 表明我们的方法通过样式空间中的线性插值几乎没有过度拟合; 请参考补充材料中的最近邻测试。

4.5 分析

下面,我们研究更小的模型或更强的正则化是否会同样减少过度拟合,以及 DiffAugment 是否仍然有帮助。 最后,我们分析了 DiffAugment 的其他选择。

模型大小很重要吗?我们通过逐渐将 G 和 D 的通道数量减半来降低 BigGAN 的模型容量。如图 8a 所示,当使用完整模型时,基线在 CIFAR-10 上严重过度拟合,训练数据为 10%,并且在 1/4 通道达到最小 FID 29.02 。 然而,我们的方法在所有模型容量上都超过了它。 在 1/4 通道的情况下,我们的模型实现了 21.57 的明显更好的 FID,而随着模型变大,差距单调增加。 我们建议读者参阅补充材料的 IS 图。

更强的正则化很重要吗? 由于 StyleGAN2 采用 R1 正则化来稳定训练,我们将其强度从 γ= 0.1 增加到高达 10^4,并在图 8b 中绘制 FID 曲线。 虽然我们最初发现 γ= 0.1 在 100% 数据设置下效果最好,但选择 γ= 10^3 在 10% 数据设置下将其性能从 34.05 提高到 26.87。 当 γ= 10^4 时,在 750k 次迭代内,我们仅在 440k 次迭代时观察到最小 FID 为 29.14,此后性能下降。 然而,它的最佳 FID 仍然比我们的差 1.8 倍(默认 γ= 0.1)。 这表明与显式正则化鉴别器相比,DiffAugment 更有效。

DiffAugment 的选择很重要吗? 我们研究了图 9 中 DiffAugment 的其他选择,包括随机 90 度旋转(-90°、0°、90°,每个旋转概率为 1/3)、高斯噪声(标准差为 0.1)和一般涉及双线性插值的几何变换,例如双线性平移(在 [-0.25,0.25] 内)、双线性缩放(在 [0.75,1.25] 内)、双线性旋转(在 [-30°,30°] 内) ]), 和双线性剪切 (在 [-0.25,0.25] 内)。 虽然所有这些策略始终优于基线,但我们发现 Color + Translation + Cutout DiffAugment 特别有效。 简单性还使其更易于部署。 

5. 结论 

我们提出了用于数据高效 GAN 训练的 DiffAugment。DiffAugment 揭示了有价值的观察结果,即增强真实样本和假样本可以有效防止鉴别器过度拟合,并且增强对于训练生成器和鉴别器必须是同时可鉴别的。广泛的实验一致地证明了它在多个数据集(ImageNet、CIFAR、FFHQ、LSUN 和 100-shot 数据集)中使用不同网络架构(StyleGAN2 和 BigGAN)、监督设置和目标函数的优势。 当可用数据有限时,我们的方法特别有效。

更广泛的影响。在本文中,我们从数据效率的角度研究 GAN,旨在使更多人(例如,视觉艺术家和新手用户)和无法访问大量数据的研究领域能够访问生成模型。 在现实场景中,可能有多种原因导致可用数据量有限,例如罕见事件、隐私问题和历史视觉数据。 DiffAugment 提供了一种有前途的方法来缓解上述问题并使每个人都更容易获得 AI。 

参考

Zhao S, Liu Z, Lin J, et al. Differentiable augmentation for data-efficient gan training[J]. Advances in Neural Information Processing Systems, 2020, 33: 7559-7570. 

S. 总结

S.1 核心思想

本文是对自适应鉴别器增强(adaptive discriminator augmentation,ADA)一文中提出的、用于提升数据有限时 GAN 的性能的、可鉴别数据增强(Differentiable Augmentation,DiffAugment)的进一步研究(消融实验)。结果表明,需要同时对真实数据、生成数据以及生成器进行增强。

S.2 网络结构 

DiffAugment 网络结构如上图所示。

  • 固定 G,鉴别器学习对变换后真实数据有高鉴别分数,对生成数据有低鉴别分数。
  • 固定 D,生成器学习生成经过变换后能骗过鉴别器的图像。

变换 T 必须是相同的(随机)函数,但在上图所示的三个位置不一定是相同的随机变换(例如,平移、剪切、颜色变换)。 

S.3 分析

如果只增强真实数据,则生成器学习到的分布式是经过变换的真实图像分布。

如果只增强鉴别器(增强真实数据和生成数据),则生成器学习到的是生成未经变换的的数据来骗过鉴别器。这会打破生成器与鉴别器的平衡,导致收敛性差,从而使性能恶化,因为它们正在优化完全不同的目标。

因此,需要同时对真实数据、生成数据以及生成器进行增强。

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

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

相关文章

GPU服务器傻瓜式安装Anaconda,pytorch,tensorflow

1.下载Anaconda安装包,官网地址,清华源地址。 在官网下载到本地之后,可以通过文件传输上传安装包到服务器,使用清华源地址可以直接使用wget下载所需版本,例如: wget https://mirrors.tuna.tsinghua.edu.c…

Java之旅(三)

Java 输出:println()、print() 使用 println() 方法在 Java 中输出值或打印文本。 System.out.println("Hello World!"); println() 可以根据需要添加任意数量的方法。请注意,它将为每个方法添加一个新行: System.out.println(&…

静电测试仪:如何简单高效地测量静电电荷?

静电电荷是在两种不同材料之间接触或分离时,由电子或离子转移所产生的电荷。静电电荷的存在,可能导致许多不良的影响,比如产品损坏、设备失灵甚至是人员受伤。因此,测量静电电荷量成为提升产品质量、工作环境的必要步骤之一。而静…

【PCIE体系结构十二】链路训练的相关基础前菜

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考书籍:《PCI.EXPRESS系统体系结构标准教材 Mindshare》 目录 物理…

linuxOPS基础_Linux系统的文件目录结构及用途

linux系统文件目录结构 Linux 系统不同于 Windows,没有 C 盘、D 盘、E 盘那么多的盘符,只有一个根目录(/),所有的文件(资源)都存储在以根目录(/)为树根的树形目录结构中…

如何使用高扩展组件制作APP原型的标签栏?

原型项目中的组件(亦称元件、控件),是指通过基础图层拼装而成,可供用户进行交互或用于展示复杂内容的元素。 在原型设计工作中,组件的使用是非常重要的部分,其不仅关乎项目内容的呈现,更会影响…

网络货运平台源码 管理平台端+司机端APP+货主端APP源码

网络货运平台系统源码,网络货运平台源码 管理平台端司机端APP货主端APP 遵循政策要求的八项基本功能,结合货主、实际承运人、监管方等多方业务场景,构建人、车、货、企一体的标准化网络货运平台系统。具有信息发布、线上交易、全程监控、金融…

网络安全工程师能拿高薪的秘密!

网络安全是一门具有很强实践性的学科,但是网络安全传统过程对实践能力培养环节比较薄弱,缺少适应新需求的实践与创新平台。所以,很多网络安全专业的学生学习的基本都是理论知识,而最重要的实战能力薄弱。仅仅只会一点基础的专业知…

景区虚拟人智能互动导览提升客户服务体验

数字化浪潮下,文旅产正积极拥业数字化转型。虚拟数字人作为元宇宙的交互入口,其在文旅产业中的应用,对文旅产业的发展具有非常重要的意义。将超写实虚拟人化身为景点讲解员有哪些好处呢? 视觉冲击力更强,吸引眼球 超写实虚拟人的…

jvm之JMX

写在前面 本文来看先jmx相关内容。 1:jmx介绍 jvm在运行的过程中有很多的信息,比如堆内存,线程数,加载的类信息,CPU的使用量等,如果我们想要将这些信息暴漏让外界获取,该怎么做呢?此时就需要…

springAop原理分析-动态代理对象创建过程分析

概念 AspectJ Aspect 切面(由多个切点组成,多个点组成面) 启用AspectJ支持后,Spring 会自动检测出在应用程序上下文中定义的任何 Bean,如下使用Aspect 定义的一个切面示例。 package org.xyz; import org.aspectj.…

STM8、STM8S003F3P6 实现PWM控制电机HAS10227

背景 有个项目需要控制一台风机的转速,使用STM8S003F3P6 输出PWM控制,这里就详细记录一下调试记录 原理图 原理图比较简单,电机接口CN3 电机接口原理图 与MCU管脚连接位置如下图 首先我们要明白电机的原理 电机 简单来说就是 实现电能与…

闲置手机建站 - 安卓Termux+Hexo搭建属于你自己博客网站【cpolar实现公网访问】

文章目录 1. 安装 Hexo2. 安装cpolar内网穿透3. 公网远程访问4. 固定公网地址 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并…

助力工业物联网,工业大数据之一站制造业务主题划分【十三】

文章目录 01:一站制造业务主题划分02:一站制造业务维度设计03:一站制造业务主题维度矩阵 01:一站制造业务主题划分 目标:掌握一站制造的主题域及主题的划分实施 来源 主题域划分:业务或者部门划分 业务&am…

PHP基于xlswriter支持无限表头层级Excel导出

本章介绍基于PHP扩展xlswriter的Vtiful\Kernel\Excel类可以支持无限层级的复杂表头导出! 废了九牛二虎之力,终于把这个功能类写完了…后续会持续更新优化 准备xlswriter扩展 windows系统: 到PECL网站下载符合自己本地PHP环境的ddl文件下载地…

Java内部类(成员内部类、静态嵌套类、方法内部类、匿名内部类)

文章目录 一、内部类的共性二、为什么需要内部类三、静态内部类(静态嵌套类)四、成员内部类五、局部内部类(方法内部类)六、匿名内部类 Java 类中不仅可以定义变量和方法,还可以定义类,这样定义在类内部的类…

WSL2+windows terminal

WSL2的安装与使用-Windows与Linux双系统的新选择 既要使用Windows系统满足日常生活,协作办公,又要使用Linux系统满足开发工作,双系统来回重启好麻烦,双主机成本高,远程服务器好多限制,WSL也许是更好的解决…

“智慧赋能 强链塑链”——打造电力特色智慧供应链体系

构建业务数智化、资源集约化、运营一体化、发展绿色化的智慧供应链体系,是电力企业实现智慧供应链建设的使命和目标。同时,在国内外双循环、一带一路、建立统一大市场的政策背景推动下,企业经营和居民生活对电力的需求仍然强劲并持续增长&…

Seata AT模式源码解析一(Seata Server端启动流程)

文章目录 启动类 ServerSessionHolder初始化DefaultCoordinator初始化初始化NettyRemotingServer 启动类 Server seata-server的入口类在Server类中,源码如下: public class Server {/*** The entry point of application.** param args the input arg…

Intel Realsense D405 在Ubuntu18.04下使用kalibr标定

目录 一. 在ubuntu下使用kalibr标定realsense_ros的安装总结下面是标定步骤 一. 在ubuntu下使用kalibr标定 在Realsense官网上librealsense现在D405只接受ROS2下的环境(相机确实很新) 在ROS1下我想到了改设备ID号的方式进行标定 这里需要注意libreals…