【大模型系列】Video-LaVIT(2024.06)

news2024/9/17 8:27:24

在这里插入图片描述

  • Paper:https://arxiv.org/abs/2402.03161
  • Github:https://video-lavit.github.io/
  • Title:Video-LaVIT: Unified Video-Language Pre-training with Decoupled Visual-Motional Tokenization
  • Author:Yang Jin, 北大,快手

文章目录

  • 1 Video-LaViT总结(省流版)
    • 1.1 Video-LaViT是什么?
    • 1.2 Video-LaViT能干什么?
      • 1.2.1 图像/视频问答
      • 1.2.2 文生图
      • 1.2.3 文生视频
      • 1.2.4 图生视频
  • 2 Motivation
  • 3 Method
    • 3.1 关键帧与运动信息的获取与motion encoder
    • 3.2 video detokenizer
  • 4 训练细节
  • 参考资料

1 Video-LaViT总结(省流版)

1.1 Video-LaViT是什么?

Video-LaViT是LaViT这篇工作的拓展,详见上一篇博客【大模型系列】Language-Vision Transformer(LaVIT, ICLR2024)
,作者同样来自于北大和快手。思路与LaViT类似,通过将视频分解为交替的关键帧和运动向量,关键帧采用LaViT中的Image tokenizer,运动向量则设计了一个Motion tokenizer来进行编码。然后通过[IMG]、[/IMG]和[MOV]、[/MOV]来区分。

1.2 Video-LaViT能干什么?

1.2.1 图像/视频问答

Video-LaViT可以理解图像和视频内容,并根据问题给出答案。
在这里插入图片描述

1.2.2 文生图

根据给定文本,生成对应的图片,毕竟基于LaViT开发的。
在这里插入图片描述

1.2.3 文生视频

根据给定文本,生成对应的视频。

"Sailboat sailing on a sunny day in a mountain lake""A steaming cup of coffee with mountains in the background. Resting during road trip"

1.2.4 图生视频

根据给定图片,生成对应的视频。

2 Motivation

当前一些video tokenization工作的总结:

  • 流行的方式是先将原始视频下采样为一系列的frames,再使用ViT-encoder进行处理,这种方式忽略了帧之间的时间动态信息。
  • VideoPoet(2023):3D video tokenizer,使用long token sequence,导致只能处理短视频,长视频资源消耗太大。

解决上面问题的方式:

  • 视频中存在大量的冗余信息,将视频分解为交替的关键帧(keyframe&motion vectors)【其实就是视频编码的思路】
    分解之后的组合可以用更少的token来表示视频的时间动态;
  • 复用现成的纯图像LLM所获得的视觉知识,而只需专注于对是时间信息(temporal information)进行建模。

3 Method

  • video tokenizer:将视频转化为离散的tokens,其中关键帧keyframe使用现成的image tokenizer(ViT-G/14 of EVA-CLIP);
  • motion encoder:用于将temporal motion也转化为离散的token;
  • video detokenizer:将LLM生成的video token恢复成视频。
    在这里插入图片描述

3.1 关键帧与运动信息的获取与motion encoder

基于MPEG-4压缩技术来获取关键帧和运动信息。视频中的I帧就是关键帧。通常视频帧被分成16x16个宏块,运动信息motion vectors是通过寻找相邻帧之间的最佳就宏块对应关系来确定的。
m ⃗ ( p , q ) = a r g ⁡ min ⁡ i , j ∣ ∣ I t ⁢ ( p , q ) − I t − 1 ⁢ ( p − i , q − j ) ∣ ∣ \vec{m}(p, q) = arg⁡\min_{i,j}||I_t⁢(p,q)−I_{t-1}⁢(p−i,q−j)|| m (p,q)=argi,jmin∣∣It(p,q)It1(pi,qj)∣∣
其中I(p, q)表示宏块在(p, q)的像素值,(i, j)是两个宏块中心的偏移量,于是视频可以分解为关键帧(HxWx3)和后续的T帧的运动矢量(Tx(H/16)x(W/16)x2)。

这段看不懂没关系,后面实际是采用ffmpeg来提取视频的关键帧I帧和运动向量P帧。
在这里插入图片描述
Source: I帧、P帧、B帧、GOP、IDR 和PTS, DTS之间的关系

运动矢量的tokenization与LaVIT的方式类似,先通过一个spatiotemporal encoder得到latent embedding,再与codebook中的向量计算L2距离,选择最近的codebook中的向量代替之,这就是所谓的Motion quantization,得到的结果就是motion vector的token,可参与后续的训练。

整个motion tokenizer通过一个解码器,来将motion token恢复,最后计算重构损失来更新参数。

3.2 video detokenizer

  • key frame关键帧:de-noising U-Net,与LaVIT类似,使用重建的visual features作为条件去控制生成细节
    在这里插入图片描述

video detokenizer依赖于motion vector的引导,来生成关键帧之后T帧的恢复。有2种不同的motion conditon forms:
1、给定motion vector:(Tx(H/16)x(W/16)x2),采用最近邻插值的方式,使其与UNet的输入相匹配;
2、关键帧key frame的latent state I(VAE产生)重复T以提供visual condition;
3、motion vector、key frame latent I和noisy video frame按通道拼接,作为video dekoenizer的输入;
4、使用3DUnet中的spatial temporal cross-attention block引入motion feature embedding来增强生成效果;

为了缓解单独解码带来的不同clip之间的细粒度视觉细节不一致,在解码关键帧时加入了明确的噪声约束。通过反转DDIM采样将最新一帧从先前生成的状态转化为中间的噪声状态。

4 训练细节

训练说明:

  • [MOV][/MOV]用于区分运动模态
  • 交换多模态数据对的顺序:[video⁢(image),text]和 [text,video⁢(image)]
  • 以自回归的形式进行训练(在上一个预测的基础上预测下一个)

训练分为3个阶段:
Step1: 训练tokenizer和detokenizer,该阶段只需要视频数据,无需对应的captions,以生成视频的tokens,

  • WebVid-10M,包含10M视频-文本对,含有水印;
  • 训练detokenizer的时候,使用InterVid-14M-aesthetic数据的子集来去除生成视频中的水印,并提升生成视频的美感;

Step2: LLM训练,学习不同模态之间数据的关联;

  • 混合视频、图像和文本数据:
    • WebVid-10M
    • Conceptual Caption 93M
    • SBU
    • BLIP-Capfit
    • RedPajama英文语料库:用于保留LLM原本的语言理解能力

Step3: Instruction tuning:以适应不同的任务。

  • LLaVA v1.5的665k图像文本指令数据集
  • Video-ChatGPT的100k视频-文本指令数据集

参考资料

[1] I帧、P帧、B帧、GOP、IDR 和PTS, DTS之间的关系
[2] 【大模型系列】Language-Vision Transformer(LaVIT, ICLR2024)

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

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

相关文章

[Office] Word 特殊字符

0 打开“特殊字符集” 依次选择:Insert -> Symbol -> More Symbol 1 带圈编号 字体Font选择Wingdings

嵌入式Linux:符号链接(软链接)和硬链接

目录 1、符号链接(软链接) 2、硬链接 3、link()函数 4、symlink()函数 5、readlink()函数 在 Linux 系统中,符号链接(软链接)和硬链接是两种创建文件链接的方法。理解它们的区别和使用场景对于文件系统的管理非常…

错误:请查看是否设备未加入到证书列表或者确认证书类型是否匹配

这个问题实际上网上都有解法,但是可能没有那么的清楚,大家在各种问,我既然搞定了,就分享给大家吧网上解法: 开发调试需要另外创建开发证书和描述文件,描述文件同时绑定开发设备解读: 实际上这句…

举例详细学习和分析后端业务逻辑代码开发思路

在此之前,先来补充一下上一篇文章的一点内容:上一篇文章点击此处详看 对于画线的这句话,来详细解释一下吧! 这里面说,对于service服务层,如果我们所需要实现的业务比较简单的话可以直接在...service接口里面…

Spring事件监听的核心机制及其原理

Spring事件监听 Spring的事件监听机制主要由三大核心部分组成即事件,监听器和播放器三部分组成。 事件的发布是通过spring当中的pulishEvent方法实现。事件监听实现是通过监听器监听了对应事件的监听器来实现的。 事件监听的作用:为系统业务之间进行一…

一种可以灵活、高速测试半导体测试中使用的老化板的系统

本文介绍了一种可以灵活、高速测试半导体测试中使用的老化板的系统。 定义:Burn-in Board Testing System是一种通过模拟极端使用条件(如高温、高压、高湿等)来加速半导体器件老化,并检测其潜在失效的测试系统。目的: …

如何使用 Puppeteer 绕过 Akamai

摘要: 本文深入探讨了在面对Akamai强大防护下的网页抓取挑战时,如何运用Puppeteer这一强大的Node.js库,通过模拟真实用户行为、动态请求处理等策略,高效且隐蔽地收集数据。我们将一步步揭开Puppeteer绕过Akamai的神秘面纱&#x…

红酒标签设计:艺术与品味的结合

在红酒的世界里,每一瓶酒都如同一位优雅的舞者,在酒柜的舞台上静静诉说着自己的故事。而红酒的标签,则是这位舞者身上较华丽的舞裙,它不仅是红酒的身份证明,更是艺术与品味的很好结合。今天,我们就来聊聊红…

计网 - 传统的类网络划分 vs 无类别域间路由CIDR

文章目录 A、B、C 类网络的基本概念和历史背景A 类网络B 类网络C 类网络实际应用场景 CIDR(无类别域间路由)基本概念CIDR 的表示方法计算 CIDR 网络段的步骤步骤 1:确定网络掩码步骤 2:计算网络地址步骤 3:计算广播地址…

二刷代码随想录训练营Day 11| 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素、总结

1.逆波兰表达式 题目链接/文章讲解/视频讲解&#xff1a;代码随想录 代码&#xff1a; class Solution { public:int evalRPN(vector<string>& tokens) {stack<long long> st;for(int i 0; i < tokens.size(); i){if(tokens[i] "" || tokens[i…

横看成岭侧成峰,山的叫法何其多。丘 陵 峰 岭 峦 岑 峭 嶂 岳 屺 岵 峡 岬 冈 崮 麓 顶 梁 包 坡 尖

文章目录 引言顶、梁、包、坡、尖山脚叫麓较低而平的山脊叫冈(岗)四周陡峭顶上较平的山叫崮(g)两山之间,有水为峡两山之间,无水为岬(jiǎ)没有草木的山叫屺(qǐ)多草木的山叫岵(h)高而险的山叫嶂高而大的山叫岳高而陡的山叫峭(qio)小而高的山叫岑小而尖的山叫峦高…

在亚马逊云科技AWS上开发大模型应用服务并设计提示词工程

项目简介&#xff1a; 接下来&#xff0c;小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。 本次介绍的是如何利用亚…

昇思25天学习打卡营第6天|基础知识-函数式自动微分

目录 环境 函数与计算图 微分函数与梯度计算 Stop Gradient Auxiliary data 神经网络梯度计算 学习打卡时间 神经网络的训练主要使用反向传播算法&#xff0c;模型预测值&#xff08;logits&#xff09;与正确标签&#xff08;label&#xff09;送入损失函数&#xff08…

【C++红黑树应用】模拟实现STL中的map与set

目录 &#x1f680; 前言一&#xff1a; &#x1f525; 红黑树的修改二&#xff1a; &#x1f525; 红黑树的迭代器 三&#xff1a; &#x1f525; perator() 与 operator--() 四&#xff1a; &#x1f525; 红黑树相关接口的改造✨ 4.1 Find 函数的改造✨ 4.2 Insert 函数的改…

推荐珍藏已久的 3 款优质电脑软件,每一款都值得拥有

Advanced Find and Replace Advanced Find and Replace是一款功能强大的文本查找和替换工具&#xff0c;能够高效地在多个文档中进行复杂的内容操作。它支持通配符和正则表达式&#xff0c;使得用户可以精确地定位和替换特定的文本内容。该软件不仅适用于普通文本文件&#xff…

防洪评价报告编制方法与水流数学模型建模技术

原文链接&#xff1a;防洪评价报告编制方法与水流数学模型建模技术https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247610610&idx2&sn432d30cb40ec36160d635603c7f22c96&chksmfa827115cdf5f803ddcaa03a21e3721d6949d6a336062bb38170e3f9d5bd4d391cc36cc…

【速记!】3DMAX的50个常用快捷键

分享一组基本的3dMax动画和建模快捷键&#xff0c;以用于你的建筑项目。 3dMax是创建三维模型和动画的设计师中流行的软件。它用于建筑、电子游戏或其他需要高清晰度和高精度图形的视觉项目&#xff0c;是视觉艺术家寻找新工具的理想伴侣&#xff0c;这些工具可以帮助他们详细…

Vue3实战案例 知识点全面 推荐收藏 超详细 及附知识点解读

最近经常用到vue中的一些常用知识点&#xff0c;打算系统性的对 vue3 知识点进行总结&#xff0c;方便自己查看&#xff0c;另外也供正在学习 vue3 的同学参考&#xff0c;本案例基本包含 Vue3所有的基本知识点&#xff0c;欢迎参考&#xff0c;有问题评论区留言&#xff0c;谢…

Linux基本功能

Linux 操作系统&#xff0c;作为开源社区的明星之一&#xff0c;以其稳定性、安全性和灵活性在全球范围内得到广泛应用。 1. 多用户和多任务支持 Linux 是一个真正的多用户系统&#xff0c;允许多个用户同时登录并在同一时间内运行多个程序。每个用户拥有自己的账户和权限&…

每日OJ_牛客HJ86 求最大连续bit数

目录 牛客HJ86 求最大连续bit数 解析代码 牛客HJ86 求最大连续bit数 求最大连续bit数_牛客题霸_牛客网 解析代码 根据位运算&#xff0c;获取每一位的二进制值。获取第i位的值&#xff1a; (n >> i) & 1或者 n & (1 << i)。如果1连续&#xff0c;则计数…