当前位置: 首页 > news >正文

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

在这里插入图片描述

  • 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)

相关文章:

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

Paper:https://arxiv.org/abs/2402.03161Github:https://video-lavit.github.io/Title:Video-LaVIT: Unified Video-Language Pre-training with Decoupled Visual-Motional TokenizationAuthor:Yang Jin, 北大&#x…...

【总结】nacos作为注册中心-应用启动失败:NacosDiscoveryProperties{serverAddr=‘127.0.0.1:8848‘……

问题现象 启动springboot应用时报错,能够读取到nacos配置,但是使用nacos作为注册中心,应用注册到nacos失败。 应用配置bootstrap.properties如下: # 应用编码,安装时替换变量 spring.application.namedata-center #…...

C语言——数组和排序

C语言——数组和排序 数组数组的概念数组的初始化数组的特点 排序选择排序冒泡排序插入排序 二分查找 数组 数组的概念 数组是一组数据 ; 数组是一组相同类型的数据或变量的集合 ; 应用场景: 用于批量的处理多个数据 ; 语法&…...

QEMU 新增QMPHMP指令【原文阅读】

文章目录 0x0 QEMU原文0x10x11 How to write monitor commands0x12 Overview0x13 Testing 0x20x21 Writing a simple command: hello-world0x22 Arguments 0x30x31 Implementing the HMP command 0x40x41 Writing more complex commands0x42 Modelling data in QAPI0x43 User D…...

【Linux】全志Tina配置屏幕时钟的方法

一、文件位置 V:\f1c100s\Evenurs\f1c100s\tina\device\config\chips\c200s\configs\F1C200s\sys_config.fex 二、文件内容 三、介绍 在此处可以修改屏幕的频率,当前为21MHz。 四、总结 注意选择对应的屏幕的参数,sdk所支持的屏幕信息都在此文件夹中…...

探索WebKit的CSS表格布局:打造灵活的网页数据展示

探索WebKit的CSS表格布局:打造灵活的网页数据展示 CSS表格布局是一种在网页上展示数据的强大方式,它允许开发者使用CSS来创建类似于传统HTML表格的布局。WebKit作为许多流行浏览器的渲染引擎,提供了对CSS表格布局的全面支持。本文将深入探讨…...

信号的运算

信号实现运算,首先要明确,电路此时为负反馈电路,当处于深度负反馈时,可直接使用虚短虚断。负反馈相关内容可见:放大电路中的反馈_基极反馈-CSDN博客https://blog.csdn.net/qq_63796876/article/details/140438759 一、…...

Vue3知识点汇总

创建项目 npm init vuelatest // npm create vitelatestVue文件结构 <!-- 开关&#xff1a;经过语法糖的封装&#xff0c;容许在script中书写组合式API --> <!-- setup在beforeCreate钩子之前自动执行 --> <script setup><!-- 不再要求唯一根元素 -->…...

C++设计模式--单例模式

单例模式的学习笔记 单例模式是为了&#xff1a;在整个系统生命周期内&#xff0c;保证一个类只能产生一个实例&#xff0c;确保该类的唯一性 参见链接1&#xff0c;链接2 #include <iostream> #include <mutex>using namespace std;/*懒汉模式&#xff1a;只有在…...

数据驱动未来:构建下一代湖仓一体电商数据分析平台,引领实时商业智能革命

1.1 项目背景 本项目是一个创新的湖仓一体实时电商数据分析平台&#xff0c;旨在为电商平台提供深度的数据洞察和业务分析。技术层面&#xff0c;项目涵盖了从基础架构搭建到大数据技术组件的集成&#xff0c;采用了湖仓一体的设计理念&#xff0c;实现了数据仓库与数据湖的有…...

学习JavaScript第五天

文章目录 1.HTML DOM1.1 表单相关元素① form 元素② 文本输入框类和文本域&#xff08;input 和 textarea&#xff09;③ select 元素 1.2 表格相关元素① table 元素② tableRow 元素&#xff08;tr 元素&#xff09;③ tableCell 元素 &#xff08;td 或 th&#xff09; 1.3…...

pythonGame-实现简单的坦克大战

通过python简单复现坦克大战游戏。 使用到的库函数&#xff1a; import turtle import math import random import time 游戏源码&#xff1a; import turtle import math import random import time# 设置屏幕 screen turtle.Screen() screen.setup(800, 600) screen.tit…...

不太常见的asmnet诊断

asm侦听 [griddb1-[ASM1]-/home/grid]$ srvctl config asm ASM home: <CRS home> Password file: OCR/orapwASM Backup of Password file: OCRDG/orapwASM_backup ASM listener: LISTENER ASM instance count: 3 Cluster ASM listener: ASMNET1LSNR_ASM[rootdb1:/root]# …...

双指针-【3,4,5,6,7,8】

第三题&#xff1a;快乐数 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/happy-number/算法思想&#xff1a; 1.每个…...

react Vant中如何获取步进器的值

在React中使用Vant&#xff08;一个轻量、可靠的移动端Vue组件库&#xff0c;虽然原生是为Vue设计的&#xff0c;但如果你在使用的是React版本的Vant&#xff0c;比如通过某些库或框架桥接Vue组件到React&#xff0c;或者是一个类似命名的React UI库&#xff09;&#xff0c;获…...

Windows下Git Bash乱码问题解决

Windows下Git Bash乱码问题解决 缘起 个人用的电脑是Mac OS&#xff0c;系统和终端编码都是UTF-8&#xff0c;但公司给配发的电脑是Windows&#xff0c;装上Git Bash在使用 git commit -m "中文"时会乱码 解决 确认有以下配置 # 输入 git config --global --lis…...

HTML5 + CSS3

HTML 基础 准备开发环境 1.vscode 使用 新建文件夹 ---> 左键拖入 vscode 中 2.安装插件 扩展 → 搜索插件 → 安装打开网页插件&#xff1a;open in browser汉化菜单插件&#xff1a;Chinese 3.缩放代码字号 放大,缩小&#xff1a;Ctrl 加号&#xff0c;减号 4.设…...

NFTScan | 07.22~07.28 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2024.07.22~ 2024.07.28 NFT Hot News 01/ 数据&#xff1a;NFT 系列 Liberty Cats 地板价突破 70000 MATIC 7 月 22 日&#xff0c;据 Magic Eden 数据&#xff0c;NFT 系列 Liberty C…...

24年第三届钉钉杯大学生大数据挑战赛

...

探索分布式光伏运维系统的组成 需要几步呢?

前言 随着光伏发电的不断发展&#xff0c;对于光伏发电监控系统的需求也日益迫切&#xff0c;“互联网”时代&#xff0c;“互联网”的理念已经转化为科技生产的动力&#xff0c;促进了产业的升级发展&#xff0c;本文结合“互联网”技术提出了一种针对分散光伏发电站运行数据…...

MATLAB CGCS2000高斯投影坐标转经纬度坐标

坐标系转换这边需要用到mapping toolbox 首先根据原始&#xff08;x,y&#xff09;坐标对应的投影坐标系查询EPSG编号 例如这边CGCS2000 / 3-degree Gauss-Kruger CM 123E的编号就是4450 对应的编号可以https://blog.csdn.net/qq_41441896/article/details/104525296在这篇博…...

DeepSeek V2多模态支持真相(官方未公开的API隐藏能力全披露)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;DeepSeek V2多模态支持真相&#xff08;官方未公开的API隐藏能力全披露&#xff09; DeepSeek V2 官方文档明确声明为纯文本大模型&#xff0c;但逆向分析其生产环境 API 流量与响应头后发现&#xff1a;其底…...

《Enterprise Architecture with SAP》—— 从“纸上蓝图”到“场景落地”

上一篇文章&#xff08;《Enterprise Architecture with SAP》— 从“项目思维”到“企业级全局视角”&#xff09;&#xff0c;我们花了不少篇幅把SAP企业架构的“骨架”搭起来了——五大支柱是什么、方法论怎么走、参考内容给什么蓝图、EA在企业里和谁配合干活。用一句话总结…...

CANN HCCL-COMM 通信拓扑感知:16卡训练时为什么 rank3 总是最慢的那张

### CANN HCCL-COMM 通信拓扑感知&#xff1a;16卡训练时为什么 rank3 总是最慢的那张 去年搭了一台 8 卡 Atlas 800 服务器做 LLaMA 预训练&#xff0c;一切顺利。后来集群扩到 3 台共 24 卡&#xff0c;单卡吞吐从 1.2 tokens/s 掉到 0.7。不是线性下降&#xff0c;是断崖式…...

LVGL样式进阶:别再只改颜色了!手把手教你定制lv_switch的动画和lv_btn的按压反馈

LVGL样式进阶&#xff1a;别再只改颜色了&#xff01;手把手教你定制lv_switch的动画和lv_btn的按压反馈 在嵌入式UI开发中&#xff0c;LVGL作为轻量级图形库的代表&#xff0c;其样式系统的灵活性常常被低估。大多数开发者停留在修改背景色、字体颜色等基础操作&#xff0c;却…...

DownGit终极指南:3分钟掌握GitHub精准下载技巧

DownGit终极指南&#xff1a;3分钟掌握GitHub精准下载技巧 【免费下载链接】DownGit github 资源打包下载工具 项目地址: https://gitcode.com/gh_mirrors/dow/DownGit 你是否曾经在GitHub上找到心仪的代码片段&#xff0c;却不得不下载整个庞大的项目仓库&#xff1f;或…...

ESP32连接阿里云物联网平台实战:从设备创建到APP控制,一个教程全搞定(避坑指南)

ESP32连接阿里云物联网平台实战&#xff1a;从设备创建到APP控制全流程解析 在智能硬件产品开发中&#xff0c;物联网平台的选择与集成往往是决定项目成败的关键环节。阿里云物联网平台凭借其稳定的服务、丰富的功能生态和本土化优势&#xff0c;已成为国内物联网开发者的首选。…...

Ollama REST API 深度解析:如何用 HTTP 接口调用模型

系列导读 你现在看到的是《Ollama 本地大模型管理实战:从部署到调优的完整指南》的第 4/10 篇,当前这篇会重点解决:让读者掌握通过 HTTP 接口编程调用 Ollama 模型的核心技能。 上一篇回顾:第 3 篇《模型加载与运行参数调优:从默认到高性能的实战配置》主要聚焦 教会读者…...

浏览器中优雅查看Markdown文件的终极解决方案:Markdown Viewer完全指南

浏览器中优雅查看Markdown文件的终极解决方案&#xff1a;Markdown Viewer完全指南 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer 你是否经常需要查看GitHub上的README文件、技术…...

3种免费方法解锁加密音乐:Unlock-Music让你的音乐重获自由

3种免费方法解锁加密音乐&#xff1a;Unlock-Music让你的音乐重获自由 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: h…...