《ClipCap》论文笔记(下)

原文出处

[2111.09734] ClipCap: CLIP Prefix for Image Captioning (arxiv.org)

原文翻译

接上篇

《ClipCap》论文笔记(上)-CSDN博客

4. Results

Datasets.我们使用 COCO-captions [7,22]、nocaps [1] 和 Conceptual Captions [33] 数据集。我们根据Karpathy等人[17]拆分对前者进行分割(对数据集),其中训练集每张图像包含120,000张图像和5个标题。由于 COCO 仅限于 80 个类别,因此 nocaps 数据集旨在衡量对未曾出现的类和概念的泛化。它仅包含验证集和测试集,使用 COCO 本身进行训练。nocaps 数据集分为三个部分——域内仅包含仅描绘 COCO 类的图像,近域包含 COCO 和新类,域外仅包含新类。正如Li等人[19]所建议的,我们只使用验证集来评估模型。尽管一些方法利用新类的对象标签,但我们只考虑没有额外的监督的设置,因为我们发现它在实践中更适用。因此,我们不使用受约束的波束搜索 [2]。概念字幕数据集由 3M 对图像和字幕组成,这些图像和字幕来自网络和后处理。由于图像和字幕的风格种类繁多,它被认为比 COCO 更具挑战性,而不限于特定类别。为了关注概念,该数据集中的特定实体被替换为一般概念。例如,在图 1 中,名称被替换为“政治家”。为了评估,我们使用由 12.5K 图像组成验证集,因为测试集不公开。因此,我们没有使用该集合进行验证。

Baselines.我们将我们的方法与Li等人[19](称为Oscar)、视觉语言预训练模型(VLP)[47]和Anderson等人[4]的杰出工作进行了比较,记为BUTD。这些模型首先使用目标检测网络[31]生成视觉特征。然后BUTD利用LSTM生成字幕,而VLP和Oscar使用transformer,训练方法与Bert相似,VLP 和 Oscar 都在数百万个图像-文本对上利用了广泛的预训练过程。Oscar [19] 还使用与我们的设置相比的额外监督,以每个图像的对象标签形式。

我们的默认配置采用 Transformer 映射网络,无需微调语言模型,表示为 Ours;Transformer。此外,我们还评估了我们利用 MLP 映射网络的变体,并对语言模型进行微调,表示为 Ours;MLP + GPT2 tuning。其他配置在表1(D)中进行了评估。

Evaluation metrics.与Li等人[19]类似,我们使用常用指标BLEU[27]、METEOR[10]、CIDEr[37]和SPICE[3]在COCO数据集上验证我们的结果,以及使用CIDEr和SPICE的nocaps数据集。对于概念字幕,我们报告了作者 [33] 所建议的 ROUGE-L [21]、CIDEr 和 SPICE。此外,我们测量训练时间和可训练参数的数量,以验证我们方法的适用性。减少训练时间可以快速获得新数据的新模型,创建一组模型并降低能耗。与其他工作类似,我们报告了 GPU 小时的训练时间和使用的 GPU 模型。可训练参数的数量是表示模型可行性的一种流行度量。

Quantitative evaluation.具有挑战性的概念字幕数据集的定量结果如表中所示。1(A)。可以看出,我们超越了VLP的结果,同时训练时间减少了几个数量级。我们注意到,我们没有微调 GPT-2 的轻量级模型在该数据集上取得了较差的结果。我们假设由于风格种类繁多,比我们的轻模型需要更多的表达模型,这会导致参数计数显着降低。我们只与VLP进行比较,因为其他基线没有发布结果,也没有针对该数据集训练模型。标签。

1(B) 显示了 nocaps 数据集的结果,其中我们获得了与最先进的 Oscar 方法相当的结果。可以看出,Oscar 获得了稍好的 SPICE 分数,我们获得了略好的 CIDEr 分数。尽管如此,我们的方法只使用了一小部分训练时间和可训练参数,不需要额外的对象标签,因此在实践中更有用。

标签。1(C) 显示了 COCO 数据集的结果。Oscar 取得了最好的结果,但是,它以对象标签的形式使用额外的输入。我们的结果接近于VLP和BUTD,它利用了更多的参数和训练时间。请注意,VLP 和 Oscar 的训练时间不包括预训练步骤。例如,VLP 的预训练需要对消耗 1200 GPU 小时的概念字幕进行训练。

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

Qualitative evaluation.图3和图4分别给出了概念字幕和COCO数据集测试集中未经策划的第一个示例的可视化结果。可以看出,我们生成的标题是有意义的,并且成功地描述了两个数据集的图像。我们在图 1 中展示了从网络中收集的其他示例。可以看出,我们的概念字幕模型可以很好地推广到任意看不见的图像,因为它是在相当大的和多样化的图像集上训练的。我们还在智能手机图像上的图5结果中展示了这一点,以进一步证明对新场景的泛化。此外,即使仅在 COCO 上训练,我们的模型也成功地识别了不常见的对象。例如,我们的方法识别木勺或蜡烛比图 3 中的 Oscar 更好的蛋糕,因为 CLIP 是在一组不同的图像上进行预训练的。然而,我们的方法在某些情况下仍然失败,例如识别图 3 中火车旁边的自行车。这继承自 CLIP 模型,它确实不首先感知自行车。我们得出结论,我们的模型将受益于提高 CLIP 对象检测能力,但将此方向留给未来的工作。对于概念字幕,我们的方法主要产生准确的字幕,例如感知图 4 中的绿色 3d 人。正如预期的那样,我们的方法仍然存在数据偏差。例如,它将图 4 中的卧室图像描述为“该属性在市场上为 1 英镑”,在训练期间目睹了此类属性广告字幕。

Language model fine-tuning.如第 1 节所述。3,微调语言模型会产生更具表现力的模型,但随着可训练参数数量的增加,它也更容易受到过度拟合的影响。从表中可以看出。1,两种变体——有和没有语言模型微调——具有可比性。在极其复杂的概念字幕数据集上,我们通过微调获得了更好的结果。虽然在流行的 COCO 数据集上,避免微调取得了更好的结果。关于 nocaps 数据集,结果大致相等,因此较轻的模型更可取。因此,我们假设呈现独特风格的极其详细的数据集或数据集需要更多的表达能力,因此它更有可能从微调中受益。

Prefix Interpretability.

为了进一步理解我们的方法和结果,我们建议将生成的前缀解释为单词序列。由于前缀和词嵌入共享相同的潜在空间,因此可以类似地对待它们。我们在余弦相似度下将每个 kprefix 嵌入解释为最接近的词汇标记。图 6 显示了图像、生成的字幕及其前缀解释的示例。当映射网络和 GPT-2 都经过训练时,解释是有意义的。在这种情况下,解释包含与图像内容相关联的显着词。例如,摩托车并在第一个示例中展示。然而,当我们只训练映射网络时,解释基本上变得不可读,因为网络还负责操纵固定语言模型(此时mapper纯纯做一个适配器的作用)。事实上,同一模型的不同图像之间共享相当大的前缀嵌入部分,因为它对 GPT-2 执行相同的调整。

Prefix length.Li 和 Liang [20] 表明,增加前缀长度的大小,直到某个值,可以提高模型在底层任务上的性能。此外,任务之间的饱和度长度可能不同。对于图像字幕任务,我们在我们方法的两种配置上使用 COCO 数据集对前缀长度进行了消融研究:Ours;Transformer 和 Ours;MLP + GPT2 调整。结果如图7所示。对于每个前缀大小和配置,我们训练网络5个epoch,并报告测试集和训练集上的BLEU@4和CIDEr评分。

如图 7a 所示,由于可训练参数的数量很大,在允许调整语言模型的同时增加前缀大小会导致对训练集的过度拟合。然而,当语言模型被冻结时,我们对训练和测试的评估都有改进,如图 7b 所示。当然,非常小的前缀长度会产生较差的结果,因为模型不够表达。此外,我们指出 MLP 架构本质上更有限,因为它不适用于长前缀。例如,前缀大小为 40 意味着具有超过 450M 参数的网络,这对于我们的单个 GPU 设置是不可行的。Transformer 架构允许增加前缀大小,而参数数量仅略有增加,但仅增加到 80——由于注意力机制的二次内存成本。

Mapping network.映射网络架构的消融研究如表中所示。1(C),(D)。可以看出,通过语言模型微调,MLP 取得了更好的结果。但是,当语言模型被冻结时,Transformer会更好。我们得出结论,当使用语言模型的微调时,变压器架构的表达能力是不必要的。

Implementation details.对于 MLP 映射网络,我们使用 K = 10 的前缀长度,其中 MLP 包含单个隐藏层。对于转换器映射网络,我们将 CLIP 嵌入设置为 K = 10 个常量标记,并使用 8 个多头自注意力层,每个隐藏层有 8 个头。我们使用 40 的批量大小训练了 10 个 epoch。为了优化,我们使用 Loshchilov 等人介绍的权重衰减修复的 AdamW [18]。 [24],学习率为 2e-5 和 5000 个预热步骤。对于 GPT-2,我们采用了 Wolf 等人的实现。 [41]。

5. Conclusion

总体而言,我们基于 CLIP 的图像字幕方法易于使用,不需要任何额外的注释,并且训练速度更快。尽管我们提出了一个更简单的模型,但随着数据集变得更加丰富和更多样化它展示了更多优点。我们将我们的方法视为新的图像字幕范式的一部分,专注于利用现有模型,同时只训练最小映射网络。这种方法本质上学会了将预训练模型的现有语义理解适应目标数据集的风格,而不是学习新的语义实体。我们相信,在不久的将来利用这些强大的预训练模型将获得牵引力。因此,了解如何利用这些组件是非常有意义的。在未来的工作中,我们计划通过利用映射网络将预训练模型(例如 CLIP)合并到其他具有挑战性的任务中,例如视觉问答或图像到 3D 翻译。

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

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

相关文章

自动化设备上位机设计 一

目录 一 设计原型 二 后台代码 一 设计原型 二 后台代码 namespace 自动化上位机设计 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}} }namespace 自动化上位机设计 {partial class Fo…

Pyqt5中如何让label里面的图片进行更换,避免出现黑图

在Pyqt5的界面开发过程中,发现一个label的图片怎么都添加不上,而且出现黑色,主要原因就是在进行显示的时候需要加一行清除的代码: label.clear()如果不加这行代码,当里面的图片发生变化时,显示出来的就是黑…

miniprogram-to-uniapp-微信小程序转换成uniapp项目

文章目录 参考:miniprogram-to-uniapp使用指南第一步第二步第三步第四步【miniprogram-to-uniapp】转换微信小程序”项目为uni-app项目(新版本工具已经支持各种小程序转换) 参考: 小程序技能树 uni-app基础知识总结 miniprogram-to-uniapp使用指南 第一步 win + R 输入…

Openwrt路由器部分ipv6公网地址无法访问的问题

路由器是Openwrt,终端访问ipv6地址经常有些能访问,有些不能访问,一开始以为是运营商问题,后面ssh到openwrt发现所有访问都正常。 查阅资料后才知道是MTU设置问题,Openwrt 默认MTU是1492,使用IPV6应减少60个…

微信小程序遮罩层显示

效果展示&#xff1a; wxml页面&#xff1a; <view classmodal-mask wx:if{{showModal}}><view class"modal-container"><view classmodal-content></view><view classmodal-footer bindtap"closeImage">//这个/images/ind…

Java 基础查漏补缺

1.深入解读&#xff1a;JDK与JRE的区别 JDK提供了完整的Java开发工具和资源&#xff0c;包括编译器、调试器和其他开发工具&#xff0c;满足开发人员的各种需求。 JRE则相对更为基础&#xff0c;它只提供了Java程序运行所需的环境&#xff0c;包含了Java虚拟机&#xff08;JVM&…

数字类型<整数、复数>

Python 中&#xff0c;数字类型 Number&#xff0c; 包括整数 int、浮点 float 数和复数 complex 三个子类型。 用来表示程序中不同的数字类型的数据。 整数 整数类型&#xff1a;用来表示整数数值&#xff0c;即没有小数部分的数值&#xff0c;在 Python 中&#xff0c;没有…

Nettyの网络聊天室扩展序列化算法

1、网络聊天室综合案例 客户端初始代码&#xff1a; Slf4j public class ChatClient {public static void main(String[] args) {NioEventLoopGroup group new NioEventLoopGroup();LoggingHandler LOGGING_HANDLER new LoggingHandler(LogLevel.DEBUG);MessageCodecSharabl…

使用c++函数式编程实现Qt信号槽机制

问题背景 在下面的代码中&#xff0c;Input输入器 输入数据&#xff0c;希望A和B 接收数据。但使用的赋值&#xff0c;导致in.a和a只是拷贝数据&#xff0c;而不是同一个对象&#xff0c;使得数据不同步。 #include <iostream> struct A {int age 32; }; struct B {int …

searchForm自适应布局 + 按钮插槽

收起 展开 代码&#xff1a; useResizeObserverHooks.js import { useEffect, useLayoutEffect } from "react";export const useResizeObserver (containerDom, domClass, callback) > {useLayoutEffect(() > {let resizeObserver null;let dom null;if …

Qt Json详细介绍

一.概念介绍 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;常用于前后端数据传输和存储。它具有以下特点&#xff1a; 易读性&#xff1a;JSON 使用人类可读的文本格式表示数据&#xff0c;采用键值对的方式组织数据&#x…

eth0设备繁忙

当您遇到 ifconfig eth0 hw ether 20:24:07:04:18:00 命令执行后显示 ifconfig: SIOCSIFHWADDR: Device or resource busy 错误时&#xff0c;这意味着您尝试更改的网络设备&#xff08;在这个例子中是 eth0&#xff09;目前正被占用&#xff0c;无法进行硬件地址的更改。 为了…

Map Set(Java篇详解)

&#x1f341; 个人主页&#xff1a;爱编程的Tom&#x1f4ab; 本篇博文收录专栏&#xff1a;Java专栏&#x1f449; 目前其它专栏&#xff1a;c系列小游戏 c语言系列--万物的开始_ 等 &#x1f389; 欢迎 &#x1f44d;点赞✍评论⭐收藏&#x1f496;三连支持…

【每日一练】python列表

1、输入一个整数列表&#xff0c;将列表中的元素按照逆序输出。 list1[5,4,5,6] list1.reverse() print(list1)[6, 5, 4, 5]2、输入一个字符串列表&#xff0c;输出其中长度大于等于5的字符串&#xff0c;并且将它们转换为大写形式。 list1[hello,lol,ak47,aliang] for i in …

211.xv6——3(page tables)

在本实验室中&#xff0c;您将探索页表并对其进行修改&#xff0c;以简化将数据从用户空间复制到内核空间的函数。 开始编码之前&#xff0c;请阅读xv6手册的第3章和相关文件&#xff1a; kernel/memlayout.h&#xff0c;它捕获了内存的布局。kernel/vm.c&#xff0c;其中包含…

代谢组数据分析(十二):岭回归、Lasso回归、弹性网络回归构建预测模型

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2介绍 在代谢物预测模型的构建中,我们采用了三种主流的回归分析方法:岭回归、Lasso回归以及弹性网络回归。这三种方法各有其独特的原理和适用场景,因此在…

WPS操作技巧:制作可以打对勾的方框,只需简单几步!沈阳wps办公软件培训

日常工作中&#xff0c;我们经常需要在表格中添加复选框&#xff0c;比如【性别选择】、【任务完成状态】等等&#xff0c;通过打对勾来确定状态。今天就分别从WPS的Excel表格和Word文档2种场景&#xff0c;介绍制作可以打对勾的复选框的方法技巧&#xff0c;掌握技巧&#xff…

25、PHP 实现两个链表的第一个公共结点(含源码)

题目&#xff1a; PHP 实现两个链表的第一个公共结点 描述&#xff1a; 输入两个链表&#xff0c;找出它们的第一个公共结点。 <?php /*class ListNode{var $val;var $next NULL;function __construct($x){$this->val $x;} }*/ function FindFirstCommonNode($pHead…

构建zdppy docker镜像

拉取镜像 docker pull python:3.8-alpine3.19创建容器 docker run -itd --name zdppy python:3.8-alpine3.19 sh进入容器 docker exec -it zdppy sh配置pip国内源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple提交容器为镜像 docker commit…

游戏AI的创造思路-技术基础-计算机视觉

让游戏的AI具备“眼睛”和“视觉”&#xff0c;就是通过计算机视觉的方法进行的。现在&#xff0c;越来越多的游戏&#xff0c;特别是动捕类游戏都在使用这个方法。当然&#xff0c;计算机视觉不仅仅用于游戏&#xff0c;越来越多的应用使用到这个技术 目录 1. 定义 2. 发展历…