开源项目 | 多模态大模型VITA:同时处理视频、图像、文本和音频(非常详细)收藏这一篇就够了!

简 介

GPT-4o 出色的多模态能力和交互体验突显了其在实际应用中的必要性,但开源模型很少在这两个领域都表现出色。

VITA: 第一个开源的多模态大模型(MLLM),擅长同时处理和分析视频、图像、文本和音频模态,同时具有先进的多模态交互体验。

Omni 多模态理解: VITA 展示了强大的基础多语言、视觉和音频理解能力,其强大的性能证明了这一点 在一系列单峰和多峰基准中。

非唤醒交互: VITA 可以激活并响应用户音频环境中的问题,而无需唤醒词或按钮。

音频中断交互: VITA 能够同时跟踪和过滤实时外部查询。这允许用户随时中断模型的生成新问题,VITA 将相应地回复新问题。

项目主页: https://vita-home.github.io/

一、引言

本工作要解决的问题是如何在开源环境中实现一个能够同时处理和分析视频、图像、文本和音频模态的多模态大模型(MLLM),并且提供先进的模态交互体验。

主要研究难点包括:如何在开源模型中实现多模态处理和分析,如何提升模型的多模态理解能力,以及如何增强人机交互的自然性和流畅性。

现有的多模态大模型(如GPT-4o)在统一框架内处理文本、视觉和音频信号方面取得了显著进展,但在开源领域,很少有模型能够达到类似的功能。现有的开源多模态模型主要集中在图像-文本模态,较少关注用户交互能力。

图1:VITA的交互作用。传统的音频交互需要一个预定义的唤醒词,例如,每次你提出问题时说“嗨!Siri~”,或者一个按钮来控制输入问题的音频(限制1)。当模型生成输出时,人机交互 总是被阻断,因为之前的系统只能顺序响应输入查询(限制2)。相比之下,一方面,与之前方法中音频、文本和视觉始终分离不同,VITA支持这些模态端到端的交互。另一方面,VITA对多模态交互做出了两项贡献。

  • 非唤醒交互:VITA自动过滤掉背景噪音,如非查询的人声,从而消除了唤醒词和按钮的需求。
  • 音频中断交互:如果用户用另一个问题打断,生成过程会被暂停,模型立即响应最新的查询。

二、方法概述

VITA,通过整合架构创新和先进的训练与发展策略,实现了这两个属性:1)统一框架,以端到端的方式处理文本、视觉和音频信号;2)实现自然多模态人机交互的能力。

  1. 双语指令调优: 首先,基于官方的Mixtral 8x7B模型,扩展其中文词汇量,并通过高质量的双语文本语料库进行进一步的指令调优,使其具备中文和英文的理解能力。

  2. 多模态对齐和指令调优: 其次,通过收集大量高质量的多模态数据,对文本特征空间与视频、图像和音频进行对齐,并引入状态令牌来识别输入查询的类型,从而实现端到端的交互。

  3. 双工管道开发: 最后,采用双工方案,两个VITA模型同时运行:一个负责生成当前音频查询的响应,另一个持续监控环境输入,并在检测到新查询时中断当前生成,输出新查询的响应。如图2所示。

在这里插入图片描述

图2:VITA架构。VITA能够处理纯文本/音频以及与文本/音频结合的视频/图像输入。此外,为不同的查询输入设置了不同的状态标记。

  • <1>对应于有效的查询音频,例如“世界上最大的动物是什么?”,我们期望模型给出回应。
  • <2>对应于嘈杂的音频,例如有人在环境中叫我吃饭,我们期望模型不回复。
  • <3>对应于查询文本,即用户以文本形式给出的问题。在训练阶段,我们尝试教模型自动区分不同的输入查询。

在部署阶段,使用<2>我们可以实现非唤醒交互。基于此,我们进一步引入了音频中断交互的双重方案。两个模型同时运行,其中生成模型负责处理用户查询。当生成模型开始工作时,另一个模型监控环境。如果用户用另一个有效的音频查询打断,监控模型聚合历史上下文以回应最新查询,而生成模型暂停并调整以监控,即两个模型交换身份。

VITA的整体训练流程包括三个阶段:LLM指令调优、多模态对齐和多模态指令调优。
在这里插入图片描述

图3:VITA的训练流程。

  • 第一阶段LLM指令调优通过扩大其词汇量和用高质量的双语文本语料库对其进行微调,从而在中文和英文上实现熟练掌握。
  • 第二阶段多模态对齐将各个编码器与LLM连接起来处理各种模态。通过积累大量高分辨率的多模态数据,将文本特征空间与视频、图像和音频的特征空间同步。
  • 最后阶段多模态指令调优允许模型跟随文本或音频指令来理解图像或视频。特别设计的状态令牌用于区分输入查询的类型,便于后续的多模态人机交互。

三、实验细节

数据收集: 实验数据包括合成数据和开源数据。合成数据用于扩展词汇量和构建多模态训练数据,开源数据来自Wukong、LAION、CC12M、LLaVA、Lvis-Instruct、ScienceQA等数据集。

数据预处理: 对于图像数据,采用动态补丁策略捕捉局部细节;对于视频数据,根据长度进行均匀采样;对于音频数据,使用Mel滤波器银行块将音频信号分解成频率带。

系统提示: 为不同类型的输入(图像、视频、纯文本)设置不同的系统提示,以避免不同类型数据之间的冲突。

训练过程: 在训练阶段,视觉和音频编码器保持冻结,连接器和Mixtral 8x7B一起训练。通过插入状态Token,模型能够灵活处理不同的交互行为。

四、实验性能评估

语言性能: 在C-EVAL、AGIEVAL、MMLU和GSM8K四个数据集上,训练后的模型在中文评估集上表现显著提升,同时在英文相关基准上保持了原始性能水平,并在数学推理任务中表现出显著改进。
在这里插入图片描述

音频性能: 在Wenetspeech和Librispeech数据集上,VITA在自动语音识别(ASR)基准上取得了相当的结果,显示出模型在语音表示学习方面的鲁棒性。

多模态性能: 在十个代表性的基准上,VITA在图像理解方面与专门的图像开源模型LLaVA-Next表现相当,接近闭源模型Gemini 1.5 Pro;在视频理解方面,尽管与视频专门的LLaVA-Next-Video存在小幅差距,但考虑到VITA支持更广泛的模态并优先考虑交互,这一结果仍然是可接受的。

五、更多示例

编码能力: 用户提供流程图,VITA 就能编写代码。
在这里插入图片描述

强大的图片理解能力: 给定一张图片,VITA 可根据图片内容回答问题。
在这里插入图片描述

计算推理能力:

视频理解能力:
在这里插入图片描述

六、项目部署

安装基础环境

git clone https://github.com/VITA-MLLM/VITA
cd VITA
conda create -n vita python=3.10 -y
conda activate vita
pip install --upgrade pip
pip install -r requirements.txt
pip install flash-attn --no-build-isolation

准备数据

训练数据的 json 文件示例:

[
    ...
    {
        "set": "sharegpt4",
        "id": "000000000164",
        "conversations": [
            {
                "from": "human",
                "value": "<image>\n<audio>\n"
            },
            {
                "from": "gpt",  // follow the setting of llave, "gpt" is only used to indicate that this is the ground truth of the model output
                "value": "This is a well-organized kitchen with a clean, modern aesthetic. The kitchen features a white countertop against a white wall, creating a bright and airy atmosphere. "
            }
        ],
        "image": "coco/images/train2017/000000000164.jpg",
        "audio": [
            "new_value_dict_0717/output_wavs/f61cf238b7872b4903e1fc15dcb5a50c.wav"
        ]
    },
    ...
]

下载预训练模型权重

  • VITA:https://huggingface.co/VITA-MLLM/VITA

  • InternViT-300M-448px:https://huggingface.co/OpenGVLab/InternViT-300M-448px

  • 预训练音频编码器:https://huggingface.co/VITA-MLLM/VITA

启动训练

export PYTHONPATH=./   export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True   OUTPUT_DIR=/mnt/cfs/lhj/videomllm_ckpt/outputs/vita_video_audio   bash script/train/finetuneTask_nodes.sh ${OUTPUT_DIR}   

推理

文本查询:

CUDA_VISIBLE_DEVICES=0,1 python video_audio_demo.py \
    --model_path [vita/path] \
    --image_path asset/vita_log2.png \
    --model_type mixtral-8x7b \
    --conv_mode mixtral_two \
    --question "请描述这张图片。" \

音频查询:

CUDA_VISIBLE_DEVICES=0,1 python video_audio_demo.py \
    --model_path [vita/path] \
    --image_path asset/vita_log2.png \
    --model_type mixtral-8x7b \
    --conv_mode mixtral_two \
    --audio_path asset/q1.wav

嘈杂的音频查询:

CUDA_VISIBLE_DEVICES=0,1 python video_audio_demo.py \
    --model_path [vita/path] \
    --image_path asset/vita_log2.png \
    --model_type mixtral-8x7b \
    --conv_mode mixtral_two \
    --audio_path asset/q2.wav

Demo演示

使用 vLLM 加速模型。由于 VITA 尚未集成到 vLLM 中,因此需要对 vLLM 代码进行一些修改以使其适应 VITA。

conda create -n vita_demo python==3.10
conda activate vita_demo
pip install -r web_demo/web_demo_requirements.txt

# Backup a new weight file
cp -r  VITA_ckpt/ demo_VITA_ckpt/

cd ./web_demo/vllm_tools
cp -rf model_weight_file/*  ../../demo_VITA_ckpt/
cp -rf vllm_file/*  your_anaconda/envs/vita_demo/lib/python3.10/site-packages/vllm/model_executor/models/
python -m web_demo.web_ability_demo  demo_VITA_ckpt/

在这里插入图片描述


如何学习大模型?

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

5. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值