VU

关注公众号,发现CV技术之美

本文分享论文『Prompting Visual-Language Models for Efficient Video Understanding』,用 CLIP 做多个视频任务!上交&牛津提出基于 Prompt 将CLIP 拓展到多个视频任务,在 open-set 场景中效果极佳!

详细信息如下:

  • 论文链接:https://arxiv.org/abs/2112.04478

  • 项目链接:https://github.com/ju-chen/Efficient-Prompt

导言:

视觉语言预训练在从大型web数据中学习联合视觉文本表示方面显示出巨大的成功,证明了 “Zero-Shot” 泛化的卓越能力。本文提出了一种简单的方法来有效地将一个预训练的视觉语言模型利用最少的训练来适应视频理解新任务。具体而言,作者提出优化一些随机向量,称为“连续提示向量(continuous prompt vectors)”,将新任务转换为与预训练目标相同的格式。

此外,为了弥补静态图像和视频之间的差距,时间信息是用轻量级Transformer编码的,这些Transformer堆叠在帧视觉特征之上。作者进行了广泛的消融研究,以分析关键部件。在动作识别,动作定位和文本视频检索的9个公共基准上,在closed-set, few-shot, open-set场景中,本文模型实现了现有方法的竞争性或SOTA的性能,并且训练了明显更少的参数。

      01      

Motivation

尽管计算机视觉的研究主要集中在解决特定任务上,但人类感知的目标始终是学习通用视觉表示,该视觉表示可以以最小的微调解决各种问题。为了实现这一目标,最近在训练视觉语言模型方面的工作显示出不错的进展。例如,CLIP和ALIGN通过简单的噪声对比学习,来学习图像和文本的联合表示,极大地受益于文本描述中的丰富信息,例如动作、对象、人-对象交互和对象-对象关系。

因此,这些视觉语言模型已经在各种图像分类任务中展示了不错的 “Zero-Shot” 泛化性能。重要的一点是,这些数据可以在网上大规模的爬取,不需要昂贵的手工标注。因此,有理由相信,随着计算量的增长,将收集到更大的数据集,并在不久的将来训练出更强大的模型。

基于这样的背景,自然会出现一个问题: 我们如何才能最好地利用这些强大的视觉语言模型中的能力,并有效地使其适应以解决感兴趣的特定新的视觉任务?一种可能的解决方案是在考虑的下游任务上加上图像编码器,然而,由于每个下游任务都需要保存自己的一组参数,数百个单独任务就需要数百个模型。

更成问题的是,丢弃文本编码器会失去模型 “zero-shot” 泛化的能力,因此所得模型只能适用于一组预定类别。在CLIP中,给定适当设计的 “提示”,该模型能够处理各种下游任务,其中分类由文本编码器动态生成,来自类别名称或其他自由形式的文本。这里的提示是手工制作的填空模板,以便于分类生成,因此下游视觉任务可以与预训练目标的格式相同,从而有效地缩小预训练和下游任务之间的差距。剩下的一个问题是,这种手工制作的提示需要大量的专家知识和劳动力,限制了其用于有效的任务适应

在本文中,作者继续以提示学习为基础,目的是探索一种有效的方法来适应新任务的视觉语言模型。作者通过在文本输入中添加随机向量序列 (称为 “连续提示向量”) 来实现一个简单的想法。这些提示向量完全由自由参数组成,这些参数不对应于任何真实的具体单词,并且文本编码器的后续层将参加优化这些向量,就好像它们是生成分类或嵌入的 “虚拟token” 序列一样。尽管文本编码器的权重保持冻结,但梯度会通过它向后传播,以优化可训练的提示向量。因此,视觉主干网络能够执行各种视频理解任务,每个任务的可训练参数数量最少,即只有几个提示向量。

      02      

方法

本文的框架如上图所示,作者的目标是有效地引导基于图像的时间语言模型来处理新的下游任务,这个过程称之为模型适应(model adaptation)

2.1. Visual-Language Model: CLIP

给定一个采样batch中的N个对 (图像,文本),分别使用两个编码器计算图像和文本的特征嵌入,并在所有N个可能的 (图像,文本) 对之间计算密集余弦相似矩阵。训练目标是通过最大化N个正确的 (图像,文本) 关联对之间的相似性,同时通过对称的交叉熵最小化N × (N-1) 个不正确对的相似性,共同优化图像和文本编码器密集矩阵上的熵,即噪声对比学习。

输入图像被分成patch,然后转换成“视觉token”; 输入文本通过可训练的look-up table被转换成“文本token”。

经过训练后,CLIP可以部署用于开放词汇上的图像分类任务,视觉分类句子是从文本编码器 () 生成的。例如,要将图像分类为cat或dog,可以将视觉分类句子生成为:

“this is a photo of [·]” 是手工设计的提示模板,已证明对图像分类有效。

尽管在Zero-Shot图像分类上取得了巨大的成功,CLIP也被证明对手工制作的提示模板很敏感,显然对其有效适应新的下游任务提出了限制,在这些任务中,专家知识可能很难浓缩。因此,在这里,作者考虑自动化的提示设计,探索有效的方法来适应新的下游视频相关任务的预训练的视觉语言模型。

2.2. Prompting CLIP for Video Understanding

2.2.1 Problem Scenario

给定由训练集和验证集组成的数据集,。视频的范围可以从几秒 (识别和检索) 到几分钟 (定位)。对于动作识别和定位任务,是一个类别单词;对于检索任务,是一个句子。

在closed-set方案中,训练和验证的动作类别是相同的,即; 而在open-set方案中,训练和验证的动作类别是不相交的,即。

2.2.2 Model Adaptation by Learning Prompts

这里的目标是引导预训练的CLIP模型以最少的训练来执行各种视频任务。作者通过在文本token中添加连续随机向量 (“提示向量”) 序列来实现有效的模型适应。在训练过程中,CLIP的图像和文本编码器都被冻结,梯度将流经文本编码器,仅更新提示向量。最终,这些学习的向量最终构造了文本编码器可以理解的 “虚拟” 提示模板,并生成所需的分类或查询嵌入。

Action Recognition

动作识别是对视频的动作进行分类。为了生成分类文本,作者通过将标记化动作类别名称输入预训练文本编码器()来构建“虚拟”提示模板,如下所示:

其中,表示第i个提示向量,由可学习的参数组成,D是向量维数。指的是生成的用于 “archery” 动作的分类句子 。这里,提示向量对于所有动作类别都是共享的。

Action Localisation

动作定位考虑对未修剪视频中的动作进行定位和分类。作者利用两阶段范式 :首先检测潜在的类不可知的动作proposal,然后对这些检测到的proposal进行动作分类。

Text-Video Retrieval

文本视频检索考虑联合学习视频及其相应的文本描述之间的视觉和文本嵌入。与动作识别相反,视频片段被动作类别粗略地标记,视频检索中的文本描述包含更多的细节,通常是一个句子。在这里,作者同样对整个句子进行标记化,并使用可学习的提示向量将标记化结果提供给文本编码器,以生成每个句子的查询嵌入。

2.2.3 Temporal Modeling

对于预训练,CLIP完全依赖图像-文本对。一方面,用于训练的 (图像,文本) 数据可以很容易地从网络上抓取,这使得能够在给定的计算约束下学习更丰富的内容; 但是,另一方面,它忽略了视觉场景的时间成分。因此,作者通过添加一个简单的时间建模模块来弥补图像与视频之间的差距。

具体而言,作者将CLIP图像编码器升级为视频编码器,方法是在冻结图像编码器的逐帧特征上附加来Transformer:

其中是指时间建模模块,它是一个多层Transformer编码器。为了表示时间顺序,作者还将可学习的时间位置编码添加到图像特征上。表示T帧的密集特征嵌入。

2.2.4 Training Loss

给定一个batch的 (视频,文本) 对,视觉流最终以密集的逐帧特征嵌入表示; 而对于文本流,取决于所考虑的下游任务,它以一组动作分类句子或文本查询嵌入表示。

对于动作识别和文本视频检索,作者通过对密集特征进行平均池化来进一步计算视频片段级别的特征:

对于动作定位,作者在每个检测到的动作proposal中采用密集特征的平均池化,以获得proposal级特征。在训练过程中,作者共同优化文本提示向量和时间建模模块,使得视频特征及其配对的分类或文本查询嵌入获得最高的相似性得分。这是通过简单的NCE损失实现的:

      03      

实验

3.1. Action Recognition

3.1.1 Closed-set Action Recognition

上表展示了在两个数据集上close-set动作识别的消融实验结果。

上表展示了本文方法在close-set动作识别上和SOTA结果的对比结果。

3.1.2 Few-shot Action Recognition

上表展示了本文方法在Few-shot动作识别的上的实验结果。

3.1.3 Open-set Action Recognition

上表展示了本文方法在Open-set动作识别上的实验结果。

3.2. Action Localisation

3.2.1 Closed-set Action Localisation

上表展示了本文方法在Closed-set Action Localisation任务上和SOTA方法的对比。

3.2.2 Open-set Action Localisation

上表展示了本文方法在Open-set Action Localisation任务上的实验结果。

3.3. Text-Video Retrieval

上表展示了本文方法在视频-文本检索上的实验结果。

      04      

总结

本文提出了用基于CLIP来做Action Recognition、Text-Video Retrieval、Action Localisation三个任务。对于前两个任务,处理方式和ActionCLIP和CLIP4Clip差不多,对于第三个任务作者采用两步的方式,首先把所有的片段proposal给提取出来,然后比较每个proposal和query 文本的相似度,从而达到检索的目的。此外,为了捕获视频的时序信息,作者还在Image Encoder上面加了一个Temporal Encoder。在少样本和开放场景中,本文的方法在所有任务中的表现都明显优于现有方法,有时甚至超过10%。

▊ 作者简介

研究领域:FightingCV公众号运营者,研究方向为多模态内容理解,专注于解决视觉模态和语言模态相结合的任务,促进Vision-Language模型的实地应用。

知乎/公众号:FightingCV

END

欢迎加入「视频理解交流群

用CLIP做多个视频任务!上交牛津提出基于Prompt将CLIP拓展到多个视频任务,在open-set场景中效果极佳!...相关推荐

  1. Facebook AI牛津提出带“轨迹注意力”的Video Transformer,在视频动作识别任务中性能SOTA!...

    关注公众号,发现CV技术之美 ▊ 写在前面 在视频Transformer中,时间维度通常与两个空间维度(W和H)的处理方式相同.然而,在对象或摄影机可以移动的场景中,在第t帧中的一个位置处的物体可能与 ...

  2. 国防科大提出基于可变形三维卷积(D3Dnet)的视频超分辨,代码已开源

    视频是具有时间连续性的图像集合,其中每帧图像的上下文信息(空域信息)与不同帧之间的互补信息(时域信息)都有助于提升视频超分辨的性能. 近日,来自国防科技大学的学者提出基于可变形三维卷积的视频超分辨网络 ...

  3. 国防科大提出基于可变形三维卷积(D3DNET)的视频超分辨

    视频是具有时间连续性的图像集合,其中每帧图像的上下文信息(空域信息)与不同帧之间的互补信息(时域信息)都有助于提升视频超分辨的性能. 近日,来自国防科技大学的学者提出基于可变形三维卷积的视频超分辨网络 ...

  4. 最简单的基于FFmpeg的移动端例子:IOS 视频转码器

    ===================================================== 最简单的基于FFmpeg的移动端例子系列文章列表: 最简单的基于FFmpeg的移动端例子:A ...

  5. 最简单的基于FFmpeg的移动端例子:IOS 视频解码器

    ===================================================== 最简单的基于FFmpeg的移动端例子系列文章列表: 最简单的基于FFmpeg的移动端例子:A ...

  6. 最简单的基于FFmpeg的移动端例子:Android 视频转码器

    ===================================================== 最简单的基于FFmpeg的移动端例子系列文章列表: 最简单的基于FFmpeg的移动端例子:A ...

  7. 最简单的基于FFmpeg的移动端例子:Android 视频解码器-单个库版

    ===================================================== 最简单的基于FFmpeg的移动端例子系列文章列表: 最简单的基于FFmpeg的移动端例子:A ...

  8. FFmpeg之视频封装格式、流媒体协议、视频编解码协议和传输流格式、时间戳和时间基、视频像素数据

    通用视频分析工具:Mediainfo.Elecard StreamEye(视频编码分析工具); 视频封装格式: ********************MP4****************** MP ...

  9. 谷歌最新发布两大视频生成工作:720p高清+长镜头,网友:对短视频行业冲击太大......

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 梦晨 Pine 发自 凹非寺 转载自:量子位(QbitAI) 内容 ...

最新文章

  1. 史上最坑爹的代码!个个让人崩溃!
  2. Nginx-ingress部署及使用
  3. mysql5.6免安装乱码_mysql5.6乱码问题的几个注意
  4. 只腐蚀毛刺 腐蚀算法_去毛刺工艺大全,一次性列举了14种方法,非常全面
  5. java编码转换报错_Java中BeanUtils的日期转换 代码报错 怎么解决
  6. 一叶知秋:“安全“的野指针、 static函数、成员函数、this 指针、gcc编译器、name mangling
  7. redis key失效的事件_Redis常见、常用的知识点
  8. 真机调试 —— An unknown error occurred.
  9. 标签中的onclick调用js方法传递多个参数的解决方案
  10. 【数组】牛客网:调整数组顺序使奇数位于偶数前面(一)
  11. 传染病模型系统动力学VENSIM模拟
  12. 搭建简单的企业网站,华为云速建站和阿里建站哪个好?
  13. c语言绝对值函数作用,C语言中有没有求绝对值的函数啊?谢谢!
  14. 数据仓库建模指南视频教程|数据仓库视频教程
  15. MapReduce实现矩阵乘法的一些总结
  16. 搭建室内四轴无人机(一)
  17. PHP 一一 微信公众号开发(二次开发)
  18. 关于linux的进程中的各个线程cpu占用情况的分析和查看
  19. 【要闻】如何基于K8s管理1600个微服务?某数字化银行秘诀公开
  20. 中国 IM 企业的新机会?揭秘融云全球通信云网络背后的技术 | 对话 WICC

热门文章

  1. HMC(Hamiltonian Monte Carlo抽样算法详细介绍)
  2. 哈夫曼编码(Huffman Coding)
  3. MinGW 编译libwebsockets
  4. B-Tree及其建立过程
  5. Golang笔记——json介绍
  6. 设计模式学习笔记——外观(Facade)模式
  7. 判断是否为质数的超级优化 C++语言(超详细)
  8. [git 基础] 生成patch 和 打patch 的实例
  9. css 对话框阴影,科技常识:css实现不规则图形的阴影(如对话框)
  10. vue监听字符串长度_Vue 的 computed 和 watch 的区别