当前位置: 首页 > news >正文

(2021|CoRR,AugCLIP,优化)FuseDream:通过改进的 CLIP+GAN 空间优化实现免训练文本到图像生成

FuseDream: Training-Free Text-to-Image Generation  with Improved CLIP+GAN Space Optimization

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

目录

0. 摘要

1. 简介

2. CLIP+GAN 文本到图像生成

2.1 CLIP容易受到攻击并陷入困境

3. 我们的方法 - FuseDream

3.1 AugCLIP:避免对抗生成

3.2 优化改进

3.3 组合生成

4. 相关工作 

5. 实验

6. 结论

S. 总结

S.1 主要贡献

S.2 方法


0. 摘要

生成图像从自然语言指令是一个引人入胜但极具挑战性的任务。我们采用了一种 CLIP+GAN 的方法来进行文本到图像的生成,该方法在现成的 GAN 的潜在空间中进行优化,以找到在 CLIP 模型度量下,与给定输入文本具有最大语义相关性分数的图像。与从头开始训练将文本映射到图像的传统方法相比,CLIP+GAN 方法是无需训练的、zero-shot 的,并且可以轻松定制以适应不同的生成器。

然而,在 GAN 空间中优化 CLIP 分数是一个极具挑战性的优化问题,像 Adam 这样的现成优化器未能产生令人满意的结果。在这项工作中,我们提出了一种 FuseDream 流水线,通过三种关键技术改进了 CLIP+GAN 方法: 1)通过在图像上引入随机增强来使标准的 CLIP 分数更加稳健的AugCLIP 分数。2)一种新颖的初始化和超参数化策略,允许我们有效地在 GAN 空间中的非凸区域进行优化。3)一种组合生成技术,通过利用一种新颖的双层优化公式,可以组合多个图像以扩展 GAN 空间并克服数据偏见。

在受到不同输入文本的推动时,FuseDream 能够生成具有不同对象、背景、艺术风格和新颖的反事实概念的高质量图像,这些概念在我们使用的 GAN 的训练数据中并未出现。在定量方面,FuseDream 生成的图像在 MS COCO 数据集上获得了顶级的 Inception 分数和 FID 分数,而无需额外的架构设计或培训。我们的代码可在 https://github.com/gnobitab/FuseDream 上公开获取。

1. 简介

在多模态机器学习中的一个重要任务是文本到图像生成,即生成与给定文本输入在语义上相关的逼真图像 [9,18,25,26,31,35]。这是一项极具挑战性的任务,因为生成模型需要理解文本、图像以及它们在语义上应该如何关联。最近,[9, 25] 取得了显著的进展,它们使用在大规模数据集上进行自监督损失训练的模型生成了高质量且语义相关的图像。

传统的文本到图像生成方法是使用(文本,图像)对的数据集从头开始训练有条件的生成模型 [18, 22, 25, 26, 31, 35]。然而,这个过程需要收集大量的训练数据,带来高昂的培训成本,并且不容易定制。最近,随着强大的联合文本-图像编码器的出现(特别是 CLIP 模型 [24]),它们提供了文本-图像对的忠实语义相关性得分。结合强大的预训练 GAN(如 [1, 4, 18, 40]),通过在 GAN 的潜在空间中进行优化,创建与输入文本具有高语义相关性的图像已经成为可能。值得注意的例子包括 BigSleep [20] 和 VQGAN+CLIP [6],它们分别通过在 BigGAN 和 VQGAN 的潜在空间中最大化CLIP 分数来从文本生成引人入胜和艺术性的图像。与传统基准相比,结合 GAN 和 CLIP 的方法是无需训练且 zero-shot 的,不需要专门的训练数据集和训练成本。它还更加灵活和模块化:用户可以轻松替换生成器(GAN)或编码器模型(CLIP)为更强大或定制的模型,以最适合其问题和计算预算。

另一方面,现有的 CLIP+GAN 方法的结果 [6, 10, 20] 在许多情况下仍然令人不满意。例如,虽然BigSleep 能够以不同的风格生成图像并创造有趣的视觉艺术,但在生成清晰和逼真的图像方面存在困难,生成的图像可能只与 query 文本弱相关。如图 1 所示(每个面板的右上角),BigSleep无法为 “蓝色狗” 这个简单概念生成一个清晰可辨认的图像。对于像 “火焰狗” 这样的反事实概念,BigSleep 生成的图像往往以一种不自然的方式纠缠了火焰和狗的概念。在图 1 中(每个面板的左上角),我们实施了另一个基准,使用现成的Adam [17] 优化器在 BigGAN [4] 的输入空间中最大化 CLIP 分数,结果甚至比 BigSleep 更糟糕。

在这项工作中,我们分析了现有 CLIP+GAN 过程中的问题。我们确定了该方法存在的三个关键瓶颈,并通过一系列技术来显著改进这个流程。

  • 稳健分数:我们观察到原始的 CLIP 分数在 GAN 空间中并不适用作为优化的良好目标函数,因为 它倾向于生成语义无关的图像,这些图像 “对抗性” 地最大化了 CLIP 分数。我们提出了 AugCLIP分数,通过对输入图像的多个扰动或增强进行平均来稳健 CLIP 分数。
  • 改进的优化策略:在 GAN 空间中最大化 CLIP 分数会产生一个高度非凸的多模态优化问题,现成的优化方法往往会陷入次优的局部最大值。我们通过一种新颖的初始化和过参数化策略来解决这个问题,允许我们更有效地在非凸损失中遍历。
  • 组合生成:CLIP+GAN 方法的图像空间受到我们使用的预训练 GAN 的限制。这使得难以生成在GAN 的训练数据中没有出现的对象的新组合的图像。我们通过提出一种组合生成技术来解决这个问题,该技术共同优化两个图像,使它们可以无缝地组合在一起,产生自然且在语义上相关的图像。我们将组合生成制定为一种新颖的双层优化问题,最大化 AugCLIP 分数,同时将感知一致性分数作为次要目标,并利用一种最近的动态障碍梯度下降算法 [11] 有效地解决它。

我们的流程,我们称之为 FuseDream(名称中的 “fuse” 指的是: 1. 融合 GAN 和 CLIP 以及 2. 我们的组合生成技术),不仅可以从复杂的文本描述中生成清晰的对象,还可以生成类似 MS COCO [19] 中的复杂场景。由于 CLIP 的表征能力,FuseDream 可以创建具有不同背景、纹理、位置、艺术风格甚至反事实对象的图像。借助组合生成技术,FuseDream 可以创建具有在我们使用的 GAN 的原始训练数据中没有出现的对象的新组合的图像。与直接训练大规模文本到图像生成模型相比,我们的方法在保持可比甚至更好的结果的同时更加计算友好。

2. CLIP+GAN 文本到图像生成

首先,我们介绍通过结合预训练图像生成器(特别是 GAN)和联合图像+文本编码器(特别是CLIP)进行文本到图像生成的一般思路。然后,我们分析这种方法的朴素实现的一个关键限制。

GAN:图像生成器 g:R^D → R^(H×W×3) 是一个神经网络,接受一个 D 维潜在编码 ξ,并输出尺寸为 H × W 的彩色图像 I。形式上,I = g(ξ)。

可以通过控制输入的 ξ 生成和操纵不同的图像。在这项工作中,除非另有说明,我们使用 BigGAN [4],这是一个类别条件的 GAN,其潜在向量 ξ = {z, y} 包括一个高斯噪声向量 z ∈ R^Z 和一个类别嵌入向量 y ∈ R^Y。它是在大规模的 ImageNet数据集 [27] 上训练的,包含来自 1,000 个不同类别的对象。

CLIP:一个联合图像-文本编码器,尤其是对比语言-图像预训练(Contrastive Language-Image Pretraining, CLIP)[24],由语言编码器 f_text 和图像编码器 f_image 组成,它们将文本 T 和图像 I 映射到一个共同的潜在空间,通过余弦相似性可以评估它们的相关性。

CLIP 模型经过训练,使得语义相关的文本-图像对 T 和 I 具有高相似性分数。

CLIP+GAN:通过结合预训练的 GAN g 和 CLIP {f_text, f_image},可以合成一个文本到图像的生成器。给定一个输入文本 T,我们可以通过优化潜在编码 ξ 生成一个与 T 在语义上相关的逼真图像 I,使得生成的图像 I = g(ξ) 具有最大的 CLIP 分数 s_CLIP(T, I)。形式上,

这将使输出图像限制在自然图像的空间内,同时最大化与输入文本的语义相关性。在 [20, 39] 中,使用 Adam [17] 解决优化问题。在使用 BigGAN [4, 16] 时,通常的做法是将 z 截断为 [-2, 2]。 

2.1 CLIP容易受到攻击并陷入困境

简单地解决(2)不会产生令人满意的图像,如图 1 左上角的图像所示。我们观察到不令人满意的结果可以归因于两个相互关联的原因:

  • CLIP 分数很容易受到 “攻击”,即在任何图像的小邻域内很容易最大化 CLIP,表明存在具有高CLIP 分数但与输入文本关联性低的 “对抗性” 图像。
  • 在(2)中的优化实际上可以有效地作为对 s_CLIP 的对抗性优化,产生与初始化相似但虚假高 CLIP 分数的图像。

案例研究 1:攻击 CLIP。如图 2 所示,我们对自然图像 I 应用对抗攻击器,使用 Fast Gradient Sign Method(FGSM)[13] 在 sCLIP 上进行操作,即解决 max s_CLIP(I + δ) s.t. ||δ|| ≤ ε,其中小扰动的幅度 ε > 0。我们发现 FGSM 可以轻松找到一个几乎与原始图像相同但具有更高 CLIP 分数的图像。这表明在直接最大化 CLIP 分数时存在 “过拟合” 的危险。

案例研究 2:Dog → Cat。在图 3 中,我们展示了使用输入文本 T = ‘一张猫的照片’ 优化(2)的一个示例,从一个初始化的 ξ^0 开始,其图像 I = g(ξ^0) 是一只狗。我们可以看到尽管成功地最大化了 s_CLIP,图像仍然与初始化相似,并且没有按预期从狗转变为猫。在这种情况下,(2)中的优化表现出对抗性攻击的行为:它在初始化附近被困住,同时虚假地增加了 CLIP 分数。

在上述两种情况中,可以通过使用我们在接下来介绍的 AugCLIP 分数来解决问题。

3. 我们的方法 - FuseDream

我们现在介绍改进 CLIP+GAN 管道的主要技术。第 3.1 节介绍了 AugCLIP 分数,该分数使 CLIP分数更加健壮,以避免对抗性攻击现象。第 3.2 节介绍了一种初始化和过参数化(over-parameterization)技术,以更好地解决非凸优化问题。第 3.3 节介绍了一种组合生成方法,用于生成具有新颖对象和背景组合的分布外图像。

3.1 AugCLIP:避免对抗生成

为了解决 CLIP 分数的对抗性攻击问题,我们提出以下 AugCLIP 分数。 

其中 I' 是来自候选数据增强分布 π(· | I) 的输入图像 I 的随机扰动。在我们的工作中,我们采用了 DiffAugment [38] 中考虑的各种数据增强技术,包括随机着色、随机平移、随机调整大小和随机剪裁。

由于 AugCLIP 必须同时攻击大多数随机增强图像上的  s_CLIP,这比攻击单个图像要困难得多,因此 AugCLIP 对抗对攻击更加稳健。对随机增强的平均化还使得攻击更加困难,正如理论和经验证明的那样 [5, 28]。同时,增加增强并不损害由 CLIP 编码的语义关系,因为 CLIP 模型最初是在具有不同着色、视图和平移的图像上训练的,因此与我们的增强策略兼容。

 

案例研究 1 和 2。如图 3 所示,AugCLIP 分数对抗对攻击更加稳健。图 4 显示,简单地用 s_AugCLIP 替换 s_CLIP 允许我们摆脱对抗生成并产生更具语义相关性的图像。

3.2 优化改进

由于损失的高非凸性,s_AugCLIP 的优化仍然可能受到次优局部极大值的影响。我们引入了一种初始化和过参数化策略来改善优化。 与从单一初始化开始的传统方法不同,我们首先采样大量( M 个)初始化副本

然后我们选择具有最高 AugCLIP 分数的前 k 个初始化,即

并将它们用作后续优化的初始基向量。换句话说,我们将解(solution)重新参数化为

并联合优化基向量和系数,其中 w(i) ∈ R。

其中,{ ξ_(i) } 初始化为选定的 k 个

而 w_(i) 初始化为 1/k。我们设置 M = 10,000(可以并行评估)和相对较小的 k(例如,k ≤ 15)。

尽管等式(4)中的优化等效于等式(2)中的优化,但它配备过参数化,以及更自然的坐标和更好的初始化,因此在使用基于梯度的优化方法时往往会产生更好的结果。特别是,组合权重 {w_(i)} 的更新对应于在基向量

的线性空间中的快速全局移动,使其更容易逃离局部最优点。

在实践中,由于我们使用 BigGAN,潜在编码 ξ = (z, y) 被初始化为 z ~ N(0, I),而 y 则从 ImageNet 的 1,000 类别的潜在表示中随机选择(这比我们在附录中展示的 y ~ N(0, I) 更好)。

基于梯度或无梯度的优化器?在这项工作中,我们采用了广泛使用的 Adam [17] 优化器。一些最近的工作推荐在 GAN 空间中进行优化时使用无梯度优化器,如 BasinCMA [3, 16, 32],因为存在很高的非凸性。然而,我们的研究表明,与 Adam 相比,BasinCMA 往往会带来更高的计算成本,因为 BasinCMA 在每次迭代时需要在目标上进行大量前向传递,而 Adam 只需要单次前向和后向传递。经验上,我们发现 Adam 比 BasinCMA 快大约 20 倍。尽管基于梯度的方法比无梯度的方法更容易陷入局部最优点,但在我们的 AugCLIP 损失和提出的初始化和过参数化技术下,这不再是一个问题。我们在附录中包含了更多与 BasinCMA 的讨论和比较。

3.3 组合生成

CLIP+GAN 方法的图像空间受我们使用的 GAN 的表示能力限制。这使得该方法难以生成超出分布范围的图像,并且容易继承来自 GAN 的原始训练集的数据偏差,例如中心、空间和颜色偏差 [2, 16]。我们提出了组合生成,通过将 GAN 生成的两幅图像组合在一起,以增加图像空间并减少数据偏差,获得更高的灵活性。我们的方法共同优化前景图像 I_fg = g( ~ξ_fg) 和背景图像 I_bg = g( ~ξ_bg),其中 ~ξ_fg 和 ~ξ_bg 是两个过参数化的潜在编码,如公式 4 所示。这两幅图像用于生成融合图像

首先,设置 I_fg 的大小缩放因子为 α ∈ (0,1),然后将其粘贴在 I_bg 上的九个位置(t ∈ {left, center, right}^2)之一。我们希望选择 ~ξ := {~ξ_fg, ~ξ_bg},以及 ~α := {α , t},以最大化 I 的 AugCLIP 分数:

另一方面,由于两个图像 I_fg 和 I_bg 是独立生成的,合成图像可能在边界上具有不自然和人工的不连续性。为了解决这个问题,我们引入了一个额外的损失,强制在 I_fg 和 I_bg 之间保持感知一致性, 

其中,𝑙_per 代表 LPIPS 度量[37],这是一种近似人类对图像相似性感知的度量。

因此,我们希望既最大化 AugCLIP 分数,又最小化感知损失 𝑙_Fuse。一个朴素的方法是优化它们的线性组合。然而,这将需要在生成每个图像时仔细而逐个案例地调整组合系数。

双层优化:我们提出了一种无调优方法,通过一个简单的双层(或词典)优化问题来组合这两个损失(参见例如 [8, 12])

在这里,arg max sFuse 表示 s_Fuse 的(局部)极大值的集合。这个公式在 s_Fuse 的最优集合中寻找那些最小化 𝑙_Fuse 的点。它优先考虑优化 s_Fuse,同时将 𝑙_Fuse 作为次要损失进行考虑。

我们通过在离散集合 α ∈ {0.65, 0.5} 和 t ∈ {left, center, right}^2 上进行蛮力搜索来优化 ~α = {α, t}。对于每个固定的 ~α ,我们使用来自 [12] 的动态障碍梯度下降算法来优化连续向量 ~ξ,这产生了以下简单的迭代规则。

在这里,ε^t > 0 是步长;β 是一个超参数(默认为 1)。直观地说,可以将这个算法视为迭代地最小化线性组合的损失 𝑙_Fuse - λ_t·s_Fuse,其中系数 λ_t 动态地由梯度 ▽𝑙_Fuse 和 ▽s_Fuse 之间的角度决定,移除 -▽𝑙_Fuse 中与 s_Fuse 冲突的成分,以确保 s_Fuse 在作为主要损失时单调递减。有关更多详细信息,请参阅附录和 [11]。

在实践中,我们通过将 v^t 视为梯度方向,将等式(6)与 Adam 结合起来。此外,我们通过在 I_fg 和 I_bg 上应用 Poisson blending 来获得最终的合成图像,从而产生更平滑的图像 I,遵循[16]。我们的算法总结在 Alg. 2 中。

4. 相关工作 

在生成对抗网络(GAN)的潜在空间中进行优化的一般思想已被广泛应用作为一个强大的框架,用于生成、编辑和恢复图像;例如,参见 [1, 14, 16, 39] 等。例如,[39] 提出将真实图像投影到GAN 的潜在空间以编辑图像。[14] 把主成分分析(principal component analysis,PCA)应用到 GAN 空间,为图像合成创建可解释的控制。[16] 通过无梯度优化器 BasinCMA [3, 32] 优化潜在编码,将给定图像嵌入到 BigGAN [4] 中,以在 GAN 空间中实现灵活的图像编辑。最近的一项工作[7] 使用逐层优化来提高解决逆问题(inverse problems,例如超分辨率和修复)在 GAN 空间中的性能。大多数这些方法仅专注于图像域上的单一任务,而我们的方法旨在通过利用 CLIP 的能力将图像与文本连接起来。

在另一个方向上,使用 CLIP 分数 [24] 的思想已经在各个方向上得到了探索,包括视频检索 [21]、视觉问答 [30]和语言引导的图像操作/生成 [6, 10, 20, 23] 等。特别地,[23] 采用了 CLIP 和StyleGAN 来引导简单图像(通常是脸部、宠物或汽车的照片)的风格。[6, 10, 20] 是实现了基本GAN+CLIP 过程的开源存储库,我们通过新技术在这个基础上有了显著的改进。

5. 实验

我们将配备 BigGAN-256 的 FuseDream 与一些基线方法进行比较,包括 DM-GAN [40]、Obj-GAN [18]、CogView [9] 等。我们在流行的 MS COCO 数据集 [19] 上测试这些方法,并发现尽管BigGAN 在 ImageNet 上进行了预训练,但 FuseDream 明显优于基线方法。由于 CLIP 带来的丰富表示能力,FuseDream 可以生成具有不同方面的图像,包括艺术风格、天气、背景、纹理等,能够创造不存在的、反事实但合理的对象。此外,通过组合生成技术,我们可以生成具有多个对象的更好图像。请参见附录以查看论文中显示的图像的高分辨率副本。

在 MS COCO 测试集上的定量评估。为了与其他文本到图像生成方法进行比较,我们在从 COCO数据集中采样的 30,000 个标题的子集上评估我们的方法。我们遵循 [18, 31, 35, 40] 中提供的相同标准评估协议,使用 [18] 提供的官方代码。我们使用 Fréchet Inception Distance(FID)、Inception Score(IS)和 R-precision 来评估性能。对于 R-precision,按照 [18, 31, 35, 40] 的方法,我们计算全局图像向量与通过预训练的 CNN-RNN 检索模型 [35] 提取的 100 个候选句向量之间的余弦相似度。候选文本描述包括一个真实标题和 99 个随机选择的不相关句子。 R-precision 计算为所有 30,000 个生成图像的检索精度。我们随机重复该过程 3 次,并报告 R-precision 的均值和标准差。注意,基线 GAN 通常是针对最大化该分数进行训练的。为了公平比较,我们将 [35]中使用的检索模型替换为 CLIP 文本和图像编码器,并报告额外的 CLIP R-precision 分数。

结果如表 1 所示。FuseDream 在 IS 分数上达到了与真实图像相当的水平(34.26 对比 34.88)。与在数十亿互联网图像上进行训练并具有巨大计算成本的 DALL-E [25] 和 CogView [9] 相比,我们显著提高了 IS 分数,从约 18 提高到 34,FID从 27 降低到 21(例如,对于使用 BigGAN-256、k = 5 的 FuseDream,FID 为 21.16)。请注意,我们使用的 BigGAN 是在 ImageNet 上进行训练的,尽管评估是在 COCO 图像上进行的;通过使用在 COCO 数据集上训练的更强大的生成模型,我们可以期望获得更好的结果。

从 COCO 标题生成的图像。我们在图 7 中展示了 FuseDream 根据 COCO 数据集中的输入标题生成的一些图像。FuseDream 生成具有更多细节和目标的图像。例如,对于给定的 “夜晚商业街角上的交通和人群”,FuseDream 可以生成人群、汽车和繁华的街道,灯光璀璨。

变化的艺术风格。尽管 BigGAN 是在 ImageNet 上训练的,其中的图像大多是现实的,但通过CLIP,FuseDream 能够以不同的艺术风格生成有意义的图像,如图 6 中的第一行所示。这些图像具有六种不同的风格,例如照片、单色、版画、绘画、抽象绘画和水墨画。即使输入句子很复杂,我们也可以生成具有许多粒度的有意义的虚假图像。给定来自 Percy Shelley 的《致西风颂》的句子(“古老的宫殿和塔楼在波涛汹涌的日光中颤动”),FuseDream 成功生成了宫殿、塔楼、波涛和日光。

变化的纹理、背景和更多内容: 如 [14, 29] 所示,在标准 GAN 中很难控制纹理和背景。然而,FuseDream 可以通过输入句子很好地控制图像的纹理和背景。如图 6 的第二行和第三行所示,FuseDream 可以轻松将汽车放在不同的背景中(例如水下、夜晚、天空),并具有不同的纹理(例如丰富多彩的光辉、星空、幽灵)。将对象更改为机器人,我们还可以在不同的天气条件下(例如雨天、阳光明媚、雪天)生成有意义但虚假的机器人。此外,通过生成明显不同的餐点,FuseDream 似乎表现出对文化差异的理解:美国的餐点包含玉米、土豆泥和炸鸡;俄罗斯的餐点包含黑面包和俄式红菜汤;中国的餐点包含蛋饺和春卷。

生成反事实内容: 在先前的例子中,我们展示了一些反事实的例子,例如图 1 中的燃烧的狗,图 6 中的天空中的汽车。在这里,我们使用 FuseDream 生成更多具有不同对象、背景和风格的高质量反事实图像。图 8 展示了我们可以生成 “发光发亮的狗”、“天空中的城堡”、“立方体蝴蝶” 和 “水下森林” 等图像。这些图像具有不同的对象、背景和风格,并且在现实世界中不存在,也不在BigGAN 的 ImageNet 训练数据中。令人惊讶的是,尽管我们从未更改 BigGAN 的参数,FuseDream 成功地生成了这些高质量的跨域图像。

FuseDream-Composition 中的多个概念: 通过生成包含两个对象的图像,我们验证了组合生成技术的性能。这两个对象通常不会在正常图像中同时出现,例如猫和蝴蝶,狗和教堂等。如图 9 所示,FuseDream(使用单个图像生成)可能将两个对象缠绕在一起,或者遗漏其中一个对象。例如,“一只狗靠近一艘船” 生成了一艘带有狗状帆的船。“一只蝴蝶靠近一艘船” 只生成了一只蝴蝶,而忽略了船。然而,通过使用组合生成,我们可以生成包含两个对象的图像。即使对于更复杂的句子,我们也可以生成有意义且高质量的图像(见图 9 中的第二行)。

为验证我们的方法对随机种子的鲁棒性,我们在图 10 中为 “一只色彩斑斓的机器人在月光下走在冰冻的湖面上” 生成了更多的图像;我们获得了与句子相关的多样化的图像集。

6. 结论

我们提出了 FuseDream,利用 CLIP 引导的 GAN 实现高质量、最先进的文本到图像生成。与传统的基于训练的方法相比,我们的方法无需训练,零样本,易于定制,因此易于访问计算资源有限或有特殊需求的用户。我们的新颖技术,如 AugCLIP 分数、过参数化优化(over-parameterized optimization)和组合生成(composed generation),具有独立的兴趣,并在其他潜在空间优化问题中具有用处。

S. 总结

S.1 主要贡献

相比于传统的从头训练的文本到图像生成,CLIP+GAN 是无需训练的、zero-shot 的,并且可以轻松定制以适应不同的生成器。

本文提出了一种 FuseDream,通过三种关键技术改进了 CLIP+GAN 方法: 1)提出 AugCLIP 分数:通过在图像上引入随机增强,来避免 CLIP 分数的对抗攻击现象。2)利用新颖的初始化和过参数化(over-parameterization)策略,从而可在 GAN 空间中的非凸区域进行优化。3)利用双层优化,组合多个图像以扩展 GAN 空间。

S.2 方法

AugCLIP。CLIP 分数存在对抗性攻击问题:一张图像与原始图像相同,但具有更高 CLIP 分数。为解决这个问题,提出了 AugCLIP 分数:

其中 I' 是来自候选数据增强分布 π(· | I) 的输入图像 I 的随机扰动。本文采用了 DiffAugment 中考虑的各种数据增强技术,包括随机着色、随机平移、随机调整大小和随机剪裁。 

初始化和过参数化。

  • 由于损失的高非凸性,s_AugCLIP 的优化仍然可能受到次优局部极大值的影响。本文引入了一种初始化和过参数化策略来改善优化。 
  • 与从单一初始化开始的传统方法不同,本文首先采样大量( M 个)初始化副本,然后选择具有最高 AugCLIP 分数的前 k 个初始化,并将它们用作后续优化的初始基向量。
  • 因为它有过参数化,以及更自然的坐标和更好的初始化,因此在使用基于梯度的优化方法时往往会产生更好的结果。

组合生成和双层优化

  • 通过将 GAN 生成的两幅图像组合在一起,以生成超出分布范围的图像。
  • 该方法共同优化前景图像和背景图像,然后用这两幅图像生成融合图像。
  • 为避免合成图像可能在边界上具有不自然和人工的不连续性,引入了一个额外的感知损失,强制前景和背景之间保持感知一致性。
  • 最终目标是最大化 AugCLIP 分数,并最小化感知损失。一个朴素的方法是优化它们的线性组合。然而,这将需要在生成每个图像时仔细而逐个案例地调整组合系数。本文提出了一种无调优方法,通过一个简单的双层(或词典)优化问题来组合这两个损失。

相关文章:

(2021|CoRR,AugCLIP,优化)FuseDream:通过改进的 CLIP+GAN 空间优化实现免训练文本到图像生成

FuseDream: Training-Free Text-to-Image Generation with Improved CLIPGAN Space Optimization 公众:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 1. 简介 2. CLIPGAN 文本到图…...

python pip安装依赖的常用软件源

目录 引言 一、什么是镜像源?​​​​​​​ 二、清华源 三、阿里源 四、中科大源 五、豆瓣源 六、更多资源 引言 在软件开发和使用过程中,我们经常需要下载和更新各种软件包和库文件。然而,由于网络环境的限制或者服务器的负载&#…...

避免大M取值过大引起的数值问题

在数学建模当中,常常会见到大M法,它之所以叫大M法,是因为它涉及到一个(绝对值)较大的系数M,这个大M的值应大于约束中的连续变量或者约束表达式可能取到的任何合理值,M值取过大往往会造成优化问题…...

史密斯圆图的使用

史密斯圆图的使用 简介识别史密斯圆图等反射系数圆归一化阻抗圆导纳圆图史密斯圆图的使用单支匹配双支匹配简介 史密斯图Smith Chart是电气工程,无线电,射频工程,微波工程和通信等领域常用的一种图示工具,用于分析和设计传输线和阻抗匹配网络,它由美国工程师Phillip H.Sm…...

可重复读解决了哪些问题? 对 SQL 慢查询会考虑哪些优化 ?

文章目录 可重复读解决了哪些问题?对 SQL 慢查询会考虑哪些优化 ? 可重复读解决了哪些问题? (1)可重复读的核心就是一致性读(consistent read);保证多次读取同一个数据时,其值都和事务开始时候的内容是一致…...

从0开始python学习-35.allure报告企业定制

目录 1. 搭建allure环境 2. 生成报告 3. logo定制 4. 企业级报告内容或层级定制 5. allure局域网查看 1. 搭建allure环境 1.1 JDK,使用PyCharm 找到pycharm安装目录找到java.exe记下jbr目录的完整路径,eg: C:\Program Files\JetBrains\PyCharm Com…...

蓝桥杯2020年10月青少组Python程序设计省赛真题

1、设计一个猜字母的程序,程序随机给出26个小写字母中的一个,答题者输入猜测的字母,若输入的不是26个小写字母之一,让用户重新输入,若字母在答案之前或之后,程序给出相应正确提示,如答错5次,则答题失败并退出游戏,若回答正确,程序输出回答次数并退出游戏。 2、试编一个“口…...

【数据结构】布隆过滤器原理详解及其代码实现

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推荐--…...

Qt中实现短信验证码功能

在Qt中实现短信验证码功能,可以使用Qt的信号槽机制和计时器来实现。 首先,在mainwindow.h头文件中添加下列代码: #include <QMainWindow> #include <QTimer>namespace Ui {class MainWindow; }class MainWindow : public...

Redis-运维

转自 极客时间 Redis 亚风 原文视频&#xff1a;https://u.geekbang.org/lesson/535?article681062 Redis 同步 Redis主从数据同步,主从第⼀次同步是全量同步 replicaof 主机 端口 #当前这个机器做Master的备份master如何判断slave是不是第⼀次来同步数据&#xff1a; Repl…...

Qt制作定时关机小程序

文章目录 完成效果图ui界面ui样图 main函数窗口文件头文件cpp文件 引言 一般定时关机采用命令行模式&#xff0c;还需要我们计算在多久后关机&#xff0c;我们可以做一个小程序来定时关机 完成效果图 ui界面 <?xml version"1.0" encoding"UTF-8"?>…...

LeetCode day30

LeetCode day30 害&#xff0c;昨天和今天在搞数据结构的报告&#xff0c;后面应该也会把哈夫曼的大作业写上来。 今天认识认识贪心算法。(&#xff61;&#xff65;∀&#xff65;)&#xff89; 2697. 字典序最小回文串 给你一个由 小写英文字母 组成的字符串 s &#xff0c;…...

数据分析基础之《numpy(5)—合并与分割》

了解即可&#xff0c;用panads 一、作用 实现数据的切分和合并&#xff0c;将数据进行切分合并处理 二、合并 1、numpy.hstack 水平拼接 # hstack 水平拼接 a np.array((1,2,3)) b np.array((2,3,4)) np.hstack((a, b))a np.array([[1], [2], [3]]) b np.array([[2], […...

centos 安装 Miniconda

在 CentOS 上安装 Miniconda 的步骤通常包括下载 Miniconda 安装脚本、运行脚本以及配置环境。以下是详细步骤&#xff1a; 1. 下载 Miniconda 安装脚本 首先&#xff0c;您需要从 Miniconda 的官方网站下载适用于 Linux 的安装脚本。您可以使用 wget 命令在 CentOS 终端中直…...

第二百二十六回

文章目录 1. 概念介绍2. 具体细节2.1 发现服务2.2 发现特征值2.3 发送数据2.4 接收数据 3. 代码与效果3.13.2 运行效果 4. 经验总结 我们在上一章回中介绍了"连接蓝牙设备的细节"相关的内容&#xff0c;本章回中将介绍通过蓝牙发送数据的细节.闲话休提&#xff0c;让…...

ubuntu常用指令

Ubuntu是一个基于Linux的操作系统&#xff0c;它使用了大量的命令行指令。这些指令对于管理系统、处理文件、监控资源和执行各种任务都非常有用。以下是一些常用的Ubuntu命令&#xff1a; 系统管理 sudo&#xff1a;提供管理员权限执行命令&#xff08;例如 sudo apt update&a…...

Quartz.NET 事件监听器

1、调度器监听器 调度器本身收到的一些事件通知&#xff0c;接口ISchedulerListener&#xff0c;如作业的添加、删除、停止、挂起等事件通知&#xff0c;调度器的启动、关闭、出错等事件通知&#xff0c;触发器的暂停、挂起等事件通知&#xff0c;接口部分定义如下&#xff1a…...

2024-AI人工智能学习-安装了pip install pydot但是还是报错

2024-AI人工智能学习-安装了pip install pydot但是还是报错 出现这样子的错误&#xff1a; /usr/local/bin/python3.11 /Users/wangyang/PycharmProjects/studyPython/tf_model.py 2023-12-24 22:59:02.238366: I tensorflow/core/platform/cpu_feature_guard.cc:182] This …...

在使用mapstruct,想忽略掉List<DTO>字段里面的,`data` 字段的映射, 如何写ignore: 使用@IterableMapping

在使用mapstruct,想忽略掉List字段里面的,data 字段的映射, 如何写ignore 代码如下: public interface AssigmentFileMapper {AssigmentFileDTO assigmentFileToAssigmentFileDTO(AssigmentFile assigmentFile);AssigmentFile assigmentFileDTOToAssigmentFile(Assigment…...

ansible-playbook的Temlates模块 tags模块 Roles模块

Temlates模块 jinja模板架构&#xff0c;通过模板可以实现向模板文件传参(python转义)把占位符参数传到配置文件中去,生产一个目标文本文件&#xff0c;传递变量到需要的配置文件当中 &#xff08;web开发&#xff09; nginx.conf.j2 早文件当中配置的是占位符&#xff08;声明…...

Canal使用详解

Canal介绍 Canal是阿里巴巴开发的MySQL binlog增量订阅&消费组件&#xff0c;Canal是基于MySQL二进制日志的高性能数据同步系统。在阿里巴巴集团中被广泛使用&#xff0c;以提供可靠的低延迟增量数据管道。Canal Server能够解析MySQL Binlog并订阅数据更改&#xff0c;而C…...

【经典LeetCode算法题目专栏分类】【第8期】滑动窗口:最小覆盖子串、字符串排列、找所有字母异位词、 最长无重复子串

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐--…...

C#和.Net常见问题记录

什么是.NET框架&#xff0c;.NET框架与C#(C Sharp)是什么关系&#xff1f; .NET框架是由Microsoft设计和维护的软件开发框架&#xff0c;.NET框架提供了C#(编程语言)开发的所有基础设施和支持。通过使用C#和.NET框架&#xff0c;开发者可以轻松地开发高质量、高效率的应…...

FAQ:Container Classes篇

1、Why should I use container classes rather than simple arrays?&#xff08;为什么应该使用容器类而不是简单的数组&#xff1f;&#xff09; In terms of time and space, a contiguous array of any kind is just about the optimal construct for accessing a sequen…...

每日一题(LeetCode)----栈和队列--滑动窗口最大值

每日一题(LeetCode)----栈和队列–滑动窗口最大值 1.题目&#xff08;239. 滑动窗口最大值&#xff09; 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 …...

13.bash shell中的if-then语句

文章目录 shell中的流控制if语句if语句if-then语句if-then-else 语句 test命令数值比较字符串比较文件比较case语句 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; shell中的流控制if语句 简单的脚本可以只包含顺序执行的命令&#xff0…...

深入了解 Python 的 import 语句

在 Python 中&#xff0c;import 语句是一个关键的功能&#xff0c;用于在程序中引入模块和包。本文将深入讨论 import 语句的各种用法、注意事项以及一些高级技巧&#xff0c;以帮助你更好地理解和使用这一功能。 概念介绍 package 通常对应一个文件夹&#xff0c;下面可以有…...

接口测试 — 11.logging日志模块处理流程

1、概括理解 了解了四大组件的基本定义之后&#xff0c;我们通过图示的方式来理解下信息的传递过程&#xff1a; 也就是获取的日志信息&#xff0c;进入到Logger日志器中&#xff0c;传递给处理器确定要输出到哪里&#xff0c;然后进行过滤器筛选&#xff0c;通过后再按照定义…...

Hago 的 Spark on ACK 实践

作者&#xff1a;华相 Hago 于 2018 年 4 月上线&#xff0c;是欢聚集团旗下的一款多人互动社交明星产品。Hago 融合优质的匹配能力和多样化的垂类场景&#xff0c;提供互动游戏、多人语音、视频直播、 3D 虚拟形象互动等多种社交玩法&#xff0c;致力于为用户打造高效、多样、…...

mac传输文件到windows

前言 由于mac系统与windows系统文件格式不同&#xff0c;通过U盘进行文件拷贝时&#xff0c;导致无法拷贝。官方解决方案如下&#xff0c;但是描述的比较模糊。看我的操作步骤即可。 https://support.apple.com/zh-cn/guide/mac-help/mchlp1657/12.0/mac/12.6 前提条件 mac与…...

trtc-electron-sdk的demo中添加更新功能以及出现的报错问题

1、官网demo下载地址 点击下载 按照官网demo说明文档进行安装和运行 2、添加electron-updater npm install electron-updater根据项目需求安装对应的版本&#xff0c;建议使用5.2.1 3、创建一个handleUpdater.js文件&#xff0c;和package.json同级 // const { ipcMain } …...

什么是流量攻击? 流量攻击怎么处理?

由于DDoS攻击往往采取合法的数据请求技术&#xff0c;再加上傀儡机器&#xff0c;造成DDoS攻击成为最难防御的网络攻击之一。据美国最新的安全损失调查报告&#xff0c;DDoS攻击所造成的经济损失已经跃居第一。 传统的网络设备和周边安全技术&#xff0c;例如防火墙和IDSs(Intr…...

【大数据】NiFi 的基本使用

NiFi 的基本使用 1.NiFi 的安装与使用1.1 NiFi 的安装1.2 各目录及主要文件 2.NiFi 的页面使用2.1 主页面介绍2.2 面板介绍 3.NiFi 的工作方式3.1 基本方式3.2 选择处理器3.3 组件状态3.4 组件的配置3.4.1 SETTINGS&#xff08;通用配置&#xff09;3.4.2 SCHEDULING&#xff0…...

5 分钟内搭建一个免费问答机器人:Milvus + LangChain

搭建一个好用、便宜又准确的问答机器人需要多长时间&#xff1f; 答案是 5 分钟。只需借助开源的 RAG 技术栈、LangChain 以及好用的向量数据库 Milvus。必须要强调的是&#xff0c;该问答机器人的成本很低&#xff0c;因为我们在召回、评估和开发迭代的过程中不需要调用大语言…...

WPF Border

在 WPF 中&#xff0c;Border 是一种常用的控件&#xff0c;用于给其他控件提供边框和背景效果。 要使用 Border 控件&#xff0c;您可以在 XAML 代码中添加以下代码&#xff1a; <Border BorderBrush"Black" BorderThickness"2" Background"Lig…...

基于博弈树的开源五子棋AI教程[4 静态棋盘评估]

引子 静态棋盘的评估是棋力的一个很重要的体现&#xff0c;一个优秀的基于博弈树搜索的AI往往有上千行工作量&#xff0c;本文没有做深入讨论&#xff0c;仅仅写了个引子用来抛砖引玉。 评估一般从两个角度入手&#xff0c;一个是子力&#xff0c;另一个是局势。 1 评估维度 …...

STL--排序与检索

题目 现有N个大理石&#xff0c;每个大理石上写了一个非负整数。首先把各数从小到大排序&#xff0c;然后回答Q个问题。每个问题是否有一个大理石写着某个整数x,如果是&#xff0c;还要回答哪个大理石写着x。排序后的大理石从左到右编写为1-N。&#xff08;样例中&#xff0c;…...

大数据处理与分析-Spark

导论 (基于Hadoop的MapReduce的优缺点&#xff09; MapReduce是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架 MapReduce是一种用于处理大规模数据集的编程模型和计算框架。它将数据处理过程分为两个主要阶段&#xff1a;Map阶…...

虚拟机的下载、安装(模拟出服务器)

下载 vmware workstation&#xff08;收费的虚拟机&#xff09; 下载vbox 网址&#xff1a;Oracle VM VirtualBox&#xff08;免费的虚拟机&#xff09; 以下选择一个下载即可&#xff0c;建议下载vbox&#xff0c;因为是免费的。安装的时候默认下一步即可&#xff08;路径最好…...

K8S Pod Terminating/Unknown故障排查

一、pod异常出现现象 优雅终止周期(Graceful termination period): 当pod被删除时&#xff0c;会进入"Terminating"状态&#xff0c;等待容器优雅关闭。如果容器关闭所需时间超过默认期限(默认30秒)&#xff0c;则pod将保持在"Terminating"状态。 Finalize…...

labelme标注的json文件数据转成coco数据集格式(可处理目标框和实例分割)

这里主要是搬运一下能找到的 labelme标注的json文件数据转成coco数据集格式&#xff08;可处理目标框和实例分割&#xff09;的代码&#xff0c;以供需要时参考和提供相关帮助。 1、官方labelme实现 如下是labelme官方网址&#xff0c;提供了源代码&#xff0c;以及相关使用方…...

MySQL报错:1366 - Incorrect integer value: ‘xx‘ for column ‘xx‘ at row 1的解决方法

我在插入表数据时遇到了1366报错&#xff0c;报错内容&#xff1a;1366 - Incorrect integer value: Cindy for column name at row 1&#xff0c;下面我演示解决方法。 根据上图&#xff0c;原因是Cindy’对应的name字段数据类型不正确。我们在左侧找到该字段所在的grade_6表&…...

MySQL中MVCC的流程

参考文章一 参考文章二 当谈到数据库的并发控制时&#xff0c;多版本并发控制&#xff08;MVCC&#xff09;是一个重要的概念。MVCC 是一种用于实现数据库事务隔离性的技术&#xff0c;常见于像 PostgreSQL 和 Oracle 这样的数据库系统中。 MVCC 的核心思想是为每个数据行维护…...

朴素贝叶斯法_naive_Bayes

朴素贝叶斯法&#xff08;naive Bayes&#xff09;是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集&#xff0c;首先基于特征条件独立假设学习输入输出的联合概率分布&#xff1b;然后基于此模型&#xff0c;对给定的输入 x x x&#xff0c;利用贝叶斯定理…...

Windows下安装MongoDB实践总结

本文记录Windows环境下的MongoDB安装与使用总结。 【1】官网下载 官网下载地址&#xff1a;Download MongoDB Community Server | MongoDB 这里可以选择下载zip或者msi&#xff0c;zip是解压后自己配置&#xff0c;msi是傻瓜式一键安装。这里我们分别对比进行实践。 【2】ZI…...

华为云Stack 8.X 流量模型分析(二)

二、流量模型分析相关知识 1.vNIC ​ 虚拟网络接口卡(vNIC)是基于主机物理 NIC 的虚拟网络接口。每个主机可以有多个 NIC&#xff0c;每个 NIC 可以是多个 vNIC 的基础。 ​ 将 vNIC 附加到虚拟机时&#xff0c;Red Hat Virtualization Manager 会在虚拟机之间创建多个关联的…...

rk3588 之启动

目录 uboot版本配置修改编译 linux版本配置修改编译 启动sd卡启动制作spi 烧录 参考 uboot 版本 v2024.01-rc2 https://github.com/u-boot/u-boot https://github.com/rockchip-linux/rkbin 配置修改 使用这两个配置即可&#xff1a; orangepi-5-plus-rk3588_defconfig r…...

ARM GIC (五)gicv3架构-LPI

在gicv3中,引入了一种新的中断类型。message based interrupts,消息中断。 一、消息中断 外设,不在通过专用中断线,向gic发送中断,而是写gic的寄存器,来发送中断。 这样的一个好处是,可以减少中断线的个数。 为了支持消息中断,gicv3,增加了LPI,来支持消息中断。并且…...

sql-labs服务器结构

双层服务器结构 一个是tomcat的jsp服务器&#xff0c;一个是apache的php服务器&#xff0c;提供服务的是php服务器&#xff0c;只是tomcat向php服务器请求数据&#xff0c;php服务器返回数据给tomcat。 此处的29-32关都是这个结构&#xff0c;不是用docker拉取的镜像要搭建一下…...

【小沐学写作】Docsify制作在线电子书、技术文档(Docsify + Markdown + node)

文章目录 1、简介2、安装2.1 node2.2 docsify-cli 3、配置3.1 初始化3.2 预览效果3.3 加载对话框3.4 更多页面3.5 侧 栏3.6 自定义导航栏 结语 1、简介 https://docsify.js.org/#/?iddocsify 一个神奇的文档网站生成器。 简单轻巧没有静态构建的 html 文件多个主题 Docsify…...