DeCap DECODING CLIP LATENTS FOR ZERO-SHOT CAPTIONING VIA TEXT-ONLY TRAINING

DeCap: DECODING CLIP LATENTS FOR ZERO-SHOT CAPTIONING VIA TEXT-ONLY TRAINING

论文:https://arxiv.org/abs/2303.03032

代码:https://github.com/dhg-wei/DeCap

OpenReview:https://openreview.net/forum?id=Lt8bMlhiwx2

TL; DR:拿 CLIP text encoder 用 text-only 数据训一个 text decoder,基于 CLIP 图文特征的对齐性质,拿 image embedding 送到 text decoder 中解码,实现 zeroshot captioning。为了缓解 CLIP text-image 联合特征空间中 modality gap 带来的影响,提出了基于映射的解码方法,把 image embedding 映射为 text embedding 支撑集的加权和。captioning 的结果倒是不是很在意,真要做captioning也不至于绕这么大个圈子,主要想看一下关于 CLIP text-image 联合特征空间中 modality gap 的最新研究成果。 understanding modality gap in CLIP models through zero-shot captioning ^^

方法

在这里插入图片描述

拿 CLIP 的 text encoder 和 text-only 的数据去训一个 text decoder,推理时拿 CLIP 的 image encoder 提的图像 embedding 作为输入,实现 zeroshot 的 captioning。为了缓解 CLIP text-image 特征空间中 modality gap 的问题,提出了一种基于映射的方法,维护一个 text embedding 的支撑集,将 image embedding 映射为文本支撑集特征的加权和。大幅度优于直接拿 image embedding 进行生成。

训练 text decoder

只需要文本语料库即可,是一种 text-only + self-supervised 的训练方式。这样的 text decoder 训练方式有两个好处:

  1. 可以自由控制生成文本的风格,因为就是输入语料的风格
  2. 只需要 text 数据,由于是 clip text encoder 的 embedding,对齐了 image embedding,方便后面接受图像输入,做 zeroshot 的 caption

解码方法

CLIP text-image 联合特征空间中虽然说是对齐了图文特征,但是存在明显的 modality gap ref。估计直接用 image embedding 去在 text embedding 上训练的 text decoder 上进行解码效果不会好。

这里作者提出了 PD(Projection-based Decoding)。先找一个语料库,用 CLIP text encoder 提取 text embedding,作为 support memory。做 captioning 时,提取到 image embedding 之后,把 image embedding 映射为 support memory 中 text embedding 的加权和。其中权重就是 image embedding 和各个 text embedding 的余弦相似度,乘一个温度系数之后 softmax 归一化。

在这里插入图片描述

作者还找了几个其他的 decoding 的 baseline 作为对比:

  1. CLPRe:直接检索各 text embedding 和 image embedding 最近的那个文本
  2. Visual Decoding(VD):直接拿 image embedding,用 text decoder 解码
  3. Nearest Neighbor Decoding(NND):在 support memory 中,直接找和 image embedding 相似度最大的一个 text embedding,用 text decoder 解码

实验结果

定量结果

zero-shot captioning 的结果如下。我们主要看下各 decoding 方式的对比。PD 的结果当然是最好的,NND 相当于是 PD 的 argmax hard 版本,比 PD 低不少,但也还行。CLIPRe 按说应该和 NND 差不多,但是没有用到 decoder,稍差一些。VD 也用了 decoder,却是最差的,遥遥落后,也就是说 text/image embedding 并不怎么 align。说明 CLIP 中的 modality 确实是不可忽视的,直接拿 image embedding 用 text-only 数据训的 text decoder 作解码,是完全不可行的。

在这里插入图片描述

可视化

文章附录的最后贴了两个可视化结果,都是 t-SNE 可视化。

第一个是对 10k 个 COCO 数据集中的文本,使用 CLIP text encoder 提取 text embedding,然后 t-SNE 降到二维,进行可视化。可以看到,COCO caption 中的文本确实按照类别聚集在一起的。不过我没看懂这个实验和文章主题有啥关系

在这里插入图片描述

第二个可视化还是有点意思的。取 500 个图文对,提取 image embedding 和 text embedding 进行降维可视化。图 (a)(b) 可见,image/text embedding 确实是分得很开的,这就是 modality gap 现象,和文章里的结果一致。再看图 © 发现 PD 的解码方式确实给力,经过映射的的 projected embedding 能和 text embedding 分布在一起了。再看图 (d),确实 projected embedding 和人类标注对应 5 个 text 的 embedding 很接近。CLIPRe 的结果也很接近,但是 PD 比 CLIPRe 更位于 5 个标注的中心。但是文章说能很好地保持视觉信息,这个从可视化中没怎么看出来。

在这里插入图片描述

总结

文章提出的 Projection Decoding 的方式来弥合 CLIP text/image embedding 之间的 modality gap 还是很有意思的。可能也能做图像的生成?现在 SD 都是拿 CLIP text encoder 来做文本引导,这篇看下来直接拿 image embedding 做应该是不行了,但可能拿 PD 做个映射,也能有结果?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

新版Spring Security6.2案例 - Basic HTTP Authentication

前言: 书接上文,翻译官网Authentication的Username/Password这页,接下来继续翻译basic的这页,因为官网说的都是原理性的,这边一个小案例关于basic http authentication。 Basic Authentication 本节介绍 HTTP 基本身…

项目总结-自主HTTP实现

终于是写完了,花费了2周时间,一点一点看,还没有扩展,但是基本功能是已经实现了。利用的是Tcp为网络链接,在其上面又写了http的壳。没有使用epoll,多路转接难度比较高,以后有机会再写&#xff0c…

【程序人生】还记得当初自己为什么选择计算机?

✏️ 初识计算机: 还记得人生中第一次接触计算机编程是在高中,第一门编程语言是Python(很可惜由于条件限制的原因,当时没能坚持学下去......现在想来有点后悔,没能坚持,唉......)。但是&#xf…

快速上手linux | 一文秒懂Linux各种常用目录命令(上)

🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 一 、命令提示符和命令的基本格式1.1 如何查看主机名称及修改 二、命令基本格式2.1 命令格式示例2.2 参数的作用…

电商类app如何进行软件测试?有必要进行第三方软件测试吗?

电商类app在开发过程中,软件测试是一个非常重要的环节。通过软件测试,可以确保app在发布和使用过程中的稳定性和安全性。那么,电商类app究竟如何进行软件测试?是否有必要进行第三方软件测试? 一、电商类app如何进行软件测试?   1. 内部…

【Linux】多线程编程

目录 1. 线程基础知识 2. 线程创建 3. 线程ID(TID) 4. 线程终止 5. 线程取消 6. 线程等待 7. 线程分离 8. 线程互斥 8.1 初始化互斥量 8.2 销毁互斥量 8.3 互斥量加锁和解锁 9. 可重入和线程安全 10. 线程同步之条件变量 10.1 初始化条件变…

Collecting Application Engine Performance Data 收集应用程序引擎性能数据

You can collect performance data of any specific SQL action of an Application Engine program to address any performance issue. 您可以收集应用程序引擎程序的任何特定SQL操作的性能数据,以解决任何性能问题。 You can collect performance data of the S…

IDEA中工具条中的debug按钮不能用了显示灰色

IDEA中工具条中的debug按钮不能用了显示灰色 1. 问题描述 IDEA上的DEBUG按钮突然变成了灰色: 2. 解决办法 一通搜索,终于找到解决办法 点击 File -> Project Structure如下图操作 3. 重启,解决 4. 参考 https://www.cnblogs.com…

【代码随想录】刷题笔记Day35

前言 日常学习,抵触心理5%;毫无指示的干活,抵触心理95% 122. 买卖股票的最佳时机 II - 力扣(LeetCode) 把整体利润拆分为每次利润,只要积上涨的就可以,so easy class Solution { public:int …

C++共享和保护——(2)生存期

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 生命如同寓言,其价值不在于…

lv12 uboot概述即SD卡制作

1 开发板启动过程 BL0环境初始化一下 查看拨码开关 BL0把SD卡里的内容复制到内存里面运行,因为直接在SD(uboot)里是无法运行的,属于外设。 uboot开始运行,初始化软硬件环境 把外存里的rootf、dtb、linux搬到内存&a…

xtu oj 1194 Recipient

题目描述 快递小哥每天都辛苦的送快递,今天他需要送N份快递给N个收件人,第i份快递需要送给第i个收件人。 请问其中发生恰好K个送错了的情况数是多少? 输入 存在多样例。 每行输入两个整数N和K,1≤N≤1000,0≤K≤N。 如果两个都…

SQL必会的常用函数

目录 条件函数 if IF(条件表达式,值1,值2) 如果条件表达式为True,返回值1,为False,返回值2. 返回值可以是任何值,比如:数值,文本,日期,空值,NULL,数学表达式&#xff…

Github入门

简介 github是一个基于git的代码仓库,可以通过git来上传和下载代码。国内类似的有gitee。 开源项目一般会申明开源协议。我们可以基于可商用的代码开发我们自己的项目,以期进行快速开发。 一般情况下gitee上的项目基本都够我们使用了。 git基础 Git…

Java笔记草稿——已完成

导航: 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/黑马旅游/谷粒商城/学成在线设计模式面试题汇总性能调优/架构设计源码-CSDN博客 推荐学习视频: 黑马程序员全套Java教程_哔哩哔哩 尚硅谷Java入门视频教程_哔哩哔哩 目录 零…

SOLIDWORKS CSWE认证考试报名

​ SOLIDWORKS CSWE是高级别的SOLIDWORKS认证,是一项充满挑战性的艰巨任务。CSWE测试不是简单注册就可以的,是要有一定资格才能参加考试,您首先需要获得CSWP证书,然后还得通过5个CSWPA系列主题考试中的至少4个主题(钣金…

七天搞定软件测试,这一篇教程就够了,学完最少能拿13k

前言 在软件开发的世界中,软件测试是不可或缺的一部分。它是确保软件质量、功能完整性和用户满意度的关键环节。本文小编将为大家介绍各类软件测试的奥秘,并提供入门级的指导和见解。 本文内容概要: 软件测试是什么?黑盒测试vs…

2023-12-13 VsCode + CMake + Qt环境搭建

点击 <C 语言编程核心突破> 快速C语言入门 VsCode CMake Qt环境搭建 前言一、前期准备二、具体设置总结 前言 要解决问题: 最近研究 Qt, 使用 qtcreator, 发现在搭建 UI 界面时候很方便, 但到编码和调试就比较有问题了. 想到的思路: 用 VSCode 进行编码及调试. 其它…

基于SSM实现的精品课程网站

一、系统架构 前端&#xff1a;jsp | js | css | jquery | bootstrap 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.7 | mysql | maven | tomcat 二、代码及数据库 三、功能介绍 01. 登录页 02. web端-首页 03. web端-视频教程 04. web端-资料…

Flutter在Android Studio上创建项目与构建模式

一、安装插件 1、前提条件&#xff0c;安装配置好Android Studio环境 2、安装Flutter和Dart插件 Linux或者Windows平台&#xff1a; 1&#xff09;、打开File > Settings。 2&#xff09;、在左侧列表中&#xff0c;选择"Plugins"右侧上方面板选中 "Market…