【GigaGAN论文精读】Scaling up GANs for Text-to-Image Synthesis

news2025/1/30 16:28:36

【GigaGAN论文精读】Scaling up GANs for Text-to-Image Synthesis

  • 0、前言
  • Abstract
  • 1. Introduction(图放在文末)
  • 2. Related Works
    • 2.1Text-to-image synthesis.
    • 2.2GAN-based image synthesis.
    • 2.3Super-resolution for large-scale text-to-image models.
  • 3. Method(关键)
    • 3.1. Modeling complex contextual interaction复杂上下文交互建模
      • 3.1.1 Baseline StyleGAN generator
      • 3.1.2 Sample-adaptive kernel selection样本自适应核选择
      • 3.1.3 Interleaving attention with convolution交错注意力和卷积
    • 3.2. Generator design
      • 3.2.1 Text and latent-code conditioning【style code w以及生成器的输出x的公式推导】
      • 3.2.2 Synthesis network
    • 3.3. Discriminator design
      • 3.3.1 Text conditioning.
      • 3.3.2 Multiscale image processing
      • 3.3.3 Multi-scale input, multi-scale output adversarial loss
      • 3.3.4 Matching-aware loss【匹配感知损失】
      • 3.3.5 CLIP contrastive loss【CLIP对比损失】
      • 3.3.6 Vision-aided adversarial loss
    • 3.4. GAN-based upsampler
  • 4. Experiments
    • 4.1. Training and evaluation details
    • 4.2. Effectiveness of proposed components
    • 4.3. Text-to-Image synthesis
    • 4.4. Comparison with distilled diffusion models
    • 4.5. Super-resolution for large-scale image synthesis
    • 4.6. Controllable image synthesis
  • 5. Discussion and Limitations
  • Large Picture

0、前言

GitHub地址:https://github.com/lucidrains/gigagan-pytorch
project page:https://mingukkang.github.io/GigaGAN/
论文地址:https://arxiv.org/abs/2303.05511
GigaGAN 的实现,是Adobe 的新 SOTA GAN,其证明GAN仍然是文本生成图像的可行选择之一。
在最近的DALL·E 2、Imagen、Stable Diffusion等等出现之后,相较于diffusion model和AR模型,GANs已经不被大家青睐,作者想证明一下大规模GAN模型在大数据集上的表现依然可行(make GAN great again)。并给出了GAN模型的卖点:1.更快的生成速度 2.生成高分辨率图片 3.平滑的内插和样式混合。

贡献:1.将GAN的分数刷过diffusion;2.提出了提高stylegan规模的方法: 保留一组过滤器,并采用特定于样本的线性组合。3.重提了多尺度训练利用低分辨率信息。4.提出了两阶段的GigaGAN模型,其中第二阶段可以做为很好的插值器(超分网络)

模型优点缺点
扩散模型1.训练目标简单
2.训练稳定
1.计算成本高
2.慢
GAN1.高效
2.擅长于建模单个或多个对象类
1.训练过程不稳定
2.多样性较差的缺点使得GANs难以扩展并应用于新的域。
自回归模型1.训练目标简单
2.训练稳定
1.计算成本高
2.慢

Abstract

1、背景介绍:最近成功的文本-图像合成技术在世界范围内掀起了一场风暴,并俘获了公众的想象力。从技术的角度来看,生成式图像模型的设计也标志着所青睐的架构的巨大变化。GANs曾经是事实上的de facto选择,如StyleGAN等技术。
2、提出论点:随着DALL·E2,自回归和扩散模型一夜之间成为大规模生成模型的新标准。这种快速的转变提出了一个根本性的问题:我们能否扩大GANs的规模,从而从像LAION这样的大型数据集中受益?
3、现有方法的不足:我们发现朴素地增加StyleGAN架构的容量会很快变得不稳定。
4、介绍本文方法:我们介绍了GigaGAN,一种新的GAN架构,它远远超过了这个限制,证明了GAN是文本到图像合成的一种可行选择。
5、优势所在(为什么好?):GigaGAN提供了三个主要优势。
首先,它在推理时间上要快几个数量级,合成512px图像只需要0.13秒。
其次,它可以合成高分辨率的图像,例如,在3.66秒内合成1600万像素的图像。
最后,GigaGAN支持各种潜在空间编辑应用程序,如潜在插值、样式混合和矢量算术操作。

1. Introduction(图放在文末)

最近发布的模型,如DALL·E2[74]、Imagen[80]、Parti[101]和Stable Diffusion[79],开创了图像生成的新时代,实现了前所未有的图像质量和模型灵活性。
现在占主导地位的范例,扩散模型和自回归模型,都依赖于迭代推理。这是一把双刃剑,因为迭代方法可以用简单的目标实现稳定的训练,但在推理过程中产生很高的计算成本。
【背景介绍】

与此相比,生成对抗网络(Generative Adversarial Networks, GANs)[6,21,41,72]通过单一的前向传递生成图像,因此本质上是高效的。
虽然这类模型在之前的生成建模“时代”占主导地位,但由于训练过程中的不稳定性,扩展它们需要仔细调整网络架构和训练考虑因素。
因此,GANs擅长于建模单个或多个对象类,但扩展到复杂数据集(更不用说开放世界了)仍然具有挑战性。
因此,超大模型、数据和计算资源现在都用于扩散和自回归模型。
在这项工作中,我们提出了一个问题——GANs是否可以继续扩大规模并可能从这些资源中获益,或者它们已经停滞不前了?是什么阻止了它们进一步扩展,我们能否克服这些障碍?
【提出现有GANs的问题】

我们首先使用StyleGAN2[42]进行实验,观察到简单地缩放主干backbone会导致不稳定的训练。
我们确定了几个关键问题,并提出了技术来稳定训练,同时增加模型容量。
首先,我们通过保留一组滤波器 filters并采用特定样本的线性组合来有效地扩大生成器的容量。
我们还采用了几种在扩散环境中常用的技术,并确认它们为GANs带来了类似的好处。
例如,将自我注意(仅图像)和交叉注意(图像-文本)与卷积层交织在一起可以提高性能。
【提出一些技术来增加模型的capacity,简单扩展backbone会导致训练不稳定,这里对于生成器提出了1. filters;2. sample-specific linear combination;
最后提出将self-attention(图片) and cross-attention(图文对)融入convolutional layers】

此外,我们再次引入多尺度训练,找到一种新的方案,以改善图像-文本对齐和低频细节生成的输出。
多尺度训练允许基于GAN的生成器更有效地使用低分辨率块中的参数,导致更好的图像-文本对齐和图像质量。
经过精心的调优,我们在大规模数据集(如LAION2B-en)上实现了 十亿参数 GAN (GigaGAN)的稳定和可扩展训练[88]。我们的结果如图1所示。
【引入multi-scale training,使生成器更有效地使用低分辨率块中的参数,从而有更好的图像-文本对齐和图像质量。实现十亿参数GigaGAN的稳定和可扩展训练。】

此外,我们的方法采用了多阶段方法[14,104]。
我们首先生成64 × 64,然后上采样到512 × 512。这两个网络都是模块化的,并且足够健壮,可以以即插即用的方式使用。
我们表明,我们的基于文本条件的GAN上采样网络可以用作DALL·E2等基底扩散模型的高效、高质量的上采样器,尽管在训练时从未见过扩散图像(图2)。
【采用multi-stage方法,先生成低分辨率图像,然后上采样到高分辨率。】

这些进展使我们的GigaGAN远远超过了之前的GANs:比Style GAN2[42]大36倍,比StyleGAN-XL[86]和XMC-GAN[103]大6倍。
虽然我们的1B参数计数仍然低于最近最大的合成模型,如Imagen (3.0B), DALL·E 2 (5.5B)和Parti (20B),我们还没有观察到关于模型大小的质量饱和
GigaGAN在COCO2014数据集上获得了9.09的zero-shot FID,低于DALL·E 2、Parto - 750m和Stable Diffusion的FID。
【比之前的GANs参数大,但是对于目前的大模型而言还是不够,不过关于模型大小还未达到质量饱和。】

此外,与扩散模型和自回归模型相比,GigaGAN模型有三个主要的实用优势。
首先,它的速度快了几个数量级,在0.13秒内生成了512px的图像(图1)。
其次,它可以在3.66秒内合成4k分辨率的超高分辨率图像。
第三,它被赋予了一个可控的、潜在的矢量空间,这使得它能够被充分研究的可控图像合成应用,如风格混合style mixing(图6)、提示插值prompt interpolation(图7)和提示混合prompt mixing(图8)。
【与Diffusion和autoregressive模型相比有三个优势。1.速度快了几个数量级; 2. 能够合成4k分辨率的超高分辨率图像;3. 有一个可控的潜在向量空间,有利于可控的图像合成应用】

总之,我们的模型是第一个基于GAN的方法,它成功地在数以十亿计的真实世界的复杂互联网图像上训练出十亿规模的模型。
这表明,GANs仍然是文本到图像合成的一个可行选择,应该考虑未来的大规模扩展。
请访问我们的网站获取更多的结果。
【阐明GANs也能扩展到现在的大规模文本到图像的合成,大模型是未来AI的一个趋势,拥抱新时代!】

2. Related Works

2.1Text-to-image synthesis.

根据文本描述生成逼真的图像,这是Mansimov等人[58]首次探索的一项具有挑战性的任务。
早期的研究在特定领域[96]和具有封闭世界closed-world假设的数据集上采用了文本条件GANs[76, 77, 93, 99, 104, 111]
随着扩散模型[15,26]、自回归(AR)transformers[12]和大规模语言编码器[71,73]的发展,文本-图像合成在任意文本描述的开放世界中表现出了显著的改进。
GLIDE[63]、DALL·E 2[74]和Imagen[80]是代表性的扩散模型,在经过训练的语言编码器的帮助下显示逼真的输出[71,73]。
DALL·E[75]、Make-A-Scene[20]、CogView[16,17]、Parti[101]等AR模型也取得了惊人的效果。
虽然这些模型具有前所未有的图像合成能力,但它们需要耗时的迭代过程来实现高质量的图像采样。
【背景介绍,同时又说明扩散模型和AR模型慢的缺点。】

为了加快采样速度,有几种方法提出减少采样步骤[57,59,83,89]或重用预先计算的特征[51]。
潜扩散模型(Latent Diffusion Model, LDM)[79]在低维潜空间而不是像素空间中进行逆向过程。
然而,连续的反向处理在计算上仍然很昂贵,这限制了在交互式应用程序中使用大规模的文本到图像模型。
【说明只要是连续的反向处理迭代就很慢,难以扩展到交互式的应用。】

2.2GAN-based image synthesis.

GANs[21]曾是自然图像合成生成模型的主要families之一。
随着GANs的采样质量和多样性的提高[39 - 42,44,72,84],GANs已被应用于各种计算机视觉和图形应用,如文本到图像的合成[76],图像到图像的翻译[29,34,49,65,66,110],图像编辑[1,7,69,109]。
值得注意的是,StyleGAN-family模型[40,42]在单类别域的图像合成任务中表现出了令人印象深刻的能力[1,31,69,98,112]。
其他的工作已经在具有固定fixed对象类别集的数据集上探索了类条件GANs[6, 36, 86, 102, 107]。
【说明GANs的历史悠久,发展也已经比较成熟,在有监督任务中表现优秀。】

在这篇论文中,我们改变了数据体系 data regimes,从单一或多类别的数据集到极度数据丰富的情况。
我们首次尝试在大量web爬取的文本和图像对(如LAION2B-en[88]和COYO-700M[8])上训练大规模GAN来做文本到图像的生成。
现有的基于GAN的文本-图像合成模型[52,76,93,99,103,104,111]是在相对较小的数据集上训练的,如CUB-200 (12k训练对),MSCOCO (82k)和LN-OpenImages(507k)。
此外,这些模型是在相关的验证数据集上进行评估的,这些数据集还没有被验证来执行如扩散模型或AR模型的大规模的文本图像合成。
【训练数据变大变得多样】

与我们的方法相同,StyleGAN-T[85]和GALIP[92]的目标与我们的相似。
然而,GigaGAN和上述技术都是独立开发的,并做出了独特的技术贡献。
我们希望这些方法可以相互补充,共同解决GANs的局限性。
【阐明自己的贡献】

2.3Super-resolution for large-scale text-to-image models.

大规模模型需要高昂的训练和推理的计算成本。
为了减少内存和运行时间,最前沿的(cutting-edge)文本-图像模型[63,74,80,101]采用了级联cascaded生成过程,首先以64×64分辨率生成图像,然后依次上采样到256 × 256和1024 × 1024。
然而,超分辨率网络主要基于扩散模型,需要多次迭代。
相比之下,我们的低分辨率图像生成器和上采样器是基于GANs的,降低了这两个阶段的计算成本。
与传统的超分辨率技术[2,18,47,95]的目标是忠实地再现低分辨率输入或处理像压缩伪影这样的图像退化不同,我们用于大规模模型的上采样器有不同的用途。他们需要执行更大的上采样因子,同时潜在地利用输入文本提示。
【提出目前文到图生成用到的级联生成过程,即生成低分辨率,然后上采样到高分辨率。基于GANs的生成和超分快而且成本低,并且与传统超分技术有所不同(上采样因子更大,而且需要潜在地利用输入的文本提示)】

3. Method(关键)

我们训练一个生成器G(z,c)来预测一个给定潜在码 z ∼ N ( 0 , 1 ) ∈ R 128 z \sim \mathcal{N}(0,1)\in \mathcal{R}^{128} zN(0,1)R128和文本条件信号c的图像 x ∈ R H × W × 3 x \in \mathcal{R}^{H×W×3} xRH×W×3。 我们使用一个鉴别器D(x,c)与来自包含图像-文本对的训练数据库 D \mathcal{D} D的样本相比,判断所生成图像的真实感。
【x=G(z,c),z是latent code,c是text-conditioning signal】

虽然GANs[6,39,41]可以成功地在单类和多类数据集上生成逼真的图像[13,41,100],但在互联网图像上进行开放式文本条件合成仍然具有挑战性。
我们假设当前的限制来自于对卷积层的依赖。
也就是说,同样的卷积滤波器要为图像的所有位置上的所有文本条件建模通用的图像合成函数是具有挑战的。
在这种情况下,我们试图通过根据输入条件动态选择卷积滤波器,并通过注意机制捕获long-range依赖,在参数化parameterization中注入更多的表达性expressivity。
【假设限制GANs开放式文本条件生成的原因是对与卷积层的依赖,故根据输入条件动态的选择卷积滤波器和利用注意力机制来获取long-range或许能有帮助。】

下面,我们将讨论我们在使卷积神经网络ConvNets更具表现力方面的主要贡献(第3.1节),然后是我们对生成器(第3.2节)和鉴别器(第3.3节)的设计。
最后,我们引入了一种新的、基于GAN的快速上采样器模型,该模型可以提高我们方法和Imagen[80]和DALL·E 2[74]等扩散模型的推理质量和速度。
【下文方法的鸟瞰】
在这12片描述
我们的GigaGAN高容量文本图像生成器。
首先,我们使用一个预先训练的CLIP模型和一个学习过的编码器T来提取文本嵌入。
使用交叉注意将局部文本描述符输入到生成器。
全局文本描述符和潜在代码z被输入到样式映射网络M以产生样式代码w。
样式代码w使用我们的样式自适应内核选择来调制主生成器,如右图所示。
该生成器通过将中间特征转换为RGB图像,输出图像金字塔。
为了实现更高的容量,我们在每个尺度上使用多个注意和卷积层(附录A2)。
我们还使用一个单独的上采样器模型,这在图中没有显示。

3.1. Modeling complex contextual interaction复杂上下文交互建模

3.1.1 Baseline StyleGAN generator

我们的架构基于StyleGAN2[42]的条件版本,由两个网络 G = G ~ ◦ M G = \tilde{G}◦M G=G~M组成。
映射网络w = M(z, c)将输入映射到一个“风格”向量w,它调制合成网络 G ~ ( w ) \tilde{G}(w) G~(w)中的一系列上采样卷积层,将学习到的常数张量映射到输出图像x。
卷积是生成所有输出像素的主要引擎,w向量是模型条件化的唯一信息来源。
【架构基于StyleGAN2,一个“style” vector w负责条件信息,卷积输出图像像素。】

3.1.2 Sample-adaptive kernel selection样本自适应核选择

为了处理互联网图像的高度多样性分布,我们的目标是增加卷积核的容量。
然而,增加卷积层的宽度变得过于苛刻,因为相同的操作在所有位置上都要重复。

我们提出了一种有效的方法,通过基于文本条件的动态创建卷积核来增强卷积核的表现力,如图4(右)所示。
在这个方案中,我们实例化了一个N个滤波器组 { K i ∈ R C i n × C o u t × K × K } i = 1 N \{\mathrm{K}_i∈\mathbb{R}^{C_{in}×C_{out}×K×K}\}^N_{i=1} {KiRCin×Cout×K×K}i=1N,而不是一个,它在每一层都具有一个特征 f ∈ R C i n \mathrm{f}\in \mathbb{R}^{C_{in}} fRCin
然后,style 向量 w ∈ R D w∈\mathbb{R}^D wRD通过仿射affine层 [ W f i l t e r , b f i l t e r ] ∈ R ( d + 1 ) × N [W_{filter},b_{filter}]∈\mathbb{R}^{(d+1)×N} [Wfilterbfilter]R(d+1)×N,在滤波器组上预测一组平均权重,得到一个聚合滤波器 K ∈ R C i n × C o u t × K × K \mathrm{K}∈\mathcal{R}^{C_{in}×C_{out}×K×K} KRCin×Cout×K×K
在这里插入图片描述

【基于文本条件动态创建卷积核,style vector w=M(z, c)通过一个affine layer然后对这个Filter Bank以Softmax方式预测一组平均权重,然后得到这个Selected Filter。】

在这里插入图片描述
然后将该滤波器用于StyleGan2的regular卷积pipeline中,利用第二个仿射层 [ W m o d , b m o d ] ∈ R ( d + 1 ) × C i n [W_{mod},b_{mod}]∈\mathbb{R}^{(d+1)×C_{in}} [Wmodbmod]R(d+1)×Cin进行权重的(去)调制[42]。
在这里插入图片描述
其中 ⊗ \otimes ∗ * 表示(去)调制和卷积,滤波器组每一层都具有一个特征 f ∈ R C i n \mathrm{f}\in \mathbb{R}^{C_{in}} fRCin
【得到的Selected Filter K 与经过另一个affine layer的w进行权重的解调制得到Modulated weights,将之与滤波器组每一层的特征 f ∈ R C i n \mathrm{f}\in \mathbb{R}^{C_{in}} fRCin进行卷积操作得到一个新的滤波器 g a d a c o n v ( f , w ) g_{adaconv}(f,w) gadaconv(f,w)

在较高的层次上,基于Softmax的加权可以被看作是基于输入条件的可微differentiable滤波器选择过程。
此外,由于滤波器选择过程在每一层只执行一次,选择过程比实际卷积快得多,使计算复杂度与分辨率解耦。
我们的方法与动态卷积[23,35,91,97]的精神相同,卷积滤波器在每个样本中动态变化,但不同之处在于我们显式地实例化一个更大的滤波器组,并根据StyleGAN的w-space条件下的单独路径选择权重。

3.1.3 Interleaving attention with convolution交错注意力和卷积

由于卷积滤波器在其接收域内工作,它不能将自己与图像的远端部分联系起来。
一种融合这种长期关系的方法是使用注意力层 g a t t e n t i o n g_{attention} gattention
虽然最近的基于扩散的模型[15,27,79]普遍采用了注意机制,但StyleGAN架构主要是卷积的,值得注意的是BigGAN[6]、GANformer[30]和ViTGAN[50]等例外。
【提出卷积的局限,将注意力机制与卷积结合】

我们的目标是通过整合注意力层和卷积主干backbone来提高StyleGAN的性能。
然而,简单地在StyleGAN中添加注意层往往会导致训练崩溃,这可能是因为dot-product self-attention不是Lipschitz, 由Kim et al.[43]指出。
由于鉴别器的Lipschitz连续性对稳定训练起着至关重要的作用[3,22,60],我们使用L2-distance代替点积作为attention logits来提升Lipschitz连续性[43],类似于ViTGAN[50]。
【简单加attention到卷积的backbone会导致训练崩溃,这里有一些trick,用L2-distance代替原来attention logits的点积。】

为了进一步提高性能,我们发现匹配StyleGAN的架构细节至关重要,例如均衡学习速率[39]和单位正态分布的权值初始化。
我们缩小L2距离logits,以在初始化时大致匹配单位正态分布,并减少来自注意层的残差增益。
通过绑定密钥和查询矩阵[50],并应用权值衰减,进一步提高了稳定性。
【trick】

在合成网络 G ~ \tilde{G} G~中,注意层与每个卷积块交错,利用style vector w作为一个额外的token。
在每个注意块上,我们添加了一个独立的交叉注意机制 g c r o s s − a t t e n t i o n g_{cross-attention} gcrossattention来关注单个的单词嵌入。
我们使用每个输入特征张量作为query,,文本嵌入作为注意机制的key和value。

3.2. Generator design

3.2.1 Text and latent-code conditioning【style code w以及生成器的输出x的公式推导】

首先,我们从prompt中提取文本嵌入。
之前的研究[75,80]表明,利用强大的语言模型是产生强大结果的必要条件。
为此,我们对输入提示符进行标记tokenize(按照最佳实践[75,80],将其填充到C = 77 words之后)以产生条件向量 c ∈ R C × 1024 c∈\mathbb{R}^{C×1024} cRC×1024并从冻结的CLIP特征提取器[71]的倒数第二penultimate层[80]获取特征。
为了提供额外的灵活性,我们在顶部应用额外的注意层T来处理单词嵌入,然后将它们传递给基于MLP的映射网络。
这使得文本嵌入 t = T ( E t x t ( c ) ) ∈ R C × 1024 t = T(\mathcal{E}_{txt}(c))∈\mathbb{R}^{C×1024} t=T(Etxt(c))RC×1024。t的每个分量 t i t_i ti捕获了第i个单词在句子中的嵌入。
我们将它们称为 t l o c a l = t { 1 : C } ∖ E O T ∈ R ( C − 1 ) × 1024 t_{local} = t_{\{1:C\} \setminus EOT}∈\mathbb{R}^{(C−1)×1024} tlocal=t{1:C}EOTR(C1)×1024
t的EOT(“end of text”)组件聚合全局信息,称为 t g l o b a l ∈ R 1024 t_{global}∈\mathbb{R}^{1024} tglobalR1024
我们通过一个MLP映射网络处理这个全局文本描述符,以及潜在代码 z ∼ N ( 0 , 1 ) z \sim \mathcal{N}(0,1) zN(0,1),以提取style w = M ( z , t g l o b a l ) w = M(z, t_{global}) w=M(z,tglobal)
在这里插入图片描述
【1.为利用LLM,对prompt进行一个填充然后tokenize,得到条件向量c,再利用CLIP提取得到特征;2.利用了注意力机制来处理word embeddings,得到text embedding,其分为 t l o c a l t_{local} tlocal t g l o b a l t_{global} tglobal,这里的style code w只利用了 t g l o b a l t_{global} tglobal来作为条件。T也可以说是Learned text encoder。style mapping network M】

与原来的StyleGAN不同的是,我们使用基于文本的style code w来调制合成网络 G ~ \tilde{G} G~,并使用单词嵌入 t l o c a l t_{local} tlocal作为交叉注意的特征。
在这里插入图片描述
类似于早期的工作[58,74,80],文本-图像对齐在视觉上通过交叉注意得到改善。
【也就是说生成器生成的图片x,依据style code w和 t l o c a l t_{local} tlocal来进行生成,这里的 t l o c a l t_{local} tlocal是利用cross-attention融入生成器的,而style code w则是利用3.1.2中的Sample-adaptive kernel selection融入生成器。】

3.2.2 Synthesis network

我们的合成网络由一系列上采样卷积层组成,每一层都经过自适应核选择的增强(公式1),然后是我们的注意层。
在这里插入图片描述
其中 g x a ℓ , g a t t n ℓ , g a d a c o n v ℓ g^ℓ_{xa}, g^ℓ_{attn}, g^ℓ_{adaconv} gxa,gattn,gadaconv表示第 l l l层的交叉注意、自注意和权重(反)调制层。
我们发现,在每一层增加更多的块有利于增加网络的深度。
此外,我们的生成器输出L = 5级的多尺度图像金字塔,而不是像MSG-GAN[38]和AnycostGAN[53]那样,输出最高分辨率的单个图像。
我们称金字塔为 { x i } i = 0 L − 1 = { x 0 , x 1 , … , x 4 } \{x_i\}^{L−1}_{i=0} = \{x_0, x_1,…, x_4\} {xi}i=0L1={x0,x1x4},空间分辨率分别为 { S i } i = 0 L − 1 = { 64 , 32 , 16 , 8 , 4 } \{S_i\}^{L−1}_{i=0} =\{64, 32, 16, 8, 4\} {Si}i=0L1={64,32,16,8,4}
The base level x 0 x_0 x0是输出图像x。
金字塔的每一幅图像都单独用于计算GAN损失,如第3.3节所述。
我们遵循StyleGAN-XL[86]的发现,关闭了样式混合和路径长度正则化[42]。我们在附录A.1中包含了更多的训练细节。
【首先利用了公式(2)的权重(去)调制,其次是注意力层和交叉注意力层,得到第 l l l层的输出,最终是分为了五级的一个上采样卷积来得到最终的图像】
在这里插入图片描述

3.3. Discriminator design

在这里插入图片描述

我们的鉴别器由两个分支组成,分别用于图像处理和文本条件 t D t_D tD处理。
文本分支处理类似于生成器的文本(图4)。
图像分支接收图像金字塔,并对每个图像尺度做出独立的预测。
此外,对下采样层的所有后续尺度进行预测,使其成为一个多尺度输入、多尺度输出(MS-I/O)鉴别器。

如图5所示,我们的鉴别器由单独的分支组成,使用函数 t D t_D tD处理文本,函数 ϕ \phi ϕ处理图像。
利用函数 ψ \psi ψ对两个分支的特征进行了比较,从而预测了真假。
我们介绍了一种在多尺度上进行预测的新方法。
最后,我们使用额外的CLIP和视觉辅助Vision-Aided GAN损失[44]来提高稳定性。
【(MS-I/O)的鉴别器】

3.3.1 Text conditioning.

首先,为了将条件作用整合到鉴别器中,我们从文本c中提取文本描述符 t D t_D tD
与生成器类似,我们应用了一个经过训练的文本编码器,如CLIP[71],然后是几个可学习的注意层。在本例中,我们只使用全局描述符。即上文的 t g l o b a l t_{global} tglobal

3.3.2 Multiscale image processing

我们观察到,早期的低分辨率的生成器层变得不活跃,使用较小的动态范围,而不考虑所提供的提示。
StyleGAN2[42]也观察到了这一现象,认为随着模型尺寸的增大,网络依赖于高分辨率层
由于在包含复杂结构信息的低频下的恢复性能至关重要,我们重新设计了模型体系结构,以提供跨多个尺度的训练信号。
【低分辨率层不考虑提示,设计了一个可以提供多尺度训练信号的架构】

回想一下,生成器生成了一个金字塔 x i i = 0 L − 1 {x_i}^{L−1}_{i=0} xii=0L1,整个图像x0位于金字塔底部。
MSG-GAN[38]通过一次性对整个金字塔进行预测,增强了跨尺度的一致性,从而提高了性能。
然而,在我们的大规模设置中,这损害了稳定性,因为这限制了生成器对其最初的低分辨率输出进行调整。
【一次性对整个生成图像的金字塔进行预测是不可行的,因为限制了生成器对其最初的低分辨率输出进行调整】

相反,我们独立处理金字塔的每一层。
如图5所示,每一级 x i x_i xi i < j ≤ L i<j≤L i<jL的多个尺度上做出真实/虚假的预测。
例如,完整的 x 0 x_0 x0在L = 5个尺度上做出预测,下一级 x 1 x_1 x1在4个尺度上做出预测,以此类推。
总的来说,我们的鉴别器产生L(L−1)/2个预测,在多个尺度上监督多尺度的生成。
【鉴别器是鉴别一个等差序列,即对于 x i x_i xi,预测 i < j ≤ L i<j≤L i<jL的真假,注意 x 0 x_0 x0是最大的图片】

为了提取不同尺度上的特征,我们定义了特征提取器 ϕ i → j : R X i × X i × 3 → R X j D × X j D × C j ϕ_{i→j}: R^{X_i×X_i×3}→R^{X^D_j ×X^D_j ×C_j} ϕij:RXi×Xi×3RXjD×XjD×Cj
实际上,每个子网络 ϕ i → j ϕ_{i→j} ϕij是full ϕ ≜ ϕ 0 → L \phi≜ϕ_{0→L} ϕϕ0L的子集,其中i > 0表示后期进入,j < L表示早期退出。
ϕ ϕ ϕ中的每一层都由self-attention组成,然后是stride 2的convolution。
最后一层将空间范围扁平化为1 × 1张量。这将产生 { X j D } = { 32 , 16 , 8 , 4 , 1 } \{X^D_j\} =\{32, 16, 8, 4, 1\} {XjD}={32,16,8,4,1}的输出分辨率。
这允许我们将金字塔上的低分辨率图像注入到中间层[39]中。
由于我们在不同的层次上使用共享的特征提取器,并且大多数新增的预测都是在低分辨率下进行的,因此增加的计算开销overhead是可控的。
【特征提取器 ϕ \phi ϕ每一层由self-attention和stride为2的convolution组成,大多数新增的预测都是在低分辨率下进行的,增加的计算开销是可做到的】

3.3.3 Multi-scale input, multi-scale output adversarial loss

总的来说,我们的训练目标包括鉴别器损失,以及我们提出的匹配损失,以鼓励鉴别器考虑条件作用:
在这里插入图片描述
其中 V G A N \mathcal{V}_{GAN} VGAN为标准的非饱和non-saturatingGAN损失[21]。
为了计算鉴别器输出,我们训练预测器 ψ ψ ψ,它使用文本特征 t D t_D tD来调制图像特征 ϕ ( x ) \phi (x) ϕ(x):

其中 ψ j ψ_j ψj为四层1×1调制卷积, C o n v 1 × 1 Conv_{1×1} Conv1×1为跳跃连接skip connection,显式保持无条件预测分支[62]。
【多尺度的对抗损失,匹配损失以及鉴别器输出】

3.3.4 Matching-aware loss【匹配感知损失】

之前的GAN项衡量的是图像x与条件c的匹配程度,以及x看起来有多真实,不管条件如何。
然而,在早期的训练中,当人为因素artifacts很明显时,鉴别器严重依赖于做出独立于条件作用的决定,并在考虑之后的条件作用时犹豫不决。
【鉴别器不考虑条件】

为了让鉴别器加入条件,我们将x与一个随机的、独立的采样条件 c ^ \hat{c} c^匹配,并将它们表示为一对假的:
在这里插入图片描述
其中(x, c)和 c ^ \hat{c} c^分别从 p d a t a p_{data} pdata中采样
这种损失之前已经在文本到图像的GAN作品中进行了研究[76104],但我们发现,对G生成的图像以及真实图像x执行Matching-aware损失,可以明显提高性能(表1)。
在这里插入图片描述

表1译文:

64px文本-图像合成的消融研究。
为了评估组件的有效性,我们从一个用于文本条件调整的StyleGAN修改版本开始。
虽然增加网络宽度并没有显示出令人满意的改进,但我们的每一个贡献都在不断改进指标。
最后,我们增加网络宽度并扩大训练以达到最终的模型。
除了Scale-up行(1350k迭代,具有更大的批处理大小)之外,所有消融的模型都训练了100k迭代,批处理大小为256。
CLIP评分使用CLIP ViT-B/32[71]计算。

3.3.5 CLIP contrastive loss【CLIP对比损失】

我们进一步利用现成的预训练模型作为损失函数[44,84,90]。
特别地,我们强制该生成器产生输出,这些输出可被预先训练的CLIP图像和文本编码器[71]、 E i m g \mathcal{E}_{img} Eimg E t x t \mathcal{E}_{txt} Etxt识别,在用于最初训练它们的对比交叉熵损失中。
在这里插入图片描述
其中 { c n } = { c 0 , . . . } \{c_n\} = \{c_0, . ..\} {cn}={c0...}是从训练数据中采样的字幕captions。
【CLIP的contrastive cross-entropy loss目的是为了对图像和文本之间进行对齐】

3.3.6 Vision-aided adversarial loss

最后,我们构建了一个额外的鉴别器,使用CLIP模型作为骨干,称为Vision-Aided GAN[44]。
我们冻结CLIP图像编码器,从中间层提取特征,并通过一个3 × 3 conv层的简单网络对其进行处理,以做出真实/虚假的预测。
我们还通过调制引入条件作用,如式7所示。( t D t_D tD是文本特征)
为了稳定训练,我们还增加了一个固定的随机投影层,如Projected GAN[84]所提出的。
我们称之为 L V i s i o n ( G ) \mathcal{L}_{Vision}(G) LVision(G)(为了清楚起见,省略了可学习的鉴别器参数)。
【额外的鉴别器(依靠CLIP的图像编码器),还加了一个fixed random projection layer】

我们的最终目标是 V ( G , D ) = L M S − I / O ( G , D ) + L C L I P ( G ) + L V i s i o n ( G ) \mathcal{V}(G,D) = \mathcal{L}_{MS-I/O}(G,D) + \mathcal{L}_{CLIP}(G) + \mathcal{L}_{Vision}(G) V(G,D)=LMSI/O(G,D)+LCLIP(G)+LVision(G),在表A2中指定的项之间加权。

3.4. GAN-based upsampler

此外,GigaGAN框架可以很容易地扩展到训练文本条件超分辨率模型,能够对基础GigaGAN生成器的输出进行上采样,以获得512px或2k分辨率的高分辨率图像。
通过两个独立的阶段训练我们的pipeline,我们可以在相同的计算资源中提供更高容量的64px基础模型。
【超分】

在上采样器中,合成网络被重新排列成非对称的U-Net架构,通过3个下采样残差块处理64px的输入,然后通过有注意层的6个上采样残差块处理,得到512px的图像。(8倍
存在相同分辨率的跳过连接,类似于CoModGAN[106]。
对于ground truth高分辨率图像,模型采用与基础模型相同的损耗,以及LPIPS感知损失[105]进行训练。
上采样器不使用Vision-aided GAN。
在训练和推理过程中,我们采用适度的高斯噪声增强来减小真实图像和GAN生成图像之间的差距。详情请参阅附录A.3。
【trick】

与基于扩散的模型相比,我们的GigaGAN框架对于超分辨率任务特别有效,因为在高分辨率下,该模型不能承担与基模型一样多的采样步骤。
LPIPS回归损耗也提供了稳定的学习信号。
我们相信,我们的GAN上采样器可以作为替代其他生成模型的超分辨率阶段。
【GAN的上采样效率高】

4. Experiments

由于大多数现有模型都不公开,因此很难对大规模文本图像合成任务进行系统的、受控的评估。
从零开始训练一个新模型的成本会高得令人望而却步,即使训练代码是可用的。
尽管如此,我们根据现有的信息将我们的模型与最近的文本到图像模型进行了比较,如Imagen[80]、潜在扩散模型(LDM)[79]、Stable Diffusion[78]和Parti[101],同时承认在训练数据集、迭代次数、批量大小和模型大小方面存在相当大的差异。
除了文本到图像的结果之外,我们在附录B中评估了我们的ImageNet类条件生成模型,以便在更受控制的设置下与其他方法进行公平的apples-to-apples比较。
【现有大模型大多不公开,但gigaGAN依据现有信息与最近的文到图模型进行了对比,也有ImageNet类条件生成的对比。】

对于定量评估,我们主要使用Fr’echet inception distance(FID)[25]来测量输出分布的真实感,使用CLIP得分来评估图像-文本对齐。
【FID衡量真实感,CLIP score衡量image-text alignment】

我们进行了五个不同的实验。
首先,我们通过逐个逐步合并每个技术组件来展示我们方法的有效性(第4.2节)。
其次,我们的文本到图像合成结果表明,Gigagan具有Stable Diffusion(SD-V1.5)[79]的可比FID,同时生成的结果比扩散或自回归模型快数百倍(第4.3节)。
第三,我们将Gigagan与基于蒸馏的扩散模型进行了比较[59],并表明Gigagan可以比基于蒸馏的扩散模型更快地合成更高质量的图像。(基于蒸馏的扩散模型是扩散模型的一种加速方法,见On Distillation of Guided Diffusion Models)
第四,我们验证了Gigagan的上采样器在条件和无条件超分辨率任务中优于其他上采样器。
最后,我们展示了我们的大规模GANs仍然享受GANs的连续和分离的潜在空间操作,支持新的图像编辑模式(第4.6节)。
【五个实验分别是pipeline,文到图,与蒸馏模型比速度和质量,超分效果。GANs连续和分离的潜在空间操作,支持新的图像编辑模式。】

4.1. Training and evaluation details

我们基于StudioGAN PyTorch库[37]实现GigaGAN,遵循标准的FID评估协议,使用抗混叠双三次调整大小函数anti-aliasing bicubic resize function[67],除非另有说明。
对于文本到图像的合成,我们在**LAION2B-en[88]和COYO-700M[8]**数据集的联合上训练我们的模型,但在Adobe的内部Stock图像上训练的128-to-1024上采样器模型除外。
基于CLIP评分[24]、图像分辨率和美学评分[87]对图像-文本对进行预处理,与前人研究[78]相似。
除表1外,我们使用CLIP ViT-L/14[71]用于预训练的文本编码器,使用OpenCLIP ViT-G/14[32]用于CLIP评分计算[24]。
我们所有的模型都在A100 GPUs上进行训练和评估。
我们在附录A中包含了更多的训练和评估细节。
【GigaGAN基于StudioGAN PyTorch库实现,upsampler model在内部数据上训练,图像-文本对进行了预处理,利用CLIP预训练模型】

4.2. Effectiveness of proposed components

首先,我们在表1(在3.3.4节)中通过消融研究显示了我们配方的有效性。
我们通过向StyleGAN2添加文本条件调整和根据StyleGAN-XL的结果调整配置来建立基线。
我们首先直接增加这个基线的模型大小,但我们发现这并没有提高FID和CLIP评分。
然后,我们一个一个地添加组件,并观察到它们不断地提高性能。
特别是,我们的模型具有更强的可伸缩性,因为最终配方的更高容量版本实现了更好的性能。
【表1的消融实验逐步的表明各个组件的有效性。】

4.3. Text-to-Image synthesis

我们继续训练一个更大的模型,将基础生成器和上采样器的容量分别增加到652.5M和359.1M。
这导致了GAN模型的空前规模,总参数计数为1.0B。
表2比较了我们的端到端pipeline与各种文本到图像生成模型的性能[5,10,63,74,75,78-80,101,108]。
请注意,在训练数据集、预训练的文本编码器甚至图像分辨率中都存在差异。
例如,GigaGAN最初合成512px的图像,在评估前将其调整到256px。
【将模型搞大参数量达到十亿】

由表2可知,GigaGAN的FID低于DALL·E2[74]、Stable Diffusion[78]和Parti-750M[101]。
虽然我们的模型可以比现有的模型更好地匹配真实图像的特征分布,但生成的图像质量不一定更好(更多的样本见附录C)。
我们承认,这可能代表了COCO2014数据集上zero-shot FID的一个角落案例,并建议有必要对更好的评估指标进行进一步研究,以改进文本图像模型。
尽管如此,我们强调GigaGAN模型是第一个能够从任意文本提示合成有希望的图像的GAN模型,并且展示了与其他文本到图像模型竞争的zero-shot FID模型。
【GigaGAN更快并且有更低的COCO FID-30k,单质量不一定更好(因为评估指标并不全面),但这是第一个基于GAN的文生图大模型】
在这里插入图片描述

4.4. Comparison with distilled diffusion models

虽然GigaGAN模型的推理速度至少比上述扩散模型快20倍,但人们一直在努力提高扩散模型的推理速度。
我们比较了GigaGAN和逐步progressively蒸馏distilled Stable Diffusion(SD-distilled)[59]。
表3显示,GigaGAN仍然比蒸馏后的稳定扩散(Stable Diffusion)快,同时显示出更好的FID和CLIP得分,分别为21.1和0.32。
我们遵循SD-distilled[59]的评估协议,在COCO2017数据集[54]上报告FID和CLIP评分,其中图像大小调整为512px。
【SD-distilled[59]见On Distillation of Guided Diffusion Models】
在这里插入图片描述

4.5. Super-resolution for large-scale image synthesis

我们分别评估了GigaGAN上采样器的性能。
我们的评估包括两部分。
首先,我们将GigaGAN与几个常用的上采样器进行比较。
对于文本条件下的上采样任务,我们将Stable Diffusion [78] 4x Upscaler和2x Latent Upscaler结合起来,建立一个8x的upscaling模型(SD Upscaler)。我们还使用无条件的Real-ESRGAN[33]作为另一个基线。
表4测量了上采样器对来自LAION数据集的随机10K图像的性能,显示我们的GigaGAN上采样器在现实度分数(FID和patch-FID[9])、文本对齐(CLIP分数)和接近地面真实度ground truth(LPIPS[105])方面显著优于其他上采样器。
此外,为了进行更可控的比较,我们在ImageNet无条件超分辨率任务上训练我们的模型,并与基于扩散的模型进行性能比较,包括SR3[81]和LDM[79]。
表5所示,GigaGAN在一次前馈通过时获得了最好的IS和FID分数。
【与常用的上采样器比较,对于文本条件下的上采样任务与SD Upscaler和Real-ESRGAN作为比较】
在这里插入图片描述
在这里插入图片描述

4.6. Controllable image synthesis

StyleGANs具有一个线性的潜在空间,这对图像处理很有用,称为 W \mathcal{W} W-空间。
类似地,我们使用样式向量w来执行粗粒度和细粒度的样式交换。
与StyleGAN的 W − s p a c e \mathcal{W}-space Wspace类似,图6说明了GigaGAN维护了一个解纠缠的 W − s p a c e \mathcal{W}-space Wspace,这表明StyleGAN现有的潜在操作技术可以转移到GigaGAN。
此外,我们的模型在 W \mathcal{W} W之前还有另一个潜在的文本嵌入空间 t = [ t l o c a l , t g l o b a l ] t = [t_{local}, t_{global}] t=[tlocal,tglobal],我们探索了它在图像合成中的潜力。
图8中,我们展示了解纠缠样式操作可以通过文本输入进行控制。
具体来说,我们可以使用不同的提示来计算文本嵌入t和样式代码w,并将它们应用到生成器的不同层。
这样,我们不仅得到了粗细的风格疏解,而且在风格空间中获得了一种直观的基于提示的策略。
【StyleGAN的 W − s p a c e \mathcal{W}-space Wspace技术可以迁移到GigaGAN,并且GigaGAN有文本控制生成能力】

5. Discussion and Limitations

我们的实验为GANS的可伸缩性提供了一个结论性的答案:我们的新架构可以扩展到支持文本到图像合成的模型大小。
然而,我们的结果的视觉质量还不能与Dall·E2这样的生产级模型相比。
图9显示了几个例子,与Dall·E2相比,我们的方法无法产生高质量的结果,与他们的论文中使用的输入提示prompts相同的情况下,就在照片真实感和文本到图像的对齐方面而言。

然而,我们测试的能力远远超出了用一种新的方法所能达到的水平,并与用类似资源训练的自回归和扩散模型实现了具有竞争力的视觉质量,同时速度快了几个数量级,并实现了潜在的插值和风格化。
我们的Gigagan架构为大规模生成模型开辟了一个全新的设计空间,并带回了随着向自回归和扩散模型过渡而变得具有挑战性的关键编辑能力。
表1所示,我们期望使用更大的模型来提高我们的性能。
在这里插入图片描述

失败案例。我们的输出与DALL·E2提示相同。每一栏都有“时代广场滑板上的泰迪熊”、“萨尔瓦多·达利(Salvador Dali)充满活力的半身机器人肖像画”和“手掌上长出树叶的特写”。与DALL·E2等生产级模型相比,我们的模型在真实感和构成性方面存在局限性。请参阅附录C以进行未经组织的比较。

Large Picture

在这里插入图片描述

我们的模型GigaGAN显示,GAN框架也可以用于一般的文本到图像的合成任务,以0.13s的交互速度生成512px的输出,以3.7s的交互速度生成4096px的输出。
在2K或4K分辨率的选择示例显示。请放大查看更多细节。请参阅附录C和我们的网站,以获得更多未经整理的比较。

在这里插入图片描述

我们的基于GAN的上采样器可以用于许多文本-图像模型的上采样pipeline中,这些模型通常以低分辨率(如64px或128px)产生初始输出。
我们通过在低分辨率128px的artwork上应用文本条件下的8×超分辨率模型来模拟这种使用,以获得1K的输出,使用“穿着连帽衫的彩色鬣蜥的肖像”。
然后我们的模型可以重新应用到4K以上。
我们将我们的模型与Stable Diffusion的文本条件下的upscaler[78]和无条件的Real-ESRGAN[33]进行了比较。对于1K和4K之间的比较,建议放大。

在这里插入图片描述

我们基于GAN的上采样器,类似于图2,也可以通过提供对图像的适当描述,作为具有大缩放因子的真实图像的现成超分辨率模型。
我们将文本条件下的8×超分辨率模型应用于128px的低分辨率照片,以获得1K的输出,使用“一只狗坐在一个迷你帐篷前”。
然后我们的模型可以重新应用到4K以上。
我们将我们的模型与Stable Diffusion的文本条件下的upscaler[78]和无条件的Real-ESRGAN[33]进行了比较。对于1K和4K之间的比较,建议放大。

在这里插入图片描述

风格混合。 我们基于GAN的架构保留了一个解纠缠的潜在空间,使我们能够将一个样本的粗糙风格与另一个样本的优良风格融合在一起。 所有输出都以提示“A Toy Sport Sedan,CG Art。”对应的潜在代码被拼接在一起,以产生一个样式交换网格。

在这里插入图片描述

快速插值。 GigaGAN允许在提示之间平滑插值,如插值网格所示。 四个角是从相同的潜在Z生成的,但有不同的文本提示。 相应的文本嵌入t和样式向量w被插值以创建平滑的过渡。 相同的Z导致相似的布局。 有关更精确的控制,请参见图8。

在这里插入图片描述

Prompt mixing。 GigaGAN保留了一个解纠缠的潜在空间,使我们能够将一个样本的粗风格与另一个样本的细风格结合起来。 而且,Gigagan可以通过文本提示直接控制样式。 在这里,我们使用提示符“桌面上的X”生成四个输出,如“No Mixing”列所示。 然后使用新的提示“桌面上的纹理为Y的X”(如“桌面上的纹理为钩针织物的立方体”)重新计算文本嵌入t和样式代码w,并将它们应用到生成器的后半层,实现了保持布局的精细样式控制。 交叉注意机制自动将样式本地化到感兴趣的对象。

参考:https://zhuanlan.zhihu.com/p/615587253
https://www.jiqizhixin.com/articles/2023-03-13-3

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

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

相关文章

【Java|基础篇】面向对象三大特性之封装

文章目录 1.前言2.什么是封装3.如何更好的封装4.封装的好处5.总结 1.前言 面向对象有三个特性:封装,继承和多态,本文主要讲解封装. 封装是面向对象编程的基本原则之一&#xff0c;它可以提高程序的安全性、稳定性、可维护性和可扩展性&#xff0c;减少了代码的冗余&#xff0c…

【框架源码】Spring源码核心注解Conditional和应用

1.什么是Conditional注解 Conditional来源于spring-context包下的一个注解。通过Conditional配置一些条件判断&#xff0c;当所有条件都满足时&#xff0c;被该Conditional注解标注的目标才会被Spring处理。 例如根据当前环境、系统属性、配置文件等条件来决定是否注册某个Bea…

股票量价关系基础知识3

成交量变化的表现形式 成交量变化的表现形式主要有以下几种 一、缩量 一般界定当日成交量低于前一交易日成交量10%以上为缩量。 缩量往往发生在上升途中的回调末期、上涨末期以及股价下跌的中后期。一般下跌趋势中的缩量阶段&#xff0c;往往意味着股价仍未见底&#xff0c;不能…

服务攻防-中间件安全CVE复现IISApacheTomcatNginx漏洞复现

目录 一、导图 二、ISS漏洞 中间件介绍> 1、短文件 2、文件解析 3、HTTP.SYS 4、cve-2017-7269 三、Nignx漏洞 中间件介绍> 1、后缀解析漏洞 2、cve-2013-4547 3、cve-2021-23017 无 EXP 4、cve-2017-7529 意义不大 四、Apache漏洞 中间件介绍> 1、漏…

AcWing算法提高课-1.3.5买书

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 本题链接&#xff08;AcWing&#xff09; 点这里 题目描述 小明手里有n元钱全部用来买书&#xff0c;书的价格为10元&#xff0c;20元&#xff0c;50元&#xff0c;100元。 问小明有多少种买…

【Python--读写模式全解】

读写模式 读写模式语法读取写入追加 小结 读写模式 open() 函数常用形式是接收两个参数&#xff1a;文件名(file)和模式(mode)。 # 读写文件最好用 with...open...操作&#xff0c;这样最安全 # 而且还不需要关闭文件 with open(path,r)as f:f.read() # 一次读取整个文件&…

如何调用API数据接口来获取想要的数据

API&#xff08;Application Programming Interface&#xff09;是连接不同软件和服务的桥梁&#xff0c;允许不同的应用程序之间共享和交换数据。API接口被广泛应用于各种场景&#xff0c;如&#xff1a; 1.移动应用程序&#xff1a;许多移动应用程序使用API接口与服务器通信…

量子计算——新兴领域的前沿技术

随着人类社会文明的不断进步&#xff0c;计算技术也在不断发展。传统计算机在过去的几十年中快速发展&#xff0c;计算速度、存储能力等方面发生了天翻地覆的变化。但随着大数据、人工智能、区块链等新兴领域的迅速崛起&#xff0c;传统计算机的发展似乎面临了瓶颈。在这样的背…

花3个月面过京东测试岗,拿个25K不过分吧?

背景介绍 计算机专业&#xff0c;代码能力一般&#xff0c;之前有过两段实习以及一个学校项目经历。第一份实习是大二暑期在深圳的一家互联网公司做前端开发&#xff0c;第二份实习由于大三暑假回国的时间比较短&#xff08;小于两个月&#xff09;&#xff0c;于是找的实习是在…

java简单接触

文章目录 常用的DOS命名计算机语言的发展史javajava的历史java的版本java的特性和优势JDK、JRE、JVMjava程序的运行机制 常用的DOS命名 # 盘符切换 C:\Users\Administrator>D: D:\> # 查看当前目录下的所有文件 dir # 切换目录 cd change screen # 返回上一级目录 cd ..…

FE_本地存储LocalStorage和SessionStorage

localStorage和sessionStorage一样都是用来存储客户端临时信息的对象。他们均只能存储字符串类型的对象。localStorage生命周期是永久&#xff0c;这意味着除非用户主动在浏览器上清除localStorage信息&#xff0c;否则这些信息将永远存在。sessionStorage的失效时间为当前会话…

Wine运行器3.2.2——修复一些问题

不写太多啥了&#xff0c;详细介绍看这里就行&#xff1a;https://bbs.deepin.org/post/248098 更新内容 ※1. 修改源地址&#xff08;迁出 Gitlink&#xff09;&#xff1b; ※2. 修复非 X86 架构运行器主页面虚拟机工具禁用的问题&#xff1b; 3、部分组件支持选择最优源。 …

C语言——数据类型

1. 变量 1.1变量的概念 变量就是在程序中可以发生变化的量&#xff0c;变量有类型。 变量的类型决定了变量存储占用的空间&#xff0c;以及如何解释存储的位模式。(1字节8位) 1.2定义格式 存储类型 数据类型 变量名&#xff1b;例如&#xff1a;(auto) int a; 变量名是标识…

Unity2d光源的使用

将项目升级为2dURP 安卓UPR插件 新建URP配置文件 (只有完成第一步操作之后才会有创建的选项) 右键>Create>Rendering>URP Asset (with 2D Renderer) 修改Project Settings(项目设置里面的相关设置) Edit>Project Settings>Graphics>设置Scriptable R…

组件弹框传值

1.引入组件 // 编辑干部弹窗 import edit from "../../components/rm/edit.vue"; 2.注册组件 components: {edit,}, 3.使用组件 <edit ref"edit" :visible.sync"editVisible" :rmid"UpFileData.id" :width"editWidth"…

股票量价关系基础知识4

价量配合与价量背离 在股票市场中&#xff0c;价的变化会引起量的变化&#xff0c;量的变化又会引起价的波动。从整体来看&#xff0c;价量关系主要存在两种情况&#xff1a;价量配合和价量背离。 一、价量配合 &#xff08;一&#xff09;基本概念 价量配合&#xff0c;是指股…

leecode255——二叉树的所有路径代码及示例

&#x1f50e;递归法&#xff1a; 既然是递归法&#xff0c;递归三部曲&#xff1a; &#xff08;1&#xff09;确定终止条件: 对二叉树的路径&#xff0c;遍历到叶子节点结束。本题要找到叶子节点才开始处理后续流程&#xff0c;那什么时候算是找到了叶子节点&#xff0c;即…

尚硅谷JUC

文章目录 1. 什么是JUC1.1 JUC简介1.2 进程和线程基本概念2.1 Synchronized2.1.1 Synchronized关键字2.1.2 synchronized实现三个线程卖30张票 2.2 Lock2.2.1 什么是Lock2.2.2 使用Lock实现买票功能2.2.3 两者的区别 3. 线程间通信及定制化通信3.1 使用synchronized实现线程之间…

【Windows线程开发】Windows线程同步技术

我们在上一章节中讲解了关于Windows的线程基础&#xff0c;相信大家已经对线程有了基本的概念。这一章节中&#xff0c;我们来讲讲线程同步技术&#xff0c;包括加锁技术&#xff08;原子锁和互斥体&#xff09;和事件&#xff0c;信号灯。 文章目录 一.原子锁二.互斥体三.事件…

SpringCloud-网关 Gateway

网关Gateway 一、网关初识二、网关的使用1.创建项目并引入依赖2.编写网关配置3.启动服务并测试 三.查看网关路由规则列表四.路由服务的负载均衡五.断言和过滤1.断言Predicate1.1.The Path Route Predicate Factory(路径断言工厂&#xff09;1.2.The After Route Predicate Fact…