Valley: Video Assistant with Large Language model Enhanced abilitY

大家好,我是卷了又没卷,薛定谔的卷的AI算法工程师「陈城南」~ 担任某大厂的算法工程师,带来最新的前沿AI知识和工具,包括AI相关技术、ChatGPT、AI绘图等, 欢迎大家交流~。

近期基于LLaMA微调的模型有很多,Alpaca,Vicuna都是基于ChatGPT等数据进行文本场景指令微调,LLaVA也使用图文对数据进行了图文场景多模态能力的扩展(这几个模型往期文章都有涉及,不清楚/感兴趣的可以看)。

而本文提到的Valley则是字节发布的视频场景多模态指令微调LLaMA模型

其中这几个指令微调版本的模型都大差不差,主要还是数据与训练的差异。本文描述Valley当然对标的是其类似模型LLaVA,原文introduction部分翻译修改后如下:

在Valley中,我们遵循 LLaVA 的先预训练然后指令调整的流程,采用一个简单的投影模块作为视频、图像和语言模式之间的桥梁。 我们采用 CLIP (Radford et al., 2021) 的 ViT-L/14 (Dosovitskiy et al., 2021) 作为视觉编码器(与LLaVA一致),然后提出一种时空池化操作来统一视频和图像输入的视觉编码(模型差异点)。 通过更新投影模块进行预训练,以使统一的视觉嵌入与 LLM 保持一致,其中 Stable-Vicuna (Chiang et al., 2023) 由于其多语言能力而成为选择的 LLM。 此外,我们引入了从各种视频任务中收集的多模态指令跟踪数据集,包括视频问答、长描述、随意关系推理和动作识别。 经过指令微调,最终提出了我们的视频理解谷多模态基础模型。 作为人工智能助手,我们预计Valley将在各种视频相关任务中得到广泛的应用,并帮助用户以类似于在现实世界中与人聊天的方式更好地理解和解释复杂的视频。

结合论文内容,我对Valley的贡献作了概括:

  • 模型:基于LLaVA的方法,添加了时空池化模块应对视频(多帧)场景,将LLaVA从单图扩展为多图(动态长度),同时将LLaVA的Vicuna语言模型换为Stable-Vicuna模型。;
  • 数据:搞了多模态的instruction-following数据集,聚焦于视频理解、比较多样的任务(包括multi-short captions,带时间戳的时间性描述、长视频的复杂陈述。同时使用了ChatGPT生成对话人和视频内容的对话,进一步增强数据集的质量和多样性。
  • 开源:LLM时代,开源也是贡献~

Related Work

感兴趣的可以通过 相关工作来了解一下LLM的现状,以下为部分机翻:

现有的方法可以分为两种技术路线,一种是利用LLM作为调度器来调度现有的多模态模型,另一种是基于LLM来训练多模态模型。 前者在接收到用户指令和各个基础模型的功能后,将LLM作为控制器逐步调用相应的模型,并整合各个模型的输出内容生成结果(Wu等,2023;Shen等,2023)。 ,2023;Yang 等人,2023)。 例如,HuggingGPT(Shen et al., 2023)利用ChatGPT根据其功能描述在Hugging Face1中选择合适的模型并总结其执行结果。 后者为法学硕士配备辅助模块,帮助他们通过端到端训练理解多模态内容(Li et al., 2023c; Zhu et al., 2023; Zhu et al., 2023; Zhu et al., 2023; Liu et al., 2023; Su 等人,2023;戴等人,2023)。 例如,LLaVA (Liu et al., 2023) 和 MiniGPT-4 (Zhu et al., 2023) 通过投影层将 LLaMA (Touvron et al., 2023) 与视觉编码器连接起来,赋予其理解图像的能力 。 Video-LLaMA (Zhang et al., 2023) 通过 Q-Former 为 LLaMA (Touvron et al., 2023) 提供视觉和音频信息,赋予其基于视频的对话能力。

方法部分

网络结构

在LLaVA(如上图)基础上进行了扩展,将其单图扩展为多图(视频),如下图:

多帧的处理通过时空池化模块,具体:

  1. 有T个图,每个图的特征为 Vcls + 256 个patch token;

  1. 在patch token上做时间维度的平均,即T个图平均,则剩余特征为 T个Vcls + 256个平均后的patch token,下图为patch token的平均;

  1. 因为patch token的时间平均会损失时间信息(保留空间信息),所以将Vcls token 拼接在patch token后面,最终得到 T+256个视觉Token的输入,下图的V平均就是patch token;

空间tokens:256 patch(平均),时序tokens:T个CLS Token;这两个Token最终会经过映射层(Projection)与Text tokens衔接在一起送给大模型;

指令微调数据收集

作者基于MSRVTT(10k)、VATEX(22k)、AativityNet(10k)、VIOLIN(5.8k)共多个数据集构建了视频中心多模态指令数据,包含3种上下文类型,这些对应的问答对生成通过stable-vicuna生成,如下图

参考LLaVA和VideoChat中生成Prompt的方式,作者也用了上面的3种上下文文本和Stable-Vicuna生成了指令微调数据,如下图。累积42k对话5.8k的问答对,其中对话数据涵盖基础视频内容描述(目标信息等)、时间内容理解。问答数据包含因果推理、字符识别和视频复杂内容理解。

训练

同LLaVA类似的两阶段训练方式,第一阶段通过预训练映射层来进行特征对齐第二阶段微调语言模型映射层

映射层预训练

使用图文对、视频文本对两种数据进行预训练,其中图文对为LLaVA的595k CC3M数据,视频文本对为参考LLaVA过滤方法进行过滤的 702K WebVid2M 数据。两种类型数据的Prompt组织方式一致,均为:

如果输入单个图像,则帧数为1。图像-文本对和视频-文本对构建为单轮对话,使用各种问题询问视频内容,并使用相应的标题进行回答。

微调

不止上面提到的42k对话和5.8k的问答对,为了增强对视觉内容的强调,还从LLaVA中收集了150k的图片指令数据、以及VideoChat收集的11k视频指令。

实验部分

没有什么指标,给了几个case大家感受下性能就行

Limitation

  1. 加入音频信息,构建 音、画、文三种模态可感知的多模态模型;

  2. 提供中文感知能力,构建更多的中文多模态数据来增强模型;

  3. 存在LLM固有的幻觉问题(hallucination problem)需要解决。幻觉问题指大模型的输出是错误的、无意义的、输出与输入是明显不符合的(比如在摘要生成任务上)等情况,详细可参考:

    1. GPT-4的“hallucination”(幻觉)相关对策
    2. 对话大模型中的事实错误:ChatGPT 的缺陷文本任务_问题
    3. Survey of Hallucination in Natural Language Generation arXiv:2202.03629v5

LLaMA模型指令微调 字节跳动多模态视频大模型 Valley 论文详解的更多相关文章

  1. moviepy音视频剪辑:视频剪辑基类VideoClip详解

    ☞ ░ 前往老猿Python博文目录 ░ 一.概述 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>和<moviepy音视频剪辑:moviepy中的剪辑基类Cl ...

  2. 视频直播 object 标签属性详解

    最近在做视频直播这一块的,html5的video不能实现此功能,在网上查找了资料,觉得很有用. 一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标签.也就是OB ...

  3. angularjs指令中scope参数 true、false、{} 的区别详解

    scope 有三个参数 true.false.{} scope 默认是 false,当 scope设置为true时,会从父作用域继承并创建一个新的作用域对象, 按照true .false的反向思维,我 ...

  4. 【转】Android 破解视频App去除广告功能详解及解决办法总结

    Android 破解视频App去除广告功能 作为一个屌丝程序猿也有追剧的时候,但是当打开视频app的时候,那些超长的广告已经让我这个屌丝无法忍受了,作为一个程序猿看视频还要出现广告那就是打我脸,但是我 ...

  5. webrtc视频数据接收端处理流程详解

  6. webrc视频数据发送处理流程详解

  7. 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅

    摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...

  8. 实时监控、直播流、流媒体、视频网站开发方案流媒体服务器搭建及配置详解:使用nginx搭建rtmp直播、rtmp点播、,hls直播服务配置详解

    注意:这里不会讲到nginx流媒体模块如何安装的问题,只研究rtmp,hls直播和录制相关的nginx服务器配置文件的详细用法和说明.可以对照这些命令详解配置nginx -rtmp服务 一.nginx ...

  9. moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解

    ☞ ░ 前往老猿Python博文目录 ░ 一.概述 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>和<moviepy音视频剪辑:moviepy中的剪辑基类Cl ...

  10. --系统编程-网络-tcp客户端服务器编程模型、socket、htons、inet_ntop等各API详解、使用telnet测试基本服务器功能

    PART1 基础知识 1. 字节序 网络字节序是大端字节序(低地址存放更高位的字节), 所以,对于字节序为小端的机器需要收发网络数据的场景,要对这些数据进行字节序转换. 字节序转换函数,常用的有四个: ...

随机推荐

  1. 部署:戴尔iDRAC+Ubuntu 18.04系统安装

    Ubuntu镜像下载链接:http://mirrors.aliyun.com/ubuntu-releases/18.04/ 1.登录戴尔管理口 2.点击虚拟控制台 3.选择镜像 4.挂载镜像 5.选择 ...

  2. 【Git GitHub Idea集成】

    1 Git介绍 分布式版本控制工具 VS 集中式版本控制工具 git是一个免费开源的分布式版本控制系统,可以快速高效地处理从小型到中型的各种项目. 1.1 Git进行版本控制 集中式版本控制工具:如C ...

  3. Kubernetes集群调度增强之超容量扩容

    作者:京东科技 徐宪章 1 什么是超容量扩容 超容量扩容功能,是指预先调度一定数量的工作节点,当业务高峰期或者集群整体负载较高时,可以使应用不必等待集群工作节点扩容,从而迅速完成应用横向扩容.通常情况 ...

  4. MDC轻量化日志链路跟踪的若干种应用场景

    "If debugging is the process of removing software bugs, then programming must be the process of ...

  5. 突破传统监测模式:业务状态监控HM的新思路

    作者:京东保险 管顺利 一.传统监控系统的盲区,如何打造业务状态监控. 在系统架构设计中非常重要的一环是要做数据监控和数据最终一致性,关于一致性的补偿,已经由算法部的大佬总结过就不在赘述.这里主要讲如 ...

  6. vue2项目中调取登录接口登录以后获取个人信息以后,储存在哪里,怎么在不同的页面展示想要的信息?

    在Vue2项目中,可以将个人信息存储在Vuex状态管理中或者浏览器的本地存储中,具体取决于项目的需求和规模. 1. Vuex状态管理 在Vuex中定义一个user模块,用于存储用户信息,可以在登录成功 ...

  7. 笔记:C++学习之旅---引用

    笔记:C++学习之旅---引用 什么是引用? 引用就是别名,引用并非对象,相反的,他只是为一个已经存在的对象所起的另外一个名字. /*引用就是别名*/ #include <iostream> ...

  8. Solon 统一的返回结果调整

    使用 "统一的渲染控制" 可以对输出做统一的控制外...还可以借助路由拦截器 RouterInterceptor ,对 mvc 返回结果做提交确认机制(即可修改)进行控制(相对来讲 ...

  9. vscode取消“禁用错误波形曲线”

    刚刚不小心点到了vscode的禁用错误波形曲线,导致现在没有报错提醒了,上网查了一下,重新打开错误曲线的方法是 1.按住Cctrl+shift+p 2.搜索 启用错误波形曲线,选择打开,就可以了

  10. 聊一聊redis十种数据类型及底层原理

    概述 Redis 是一个开源的高性能键值数据库,它支持多种数据类型,可以满足不同的业务需求.本文将介绍 Redis 的10种数据类型,分别是 string(字符串) hash(哈希) list(列表) ...