包看包会Stable Diffusion原理,新手也能看明白

news2024/12/24 8:41:32

知道看文章的人怎么看,听我讲的人经常反应的就是听不明白。于是我又在网上找了一下,发现这篇文章讲的很好,算得上是深入浅出,可惜是英文的,就把它翻译了一下:

https://stable-diffusion-art.com/how-stable-diffusion-work/

在翻译的过程中,我增加了自己的一些东西,调整了一些内容。

Stable Diffusion如何工作?

Stable Diffusion是一种深度学习模型。我们将深入探讨Stable Diffusion是如何工作的。你为什么需要知道这部分内容?除了它本身就是一个引人入胜的主题之外,对内在机制的一些理解将使您成为更好的艺术家。您可以正确使用该工具以获得更高精度的结果。文本到图像(text-to-image)与图像到图像(image-to-image)有何不同?什么是CFG价值?什么是降噪强度?您将在本文中找到答案。

Stable Diffusion能做什么?

在最简单的形式中,Stable Diffusion是一种文本到图像模式。给它一个文本提示(Text Prompt)。 它将返回与文本匹配的图像。

Stable Diffusion将文本提示转换为图像。

扩散模型(Diffusion model)

Stable Diffusion属于一类称为扩散模型(diffusion model)的深度学习模型。它们是生成模型,这意味着它们的目的是生成类似于它们训练数据的新数据。对于Stable Diffusion来说,数据就是图像。
为什么叫扩散模型?因为它的数学看起来很像物理学中的扩散。让我们来解释这个理念。假设我训练了一个只有两种图像的扩散模型:猫和狗。在下图中,左边的两个山峰代表猫和狗这两组图像。

前向扩散将照片变成噪点。(图修改自本文)

前向扩散(Forward diffusion)

前向扩散过程将噪声添加到训练图像中,逐渐将其转换为没有特点的噪声图像。前向过程会将任何猫或狗的图像变成噪声图像。最终,您将无法分辨它们最初是狗还是猫。就像一滴墨水掉进了一杯水里。墨滴在水中扩散。几分钟后,它会随机分布在整个水中。你再也分不清它最初是落在中心还是边缘附近。
下面是一个进行前向扩散的图像示例。猫的图像变成随机噪音。

猫图像的前向扩散。


反向/逆向扩散(Reverse diffusion)

现在是令人兴奋的部分。如果我们能逆转扩散呢?就像向后播放视频一样。时光倒流。我们将看到墨滴最初添加的位置。

反向扩散过程恢复图像。

从嘈杂、无意义的图像开始,反向扩散恢复了猫或狗的图像。这是主要思想。从技术上讲,每个扩散过程都有两部分:(1)漂移或定向运动和(2)随机运动。反向扩散向猫或狗的图像漂移,但两者之间没有任何变化。这就是为什么结果可以是猫或狗。

如何进行训练


反向扩散的想法无疑是聪明而优雅的。但重要的问题是,“怎么能做到呢?为了反向扩散,我们需要知道图像中添加了多少噪声。答案是教神经网络模型来预测增加的噪声。它被称为Stable Diffusion中的噪声预测因子(noise predictor)。这是一个U-Net模型。培训如下。

  1. 选择一个训练图像,例如猫的照片。
  2. 生成随机噪声图像。
  3. 通过将此噪声图像添加到一定数量的步骤来损坏训练图像。
  4. 训练噪声预测器告诉我们添加了多少噪声。这是通过调整其权重并向其显示正确答案来完成的。

噪声在每一步按顺序添加。噪声预测器估计每个步骤的总噪声加起来。

训练后,我们有一个噪声预测器,能够估计添加到图像中的噪声。

反向/逆向扩散(Reverse diffusion)

现在我们有了噪声预测器。要如何使用呢?
我们首先生成一个完全随机的图像,并要求噪声预测器告诉我们噪声。然后,我们从原始图像中减去这个估计的噪声。重复此过程几次。你会得到一只猫或一只狗的图像。

反向扩散的工作原理是从图像中连续减去预测的噪声。

您可能会注意到我们无法控制生成猫或狗的图像。当我们谈论条件反射时,我们将解决这个问题。目前,图像生成是无条件的

译者:大家可以结合这张WebUi的界面看后面的内容,其实后面的内容很好的解释了这些参数的用途。

Stable Diffusion Model


现在我需要告诉你一些坏消息:我们刚才谈论的不是Stable Diffusion的工作原理!原因是上述扩散过程是在图像空间中。它在计算上非常非常慢。 您甚至无法在任何单个GPU上运行,更不用说笔记本电脑上蹩脚的GPU了。

图像空间是巨大的。想一想:具有三个颜色通道(红色、绿色和蓝色)的 512×512 图像是一个 786,432 维的空间!

像谷歌的Imagen和Open AI的DALL-E这样的扩散模型都在像素空间中。他们使用了一些技巧来使模型更快,但仍然不够。

译者:像素空间可以参考DeepFloyd IF,它就是用的像素空间。北方的郎:新的生图模型DeepFloyd IF来了,可以拳打Stable Diffusion,脚踢Dall-E? , 用像素空间的好处是可以比较精确控制生成的内容,例如显示文字。

潜在扩散模型(Latent diffusion model)


Stable Diffusion旨在解决速度问题。方法如下:
Stable Diffusion是一种在潜在空间扩散(latent diffusion)的模型。它不是在高维图像空间中操作,而是首先将图像压缩到潜空间(latent space)中。对比原像素空间,潜空间(latent space)小了 48 倍,因此它获得了处理更少数字的好处,这就是为什么它要快得多。


变分自编码器(Variational Autoencoder)


Stable Diffusion使用一种称为变分自编码器(Variational Autoencoder)的技术来实现图像潜空间压缩。这正是我们在使用Stable Diffusion时设置的VAE文件的内容,我稍后会详细说明。

变分自编码器(VAE:Variational Autoencoder)神经网络由两部分组成:(1)编码器和(2)解码器。编码器将图像压缩为潜在空间中的低维表示。解码器从潜在空间恢复图像。

Variational autoencoder transforms the image to and from the latent space.

Stable Diffusion模型的潜空间为4x64x64,比图像像素空间小48倍。我们谈到的所有正向和反向扩散实际上是在潜在空间中完成的。

因此,在训练过程中,它不会生成噪声图像,而是在潜在空间中生成随机张量(潜在噪声)。它不是用噪声破坏图像,而是用潜在噪声破坏图像在潜在空间中的表示。这样做的原因是它的速度要快得多,因为潜在空间更小。


图像分辨率(Image resolution)

图像分辨率反映在潜在图像张量的大小上。潜在图像的大小仅为 4x64x64,仅适用于 512×512 图像。对于 4×96 的纵向图像,它是 64x768x512。这就是为什么生成更大的图像需要更多的VRAM的原因。


由于Stable Diffusion v1 在 512×512 图像上进行了微调,因此生成大于 512×512 的图像可能会导致重复对象,例如臭名昭著的两个头部。如果必须,请将至少一侧保持在 512 像素,并使用 AI 升频器(AI upscaler)以获得更高的分辨率。


为什么潜在空间是可能的?


您可能想知道为什么VAE可以将图像压缩到更小的潜在空间而不会丢失信息。原因是,自然图像不是随机的。它们具有很高的规律性:面部遵循眼睛、鼻子、脸颊和嘴巴之间的特定空间关系。狗有 4 条腿,是一种特殊的形状。


换句话说,图像的高维性是伪影。自然图像可以很容易地压缩到更小的潜在空间中,而不会丢失任何信息。这在机器学习中被称为流形假设(manifold hypothesis)。


潜空间中的反向扩散


以下是Stable Diffusion中潜在反向扩散的工作原理。

  1. 生成随机潜在空间矩阵。
  2. 噪声预测器估计潜在矩阵的噪声。
  3. 然后从原始潜空间矩阵中减去估计的噪声。
  4. 重复步骤 2 和 3 直至特定采样步骤。
  5. VAE的解码器将潜空间矩阵转换为最终图像。

什么是VAE文件?


VAE文件在Stable Diffusion v1中使用,以改善眼睛和面部的绘画效果。它们是我们刚刚谈到的自编码器的解码器。通过进一步微调解码器,模型可以绘制更精细的细节。


你可能会意识到我之前提到的一处内容并不完全正确。将图像压缩到潜在空间中确实会丢失信息,因为原始VAE无法恢复精细细节。相反,VAE解码器负责在解码的时候绘制精细的细节。


条件(Conditioning)


前面的说明仍然不完整,缺了最重要的一块拼图:文本提示(text prompt)在哪里注入到图片?没有这部分内容,Stable Diffusion就不是文本到图像(text-to-image)模型。你会随机得到一只猫或一只狗的图像,但你没法控制Stable Diffusion为你生成猫或者狗的图像。
这就是条件(conditioning)的用武之地。条件的目的是引导噪声预测器,以便预测的噪声在从图像中减去后会给出我们想要的东西。


文本条件(Text conditioning)


下面概述了如何处理文本提示(Text Prompt并将其输入噪声预测器。分词器(Tokenizer首先将提示中的每个单词转换为称为标记(token的数字。然后将每个标记转换为称为Embedding的 768 值向量。(是的,这与您在Web UI中使用的Embedding相同)然后,Embedding由文本转换器处理,并准备好供噪声预测器使用。

如何处理文本提示并将其馈送到噪声预测器中以引导图像生成。

现在让我们仔细看看每个部分的详细内容。如果上述概述对您来说已经够了,您可以跳到下一部分。


分词器(tokenizer

分词器。


文本提示首先由 CLIP 标记器进行标记化。CLIP是由Open AI开发的深度学习模型,用于生成任何图像的文本描述。Stable Diffusion v1使用CLIP的分词器。


令牌化(Tokenization)是计算机理解单词的方式。我们人类可以阅读单词,但计算机只能读取数字。这就是为什么文本提示中的单词首先转换为数字的原因。

分词器只能对它在训练期间看到的单词进行分词。例如,CLIP 模型中有“dream”和“beach”,但没有“dreambeach”。Tokenizer将“dreambeach”这个词分解为两个标记“dream”和“beach”。所以一个词并不总是意味着一个令牌

另一个细则是空格字符也是令牌(token)的一部分。在上述情况下,短语“dream beach”产生两个标记“dream ”和“[空格]beach”。这些token与“dreambeach”产生的token不同,“dream beach”是“dream”和“beach”(beach前没有空格)。
Stable Diffusion模型仅限于在提示中使用 75 个令牌。(现在你知道它和75个字不一样了!)

嵌入/标签(Embedding)

嵌入。


Stable Diffusion v1 使用 Open AI 的 ViT-L/14 剪辑模型。嵌入是一个 768 个值的向量。每个令牌都有自己唯一的嵌入向量。嵌入由 CLIP 模型固定,该模型是在训练期间学习的。


为什么我们需要嵌入(Embedding)?这是因为有些词彼此密切相关。我们希望利用这些信息。例如,mangentlemanguy 的嵌入几乎相同,因为它们可以互换使用。莫奈、马奈和德加都以印象派风格作画,但方式不同。这些名称具有接近但不相同的嵌入。


这与我们讨论的用于触发带有关键字的样式的嵌入相同。嵌入可以产生魔力。科学家们已经证明,找到合适的嵌入可以触发任意的对象和样式,这是一种称为文本反转的微调技术。


将嵌入(embeddings)馈送到噪声预测器(noise predictor

从嵌入到噪声预测器。


在馈入噪声预测器之前,文本转换器需要进一步处理嵌入。变压器就像一个用于调节的通用适配器。在这种情况下,它的输入是文本嵌入向量,但它也可以是其他东西,如类标签、图像和深度图。转换器不仅进一步处理数据,而且还提供了一种包含不同调节模式的机制


交叉注意力机制(Cross-attention)

文本转换器的输出由整个 U-Net 中的噪声预测器多次使用。U-Net通过交叉注意力机制消耗它。这就是提示与图像相遇的地方。


让我们以提示“蓝眼睛的男人”为例。Stable Diffusion将“蓝色”和“眼睛”这两个词配对在一起(提示中的自注意力机制),这样它就会生成一个蓝眼睛的男人,而不是一个蓝衬衫的男人。然后,它使用这些信息将反向扩散引导到包含蓝眼睛的图像。(提示/prompt和图像/image之间的交叉注意力机制)


旁注:

Hypernetwork是一种微调Stable Diffusion的技术,它通过干预交叉注意力网络来插入样式。

LoRA 模型修改交叉注意力模块的权重以更改样式。仅修改此模块就可以微调 Stabe Diffusion模型这一事实说明了该模块的重要性。

ControlNet 通过检测到的轮廓、人体姿势等来调节噪声预测器,并实现对图像生成的出色控制。

Stable Diffusion Step-by-Step

文本到图像(Text-to-image)


在文本到图像中,您向Stable Diffusion提供文本提示(prompt),它会返回一个图像。


第 1 步。Stable Diffusion在潜空间中生成随机张量。您可以通过设置随机数生成器的种子来控制此张量。如果将种子设置为某个值,您将始终获得相同的随机张量。这是你在潜在空间中的图像。但现在都是噪音。

随机张量在潜在空间中生成。


第 2 步。噪声预测器 U-Net 将潜在噪声图像和文本提示作为输入,并预测噪声,也在潜在空间(4x64x64 张量)中。


第 3 步。从潜在图像中减去潜在噪声。这将成为您的新潜在图像


步骤 2 和 3 重复一定数量的采样步骤,例如 20 次。
第 4 步。最后,VAE的解码器将潜在图像转换回像素空间。这是运行Stable Diffusion后获得的图像。


下面介绍了如何在每个采样步骤中对映像演变进行成像。

每个采样步骤的图像。


噪音时间表(Noise schedule)

图像从嘈杂变为干净。您是否想知道噪声预测器在初始步骤中是否运行良好?实际上,这只是部分原因。真正的原因是我们试图在每个采样步骤中获得预期的噪声。这称为噪声时间表。下面是一个示例。

15 个采样步骤的噪声计划。



噪音时间表是我们定义的。我们可以选择在每一步减去相同数量的噪声。或者我们可以在开始时减去更多,就像上面一样。采样器在每个步骤中减去足够的噪声,以达到下一步中的预期噪声。这就是您在step-by-step图像中看到的内容。


图像到图像(Image-to-image)


图像到图像是SDEdit方法中首次提出的一种方法。SDEdit可以应用于任何扩散模型。所以我们有Stable Diffusion的图像到图像的功能。
输入图像和文本提示作为图像到图像的输入提供。生成的图像将由输入图像和文本提示调节。例如,使用这幅素人画和提示“photo of perfect green apple with stem, water droplets, dramatic lighting”作为输入,图像到图像可以将其变成专业绘图:

图像到图像

现在这是分步介绍:
第 1 步。输入图像被编码为潜在空间。


第 2 步。噪点被添加到潜在图像中。降噪强度控制添加的噪声量。如果为 0,则不添加噪声。如果为 1,则添加最大噪声量,以便潜在图像成为完整的随机张量。

第 3 步。噪声预测器 U-Net 将潜在噪声图像和文本提示作为输入,并预测潜在空间(4x64x64 张量)中的噪声。


第 4 步。从潜在图像中减去潜在噪声。这将成为您的新潜在图像


步骤 3 和 4 重复一定数量的采样步骤,例如 20 次。
第5步。最后,VAE的解码器将潜在图像转换回像素空间。这是运行映像到映像后获得的图像。


所以现在你知道什么是图像到图像:它所做的只是设置带有一点噪声和一点输入图像的初始潜在图像。将去噪强度设置为 1 等效于文本到图像,因为初始潜在图像完全是随机噪声。


修复(Inpainting)


修复实际上只是图像到图像的一个特殊情况。杂色将添加到要上色的图像部分。噪声量同样由降噪强度控制。


Depth-to-image


Depth-to-image是对图像到图像的增强;它使用深度图生成具有附加条件的新图像。
第 1 步。输入图像被编码为潜在状态


第 2 步。MiDaS(AI深度模型)估计输入图像的深度图。


第 3 步。噪点被添加到潜在图像中。降噪强度控制添加的噪声量。如果降噪强度为 0,则不添加噪声。如果去噪强度为 1,则添加最大噪声,使潜在图像成为随机张量。

第 4 步。噪声预测器估计潜在空间的噪声,由文本提示和深度图调节


5. 从潜在图像中减去潜在噪声。这将成为您的新潜在图像


对采样步骤数重复步骤 4 和 5。
第 6 步。VAE的解码器对潜在图像进行解码。现在,您可以获得从深度到图像的最终图像。


什么是CFG值?


如果不解释无分类器引导(Classifier-Free Guidance,CFG),这篇文章将是不完整的,这是AI艺术家每天调来调去的值。要了解它是什么,我们需要首先触及它的前身,分类器引导(Classifier Guidance)。


分类器引导(Classifier Guidance)

分类器引导是一种在扩散模型中合并图像标签的方法。您可以使用标签来指导扩散过程。例如,标签“猫”引导反向扩散过程生成猫的照片。


分类器指导强度(classifier guidance scale)是用于控制扩散过程应与标签保持多近的参数。


假设有 3 组带有标签“猫”、“狗”和“人类”的图像。如果扩散是无指导的,模型将从每个组的总数据中(译者:我觉得这里应该有“均匀”的意思)提取样本,但有时它可能会绘制适合两个标签的图像,例如男孩抚摸狗。

分类器指南。左:无指导。中:小引导尺度。右:大引导比例尺。


高分类器指导下,扩散模型生成的图像将偏向极端或明确的例子。如果你向模型询问一只猫,它将返回一个明确的猫的图像,没有别的。
分类器指导强度(classifier guidance scale)控制遵循指导(guidance)的紧密程度。在上图中,右侧的采样具有比中间的分类器指导量表更高的分类器指导量表。实际上,此刻度值只是具有该标签的数据的漂移项的乘数。


无分类器指导(Classifier-free guidance)

尽管分类器指导实现了破纪录的性能,但它需要一个额外的模型来提供该指导。这给培训带来了一些困难。
用作者的话来说,无分类器指导是一种实现“没有分类器的分类器指导”的方法。他们没有使用类标签和单独的模型作为指导,而是建议使用图像标题并训练一个条件扩散模型,就像我们在文本到图像中讨论的那样。
他们将分类器部分作为噪声预测器U-Net的条件,在图像生成中实现所谓的“无分类器”(即没有单独的图像分类器)指导。
文本提示以文本到图像的形式提供此指导。


CFG 值


现在我们通过条件反射有一个无分类器的扩散过程,我们如何控制应该遵循多少指导?
无分类器引导 (CFG) 刻度是一个值,用于控制文本提示对扩散过程的调节程度。当图像生成设置为 0 时,图像生成是无条件的(即忽略提示)。较高的值将扩散引导向提示。


Stable Diffusion v1 与 v2


这已经是一篇很长的文章,但如果不比较 v1 和 v2 模型之间的差异,它就不完整。


模型差异(Model difference)


Stable Diffusion v2 使用 OpenClip 进行文本嵌入。Stable Diffusion v1使用Open AI的CLIP ViT-L/14进行文本嵌入。此更改的原因是:

  • OpenClip 的规模扩大了五倍。较大的文本编码器模型可提高图像质量。
  • 尽管Open AI的CLIP模型是开源的,但这些模型是使用专有数据训练的。切换到 OpenClip 模型使研究人员在研究和优化模型时更加透明。更有利于长远发展。

训练数据差异(Training data difference)


Stable Diffusion v1.4 训练使用

  • 在 laion237B-en 数据集上以分辨率 256×256 执行 2k 步。
  • 高分辨率分辨率 194×512 的 512k 步长。
  • 在“laion-aesthetics v225 512+”上以 512×2 处执行 5k 步,
    文本条件下降 10%。


Stable Diffusion v2 训练

  • 在 LAION-550B 子集的分辨率下以 5k 步长过滤露骨的色情材料,使用 LAION-NSFW 分类器和美学分数 >= 。256x256punsafe=0.14.5
  • 在具有分辨率的图像上,在同一数据集上的分辨率下以 850k 步长。512x512>= 512x512
  • 在同一数据集上使用 v 目标的 150k 步。
  • 在图像上恢复了另外 140k 步。768x768

Stable Diffusion v2.1 在 v2.0 上进行了微调

  • 同一数据集上的额外 55k 步骤(使用punsafe=0.1)
  • 另外 155k 额外步骤punsafe=0.98

所以基本上,他们在最后的训练步骤中关闭了NSFW过滤器。


结果差异(Outcome difference)


用户通常发现使用Stable Diffusion v2 来控制风格和生成名人更难。虽然稳定性 AI 没有明确过滤掉艺术家和名人的名字,但它们的效果在 v2 中要弱得多。这可能是由于训练数据的差异。Open AI的专有数据可能有更多的艺术品和名人照片。他们的数据可能经过高度过滤,因此所有内容和每个人都看起来很好,很漂亮。

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

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

相关文章

一次过!快速申领软件著作权

文章目录 一次过!快速申领软件著作权1 软件著作权的定义2 申请流程2.1 准备申请材料2.2 登录软著局申请系统并进行填写2.3 审核2.4 补正和修改申请材料2.5 接受核准并领证 3 申请材料4 注意事项5 总结 一次过!快速申领软件著作权 申领软件著作权是保护软…

【Nexus】Nexus创建Maven私服

目录 一、前言二、创建Blob Stores1、在创建Repository之前,设定一个文件存储目录Blob,方便后序管理2、选择创建的Blob类型为File,根据需要选择是否超出约束时进行报警,以及约束类型和约束限制3、成功创建好的页面 三、创建Reposi…

如何快速翻译ppt文档?分享几个实用的文档翻译方法

想必你也曾有过这样的困扰:在工作或学习中,需要阅读外语PPT的内容,但是却遇到了语言障碍,无法流利地理解其中的意思。这时,我们就需要翻译ppt的软件来帮助我们解决问题。那么,翻译ppt的软件哪个好呢&#x…

【LeetCode热题100】打卡第22天:编辑距离颜色分类

文章目录 【LeetCode热题100】打卡第22天:编辑距离&颜色分类⛅前言 编辑距离🔒题目🔑题解 颜色分类🔒题目🔑题解 【LeetCode热题100】打卡第22天:编辑距离&颜色分类 ⛅前言 大家好,我是…

Vue杂记:全选多个选择框

可以使用 v-model 来绑定一个布尔类型的变量来实现全选多个选择框的功能。具体步骤如下: 在data中定义一个数组,用来存储所有需要选择的项的状态。 在模板中使用 v-for 指令循环渲染每个选择框,并将每个选择框的状态绑定到数组中对应的项上。…

关于文件操作工具类及readLine()方法

这里写自定义目录标题 一:文件流通用操作工具类二、工具类讲解三、拓展报错解决 一:文件流通用操作工具类 package com.zkyq.file.common.utils;import com.zkyq.common.utils.DateUtils; import com.zkyq.file.common.service.EleRealDataService; imp…

报表生成器FastReport .Net用户指南:“Line“对象及属性

FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。 FastReport.NET官方版…

Maven入门

目录 1.为什么要学习Maven 1. 作为jar包的管理工具 2.作为构建管理工具 3.结论 2.什么是Maven 1. 构建包含的主要环节 2.依赖 3.Maven的工作机制 3.Maven的核心概念: 1.坐标 2.POM 3.约定的目录结构 4.生命周期 5.插件与目标 6.仓库 4.Maven操作 5…

现实版“超级英雄”!外卖小哥从10余米高桥纵身跳下救人

“我心里也很怂啊,但个人害怕跟别人的命比起来,肯定是救人要紧,人命关天的事,还用想吗?” 这是一位勇敢外卖小哥在接受媒体采访时说的。 语言虽朴实无华,却道出了一个重要的价值观:人命关天&…

APP测试面试题快问快答(四)

16.App测试的实时日志如何获取? 考察点:是否有移动app测试的日志获取相关经验 一般可以通过以下方式获取: 1.可以使用adb命令:adb logcat | findstr "com.sankuai.meituan" >d:\test.txt 2.用ddms抓取&#xff0…

Android中的异步处理之RxJava与协程(Coroutines)使用案例PK

RxJava一直是我长久以来的救星。它提供了丰富的功能,让我在Android编程中更加注重响应式思维。我的代码中到处都是Single、Subject和Completable。 而现在,协程成为了备受赞誉和推崇的选择,许多演讲和会议都推荐使用。于是我开始学习它。 为…

使用Vision Transformers实现高效语义分割的内容感知共享Token

文章目录 Content-aware Token Sharing for Efficient Semantic Segmentation with Vision Transformers摘要本文方法Content-aware token sharing frameworkContent-aware token sharing policy 实验结果 Content-aware Token Sharing for Efficient Semantic Segmentation wi…

Vue中如何进行滚动吸顶与侧边栏固定

Vue中如何进行滚动吸顶与侧边栏固定 在Vue应用程序中,当需要实现滚动吸顶和侧边栏固定效果时,我们可以使用一些技术来实现。这些技术包括CSS和JavaScript,可以帮助我们实现各种各样的滚动效果。 如何实现滚动吸顶? 滚动吸顶是指…

Ubuntu 系统如何使用 root 用户登录实例

Ubuntu 系统的默认用户名是 ubuntu,并在安装过程中默认不设置 root 帐户和密码。您如有需要,可在设置中开启允许 root 用户登录。具体操作步骤如下: 1. 使用 ubuntu 帐户登录轻量应用服务器。 2. 执行以下命令,设置 root 密码。…

Java判断一个字符串是否包含某个字符串

开发过程中,有时会判断一个字符串是否包含某个字符串的操作,这里总结判断方法。 方式一:contains()方法 理解:contains() 方法用于判断字符串中是否包含指定的字符或字符串。(判断一个字符串是否包含某个字符串&#…

网上书店 Vue+Spring boot+H5+Uniapp

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 基于VueSpring boot的网上书城 目录一、项目模块二、项目模块三 技术选型四、运行环境五 .PC登录页面代码六 .H5登录页面代码 运行效果源码 目录 网上书店 VueSpring bootH5U…

Cos 文件上传下载

目录 方法一: maven依赖: UploadServlet upload.jsp 方法二: maven依赖 UploadServlet upload.jsp success.jsp error.jsp 运行结果: 百度文件上传插件: Web Uploader 本文通过JSPServlet的架构&#xff0c…

华为OD机试真题 JavaScript 实现【字符串变换最小字符串】【2022Q4 100分】

一、题目描述 给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。 变换规则:交换字符串中任意两个不同位置的字符。 二、输入描述 一串小写字母组成的字符串s。 三、输出…

文件系统整体流程介绍

一、什么是文件系统 计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘的地址为多少的数据块上&#xff0…

拨云见日:Redis和数据库之间的一致性如何保证?

概 述 Redis在使用过程中,有四个异常问题:缓存穿透、缓存击穿、缓存雪崩、以及缓存和数据库(MySQL)双写一致性问题。 前三个问题可能会因为业务体量的不同而有所不同,但是最后一个问题是无法避免的。就算你的电商业…