【Image captioning】论文阅读八—ClipCap: CLIP Prefix for Image Captioning_2021

news2024/12/26 11:40:10

image-20240127185530171

中文标题:ClipCap: CLIP前缀用于图像描述(ClipCap: CLIP Prefix for Image Captioning)

文章目录

    • 1. 介绍
    • 2. 相关工作
    • 3. 方法
      • 3.1 综述
      • 3.2 语言模型微调
      • 3.3 映射网络架构
      • 3.4 推理
    • 4. 结果
    • 5. 结论

摘要:图像描述是视觉语言理解中的一项基础任务,模型会对给定的输入图像预测出一段文本信息性描述。本文提出了一种简单的方法来解决这个任务。我们使用CLIP编码作为描述的前缀,通过使用一个简单的映射网络,然后对语言模型进行微调以生成图像描述。最近提出的CLIP模型包含了经过文本上下文训练的丰富语义特征,使其成为最适合进行视觉语言感知的模型。我们的主要思想是,结合预训练的语言模型(GPT2),我们可以对视觉和文本数据进行全面的理解。因此,我们的方法只需要较快的训练就能产生一个有能力的图像描述模型。在没有额外注释或预训练的情况下,它能够高效生成大规模且多样化数据集的有意义的描述。令人惊讶的是,我们的方法即使只有映射网络被训练,CLIP和语言模型仍然被冻结,也能够良好地工作,这带来了更轻的架构和更少的可训练参数。通过定量评估,我们展示了我们的模型在具有挑战性的Conceptual Captions和nocaps数据集上取得了与最先进方法相当的结果,同时具备了更简单、更快速和更轻量的特点。我们的代码可在https://github.com/rmokady/CLIP_prefix_caption上找到。

1. 介绍

在图像描述任务中,目标是为给定输入图像提供一个有意义且有效的自然语言描述。这个任务面临两个主要挑战。第一个是语义理解。这涵盖了从简单任务(如检测主要对象)到更复杂任务(如理解图像中所描绘部分之间的关系)的各个方面。例如,在图1左上角的图像中,模型理解到对象是一个礼物。第二个挑战是描述同一图像的可能方式很多。在这方面,训练数据集通常会决定给定图像的首选描述方式。

image-20240127190022846

图1. 我们的ClipCap模型生成了描述相应图像的标题。这里的结果是使用Conceptual Captions数据集进行训练的模型的结果。

已经提出了许多用于图像字幕的方法[4,9,13,19,34,35,42,44,47]。通常,这些作品利用视觉提示编码器和文本解码器来生成最终字幕。从本质上讲,这导致需要弥合视觉和文本表示之间具有挑战性的差距。因此,此类模型需要大量资源。它们需要大量的训练时间、大量的可训练参数、大量的数据集,在某些情况下甚至需要额外的注释(例如检测结果),这限制了它们的实际适用性。

过长的训练时间对于需要多次训练过程的应用来说更为限制性。例如,针对多个不同数据集训练多个图像描述模型,可以为同一张图片的不同用户提供(或应用)不同的描述。另外,面对新获取的数据样本,我们期望能定期用这些新数据更新模型。因此,一个轻量级的图像描述模型更受欢迎。具体来说,如果一个模型拥有更快的训练速度和较少的可训练参数,那将特别有利,特别是在不需要额外监督的情况下。

如图2所示,我们的方法通过在CLIP嵌入上应用映射网络来为每个字幕产生前缀。该前缀是一个固定大小的嵌入序列,连接到字幕嵌入。这些被馈送到语言模型,该语言模型与映射网络训练一起沿着进行微调。在推理时,语言模型一个字接一个字地生成字幕,从CLIP前缀开始。该方案缩小了视觉和文本世界之间的上述差距,允许使用简单的映射网络。为了实现更轻的模型,我们引入了我们方法的另一种变体,其中我们只训练映射网络,而CLIP和语言模型都保持冻结。通过利用富有表现力的Transformer架构,我们成功地产生了有意义的字幕,同时施加了基本上更少的可训练参数。我们的方法受到Li等人[20]的启发,它展示了通过连接学习的前缀来有效地适应新任务的语言模型的能力。我们使用GPT-2 [30]作为我们的语言模型,它已被证明可以生成丰富多样的文本。

image-20240127191445544图2. 我们基于Transformer的架构概述,使得在CLIP和语言模型GPT-2都被冻结的情况下生成有意义的字幕。为了提取固定长度的前缀,我们训练了一个轻量级的基于Transformer的映射网络,从CLIP嵌入空间到GPT-2中的一个学习到的常量。在推理过程中,我们使用GPT-2根据前缀嵌入生成字幕。我们还提出了一种基于多层感知机(MLP)的架构,请参阅第3节了解更多细节。

由于我们的方法利用了 CLIP 丰富的视觉文本表示,因此我们的模型需要的训练时间显着缩短。例如,我们在单个 Nvidia GTX1080 GPU 上对海量概念字幕数据集的 300 万个样本训练模型 80 小时。尽管如此,我们的模型可以很好地推广到复杂的场景,如图 1 所示(例如,日落时分在海滩上练习瑜伽)。我们广泛评估我们的方法,展示成功的现实且有意义的字幕。尽管我们的模型需要更少的训练时间,但它仍然在具有挑战性的 Conceptual Captions [33] 和 nocaps [1] 数据集上取得了与最先进的方法相当的结果,并且对于更受限制的 COCO [7, 22 ] 基准。此外,我们还对所需的前缀长度和微调语言模型的效果进行了彻底的分析,包括对我们生成的前缀的解释。总的来说,我们的主要贡献如下:

  • 我们采用了一种轻量级的图像描述方法,该方法同时利用预训练且冻结的模型进行视觉和文本处理。
  • 即使在对语言模型进行微调时,我们的方法也更为简洁、训练速度更快,并且在极具挑战性的数据集上展现出与最先进水平相当的结果。

2. 相关工作

近期,Radford等人[29]提出了一种名为CLIP的新方法,用于同时表示图像和文本描述。CLIP包含两个编码器,一个针对视觉线索,一个针对文本。它通过无监督对比损失在超过4亿个图像-文本对上进行了训练,从而得到了丰富的语义潜空间,共享了视觉和文本数据。许多工作已经成功地使用了CLIP来处理需要理解辅助文本的计算机视觉任务,如基于自然语言条件生成或编辑图像的任务[5,14,28]。在本文中,我们利用强大的CLIP模型来进行图像字幕生成。需要注意的是,我们的方法不使用CLIP的文本编码器,因为输入没有文本,输出的文本是由语言模型生成的。通常,图像字幕生成模型首先将输入像素编码为特征向量,然后用于生成最终的单词序列。早期的方法利用从预训练分类网络中提取的特征[6,9,13,42],而后来的方法[4,19,47]则利用了对象检测网络的更具表达力的特征[31]。尽管预训练的对象检测网络适用于流行的COCO基准测试集[7,22],但对于其他数据集来说并非如此。这意味着大多数方法需要额外的对象检测注释以在新的和多样化的数据集上运行。为了进一步利用视觉线索,通常使用注意机制[4,6,42]来关注特定的视觉特征。此外,最近的模型应用了自注意力机制[16,43]或使用了一个具有表达力的视觉Transformer作为编码器[12,23]。我们的工作使用了CLIP的表达力嵌入来进行视觉表示。由于CLIP是在大量图像上进行训练的,因此我们可以在任何一组自然图像上操作,而不需要额外的注释。

为了生成字幕本身,我们使用了文本解码器。早期的方法使用了LSTM的变体[8,38,39],而最近的方法[16,26]采用了改进的Transformer结构[36]。在Transformer上构建的最显著的工作之一是BERT[11],它展示了这种新引入的范式的优势。使用这种范式,语言模型首先在大规模数据集上进行预训练,以解决辅助任务。然后,在具体的任务上对模型进行微调,使用额外的监督信息。由于我们的视觉信息位于前缀中,我们使用了一个强大的自回归语言模型GPT-2[30]。考虑到训练损失项,早期的工作采用有效交叉熵,而当代方法也应用自我批评序列训练[15,32,45]。也就是说,一个额外的训练阶段来优化 CIDEr 指标。我们故意避免这种优化,以保留快速训练过程。

最近与我们的工作最接近的是那些利用视觉和语言预训练来创建视觉和文本共享潜在空间的研究[19,25,35,46,47]。周等人[47]使用从对象检测器提取的视觉标记作为标题标记的前缀,整个模型通过BERT[11]架构进行预训练以执行预测。李等人[19]和张等人[46]也采用了BERT,但需要额外的对象标签监督,因此这些方法仅限于拥有此类对象检测器或注释的数据集。王等人[40]的方法缓解了对补充注释的需求,但仍需进行大量的图像-文本对预训练过程,导致训练时间较长。这种详尽的预训练步骤是必需的,以弥补语言和视觉联合表示的缺失,而我们通过采用CLIP自然而得到这种联合表示。

3. 方法

我们从问题陈述开始。给定一个由图像和标题成对组成的数据集 { x i , c i } i = 1 N \{x^i,c^i\}_{i=1}^N {xi,ci}i=1N,我们的目标是学习为未见过的输入图像生成有意义的标题。我们可以将标题表示为一系列标记 c i = c 1 i , … , c ℓ i c^{i}=c_{1}^{i},\ldots,c_{\ell}^{i} ci=c1i,,ci,其中我们将标记设置为最大长度时进行填充。我们的训练目标如下:
max ⁡ θ ∑ i = 1 N log ⁡ p θ ( c 1 i , … , c ℓ i ∣ x i ) , ( 1 ) \max_{\theta}\sum_{i=1}^{N}\log p_{\theta}(c_{1}^{i},\ldots,c_{\ell}^{i}|x^{i}),\quad\quad(1) θmaxi=1Nlogpθ(c1i,,cixi),(1)
在该目标函数中,模型参数 θ θ θ通过训练得到优化,利用强大的语义嵌入工具CLIP所提取的核心视觉数据作为约束条件。类似最近的研究[47]做法,我们把这一约束视为待生成标题的起始部分——即标题的前缀。鉴于前缀已包含了生成后续文本所需的全部语义信息,我们采用自回归语言模型,在不考虑后续标记的情况下逐个预测下一个标记,从而形成了我们的学习目标:
max ⁡ θ ∑ i = 1 N ∑ j = 1 ℓ log ⁡ p θ ( c j i ∣ x i , c 1 i , … , c j − 1 i ) ( 2 ) \max_\theta\sum_{i=1}^N\sum_{j=1}^\ell\log p_\theta(c_j^i|x^i,c_1^i,\ldots,c_{j-1}^i)\quad\quad(2) θmaxi=1Nj=1logpθ(cjixi,c1i,,cj1i)(2)

3.1 综述

我们方法的一个示例在图2中给出。我们使用GPT-2(大型)作为我们的语言模型,并利用其分词器将标题投射为一系列嵌入。为了从图像 x i x_i xi 中提取视觉信息,我们采用预训练的CLIP [29]模型的视觉编码器。接下来,我们采用一个轻量级映射网络 F F F,将CLIP嵌入映射到 k k k个嵌入向量:

p 1 i , … , p k i = F ( CLIP ( x i ) ) . ( 3 ) p_1^i,\ldots,p_k^i=F(\text{CLIP}(x^i)).\quad\quad\quad(3) p1i,,pki=F(CLIP(xi)).(3)
其中每个向量 p j i p_{j}^i pji的维度与一个词嵌入的维度相同。然后,我们将获得的视觉嵌入与标题 c i c^i ci的嵌入进行连接:
Z i = p 1 i , … , p k i , c 1 i , … , c ℓ i . ( 4 ) Z^i=p_1^i,\ldots,p_k^i,c_1^i,\ldots,c_\ell^i.\quad\quad(4) Zi=p1i,,pki,c1i,,ci.(4)
在训练阶段,我们将语言模型输入前缀与标题的拼接结果 { Z i } i = 1 N \{Z^i\}_{i=1}^N {Zi}i=1N。我们的训练目标是以自回归方式预测基于前缀的标题标记。为此,我们使用简单而有效的交叉熵损失来训练映射组件 F F F
L X = − ∑ i = 1 N ∑ j = 1 ℓ log ⁡ p θ ( c j i ∣ p 1 i , … , p k i , c 1 i , … , c j − 1 i ) . (5) \mathcal{L}_X=-\sum_{i=1}^N\sum_{j=1}^\ell\log p_\theta(c_j^i|p_1^i,\ldots,p_k^i,c_1^i,\ldots,c_{j-1}^i).\text{(5)} LX=i=1Nj=1logpθ(cjip1i,,pki,c1i,,cj1i).(5)
我们现在讨论我们方法的两个变体及其影响。针对语言模型的额外微调。

3.2 语言模型微调

我们在训练过程中的主要挑战是将CLIP和语言模型的表示进行转换。尽管这两个模型都能够产生丰富多样的文本表示,但它们的潜空间是独立的,因为它们没有进行联合训练。此外,每个图像字幕数据集都包含不同的风格,这对于预训练的语言模型可能不是自然的。因此,我们建议在映射网络的训练过程中对语言模型进行微调。这为网络提供了额外的灵活性并产生更具表现力的结果。

然而,对语言模型进行微调会自然地增加可训练参数的数量。因此,我们提出了我们方法的另一种变体,在训练过程中保持语言模型不变。我们对冻结的语言模型进行调整的尝试受到了Li和Liang的工作[20]的启发。在他们的工作中,他们通过只学习前缀来使这种预训练模型适应新的任务。这个前缀会在标准训练过程中自动优化,以引导语言模型朝着新的目标前进。按照这个方法,我们建议避免对语言模型进行微调,以实现更轻量级的模型,只训练映射网络。正如第4节所介绍的,我们的模型不仅能够产生逼真而有意义的字幕,而且在某些实验中,甚至可以在不微调语言模型的情况下实现更好的结果。请注意,微调CLIP并不会提高结果的质量,但会增加训练时间和复杂性。因此,我们推测CLIP空间已经包含了所需的信息,并且将其调整为特定风格并不会增加灵活性。

3.3 映射网络架构

我们的关键组件是映射网络,它将CLIP嵌入转换到GPT-2的空间中。当同时微调语言模型时,映射任务变得不那么复杂,因为我们能够轻松地控制这两个网络。因此,在这种情况下,我们可以采用一个简单的多层感知机(MLP)。由于CLIP预训练的目标是视觉-语言统一,即使只使用单个隐藏层,我们也已经实现了生成真实且有意义的标题。

然而,当语言模型被冻结时,我们建议采用更具表现力的Transformer架构[36]。Transformer能够在全球范围内对输入令牌之间实现注意力机制,并且在处理长序列时减少了参数数量。正如第4部分所示,这使得我们可以通过增加前缀大小来改善结果。我们为Transformer网络提供两个输入:CLIP的视觉编码和一个学习得到的常量输入。这个常量有两个作用,首先,通过多头注意力从CLIP嵌入中提取有意义的信息;其次,它学会调整固定的语言模型以适应新的数据。这一点在第4部分得到了验证,在该部分我们提供了生成前缀的可解释性。可以看出,当语言模型固定时,Transformer映射网络学习了一组精细的、不具备文本意义的嵌入。这些嵌入经过优化以驯服语言模型。

3.4 推理

在推理阶段,我们使用CLIP编码器和映射网络 F F F从输入图像 x x x中提取视觉前缀。我们开始基于视觉前缀生成标题,并在语言模型输出的指导下逐个预测下一个标记。对于每个标记,语言模型会输出词汇表中所有标记的概率,这些概率将通过贪心方法或束搜索来确定下一个要生成的标记。

4. 结果

数据集。我们使用了COCO-captions [7,22]、nocaps [1]和Conceptual Captions [33]数据集。我们按照Karpathy等人的方法[17]将前者进行了拆分,训练集包含120,000张图像和每张图像5个标题。由于COCO只包含80类,nocaps数据集被设计用于衡量对未见过的类别和概念的泛化能力。它只包含验证集和测试集,训练过程使用的是COCO数据集本身。nocaps数据集分为三个部分:域内包含只包含COCO类别的图像,近域包含COCO和新颖类别的图像,域外只包含新颖类别的图像。正如Li等人建议的[19],我们只使用验证集评估模型。尽管有些方法使用了新颖类别的对象标签,但我们只考虑无额外监督的设置,因为我们发现这在实践中更适用。因此,我们没有采用约束束搜索的方法[2]。Conceptual Captions数据集包含了300万对图像和标题,从网络上收集并进行后处理。由于图像和标题的样式更加多样化,并且不限于特定类别,因此这个数据集被认为比COCO更具挑战性。为了关注概念,数据集中的特定实体被替换为一般概念。例如,在图1中,人名被替换为"政治家"。我们使用验证集进行评估,其中包含12.5K张图像,因为测试集不对公众开放。因此,我们没有在验证集上进行验证。

基准方法。我们所提出的方法与当前最先进的几项工作进行了比较,其中包括Li等人[19](即Oscar模型)、视觉-语言预训练模型(VLP)[47]以及Anderson等人[4]的卓越工作(标记为BUTD)。这些模型首先都采用目标检测网络[31]生成视觉特征。其中,BUTD模型运用LSTM来生成图像的描述,而VLP和Oscar则采用了类似BERT[11]训练方式的Transformer结构。VLP和Oscar两者都经过了在数百万对图像-文本数据上的大规模预训练过程。特别地,相比于我们的设置,Oscar[19]还使用了额外的监督信息,即为每张图像提供对象标签。

我们的默认配置使用Transformer映射网络,没有对语言模型进行微调,称为Ours; Transformer。此外,我们还评估了使用MLP映射网络并对语言模型进行微调的变体,称为Ours; MLP + GPT2 tuning。其他配置在表1(D)中进行了评估。定量评估。在具有挑战性的Conceptual Captions数据集上的定量结果见表1(A)。

image-20240127212520205

评估指标。与 Li 等人[19]类似,我们使用通用指标 BLEU [27]、METEOR [10]、CIDEr [37] 和 SPICE [3] 在 COCO 数据集上验证我们的结果,并使用 CIDEr 和 SPICE 在 nocaps 数据集上验证我们的结果。对于概念字幕,我们按照作者 [33] 的建议报告了 ROUGE-L [21]、CIDEr 和 SPICE。

此外,我们测量训练时间和可训练参数的数量,以验证我们方法的适用性。减少训练时间可以快速获得新数据的新模型,创建模型集合并降低能耗。与其他工作类似,我们报告以 GPU 小时为单位的训练时间以及所使用的 GPU 模型。可训练参数的数量是衡量模型可行性的常用指标。

定量评估。具有挑战性的Conceptual Captions数据集的定量结果如表1(A)所示。可以看出,我们超越了VLP的结果,同时需要更少的训练时间。我们注意到,我们的轻量级模型,即不微调GPT-2的模型,对于这个数据集实现了较差的结果。我们假设由于样式的大量变化,比我们的轻量级模型更具表现力的模型是必需的,这会导致显著较低的参数数量。我们只与VLP进行比较,因为其他基线还没有发布此数据集的结果或训练模型。

表1(B)展示了nocaps数据集的结果,我们在这里取得了与最先进方法Oscar相当的结果。可以看出,Oscar实现了稍微更好的SPICE分数,而我们实现了稍微更好的CIDEr分数。尽管如此,我们的方法使用了更少的训练时间和可训练参数,并且不需要额外的对象标签,因此在实践中更加有用。

表1(C)展示了COCO数据集的结果。Oscar达到了最好的结果,但是它使用了形式为对象标签的额外输入。我们的结果接近于VLP和BUTD,它们使用了更多的参数和训练时间。请注意,VLP和Oscar的训练时间不包括预训练步骤。例如,VLP的预训练需要在Conceptual Captions上进行1200个GPU小时的训练。

Conceptual Captions和nocaps都旨在建模比COCO更多样化的视觉概念。因此,我们得出结论,我们的方法更适用于通过快速训练过程对多样化数据进行泛化。这源于利用了CLIP和GPT-2已经丰富的语义表示能力。

image-20240127212941578

定性评估。我们在Conceptual Captions和COCO数据集的测试集中呈现了未经筛选的前几个示例的视觉结果,如图3和图4所示。可以看出,我们生成的说明对于两个数据集都是有意义的,成功地描绘了图像。我们在图1中还呈现了从网上收集的其他示例。可以看出,我们的Conceptual Captions模型对任意未见的图像具有良好的泛化能力,因为它是在大量多样的图像上进行训练的。我们还在图5中呈现了针对智能手机图像的结果,以进一步展示对新场景的泛化能力。此外,我们的模型在仅在COCO上进行训练时,成功识别出了不常见的物体。例如,如图3所示,我们的方法比Oscar更好地识别出了木质勺子或带蜡烛的蛋糕,因为CLIP是在多样的图像上进行的预训练。然而,我们的方法在某些情况下仍然失败,比如在图3中的火车旁边识别自行车。这是因为CLIP模型本身并没有察觉到自行车。我们得出结论,我们的模型在改善CLIP物体检测能力方面将受益,但将此视为未来工作的方向。对于Conceptual Captions,我们的方法主要产生准确的说明,如图4中绿色的3D人物。如预期的那样,我们的方法仍然受到数据偏差的影响。例如,对于图4中的卧室图像,它将其描述为“该物业的市场价值为1英镑”,这是因为在训练过程中曾见过此类物业广告的解说。

image-20240127213345378

image-20240127213410709

语言模型微调。正如第3节所述,对语言模型进行微调会得到一个更加富有表达力的模型,但同时也更容易出现过拟合问题,因为可训练参数的数量增加了。如表1所示,包含和不包含语言模型微调的两个变体是可比较的。在复杂的Conceptual Captions数据集上,我们通过微调获得了更好的结果。而在流行的COCO数据集上,避免微调可以获得更好的结果。关于nocaps数据集,结果大致相等,因此较轻量级的模型更可取。因此,我们猜测非常精细的数据集或者呈现出独特风格的数据集需要更高的表达能力,因此更有可能从微调中受益。

前缀可解释性。为了进一步理解我们的方法和结果,我们建议将生成的前缀解释为一个词序列。由于前缀和词嵌入共享相同的潜在空间,因此可以进行类似的处理。我们将 k k k个前缀嵌入的解释定义为在余弦相似度下最接近的词汇标记。图6显示了一些图片的示例,以及生成的标题和其前缀的解释。当同时训练映射网络和GPT-2时,解释是有意义的。在这种情况下,解释包含与图像内容相关的显著单词,例如第一个示例中的摩托车和展示柜。然而,当我们只训练映射网络时,解释变得基本上无法阅读,因为网络还负责操作固定的语言模型。实际上,对于相同模型的不同图像,前缀嵌入的相当一部分是共享的,因为它执行相同的调整操作到GPT-2上。

image-20240127213653148前缀长度。Li和Liang[20]表明,增加前缀长度(在一定值范围内)可以提高模型在底层任务中的性能。此外,饱和长度在不同任务之间可能有所不同。对于图像字幕任务,我们使用COCO数据集对前缀长度进行了消融实验,涵盖了我们的方法的两个配置:Ours; TransformerOurs; MLP + GPT2 tuning。结果如图7所示。对于每个前缀大小和配置,我们在训练集和测试集上训练网络5个时代,并报告BLEU@4和CIDEr分数。

image-20240127213751816

如图7a所示,当允许调优语言模型的同时增加前缀长度,会导致对训练集过拟合,原因是可训练参数的数量很大。然而,当语言模型被冻结时,我们在训练和测试评估中都会有改善,如图7b所示。当然,非常小的前缀长度会导致结果较差,因为模型表达能力不够。此外,我们指出,MLP架构在本质上更有限,因为它无法扩展到较长的前缀。例如,前缀长度为40意味着网络具有超过45亿个参数,这对于我们的单GPU设置来说是不可行的。Transformer架构允许在只增加少量参数的情况下增加前缀长度,但由于注意力机制的二次存储成本,仅限于80。

Mapping网络。通过表1(C),(D)中的消融研究,我们展示了Mapping网络架构的结果。可以看出,在语言模型微调下,MLP取得了更好的结果。然而,当语言模型被冻结时,Transformer表现更为优越。我们得出结论,当采用语言模型的微调时,Transformer结构的表达能力是不必要的。

实现细节。对于MLP Mapping网络,我们使用了 K = 10 K = 10 K=10的前缀长度,其中MLP包含了一个隐藏层。对于Transformer Mapping网络,我们将CLIP嵌入设置为 K = 10 K = 10 K=10个常数标记,并且使用了8个多头自注意力层,每个层有8个头。我们使用批大小为40进行10个epoch的训练。在优化方面,我们使用AdamW [18]优化器,并设定权重参数。

5. 结论

总体而言,我们基于CLIP的图像字幕生成方法简单易用,不需要额外的注释,并且训练速度更快。尽管我们提出了一个更简单的模型,但它在数据集更加丰富多样时展现了更多的优点。我们认为我们的方法是新一代图像字幕生成范式的一部分,注重利用现有模型,仅训练一个最小的映射网络。这种方法实质上学习了如何将预训练模型对语义的现有理解适应目标数据集的风格,而不是学习新的语义实体。我们相信在不久的将来,利用这些强大的预训练模型的方法将会受到更多关注。因此,了解如何利用这些组件具有很大的研究价值。未来的工作中,我们计划在其他具有挑战性的任务中(如视觉问答或图像到3D转换)结合预训练模型(如CLIP),通过使用映射网络来应用。

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

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

相关文章

C语言——操作符详解2

目录 0.过渡0.1 不创建临时变量,交换两数0.2 求整数转成二进制后1的总数 1.单目表达式2. 逗号表达式3. 下标访问[ ]、函数调用( )3.1 下标访问[ ]3.2 函数调用( ) 4. 结构体成员访问操作符4.1 结构体4.1.1 结构体的申明4.1.2 结构体变量的定义和初始化 4.2 结构体成…

SpringBoot 配置类解析

全局流程解析 配置类解析入口 postProcessBeanDefinitionRegistry逻辑 processConfigBeanDefinitions逻辑 执行逻辑解析 执行入口 ConfigurationClassPostProcessor.processConfigBeanDefinitions()方法中的do while循环体中 循环体逻辑 parse方法调用链 doProcessConfigurat…

【C++中STL】list链表

List链表 基本概念构造函数赋值和交换大小操作插入和删除数据存取反转和排序 基本概念 将数据进行链式存储 链表list是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的,链表是由一系列结点组成,结点的组…

Android studio环境搭建过程异常

异常:Connect timed out 创建新项目时,提示time out 解决方案:修改gradle下载地址,使用国内镜像地址 distributionUrlhttps\://services.gradle.org/distributions/gradle-8.2-bin.zip修改成distributionUrlhttps\://mirrors.c…

fatal error:require():Failed opening required

今天部署网站遇到了个错误 fatal error:require():Failed opening required 这个错误经常遇到 大多是网站 是开启了 open_basedir 但今天这个错误很神奇 先说解决方法 1. 检测一下是不是真的 不存在这个文件 即使100%确定 也建议你再仔细看一下 这个文件存不存在 今天我遇…

日常学习之:如何使用 dockerfile 将 vue 的单独前端项目通过 docker 的方式部署到 heroku上

文章目录 需求描述开始操作准备阶段:准备 server.js 文件并安装依赖,将 vue 项目包装成单独的服务器制作 server.js安装 server.js 需要的依赖 构建 Dockerfileheroku container 链接和部署其他细节 需求描述 你想用 vue 构建前端,用 django…

终端录屏神器Asciinema慎用教程

1.效果 2.安装 centos yum install asciinema ubuntu apt-get install asciinema 3.使用 asciinema rec kali.cast #录制文件 asciinema play kali.cast #播放文件 asciinema upload kali.cast #上传文件 详细说明:只使用 asciinema rec 也是可以的,ctrlD结束录屏 4.…

2024年数学建模美赛 分析与编程

2024年数学建模美赛 分析与编程 1、本专栏将在2024年美赛题目公布后,进行深入分析,建议收藏; 2、本专栏对2023年赛题,其它题目分析详见专题讨论; 2023年数学建模美赛A题(A drought stricken plant communi…

尚无忧球馆助教系统源码,助教小程序源码,助教源码,陪练系统源码

特色功能: 不同助教服务类型选择 助教申请,接单,陪练师入住,赚取外快 线下场馆入住 设置自己服务 城市代理 分销商入住 优惠券 技术栈:前端uniapp后端thinkphp 独立全开源

Redis 的二进制安装与包管理安装, 全发行版 Linux 通用

博客原文 文章目录 Redis 简介二进制编译安装获取源码包编译安装移动配置文件到安装目录下配置 redis 为后台启动将 redis 加入到开机启动设置 redis 密码 (可选)修改 bind启动 redis apt 安装更换阿里源(可选)安装 redis修改配置文件 Redis 简介 Redis(全称为Remot…

【Go】Channel底层实现 ②

文章目录 channel底层实现channel发送、接收数据有缓冲 channelchannel 先写再读channel 先读再写(when the receiver comes first) 无缓冲channelchannel存在3种状态: channel底层实现 // channel 类型定义 type hchan struct {// channel 中的元素数量, lenqcoun…

1.26学习总结

连通性判断 DFS连通性判断步骤: 1.从图上任意一点u开始遍历,标记u已经走过 2.递归u的所有符合连通条件的邻居点 3.递归结束,找到了的所有与u的连通点,就是一个连通块 4.然后重复这个步骤找到所有的连通块 BFS连通性判断步骤…

opencv学习二值分析

内容来源于《opencv4应用开发入门、进阶与工程化实践》 二值分析: 常见的二值化方法: 基于全局阈值(threshold)得到的二值图像;基于自适应阈值(adaptiveThreshold)得到的二值图像&#xff1…

RPC教程 7.服务发现与注册中心

0.前言 这一节的内容只能解决只有一个服务的情况。要是有多个服务(即是多个结构体)这种就解决不了,也即是没有服务ip地址和服务实例的映射关系。 1.为什么需要注册中心 在上一节中,客户端想要找到服务实例的ip,需要硬编码把ip写到代码中。…

永磁直驱式风力发电虚拟同步机仿真模型Matlab/Simulink模型

很久没有分享虚拟同步机控制相关的方向了,主要是因为硕士之后,也就没再继续深入研究这个课题了,更多的是在电科院的项目里会接触。这个课题方向其实作为硕士毕业课题还是够用的,相对来说也是比较容易毕业的,因为涉及的…

x-cmd pkg | go - Google 开发的开源编程语言

目录 简介首次用户技术特点竞品分析编译型语言解释型语言JavaWebAssebmly 进一步阅读 简介 Go 语言(或 Golang)是 Google 开发的开源编程语言,诞生于 2006 年。其设计目标是“兼具 Python 等动态语言的开发速度和 C/C 等编译型语言的性能与安…

Nodejs前端学习Day3_准备工作

妈的,这几天真tm冷,前天上午还下了一整天的雪,大雪 文章目录 前言一、Node.js简介1.1何为1.2有什么 二、Node.js可以做什么三、学习路线四、下载nodejs4.1小坑记录4.2LTS和Current版本的不同 五、什么是终端六、在nodejs中执行js代码七、powe…

Python 中的 strip 函数用法,你真的学会了吗?

Python 提供了大量内置函数,使编程变得更加简单。strip 就是这样一个函数。在本文中,我们将探讨 strip 是什么、为什么有用以及如何有效地使用它。 什么是 strip strip 是一种内置方法,用于删除字符串中的前导字符和尾随字符。这些字符可以…

MYSQL库和表的操作(修改字符集和校验规则,备份和恢复数据库及库和表的增删改查)

文章目录 一、MSYQL库的操作1.连接MYSQL2.查看当前数据库3.创建数据库4.字符集和校验规则5.修改数据库6.删除数据库7.备份和恢复8.查看连接 二、表的操作1.创建表2.查看表结构3.修改表4.删除表 一、MSYQL库的操作 1.连接MYSQL 我们使用下面的语句来连接MSYQL: my…

太阳能 LED 恒流电源 升降压原理图 AP9193 大功率升压恒流IC

特别 宽输入电压范围:3.6V~100V 高效率:可高达 95% 工作频率:1MHz CS 限流保护电压:250mV FB 电流采样电压:250mV 芯片供电欠压保护:2.5V 关断时间可调 外置频率补偿脚 应用领域 LED 灯杯 电池供…