本文提出 ViTOC(视觉 Transformer 和目标感知描述生成器),一种用于图像描述的视觉语言模型,可解决生成描述的准确性和多样性的挑战。
与传统方法不同,ViTOC 采用双路径架构,基于视觉 Transformer 和目标检测器,通过可学习的向量有效地融合全局视觉特征和局部目标信息。
该模型引入了一种创新的目标感知 Prompt 策略,显著提高了处理长尾数据的能力。在 COCO 数据集上的实验表明,ViTOC 在所有评估指标上均优于 Baseline 模型。
此外,作者提出了一种基于 CLIP 的参考免费评估方法,以进一步验证模型的有效性。通过利用预训练的视觉模型参数,ViTOC 实现了高效的端到端训练。
1 Introduction
近年来,随着计算机视觉和自然语言处理技术的快速发展,图像描述生成成为多模态领域的一个热门研究话题。这项技术通过解释图像内容和生成自然语言描述,将视觉和语言信息相互融合。图像描述生成在自动驾驶、智能监控、搜索引擎以及帮助视力障碍人士等领域有着广泛的应用。尽管基于卷积神经网络(CNNs)、循环神经网络(RNNs)和 Transformer 的模型在该任务上取得了显著的进步,但在语义准确性、描述多样性和生成效率方面仍存在挑战。
许多关于图像描述的论文遵循编码器-解码器框架。在文献[2]中,研究总结了不同图像编码器、文本解码器和多模态交互模块尺度对整体模型性能的影响。
研究发现,当视觉模型大于文本模型时,生成的描述往往具有更高的质量。基于这一洞察,作者通过使用多个图像编码器来提高视觉特征的表达,以改进视觉模型。
对于在训练集中罕见的或缺失的图像,模型可能会在描述中生成无关的目标,如图 1 所示。这种现象在自然语言生成中被称为“错觉”。目标检测器通过识别图像中的关键目标和场景元素,帮助文本模型更好地理解上下文信息,从而生成更准确、更详细的描述。引入目标检测器也解决了长尾问题,即生成罕见目标或场景描述的挑战。通过识别这些罕见的元素,目标检测器增强了模型描述长尾类别的能力。基于这种方法,作者采用 ViT 与目标检测器作为视觉模型,采用 Transformer 作为文本模型,形成了一个端到端的图像到文本生成系统。
作者论文的主要贡献可以概括如下:
- 作者提出了一种基于 ViT、Object Detector 和 Transformer 的视觉语言模型架构。在这个架构中,视觉模型使用冻结的预训练参数,无需微调,从而显著提高训练效率。
- 作者设计了一种方法,将目标检测器输出作为 Prompt ,证明了基于检测器的 Prompt 策略的有效性。
ViTOC 在所有指标上均优于 Baseline 模型。
2 Related Work
The Early Models and Development History of Image Captioning
许多早期的图像描述模型基于 CNN-RNN 框架,其中 CNN 提取图像特征,而 RNN 由于其顺序结构,非常适合文本生成。然而,由于梯度消失或爆炸等问题,RNN 在处理较长的序列时往往难以捕捉长期依赖性,从而限制了它们保留长期信息的能力。随着 Transformer 的出现,文本模型受益于注意力机制,使其能够捕捉更广泛的情境信息。
因此,一些研究使用 Transformer 来增强文本生成模型。后来,像 GPT-2[10]这样的大型语言模型展示了强大的文本处理能力。因此,一些工作,如[11],利用这些模型因其广泛的知识库和文本理解能力作为文本模型。在视觉方面,Vision Transformer(ViT[12])通过将图像划分为 patch,从而将图像处理视为顺序问题,引入了一种创新方法。与 CNN 相比,Transformer 提供了优越的全局建模能力,促使一些研究[13; 14]采用 ViT 来增强视觉模型。
Image Captioning Improvement by Multi-task Learning
在图像描述生成领域,同时训练多个相关任务是一种常见的策略,以提高模型性能。典型的任务包括图像文本对比学习(ITC)、图像文本匹配(ITM)和图像文本生成(ITG)。通过同时训练这些任务,多任务学习(MTL)使模型能够学习共享表示,从而增强生成的描述的准确性和鲁棒性。具体而言,ITC 将图像和文本表示在共享的嵌入空间中进行对齐[15],ITM 确保图像和其描述之间的对齐[16],而 ITG 则基于学习的特征生成相关的描述。这种方法使得生成的描述更加准确和语义丰富。
也有一些例子是将图像描述与其他多模态任务相结合。例如,[18] 将图像描述与目标检测相结合,[19] 将其与视觉问答集成。这些方法可以显著提高模型的性能和稳定性,但同时也大大增加了计算成本。
Image Captioning Improvement by Pretrained Models
近年来,基于预训练模型的方法在图像描述领域取得了显著进展。许多研究行人利用预训练视觉模型(如 ViT、CLIP 等)来初始化图像编码器。这种方法降低了训练时间并提高了模型性能。这些预训练模型通常在大规模数据集上进行训练,使它们能够学习丰富的视觉特征,这些特征可以有效地转移到下游任务。
然而,直接使用这些预训练模型可能面临挑战。尽管它们在通用任务上表现良好,但可能无法完全满足特定任务的具体要求。为了解决这个问题,一些研究行人通过调整模型的结构或训练策略来改进现有的预训练模型。例如,[20]引入了特定的 Prompt 技术来增强图像和文本模型之间的对齐,从而在图像描述任务中提高性能。类似地,Chen 等人[19]设计了一个 qformer 模块,将预训练图像模型提取的视觉特征转换成文本模型可以理解的形式,从而进一步提高多模态任务的表现。
使用预训练模型的一个主要优势是显著节省计算资源。这对计算能力有限的研究行人特别有益,因为使用公开的预训练模型进行迁移学习可以避免从头训练大型模型的高昂成本。这种方法不仅提高了准确性,还提高了生成速度和模型效率。
ViTOC: A New Image Captioning Scheme
在本研究中,作者提出了 ViTOC(视觉 Transformer 与目标感知编解器)模型。该模型采用双路径结构,将预训练的视觉 Transformer (ViT)与目标检测器相结合。这种设计将全局视觉特征与局部物体信息相结合,提高了模型感知物体的能力。此外,ViTOC 还采用了创新的物体感知 Prompt 策略,旨在提高模型处理长尾数据的能力。
3 Vision Transformer and Object-aware Captioner
在本节中,作者介绍了 ViOC,如图 2 所示。这种新颖策略采用多路径结构,利用 ViT 和目标检测器同时提取图像特征并向文本解码器提供目标 Prompt ,从而提高生成的描述质量。这种方法增强了生成的标题的质量。
Network Architecture
在视觉模型的设计中,通常使用一个图像编码器来提取图像特征。ViT 通过将图像分割成 patch、按顺序编码它们并添加位置编码来增强这个过程。凭借其自注意力机制,ViT 可以有效地捕捉全局图像特征。如前所述,由于数据集的 long-tail 效应,当为某些图像生成描述时,模型可能表现出“假象”问题。例如,在 Flickr30K 数据集中,带有人的样本与没有人的样本的比例约为 10:1,导致模型在预测新样本时过度倾向于与行人相关的 Token 。虽然在跨模态检索中这个问题不太严重,但这对图像描述产生了严重影响。为了解决这个问题,作者引入了一个目标检测器,它列出了图像中的目标,为文本解码器提供了改进描述准确性的 Prompt 。
视觉特征融合由检测器生成的目标 Token 不能直接使用,需要将其转换为向量。作者通过与文本模型共享嵌入层来实现这一点,将目标 Token 转换为向量,并与 ViT 提取的特征进行拼接。通常,特征融合由 Transformer Encoder 处理,它使得所有特征之间实现完全交互,并促进有效的多模态融合。然而,由于 ViT 生成了大量的 patch Token ,这增加了计算成本,并且仅依赖嵌入层进行文本信息可能限制了模型的表达能力。因此,作者使用一个 Transformer Decoder 与一组可学习向量来集成多模态特征,这种方法来源于。这些可学习向量作为 Query ,文本模型融合模块的输出作为输入。这不仅迫使模型关注生成描述的最关键信息,还降低了计算负载。可学习向量的数量可以作为超参数确定,可以基于图像中的目标数量或 desired caption 长度,提供两种不同的设计视角。
文本模型与大多数描述生成模型类似,作者的文本模型采用 Transformer 解码器。视觉特征融合模块的输出作为解码器的输入,而真实值中的 Token 作为 Query 。因果注意力用于处理多模态交互。解码器的输出经过 MLP 层处理后,可以得到每个 Token 的概率分布。
Training
总的来说,图像描述数据集通常包括一张图像和多个描述。一种常见的做法是将每个样本分割成多个图像-描述对。由于数据集中的长尾效应,模型可能倾向于生成与任务相关的描述。即使进行 Shuffle,具有相似语义或包含相同物体的图像-描述对仍可能聚类在一起。为了解决这个问题,作者将每个图像视为一个迭代单元,在训练过程中随机选择一组相应描述中的一个描述。为了进一步增强模型的鲁棒性,作者还随机在真实值中 Mask Token 。这些调整显著降低了模型生成的描述中的伪造现象。作者使用语言模型(LM)损失,其中任务是最小化预测单词和目标单词之间的差异,交叉熵损失是常见选择。这使得生成模型可以逐个预测单词,逐渐生成连贯的单词序列。
4 Experiments
Setting
作者使用 COCO 2017 数据集[22]进行训练和测试。对于视觉编码器,作者选择由 PyTorch 提供的预训练 ViT_B_16_Weights.IMAGENET1K_V1 模型。对于目标检测器,作者使用 YOLO-Tiny 模型[23],该模型已在 COCO 2017 目标检测任务上进行了微调。所使用的分词器是一个对大小写不敏感的 BERT[24]的稀释版本。因此,只有嵌入层、Transformer 解码器和学习 Query 需要进行训练。由于 ViT 中的 patch token 维度为 768,作者还将 d_model 设置为 768。Transformer 层的数量可以设置为 3 或 6,每层中的注意力头数量固定为 8。作者使用 Adam[25]优化器与 CosineAnnealingLR 学习率调度器。在训练过程中,学习率从 3e-5 逐渐衰减到 1e-6,最大为 30 个 epoch。检测器的目标检测阈值为 0.9,目标列表可以选项 ally 进行去重。
Beam Search
寻 beam 搜索是一种在图像描述生成任务中广泛使用的解码策略。它通过保留多个候选序列来超越贪心搜索,从而避免了局部最优解的问题。Beam Search 的步骤如下:
初始化:从初始 Token (通常为)开始,计算词汇表中每个词的概率分布。
扩展:在每个时间步长中,对于每个候选序列,所有可能的下一个单词都被添加,并计算它们的概率。
根据累积概率,保留前个候选序列,其中为束宽。
递归:在生成 Token 或达到最大序列长度之前,展开和选择步骤将重复进行。
beam 搜索通过考虑多个候选序列来提高生成的字幕质量,但同时也增加了计算开销。通过调整 beam 宽度 的值,可以在字幕多样性和计算效率之间找到平衡。
图 3 显示了在常见图像描述指标上,光束搜索方法相对于样本搜索方法性能的改进。图 4 比较了目标检测器返回结果的差异,特别是重复和独特的结果。结果显示,应用光束搜索可以在每个模型上显著提高所有指标,证实了光束搜索在提高图像描述质量方面的有效性。
Results on Image Captioning
作者在 COCO 数据集的验证集上进行了实验,使用束搜索(束宽度=4)进行推理,并使用诸如 BLEU([26]), ROUGE-L([27]), CIDEr([28]), 和 SPICE([29])等指标来评估结果。有趣的是,得分高的模型在所有样本上的表现并不一定好,如图 2 所示。为了解决这个问题,作者采用了基于 CLIP 的无参考度量方法,其中使用 CLIP 计算不同模型生成的图像和标题之间的相似度,最高相似度分数被用作最终得分。这种投票类似的评估方法提供了更好的模型性能比较。
在 Table 1 中,和分别代表目标检测器返回的重复和唯一目标列表。 Query 表示可学习的向量数量,而 Transformer Layer 指的是在两个多模态融合模块中使用的 Transformer 解码层数量。ViT + Transformer 模型作为 Baseline ,不使用目标检测器。
观察到使用复制策略的模型在一致性上始终优于基准模型。模型的性能通常与 Transformer 层数呈正相关。然而,可学习向量的数量并不一定提高性能,因为它增加时;存在一个最优值。
表 2 展示了 CLIP 投票评估中不同模型的结果,这些结果与传统指标的性能排名非常接近。这表明,尽管使用了新的评估方法,但模型排名并没有发生显著变化。图 6 将表格转换为饼图,提供了模型相对性能的视觉表示。
Hallucination
为了验证目标检测器是否可以减轻模型中的幻觉,作者进行了以下实验:作者从 COCO 测试集随机选取 3,000 张没有人的图像,并为这些图像生成字幕。通过检查字幕是否包含与行人相关的词语,作者可以部分地检测到幻觉。表 3 中的结果表明,更高的准确性对应着更少的幻觉。有趣的是,具有 16 个可学习向量的 ViTOC 模型在性能上超过了具有 32 个可学习向量的模型。这可能是由于可学习向量的数量超过了数据集中目标的最大数量,导致不匹配。另一种可能是,为了提高字幕的整体质量,模型可能更关注图像特征,而忽视了多模态信息的整合。
Analysis
在本实验中,作者使用了 COCO 2017 数据集进行训练和测试。结果表明,使用检测器的重复目标列表的 ViTOC 模型在总体性能上取得了最佳效果,特别是在 CIDEr 和 SPICE 分数上表现出色。进一步的消融实验验证了整合检测器的有效性。
作者研究了两种确定可学习向量数量的方法:最大目标数量和最大描述长度。数据集的最大目标数量为 10,最长描述长度为 84。实验结果显示,ViTOC 的最佳可学习向量数量为 32,接近最大目标数量。剩下的向量可能对应于目标属性或不同目标之间的关系。关于 Transformer 层数,最佳配置为 6 层。
尽管当可学习向量数量设置为 64 时,模型表现较差,这可能是因为数据集大小不足或融合方法存在缺陷。未来的工作可以通过增加数据集大小或改进融合策略来提高模型性能。
5 Limitations
在第 4.1 节中,作者提到 ViT 使用预训练参数是最基本版本,由于计算资源有限,因此选择了它。然而,使用 ViT_H_14_Weights.IMAGENET1K_SWAG_E2E_V1 可能会提高 ViTOC 的性能。
此外,ViT 可以被其他图像编码器(如 EfficientNet 或 Swin Transformer)替代。
作者使用的目标检测器 Yolo-tiny 也是 YOLO 系列的一个基本版本。
用更先进的模型(如 Yolo-base)替代它可能会提供更精确的目标标签,从而可能提高 ViTOC 的性能。
6 Conclusion
作者观察到图像描述模型在处理不常见图像时经常产生不准确的描述或幻觉。作者假设这个问题不是由数据集限制引起的。
因此,作者通过引入一种结合对象检测器和嵌入的方法,对模型架构进行了改进。
这种方法通过可学习向量将图像特征与对象特定特征集成,为文本解码器提供有用的提示。
为了评估 ViTOC 模型的表现,作者从 COCO 数据集中随机选择了 5,000 张图像进行测试。
实验结果证实了可学习向量融合策略的有效性,并表明 ViTOC 优于基线模型。
参考文献
[0]. ViTOC:Vision Transformer and Object-aware Captioner.
END
作者:小书童
来源:集智书童
推荐阅读
- PyTorch 通讯实践
- CUDA-MODE 课程笔记 第 29 课 Triton 内部机制
- 预训练视觉 Transformer (ViT) 的核心:特征表示还是注意力模式?
- 如何正确理解 NVIDIA GPU 利用率的概念
欢迎大家点赞留言,更多 Arm 技术文章动态请关注极术社区嵌入式 AI 专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。