(2023,微调节,多纵横比训练,细化模型)SDXL:用于高分辨率图像合成的改进的潜在扩散模型

news2024/11/23 23:56:15

SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis

公众号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料)

目录

0. 摘要

1. 简介

2. 改进稳定扩散 

2.1 架构与规模 

2.2 微调节(Micro-Conditioning) 

2.3 多纵横比(aspect-ratios)训练 

2.4 改进的自动编码器 

2.5 将所有内容放在一起 

3. 未来的工作 

参考

附录

B. 局限性 

S. 总结

S.1 主要贡献

S.2 改进稳定扩散


0. 摘要

我们提出了 SDXL,一种用于文本到图像合成的潜在扩散模型(latent diffusion model,LDM)。 与之前版本的稳定扩散相比,SDXL 利用了三倍大的 UNet 主干:模型参数的增加主要是由于更多的注意力块和更大的交叉注意力上下文,因为 SDXL 使用第二个文本编码器。 我们设计了多种新颖的调节方案并在多种纵横比上训练 SDXL。 我们还引入了一种细化(refinement)模型,该模型用于使用事后(post-hoc)图像到图像技术提高 SDXL 生成的样本的视觉保真度。 我们证明,与以前版本的稳定扩散相比,SDXL 显示出显着提高的性能,并取得了与黑盒最先进的图像生成器相媲美的结果。 本着促进开放研究并提高大型模型训练和评估透明度的精神,我们提供对代码和模型权重的访问。

代码:https://github.com/Stability-AI/generative-models

模型权重:https://huggingface.co/stabilityai/

1. 简介

去年,自然语言 [50]、音频 [17] 和视觉媒体 [38、37、40、44、15、3、7] 等各种数据领域的深度生成模型取得了巨大飞跃。 在本报告中,我们重点关注后者并推出了 SDXL,这是稳定扩散的大幅改进版本。 稳定扩散是一种潜在的文本到图像扩散模型(DM),它是一系列最新进展的基础,例如 3D 分类 [43]、可控图像编辑 [54]、图像个性化 [10]、合成数据增强 [48]、图形用户界面原型 [51] 等。值得注意的是,应用范围非常广泛,涵盖音乐生成 [9] 和从功能磁共振成像(fMRI)脑扫描重建图像等多种领域 [49]。

用户研究表明,SDXL 始终大幅超越所有以前版本的稳定扩散(见图 1)。 在本报告中,我们提出了导致性能提升的设计选择,包括:

  • 与之前的稳定扩散模型相比,UNet 骨干增加了 3 倍(第 2.1 节)
  • 两种简单但有效的附加调节技术(第 2.2 节) 不需要任何形式的额外监督
  • 一个单独的基于扩散的细化模型,该模型对 SDXL 产生的潜在编码应用噪声去噪过程 [28],以提高其样本的视觉质量(第 2.5 节 )。 

视觉媒体创作领域的一个主要问题是,虽然黑盒模型通常被认为是最先进的,但其架构的不透明性阻碍了对其性能的忠实评估和验证。 这种透明度的缺乏阻碍了可重复性,抑制了创新,并阻止社区在这些模型的基础上进一步推动科学和艺术的进步。 此外,这些闭源策略使得以公正和客观的方式评估这些模型的偏见(biases)和局限性变得具有挑战性,这对于负责任和道德的部署至关重要。 通过 SDXL,我们发布了一个开放模型,该模型可实现与黑盒图像生成模型的竞争性能(见图 10 和图 11)。 

2. 改进稳定扩散 

在本节中,我们将介绍对稳定扩散架构的改进。 它们是模块化的,可以单独使用或一起使用来扩展任何模型。 尽管以下策略是作为潜在扩散模型(LDM)[38] 的扩展来实现的,但其中大多数也适用于其像素空间对应物。 

2.1 架构与规模 

从 Ho 等人 [14] 和宋等人 [47] 证明了 DM 是强大的图像合成生成模型的开创性作品开始,卷积UNet [39] 架构一直是基于扩散的图像合成的主要架构。 然而,随着基础 DM 的发展 [40,37,38],底层架构不断发展:从添加自注意力和改进的升级层 [5],到文本到图像合成的交叉注意力 [38] ,到纯基于 transformer 的架构 [33]。 

我们遵循这一趋势,并遵循 Hoogeboom 等人 [16] 的观点,将 transformer 的大部分计算转移到 UNet 中的较低层特征。 特别是,与原始的稳定扩散架构相比,我们在 U-Net 内使用 transformer 块的异构分布:出于效率原因,我们省略了最高特征级别的 transformer 块,在较低级别使用 2 和 10 个块, 并完全删除 U-Net 中的最低级别(8×下采样)——参见表 1。表 1 比较 Stable Diffusion 1.x & 2.x 和 SDXL 的架构。 我们选择更强大的预训练文本编码器用于文本调节。 具体来说,我们将 OpenCLIP ViT-bigG [19] 与 CLIP ViT-L [34] 结合使用,其中我们沿着通道轴连接倒数第二个文本编码器输出 [1]。 除了使用交叉注意力层来根据文本输入来调节模型之外,我们还遵循[30],并另外根据 OpenCLIP 模型的池化文本嵌入来调节模型。 这些变化导致 U-Net 中的模型大小为 2.6B 参数,请参见表 1。文本编码器的参数总大小为817M。 

2.2 微调节(Micro-Conditioning) 

根据图像尺寸调节模型。 LDM 范式 [38] 的一个臭名昭著的缺点是,由于其两阶段架构,训练模型需要最小的图像大小。 解决此问题的两种主要方法是丢弃低于某个最小分辨率的所有训练图像(例如,稳定扩散 1.4/1.5 丢弃所有低于 512 像素的任何尺寸的图像),或者上采样太小的图像 。 然而,根据所需的图像分辨率,前一种方法可能会导致训练数据的很大一部分被丢弃,这可能会导致性能损失并损害泛化能力。 我们在图 2 中可视化了 SDXL 预训练数据集的此类效果。 对于这种特定的数据选择,丢弃低于 256^2 像素预训练分辨率的所有样本将导致丢弃 39% 的数据。 另一方面,第二种方法通常会引入可能泄漏到最终模型输出的上采样伪影,导致样本模糊等。 

相反,我们建议根据原始图像分辨率来调节 UNet 模型,这在训练过程中是很容易获得的。 特别是,我们提供图像的原始(即在任何重新缩放之前)高度和宽度,作为对模型 c_size = (h_original, w_original) 的附加调节。 每个成分都使用傅立叶特征编码独立嵌入,并且这些编码被连接成单个向量,我们通过将其添加到时间步嵌入 [5] 来将其输入到模型中。 

在推理时,用户可以通过此尺寸调节设置所需的图像表观分辨率。 显然(见图 3),模型已经学会将调节 c_size 与依赖于分辨率的图像特征相关联,可以利用这些特征来修改与给定提示相对应的输出的外观。 请注意,对于图 3 中所示的可视化,我们可视化 512 × 512 模型生成的样本(详细信息请参见第 2.5 节),因为在后续的用于最终 SDXL 模型的多纵横比(multi-aspect-ratio)精调之后,尺寸调节的效果不太清晰可见 。 

​​​​我们通过在类条件 ImageNet [4] 上以空间大小 512^2 训练和评估三个 LDM 来定量评估这种简单但有效的调节技术的效果:

  • 对于第一个模型(CIN-512-only),我们丢弃所有至少有一个边缘小于 512 像素的训练示例,这会导致训练数据集仅包含 70k 图像。
  • 对于 CIN-nocond,我们使用所有训练示例,但没有大小调节。
  • 此附加调节仅用于 CIN-size-cond。

训练后,我们为每个模型生成 50 个 DDIM 步骤 [46] 和(无分类器)指导尺度 5 [13] 的 5k 个样本,并计算 IS [42] 和 FID [12](针对完整验证集)。

  • 对于 CIN-size-cond,我们生成的样本始终以 c_size = (512, 512) 为条件。表 2 总结了结果并验证了 CIN-size-cond 在两个指标上均优于基线模型。
  • 我们将 CIN-512-only 的性能下降归因于,对小训练数据集的过度拟合而导致的泛化不良,
  • 而 CIN-no-cond 样本分布中模糊样本模式的影响导致 FID 分数降低。

请注意,尽管我们发现这些经典的定量评分不适合评估基础(文本到图像)DM 的性能 [40,37,38](参见附录 F),但它们仍然是 ImageNet 上的合理指标,因为 FID 和 IS 的神经主干已经在 ImageNet 上进行了训练。 

根据裁剪参数调整模型。图 4 的前两行说明了以前 SD 模型的典型故障模式: 合成对象可以被裁剪,例如左侧 SD 1-5 和 SD 2-1 示例中的猫头。 这种行为的直观解释是在模型训练期间使用随机裁剪:由于在 PyTorch [32] 等深度学习框架中整理批次需要相同大小的张量,因此典型的处理流程是 (i) 调整图像大小,使得最短尺寸与所需的目标尺寸匹配,然后(ii)沿长轴随机裁剪图像。 虽然随机裁剪是数据增强的一种自然形式,但它可能会泄漏到生成的样本中,从而导致上面显示的恶意影响。 

为了解决这个问题,我们提出了另一种简单而有效的调节方法:在数据加载期间,我们统一采样裁剪坐标 c_top 和 c_left (整数,分别指定沿高度和宽度轴从左上角裁剪的像素数量)并通过傅立叶特征嵌入将它们作为调节参数引入到模型中,类似于上述的尺寸调节。 然后将串联的嵌入 c_crop 用作附加调节参数。 我们强调,该技术不仅限于 LDM,还可以用于任何 DM。 请注意,裁剪和尺寸调节可以很容易地结合起来。 在这种情况下,我们将沿通道维度连接特征嵌入,然后将其添加到 UNet 中的时间步嵌入中。算法 1 说明了如果应用这种组合,我们如何在训练期间对 c_crop 和 c_size 进行采样。 

鉴于根据我们的经验,大规模数据集平均而言是以对象为中心的,因此我们在推理过程中设置 (c_top, c_left) = (0, 0),从而从训练模型中获取以对象为中心的样本。 

见图5:通过调整 (c_top, c_left),我们可以成功模拟推理过程中的裁剪量。 这是条件增强的一种形式,并已以各种形式用于自回归模型 [20],最近又用于扩散模型 [21]。 

虽然数据分桶(data bucketing) [31] 等其他方法成功地解决了相同的任务,但我们仍然受益于裁剪引起的数据增强,同时确保它不会泄漏到生成过程中 - 我们实际上利用它在图像合成过程中获得对数据的更多控制。 此外,它易于实现,可以在训练期间以在线方式应用,无需额外的数据预处理。 

2.3 多纵横比(aspect-ratios)训练 

现实世界的数据集包括大小和纵横比(aspect-ratios)差异很大的图像(参见图 2)。虽然文本到图像模型的常见输出分辨率是 512×512 或 1024×1024 像素的方形图像,但我们认为,考虑到横向(landscape)(例如 16:9)或纵向(portrait)格式屏幕的广泛分布和使用,这是一个相当不自然的选择。 

受此启发,我们微调我们的模型以同时处理多个纵横比:我们遵循常见做法 [31] 并将数据划分为不同纵横比的桶,其中我们将像素数保持为尽可能接近 1024^2 像素,并改变高度和宽度,相应地为 64 的倍数。附录 I 中提供了用于训练的所有长宽比的完整列表。在优化期间,训练批次由来自同一存储桶的图像组成,并且我们在每个训练步骤中交替使用存储桶尺寸。 此外,模型接收桶尺寸(或目标尺寸)作为条件,表示为整数元组 c_ar = (h_tgt, w_tgt),其嵌入到傅立叶空间中,类似于上述尺寸调节和裁剪调节。 

在实践中,我们在以固定的长宽比和分辨率对模型进行预训练后,将多纵横比训练作为微调阶段,并通过沿通道轴串联将其与第 2.2 节中介绍的调节技术相结合。附录 J 中的图 16 提供了用于此操作的 python 代码。 请注意,裁剪调节和多纵横比训练是互补的操作,并且裁剪调节仅在桶边界(通常为 64 像素)内起作用。 然而,为了便于实现,我们选择为多纵横比模型保留此控制参数。 

2.4 改进的自动编码器 

稳定扩散是一种 LDM,在自动编码器的预训练的、学到的(和固定的)潜在空间中运行。 虽然大部分语义合成是由 LDM [38] 完成的,但我们可以通过改进自动编码器来改善生成图像中的局部高频细节。 为此,我们以更大的批量大小(256 vs 9)训练用于原始稳定扩散的相同自动编码器架构,并另外使用指数移动平均值跟踪权重。 生成的自动编码器在所有评估的重建指标中都优于原始模型,请参见表 3。我们在所有实验中都使用这个自动编码器。 

2.5 将所有内容放在一起 

我们通过多阶段过程训练最终模型 SDXL。

  • SDXL 使用第 2.4 节中的自动编码器和具有 1000 个步骤的离散时间扩散计划 [14, 45]。
  • 首先,我们在内部数据集上预训练基本模型(参见表 1),其高度和宽度分布如图 2 所示,在分辨率为 256 × 256 像素、批量大小为 2048 的情况下进行了 600,000 个优化步骤 ,使用尺寸和裁剪调节,如第 2.2 节所述。 .
  • 我们继续在 512 × 512 像素图像上进行另外 200,000 个优化步骤的训练。
  • 最后利用多纵横比训练(第 2.3 节)结合 0.05 的偏移噪声 [11, 25] 水平,来在像素区域(∼ 1024 × 1024)不同纵横比训练模型(第 2.3 节,附录 I)。 

细化阶段。根据经验,我们发现生成的模型有时会产生局部质量较低的样本,见图 6。为了提高样本质量,我们在同一潜在空间中训练一个单独的 LDM,该 LDM 专门用于高质量、高分辨率的数据 并对来自基模型的样本采用 SDEdit [28] 引入的加噪-去噪过程。 我们遵循 [1] 并在前 200 个(离散)噪声尺度上专门研究此细化模型。 在推理过程中,我们从基础 SDXL 渲染(render)潜在变量,并使用相同的文本输入,通过细化模型(见图 1)直接在潜在空间中对它们进行扩散和去噪。 我们注意到,此步骤是可选的,但可以提高详细背景和人脸的样本质量,如图 6 所示。 

为了评估我们模型的性能(有和没有细化阶段),我们进行了用户研究,并让用户从以下四个模型中选择他们最喜欢的一代:SDXL、SDXL(带细化器)、Stable Diffusion 1.5 和 Stable Diffusion 2.1。 结果表明,具有细化阶段的 SDXL 是评级最高的选择,并且显着优于 Stable Diffusion 1.5 和 2.1(获胜率:带细化的 SDXL:48.44%,SDXL 基础:36.93%,Stable Diffusion 1.5:7.91% ,稳定扩散2.1:6.71%)。 请参见图 1,它还提供了完整管道的概述。 然而,当使用 FID 和 CLIP 分数等经典性能指标时,SDXL 相对于以前方法的改进并没有反映出来,如图 12 所示并在附录 F 中讨论。这与 Kirstain 等人的研究结果一致并进一步支持。 [23]。 

3. 未来的工作 

本报告对用于文本到图像合成的基础模型稳定扩散的改进进行了初步分析。 虽然我们在合成图像质量、提示依从性和构图方面取得了显着改进,但在下面,我们讨论了我们认为模型可以进一步改进的几个方面: 

  • 单阶段:目前,我们使用带有附加细化模型的两阶段方法从 SDXL 生成最佳样本。 这导致必须将两个大型模型加载到内存中,从而阻碍了可访问性和采样速度。 未来的工作应该研究提供相同或更好质量的单一阶段的方法。 
  • 文本合成:虽然扩展和更大的文本编码器(OpenCLIP ViT-bigG [19])有助于提高稳定扩散之前版本的文本渲染能力,但合并字节级分词器(tokenizers) [52, 27] 或简单地将模型缩放到较大的尺寸 [53, 40] 可以进一步改善文本合成。 
  • 架构:在这项工作的探索阶段,我们简要尝试了基于 Transformer 的架构,例如 UViT [16] 和 DiT [33],但没有发现立竿见影的好处。 然而,我们仍然乐观地认为,仔细的超参数研究最终将能够扩展到更大的变压器主导的架构。 
  • 蒸馏:虽然我们对原始稳定扩散模型的改进非常显着,但它们的代价是推理成本增加(VRAM 和采样速度)。 因此,未来的工作将侧重于减少推理所需的计算量,并提高采样速度,例如,通过指导 [29]、知识 [6,22,24] 和渐进式蒸馏 [41,2,29]。 
  • 我们的模型采用 [14] 的离散时间公式进行训练,并且需要偏移噪声 [11, 25] 以获得美观的结果。 Karras 等人 [21] 的 EDM 框架是未来模型训练的有希望的候选者,因为它的连续时间公式可以提高采样灵活性并且不需要噪声计划校正。 

参考

Podell D, English Z, Lacey K, et al. SDXL: improving latent diffusion models for high-resolution image synthesis[J]. arXiv preprint arXiv:2307.01952, 2023.

附录

B. 局限性 

虽然我们的模型在生成逼真图像和合成复杂场景方面表现出了令人印象深刻的能力,但重要的是要承认其固有的局限性。 了解这些限制对于进一步改进和确保负责任地使用该技术至关重要。 

首先,模型在合成复杂的结构时可能会遇到挑战,例如人手(见图7,左上)。 尽管它已经接受了各种数据的训练,但人体解剖学的复杂性给实现一致的准确表示带来了困难。 这种限制表明需要进一步的缩放和训练技术,专门针对细粒度细节的合成。 发生这种情况的原因可能是手和类似物体在照片中出现的差异非常大,在这种情况下模型很难提取真实 3D 形状和物理限制的知识。 

其次,虽然该模型在生成的图像中实现了显着的真实感水平,但值得注意的是,它并没有达到完美的照片真实感。 某些细微差别,例如微妙的灯光效果或微小的纹理变化,可能仍然不存在或在生成的图像中不太忠实地表示。 此限制意味着在需要高度视觉保真度的应用程序中仅依赖模型生成的视觉效果时应谨慎行事。 

此外,该模型的训练过程严重依赖于大规模数据集,这可能会无意中引入社会和种族偏见。 因此,模型在生成图像或推断视觉属性时可能会无意中加剧这些偏差。 

在样本包含多个对象或主题的某些情况下,模型可能会表现出一种称为“概念渗漏(bleeding)”的现象。 此问题表现为不同视觉元素的意外合并或重叠。 例如,在图 8 中看到,企鹅应该有“蓝色帽子”和“红色手套”,但生成时却带有蓝色手套和红色帽子。 识别和解决此类事件对于提高模型准确分离和表示复杂场景中单个对象的能力至关重要。 其根本原因可能在于使用的预训练文本编码器:首先,它们被训练为将所有信息压缩为单个标记,因此它们可能无法仅绑定正确的属性和对象,Feng 等人 [8] 通过将单词关系显式编入编码中来缓解这个问题。 其次,对比损失也可能导致这种情况,因为同一批次中需要具有不同绑定的负例 [35]。 

此外,虽然我们的模型比之前的 SD 迭代取得了显着进步,但在渲染长而清晰的文本时仍然遇到困难。 有时,生成的文本可能包含随机字符或表现出不一致,如图 8 所示。克服这一限制需要进一步研究和开发增强模型文本生成能力的技术,特别是对于扩展的文本内容 - 例如,参见 Liu 等人 [27],他提出通过字符级文本标记器(tokenizer)增强文本渲染能力。 或者,缩放模型确实可以进一步改进文本合成 [53, 40]。 

总之,我们的模型在图像合成方面表现出显着的优势,但它也不能免除某些限制。 与合成复杂结构、实现完美的真实感、进一步解决偏见、减少概念渗漏和改进文本渲染相关的挑战突出了未来研究和优化的途径。 

S. 总结

S.1 主要贡献

  • 本文提出了 SDXL,这是一种改进的用于文本到图像合成的潜在扩散模型(latent diffusion model,LDM)。 
  • 与之前版本的稳定扩散相比,SDXL 利用了三倍大的 UNet 主干:模型参数的增加主要是由于更多的注意力块和更大的交叉注意力上下文,因为 SDXL 使用第二个文本编码器。
  • 设计了多种新颖的调节方案并在多种纵横比上训练 SDXL。 
  • 还引入了一种细化(refinement)模型,该模型用于使用事后(post-hoc)图像到图像技术提高 SDXL 生成的样本的视觉保真度。 

S.2 改进稳定扩散

架构。 

  • 将 transformer 的大部分计算转移到 UNet 中的较低层特征。
  • 选择更强大的预训练文本编码器用于文本调节。

微调节

  • 尺寸调节:LDM 的一个的缺点是限制训练模型最小的图像尺寸。 解决此问题的两种主要方法是丢弃低于某个最小分辨率的所有训练图像,或者上采样太小的图像。前者可能会导致性能损失并损害泛化,后者可能会引入上采样伪影,导致样本模糊。可使用尺寸调节解决这个问题。
  • 裁剪调节:虽然随机裁剪是数据增强的一种自然形式,但它可能会泄漏到生成的样本中,从而影响生成图像。可使用裁剪调节解决这个问题。
  • 裁剪调节和尺寸调节是可以结合使用。

多纵横比训练

  • 虽然文本到图像模型的常见输出分辨率是 512×512 或 1024×1024 像素的方形图像,但在现实中这是一个相当不自然的选择。
  • 在实践中,在以固定的长宽比和分辨率对模型进行预训练后,将多纵横比训练作为微调阶段,并通过沿通道轴串联将其与微调节技术相结合。

改进的自动编码器。 

  • 可以通过改进自动编码器来改善生成图像中的局部高频细节。
  • 以更大的批量大小(256 vs 9)训练用于原始稳定扩散的相同自动编码器架构,并另外使用指数移动平均值跟踪权重

细化模型

  • 生成的模型有时会产生局部质量较低的样本。
  • 为了提高样本质量,在同一潜在空间中训练一个单独的 LDM,该 LDM 专门用于高质量、高分辨率的数据,并对来自基模型的样本采用 SDEdit 引入的加噪-去噪过程。
  • 在推理过程中,从基础 SDXL 渲染(render)潜在变量,并使用相同的文本输入,通过细化模型直接在潜在空间中对它们进行扩散和去噪。

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

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

相关文章

Python基础数据结构入门必读指南

更多资料获取 作者主页:涛哥聊Python 个人网站:涛哥聊Python 大家好,我是涛哥,今天为大家分享的是Python中常见的数据结构。 1.数组 含义:数组是一种有序的数据结构,其中的元素可以按照索引来访问。数组…

DMNet复现(二)之模型篇:Density map guided object detection in aerial image

以前用Swin Transformer Tiny训练了40epoch的,官方用的Faster RCNN,这里先用Swin Transformer Tiny进行测试。 模型训练 采用基于MMDetection的框架Swin Transformer Tiny进行训练,训练方法可参考官方教程。 融合检测 Global Image 检测 …

无涯教程-JavaScript - SEC函数

描述 SEC函数返回Angular的割线。 语法 SEC (number)争论 Argument描述Required/OptionalNumberNumber is the angle in radians for which you want the secant.Required Notes 数字的绝对值必须小于2 ^ 27 如果Angular为度,则将Angular乘以PI()/180或使用RADIANS函数将…

彻底学会Unity中UGUI中UI元素自适应问题

彻底学会Unity中UGUI中UI元素自适应问题 包会的简单版教程 狂飙模式: 经过自我进化学习,终于参悟。看完这个教程,你也可以! 1.扫盲UGUI的理解: Unity3d 中的UI都是画在画布上的。就像画一幅画,首先我们需…

iPhone NFC 设置教程(门禁卡/公交卡/校园卡等等)

苹果手机如何开启NFC功能呢?相信不少小伙伴都对iPhone手机里的NFC用法都不太了解。尽管小米、华为、荣耀、一加、oppo、vivo等安卓手机的NFC使用已经满大街了,不仅功能齐全而且快捷安全,但是这一功能在苹果手机上还很鸡肋,因为它对…

DBSCAN聚类的Python 实现

一、说明 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚类是一种基于密度的聚类算法。它能够根据数据点的密度来将数据划分为不同的类别,并可以自动识别离群点。DBSCAN聚类算法的核心思想是将密度高的数据点划分为…

MongoDB——关于NumberLong处理大整数

1、问题 MongoDB根据某个Long类型ID查询数据查不出来 db.getCollection(school_work_section).find({school_work_section_id:577199363866206209}); 2、解决办法 Long类型的需要在NumberLong的对象里加上双引号才能查出来 db.getCollection(school_work_section).find({sc…

初识C语言——详细入门一(系统性学习day4)

目录 前言 一、C语言简单介绍、特点、基本构成 简单介绍: 特点: 基本构成: 二、认识C语言程序 标准格式: 简单C程序: 三、基本构成分类详细介绍 (1)关键字 (2&#xf…

搭建ELK+Filebead+zookeeper+kafka实验

一、ELKFilebeadzookeeperkafka架构 第一层:数据采集层(Filebeat) 数据采集层位于最左边的业务服务集群上,在每个业务服务器上面安装了filebead做日志收集,然后把采集到的原始日志发送到kafkazookeeper集群上。 第二…

文件拷贝【 使用字节流完成文件的复制(支持一切文件类型的复制)】

需求: 把某个视频复制到 E:\\videocopy\\new.mp4 思路: 根据 数据源 创建字节输入流对象根据 目的地 创建字节输出流对象读写数据,复制视频释放资源 可以拷贝 视频 ,图片 ,文本.txt 等文件 package com.csdn.d2_byte_…

Linux grep命令

①grep命令——过滤文件 这是txt.txt的内容 通过grep管道符查找gcc内容在txt.txt文件中 查找gcc所处行位置,加上-n 查找有多个相同内容的数据 ②wc命令——数量统计 统计数据如图: ③管道符——左边结果作为右边输入 如下图所示统计txt.txt文件"-&…

连续性数据进行Meta荟萃分析

Meta荟萃分析(也称Meta分析,元分析,异质性分析等),其是一种综合各种文献结论,进而汇总综合评价的方法,Meta分析常用于医学、心理学、教育学、生态学等专业领域。通俗地看,Meta分析是…

物 理 层

二、物理层 1、物理层的基本概念 物理层的作用:尽可能的屏蔽掉传输媒体和通信手段的差异,使物理层上面的数据链路层感觉不到这些差异,使其只需要考虑如何完成本层的协议和服务 1.1、物理层的主要任务 机械特性:指明接口所用的接线器的形状…

【计算机视觉】1. 计算机视觉基础理论知识和框架(Basic Concepts)

什么是计算机视觉? 一、什么是计算机视觉二、二个研究维度三、研究挑战3.1 像素与语义之间的GAP3.2 视觉变化3.3 光照变化3.4 尺度变化3.5 形态变化3.6 背景复杂3.7 遮挡3.8 内外 四、计算机视觉框架4.1 计算机视觉基础4.2 深度学习算法理论基础4.3 深度学习算法 五、计算机视…

SpringBoot3与IDE中配置JDK17

概述 SpringBoot3需要JDK17的支持,不再支持JDK8。 如果要运行SpringBoot3的项目,根据使用的IDE,需要的配置不同。 配置说明 1. SpringToolSuite4 如果使用的是SpringToolSuite4(STS),比较简单&#xf…

接入网技术

接入网 接入网是指骨干网络到用户或企业之间的所有设备。其长度一般为几百米到几公里,因而形象地被称为“最后一公里”。接入网地接入方式包括铜线(普通电话线)接入、基于双绞线的ADSL技术、基于HFC网(光纤和同轴电缆(有线电视电缆)混合网)的Cable Modem技术、光纤接入…

「聊设计模式」之职责链模式(Chain of Responsibility)

🏆本文收录于《聊设计模式》专栏,专门攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎持续关注&&收藏&&订阅! 前言 设计模式是解决软件开发中常见问题的可复用解决方案。其中…

一篇文章教你Pytest快速入门和基础讲解,一定要看!

前言 目前有两种纯测试的测试框架,pytest和unittestunittest应该是广为人知,而且也是老框架了,很多人都用来做自动化,无论是UI还是接口pytest是基于unittest开发的另一款更高级更好用的单元测试框架出去面试也好,跟别…

爬虫工作者必备:使用爬虫ip轻松获得最强辅助

在进行网络数据爬取时,爬虫ip成为了爬虫工作者们的得力辅助。通过使用爬虫ip,可以实现IP地址的伪装和分布式请求,有效规避访问限制和提高爬取效率。本文将为爬虫工作者们分享关于使用爬虫ip的知识,帮助您轻松获取最强辅助&#xf…

【JavaEE】多线程案例-单例模式

文章目录 1. 前言2. 什么是单例模式3. 如何实现单例模式3.1 饿汉模式3.2 懒汉模式4. 解决单例模式中遇到的线程安全问题4.1 加锁4.2 加上一个判断解决频繁加锁问题4.2 解决因指令重排序造成的线程不安全问题 1. 前言 单例模式是我们面试中最常考到的设计模式。什么是设计模式呢…