AAAI2023《Controllable Image Captioning via Prompting》

摘要

文章提出了一种通过提示学习(prompt learning)嵌入到图像描述生成框架中的方法,以实现对图像描述的可控生成。具体来说,设计了一组提示来微调预训练的图像描述生成器,这些提示使模型能够吸收来自不同领域的风格化数据进行联合训练,且不会降低每个领域的性能。此外,文章还通过在连续词嵌入空间中优化可学习的向量来改进提示,避免了启发式提示工程的复杂性,并展现出优越的性能。在推理阶段,模型能够通过选择相应的提示来生成期望的风格化描述。广泛的实验验证了所提方法的可控性,并在COCO Karpathy分割和TextCaps两个不同的图像描述基准测试中取得了出色的成绩。

Introduction

拟解决的问题:现有的图像描述生成算法通常缺乏生成期望描述的可控能力,一旦模型训练完成,描述生成过程很难被影响。文章主要关注两个方面的问题:

  1. 长度可控性:在某些情况下需要简短的描述来快速了解图像内容,而在其他情况下则需要详细的描述来获取更多信息。
  2. 风格可控性:同一图像可以从不同的角度进行描述,例如关注图像中的物体或文本内容,或者生成包含积极或消极情感的非事实性描述。

如图所示:

  1. COCO风格的描述:这是指类似于COCO数据集中常见的描述风格,通常比较简洁、客观,侧重于描述图像中的主要物体和场景。
  2. TextCap风格的描述:TextCap数据集中的描述通常包含图像中的文本信息,因此这种风格的描述会更注重图像中的文字内容。
  3. 积极情感的描述:这种描述会包含积极的情感词汇,如“漂亮”、“可爱”等,用来表达对图像内容的积极评价。
  4. 消极情感的描述:与积极情感相反,这种描述会使用消极的情感词汇,如“孤独”、“难看”等,来传达对图像内容的消极感受。
  5. 不同长度的描述:包括短描述(Short-length Caption)、中等长度描述(Medium-length Caption)和长描述(High-length Caption)。短描述提供图像的基本信息,而长描述则包含更多的细节。

创新点:

  • 提出了首个基于提示的图像描述生成框架,以简单有效的方式控制描述风格。
  • 验证了手动设计的提示,并进一步引入了自动提示学习,避免了启发式提示设计,并取得了优越的结果。
  • 通过定性和定量结果验证了所提框架的可控性,并在一个统一的模型上实现了在多个基准测试中的出色表现。

Method

该方法的核心在于将提示学习(prompt learning)技术应用于图像描述生成任务。具体来说,通过设计一组提示(prompts),微调预训练的图像描述生成器,使其能够吸收来自不同领域的风格化数据进行联合训练,从而在推理阶段生成多样化的描述。

3.1 自回归图像描述生成

作为baseline,本文采用基于单向语言模型(LM)的图像描述生成框架。该框架利用Transformer块融合图像特征 v 和文本序列 x。每个词x_{t}是基于前一个词x_{<t}自回归生成的。训练目标是交叉模态语言模型损失,定义如下:

其中,g(⋅)表示视觉编码器,f(⋅)表示词嵌入层,P(⋅∣⋅)是交叉模态融合模型(例如Transformer解码器),接收视觉特征g(v)和前一个词的嵌入 f(x_{<t})来预测下一个词x_{t}​。

3.2 模型预训练

预训练阶段,模型在大规模的噪声图像-文本数据集上进行训练,以提升下游任务的性能。除了语言模型损失L_{LM}外,还采用了图像-文本对比损失和图像-文本匹配损来联合优化视觉编码器和交叉模态融合模型:

对比损失通过点积等轻量级融合方式测量图像-文本对的相似性,而匹配损失通过交叉注意力等重量级融合方式测量图像-文本的相似性。 

3.3 提示工程

预训练完成后,模型已经具备了零样本(zero-shot)描述生成的能力。为了生成多样化的描述,设计了多个提示作为不同领域数据的锚点。具体提示如下表所示:

表1

3.4 模型微调

在微调阶段,将多个训练集混合在一起训练一个统一的模型。与基线模型不同,本文预测词x_{<t} 时,不仅考虑视觉特征 g(v) 和前一个词的嵌入 f(x_{<t}),还考虑提示词嵌入 f(p)。不同风格的数据被分配特定的提示,如表1所示。训练时,将这些手工设计的提示添加到描述词前,作为图像的文本描述。使用基于提示的语言模型损失进行联合训练:

为了避免手工提示工程的繁琐,进一步鼓励网络自动学习提示。给定一个手动提示词序列,模型首先使用WordPiece技术将每个词映射到唯一的数字ID,然后通过词嵌入层 f(⋅) 将这些ID投影到768维的词嵌入空间。本文提出学习描述提示嵌入 P:

在训练阶段,提示嵌入 P 与描述生成网络联合优化: 

3.5 推理阶段

经过提示学习后,模型能够使用不同的提示生成多样化的描述。在手工提示框架中,编码特殊词 [BOS] 后,依次嵌入提示词并通过 f(p)f(p) 输入到语言模型中,以自回归方式生成描述。在自动提示框架中,直接将 [BOS] 的词嵌入和学习到的提示嵌入 PP 拼接作为语言模型的输入。通过切换不同的提示,所提出的描述生成器能够生成特定风格的描述。

实验结果

通过不同的提示 ,可以生成不同风格的描述:

结论

文章提出的基于提示的图像描述生成框架在概念上简单而有效,能够生成具有多样化风格的描述。通过提示工程,该方法能够在一个统一的模型中同时处理不同领域,并为每张图像生成不同长度和风格的描述,这是大多数现有最先进的描述生成器所无法实现的。广泛的定性和定量实验验证了所提框架的有效性。

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

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

相关文章

AR 眼镜之-拍照/录像动效切换-实现方案

目录 &#x1f4c2; 前言 AR 眼镜系统版本 拍照/录像动效切换 1. &#x1f531; 技术方案 1.1 技术方案概述 1.2 实现方案 1&#xff09;第一阶段动效 2&#xff09;第二阶段动效 2. &#x1f4a0; 默认代码配置 2.1 XML 初始布局 2.2 监听滑动对 View 改变 3. ⚛️…

kubeneters-循序渐进Cilium网络(二)

文章目录 概要IP 地址配置接口配置解析结论 概要 接续前一章节&#xff0c;我们还是以这张图继续深入Cilium网络世界 IP 地址配置 通过检查 Kubernetes 集群的当前环境&#xff0c;可以获取实际的 IP 地址和配置信息。这些信息将被补充到之前的网络示意图中&#xff0c;以使…

宝塔安装mongodb后,写脚本监控运行状态,关闭后自动重启

最近项目用上了mongodb&#xff0c;但是每天晚上 mongodb都回自动关闭&#xff0c;没办法 只能写个监视服务的脚本 在关闭的话就直接重启&#xff0c;创建个计划任务&#xff0c;每三分钟执行一次 # 检查mongo是否还在进程中 countps aux|grep mongo| grep -v grep |wc -l echo…

备忘录记事工具 四款好用的电脑备忘录记事本分享

在信息爆炸的时代&#xff0c;选择一个合适的备忘录记事工具显得尤为重要。无论是记录工作上的重要事项、学习笔记还是生活中的点滴灵感&#xff0c;一个好的备忘录应用都能成为您得力的小助手。今天&#xff0c;我将为大家深入评测四款各具特色的电脑备忘录记事本软件。 印象…

深入理解 C 语言中浮点型数据在内存中的存储

文章目录 一、浮点型数据存储格式&#xff08;IEEE 754 标准&#xff09;二、举例说明单精度浮点数存储过程三、绘图说明四、双精度浮点数存储示例&#xff08;以1.5为例&#xff09; 在 C 语言的世界里&#xff0c;数据类型丰富多样&#xff0c;而浮点型数据用于表示实数&…

sql server cdc漏扫数据

SQL Server的CDC指的是“变更数据捕获”&#xff08;Change Data Capture&#xff09;。这是SQL Server数据库提供的一项功能&#xff0c;能够跟踪并记录对数据库表中数据所做的更改。这些更改包括插入、更新和删除操作。CDC可以捕获这些变更的详细信息&#xff0c;并使这些信息…

vue3如何使用bus(事件总线)

&#x1f680; 个人简介&#xff1a;某大型国企资深软件开发工程师&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码喽的自我修养&#x1f9…

Spring IoC DI 入门 和 使用

Spring IoC & DI入门 和 使用 1. IoC & DI入门1.1 Spring 是什么?1.1.1 什么是容器?1.1.2 什么是IoC? 1.2 IoC介绍1.2.1 传统程序开发1.2.2 问题分析1.2.3 解决方案1.2.4 IoC程序开发1.2.5 IoC优势 1.3 DI介绍 2. IoC 和 DI使用 1. IoC & DI入门 1.1 Spring 是…

计算机网络(三)——局域网和广域网

一、局域网 特点&#xff1a;覆盖较小的地理范围&#xff1b;具有较低的时延和误码率&#xff1b;使用双绞线、同轴电缆、光纤传输&#xff0c;传输效率高&#xff1b;局域网内各节点之间采用以帧为单位的数据传输&#xff1b;支持单播、广播和多播&#xff08;单播指点对点通信…

mapbox基础,style样式汇总,持续更新

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;mapbox 从入门到精通 文章目录 一、&#x1f340;前言二、&#x1f340;根属性2.1 so…

551 灌溉

常规解法&#xff1a; #include<bits/stdc.h> using namespace std; int n,m,k,t; const int N105; bool a[N][N],b[N][N]; int cnt; //设置滚动数组来存贮当前和下一状态的条件 //处理传播扩散问题非常有效int main() {cin>>n>>m>>t;for(int i1;i&l…

jenkins入门10--自动化构建

build periodically&#xff1a;设定类似cron周期性时间触发构建 * * * * * (五颗星&#xff0c;中间用空格隔开&#xff09; 第一颗表示分钟&#xff0c;取值0~59 第二颗表示小时&#xff0c;取值0~23 第三颗表示一个月的第几天&#xff0c;取值1~31 第四颗表示第几月&#xf…

[0405].第05节:搭建Redis主从架构

Redis学习大纲 一、3主3从的集群配置&#xff1a; 1.1.集群规划 1.分片集群需要的节点数量较多&#xff0c;这里我们搭建一个最小的分片集群&#xff0c;包含3个master节点&#xff0c;每个master包含一个slave节点&#xff0c;结构如下&#xff1a; 2.每组是一主一从&#x…

新兴的开源 AI Agent 智能体全景技术栈

新兴的开源 AI Agent 智能体全景技术栈 LLMs&#xff1a;开源大模型嵌入模型&#xff1a;开源嵌入模型模型的访问和部署&#xff1a;Ollama数据存储和检索&#xff1a;PostgreSQL, pgvector 和 pgai后端&#xff1a;FastAPI前端&#xff1a;NextJS缺失的一环&#xff1a;评估和…

详细分析 Git 分支重命名与同步操作

目录 前言1. 场景2. 扩展知识 前言 以下小知识点作为讲解介绍&#xff0c;文章较短&#xff0c;作为科普使用 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 1. 场景 示例场景&#xff1a;决定将默认分支从 main…

vs2022开发.net窗体应用开发环境安装配置以及程序发布详细教程

文章目录 一、安装visual studio1.1推荐win10操作系统1.2推荐vs20221.3选择工作负载 二、新建基于.net的winform应用程序2.1为什么要.net 2.2 新建.net窗体应用2.2.1 选择Window窗体应用2.2.2 .net窗体对比framework窗体 三、发布.net应用 一、安装visual studio 1.1推荐win10…

Python基于YOLOv8和OpenCV实现车道线和车辆检测

使用YOLOv8&#xff08;You Only Look Once&#xff09;和OpenCV实现车道线和车辆检测&#xff0c;目标是创建一个可以检测道路上的车道并识别车辆的系统&#xff0c;并估计它们与摄像头的距离。该项目结合了计算机视觉技术和深度学习物体检测。 1、系统主要功能 车道检测&am…

详解Sonar与Jenkins 的集成使用!

本文阅读前提 本文假设读者熟悉Jenkins和SonarQube的基础操作。 核心实现功能 Jenkins中运行的job来调用SonarScanner&#xff0c;最后可实现测试结果与SonarQube中同步查看。 Jenkins中安装Sonar相关插件 配置Sonarqube Dashboard>Manage Jenkins>Systems 指定son…

tdengine数据库使用java连接

1 首先给你的项目添加依赖 <dependency> <groupId>com.taosdata.jdbc</groupId> <artifactId>taos-jdbcdriver</artifactId> <version>3.4.0</version> <!-- 表示依赖不会传递 --> </dependency> 注意&am…

vue3+ts+element-plus 对话框el-dialog设置圆角

对话框el-dialog设置圆角&#xff0c;实现的需求效果&#xff1a; 目前只能通过行内样式&#xff08;style"border-radius: 20px"&#xff09;来实现圆角效果&#xff1a;