清华和字节联合推出的视频理解大模型video-SALMONN(ICML 2024)

news2024/11/14 14:13:44

video-SALMONN: Speech-Enhanced Audio-Visual Large Language Models

论文信息

paper:https://arxiv.org/abs/2406.15704
code:https://github.com/bytedance/SALMONN/
AI也会「刷抖音」!清华领衔发布短视频全模态理解新模型 | ICML 2024
video-SALMONN:语音增强的端到端视听大语言模型
在这里插入图片描述

论文概要

  1. 提出一个端到端的视频理解多模态大模型,可以同时输入视频的语音、音频、视频帧,输出视频描述。
  2. 论文框架包含三点设计:1)音视频在时间维度上的对齐模块;2)多分辨率因果Q-Former;3)多样性损失函数和混合未配对音视频数据训练。

摘要翻译

作为使用音频-视觉大型语言模型(av-LLMs)进行视频理解的一个关键但研究不足的方面,语音理解是至关重要的。本文提出了video-SALMONN,这是一个单一的端到端av-LLM,用于视频处理,它不仅能理解视觉帧序列、音频事件和音乐,还能理解语音。为了获得语音理解所需的细粒度时间信息,同时保持对其他视频元素的高效处理,本文提出了一种新颖的多分辨率因果Q-Former(MRC Q-Former)结构,以连接预训练的音频-视觉编码器和骨干大型语言模型。此外,为了避免帧或模态的主导,我们提出了专门的训练方法,包括多样性损失和非成对视听混合训练方案。在引入的语音-视听评估基准(SAVE)上,video-SALMONN在视频QA任务上实现了超过25%的绝对准确率提升,在包含人类语音的视听QA任务上实现了超过30%的绝对准确率提升。此外,video-SALMONN在前所未有的任务上展示了卓越的视频理解和推理能力。我们的训练代码和模型检查点可在https://github.com/bytedance/SALMONN/ 上获得。

技术细节

在这里插入图片描述

输入处理

1)分别采用Whisper编码器(Speech Encoder)和BEATs编码器(Audio Encoder)来对同一音频流中的语音和非语音音频进行编码,采样频率为50Hz
2)采用InstructBLIP中的视觉编码器(Visual Encoder)来对视频中的帧进行独立地编码,视频帧采样频率为2Hz,即1秒2帧

音视频对齐

对应图中灰色块(Temporal Fine-grained Synchronisation)
按照AI也会「刷抖音」!清华领衔发布短视频全模态理解新模型 | ICML 2024中的解释,音频编码器每1秒音频对应50个向量,而视频编码器每1秒视频2帧,对应64个向量
因此,三个序列在时间维度上,以视频帧为基准每0.5秒对齐并拼接一次(temporal fine-grained synchronisation),因为语音音频序列略短于视觉序列,短的部分加上zero padding。

MRC Q-Former

多分辨率因果Q-Former对应上图中绿色块
在这里插入图片描述
在这里插入图片描述

1)首先在特征维度上,将三个向量进行拼接,也就是论文中的公式(1)
2)采用不同的步长(即不同的分辨率)对序列进行Q-Former(注意力机制)计算。以图2为例(假设视频的序列长度为100),在高分辨率下,步长k取5,query取2,则会产生一个长度为(100/5)*2=40的向量输出。在低分辨率下,步长k取25,query取10,则最终也会产生一个长度为(100/25)*10=40的向量输出,这对应论文中的公式(2)
3)Q-Former中的注意力机制使用了mask机制,如图3所示,即前面的序列不能看见后面的序列信息
4)对每个不同分辨率Q-Former的输出向量进行一个线性映射后再进行加和,得到最终的一个向量输出,这对应论文中的公式(4)
5)最后将Q-Former输出的向量结合文本prompt一起送入大语言模型中,对应论文中的公式(5)

论文中也解释了这种多分辨率划窗设计的好处:

滑动窗口设计使得输入序列的长度可以根据输入特征序列的长度而变化。因此,与在整个序列上使用单一的Q-Former相比,它在保留信息的程度与计算和存储成本之间实现了更好的平衡。

此外,论文中也提到了不同分辨率的Q-Former的参数是共享的

在应用较小窗口以获得更细粒度的时间尺度时,会使用较少的查询向量来减少信息容量,反之亦然。请注意,尽管对于不同的分辨率保持查询向量的不同,但MRC Q-Former的其余参数在所有分辨率级别上都是共享的,因为模态对齐的任务是相同的。

训练策略

首先提出了一个diversity loss,即论文中的公式(6),该loss的设计目的是使同一个分辨率下Q-Former输出的向量彼此不相近,即作者希望每个输出的向量能表征不同的信息。
原文是这样解释的:

视频问答(video QA)等视频任务的训练数据通常只需要一到两个关键帧,而输出查询往往倾向于重复捕捉相同的信息。因此,提出了一种新颖的多样性损失,以鼓励MRC Q-Former提取输入序列的更多不同方面。
请注意,多样性损失仅在低分辨率级别上需要,因为在这些级别上窗口中有足够的帧来提取多样化的信息。

最后,为了避免出现模态主导的问题,论文采用了部分音视频不配对的训练数据,来迫使模型是视频或者音频中来学习。
原文是这样说的:

此外,为了避免视频中的模态主导现象,除了少量成对的音视频数据外,我们提出了一种混合训练方案,即在训练集中的一部分增加非成对的音视频数据,并在提示中结合音频和视频的原始任务。这样,模型就被强制要求从音频和视频输入中提取信息,而不是依赖于某个主导模态。这种策略改善了不同模态之间的平衡,并是导致音视频理解和共同推理能力的关键因素。

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

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

相关文章

Python数值计算(10)——PPoly对象

在scipy中,scipy.interpolate下还有一个PPoly的类,用于表示插值多项式,很多插值算法的结果,都以该类的实例返回,因此有必要了解该类的使用方法。要使用该类,首先要引入相应的模块: from scipy.…

基于docker的 nacos安装部署

一、拉取镜像 拉取nacos官方镜像,这里使用默认命令 docker pull nacos/nacos-server二、创建挂载目录 创建本地的映射文件application.properties mkdir -p /home/docker/nacos/conf /home/docker/nacos/logstouch /home/docker/nacos/conf/application.propert…

举个栗子!Tableau 技巧(280):创建点象限图( Dot Quadrant Chart )

之前分享过 🌰 :四象限图 和 葡萄干布丁图。今天,我们将两者的呈现方式结合起来,创建如下的点象限图( Dot Quadrant Chart ),可以帮助数据粉在有限的看板区域内展示更多的数据信息。 那么,如何在 Tableau 中…

一文弄清Java的四大引用及其两大传递

开场白 Hello大家好呀,我是CodeCodeBond✊最近在复习很多很多的基础知识,有了很多新的感悟~ 话不多说,直接发车✈ 四大引用 问题切入点 在学习 Thread线程利用ThreadLocalMap实现线程的本地内存(变量副本)的时候&…

简单的docker学习 第1章 docker 概述

Docker 学习笔记 本文是b站动力节点docker学习视频的笔记整理,主要用于自己学习复习使用,视频具体地址为 : 动力节点docker 第一章 docker 概述 1.1 课程引人入 1.1.1 开发/运维互掐 ​ 开发与测试和运维间的矛盾,主要是由于环境的不同而…

flutter 做代码混淆

第一种、手动混淆 修改代码中出现次数多的 类目 方法 。修改静态资源的名字,转静态资源为webp 第二种、使用flutter 自带的命令行工具进行混淆 混淆 Dart 代码 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 使用pragma(vm:entry-point) 装饰器修改方…

【界面开发实战】使用DevEco Studio编写支付宝首页

效果展示 知识点 层叠布局 上一篇文章已经介绍了,这篇文章中不再赘述,如果想了解的话可以去看上一篇文章,链接如下: http://t.csdnimg.cn/CnBZMhttp://t.csdnimg.cn/CnBZM 弹性布局 作用:提供更加有效的方式对容器…

YOLOV5 改进:替换backbone为MobileVIT

1. 介绍 yolov5替换主干网络的步骤如下,依旧和之前的一样 2. 更改common文件 将下面代码加入common最下面即可: from einops import rearrange import torch import torch.nn as nn# Transformer Attention模块定义 class TAttention(nn.Module):def __init__(self, dim, …

string的底层简单实现(造轮子)

文件:String.h ----- 头文件 String.cpp ----- 源文件 Test.cpp ----- 源文件 实现细节: 实现带参构造: 在实现带参构造建议不使用初始化列表,初始化去写不太好: :_str(new char[strlen(str)1]) 用初始化列表要在…

如何在 Jupyter Notebook 中直接设置全局随机种子的方法及易错地方、notebook和pycharm中设置随机种子的区别

结论: 在 Jupyter Notebook 中直接设置全局随机种子的方法是确保每个单独的代码块中都调用相同的 set_seed 函数。这是最简单且有效的方法。在每个代码块开头设置随机种子,确保代码在每次执行时具有相同的随机数生成顺序。 易错地方: …

mac配置git的sshkey

在MAC中配置Git的SSH Key: 1.打开终端 2.生成SSH密钥,输入以下命令: ssh-keygen -t rsa -b 4096 -C “你自己的账号电子邮件地址” 按回车键后,系统会提示你输入文件保存路径,默认为~/.ssh/id_rsa直接按回车键使用默…

数据结构初阶之排序(上)

排序的概念及其应用 排序的概念 排序:所谓排序,就是使⼀串记录,按照其中的某个或某些关键字的⼤⼩,递增或递减的排列起来的操作。 排序的应用 如下图: 样例数组 下面我们给出一组乱序的数组,接下来的算…

程序员进阶架构知识体系、开发运维工具使用、Java体系知识扩展、前后端分离流程详解、设计模式开发实例汇总专栏分享

场景 作为一名开发者,势必经历过从入门到自学、从基础到进阶、从学习到强化的过程。 当经历过几年企业级开发的磨炼,再回头看之前的开发过程、成长阶段发现确实是走了好多的弯路。 作为一名终身学习的信奉者,秉承持续学习、持续优化的信念…

GitHub推出全新AI模型平台:简化开发者体验

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

《计算机网络》(第8版)第8章 互联网上的音频/视频服务 复习笔记

第 8 章 互联网上的音频/视频服务 一、概述 1 多媒体信息的特点 多媒体信息(包括声音和图像信息)最主要的两个特点如下: (1)多媒体信息的信息量往往很大; (2)在传输多媒体数据时&a…

【网络】TCP协议——TCP连接相关、TCP连接状态相关、TCP数据传输与控制相关、TCP数据处理和异常、基于TCP应用层协议

文章目录 Linux网络1. TCP协议1.1 TCP连接相关1.1.1 TCP协议段格式1.1.2 确定应答(ACK)机制1.1.3 超时重传机制 1.2 TCP连接状态相关1.2.1 TIME_WAIT状态1.2.2 CLOSE_WAIT 状态 1.3 TCP数据传输与控制相关1.3.1 滑动窗口1.3.2 流量控制1.3.3 拥塞控制1.3.4 延迟应答1.3.5 捎带应…

草的渲染理论

Unity引擎提供了基础的terrain工具,可以制作地形,在上面刷树刷草。对于树,Unity是支持带LOD的Prefab,不同距离显示不同细节的模型,效果还不错。对于草,Unity支持两种方式来刷草,一种是Add Grass…

汇凯金业:解读区块链概念、类型与独特优势

区块链作为一种具有革命性的创新技术,正在逐渐改变我们的生活和商业模式。它的去中心化、安全可靠、不可篡改等特性,为解决许多传统领域中的问题提供了新的思路和方法。 一、区块链的基本概念 区块链是一种具有创新性的计算机技术应用模式,…

C#复习之类和对象

知识点一:什么是类 基本概念: 具有相同特征 具有相同行为 一类事物的抽象 类是对象的模板 可以通过类创建出对象 类的关键字 Class 知识点二:类声明在哪里 类一般声明在namespace语句块中 知识点三:类声明的语法 知识点四&#xf…